<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Franklin Chen</title><description>Recent content on Franklin Chen</description><link>https://franklinchen.com/</link><language>en-us</language><item><title>I&apos;m back, after nine years!</title><link>https://franklinchen.com/blog/2025/10/27/im-back-after-nine-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2025/10/27/im-back-after-nine-years/</guid><pubDate>Mon, 27 Oct 2025 10:30:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m back.&lt;/p&gt;
&lt;p&gt;The last time I updated my Web site was in 2016, nine years ago. My &lt;a href=&quot;/blog/2016/07/29/the-powerful-e5-pawn-break-against-the-benoni-using-it-as-white-neutralizing-it-as-black/&quot;&gt;last blog post&lt;/a&gt; wasn&apos;t even a proper standalone piece of writing, but a reference to writing I did somewhere else.&lt;/p&gt;
&lt;p&gt;Basically, &lt;strong&gt;life happened&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;What happened?&lt;/h2&gt;
&lt;p&gt;Instead of trying to look back on what happened in the last nine
years, I prefer to look forward. I have changed a lot, and the world
has changed a lot.&lt;/p&gt;
&lt;h2&gt;Why am I back now?&lt;/h2&gt;
&lt;p&gt;I&apos;m back because I think I have things to say, to share with the
world, and not in clickbait sound bites on &quot;social media&quot; on other
people&apos;s platforms.&lt;/p&gt;
&lt;p&gt;I&apos;m also back as a gesture against the &quot;AI slop&quot; that is increasingly
crowding out genuine human writing and communication. Yes, I use LLMs
nowadays, and they are useful, but having seen too many AI-generated
blog posts and news articles and product reviews, I want to write
here, in my own space, in order to assert my &lt;strong&gt;humanity&lt;/strong&gt;, and to
encourage all of us to assert our humanity.&lt;/p&gt;
&lt;h2&gt;Humanity&lt;/h2&gt;
&lt;p&gt;Speaking of humanity, I am typing this blog post while at a &lt;a href=&quot;https://www.meetup.com/pittsburgh-code-supply/events/311074166/&quot;&gt;Build
Night&lt;/a&gt;
by &lt;a href=&quot;https://codeandsupply.co/&quot;&gt;Pittsburgh Code and Supply&lt;/a&gt;, a local
community organization that still exists and is active both online on
Slack and in-person. My old programming blog, &lt;a href=&quot;https://conscientiousprogrammer.com/&quot;&gt;The Conscientious
Programmer&lt;/a&gt;, even has a post
from 2014 (eleven years ago!) on &lt;a href=&quot;/blog/2014/07/17/pittsburgh-code-and-supply-programming-in-journalism/&quot;&gt;my first ever Pittsburgh Code and
Supply
meeting&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;It is so awesome that in a world where so much seems transient and
unreliable, Pittsburgh Code and Supply keeps going and going as a
living, face-to-face community.&lt;/p&gt;
&lt;p&gt;Tonight&apos;s Build Night had around 24 attendees! What a great turnout.&lt;/p&gt;
&lt;h2&gt;Moving forward&lt;/h2&gt;
&lt;p&gt;One thing I still need to do with this blog is merge in the
programming blog that I just mentioned. When &lt;a href=&quot;/blog/2013/06/24/introducing-this-new-programming-blog/&quot;&gt;I launched that blog in
2013&lt;/a&gt;,
I thought it would be a good idea to separate my &quot;computer programmer&quot;
writing from my other writing, but deep down, I never really believed
this made sense. Now that I am older (and wiser?), &lt;strong&gt;I have grown
impatient with doing what my gut tells me makes no sense&lt;/strong&gt;, so my plan
is to merge that blog into this blog so that my collection of writings
will be a unified &quot;whole me&quot;.&lt;/p&gt;
&lt;p&gt;This goes against advice I&apos;ve seen that says if you write for an audience, it&apos;s best to be narrowly focused. But &lt;strong&gt;I&apos;m not writing for an audience&lt;/strong&gt;. I&apos;m writing for myself, and for my friends, and for anyone who cares. Not an &quot;audience&quot;.&lt;/p&gt;
&lt;h3&gt;Respecting your privacy&lt;/h3&gt;
&lt;p&gt;On this Web site that I relaunched only today (in which I migrated from Hugo to Astro), I&apos;ve already thrown away the invasive Google Analytics tracking I was using in the past. I have no idea how many &quot;followers&quot; I have on this or that platform, and I don&apos;t care anymore.&lt;/p&gt;
&lt;p&gt;The other thing I still need to do is get rid of the invasive Disqus comment system I was using. I want to migrate and preserve in static fashion the comments that already exist. I still don&apos;t know if I should use some other comment system or just not have a formal comment system at all on my site.&lt;/p&gt;
&lt;p&gt;Also, I was thinking of taking photos of tonight&apos;s Build Night, and
using them here, but although I took a photo to upload to the Meetup
event, I decided not to use it here. There really is no need. If you
want to experience a Build Night, just sign up and come to one and see
for yourself!&lt;/p&gt;
&lt;h3&gt;Being honest to the past&lt;/h3&gt;
&lt;p&gt;I am &lt;a href=&quot;/blog/2015/06/01/yes-i-want-my-writing-to-be-dated/&quot;&gt;slightly obsessive about being honest to the past&lt;/a&gt;, so I have been trying to preserve as much old information as possible during all these migrations and changes. Sometimes I have wondered whether to delete all my posts (since many of them are now embarrassing to me as I have changed as a person), but I always remember my promise to keep them.&lt;/p&gt;
&lt;h2&gt;What&apos;s next?&lt;/h2&gt;
&lt;p&gt;I&apos;m back after nine years and I&apos;m writing again. I&apos;m participating in communities again, in person (I&apos;ll be writing more about that). I&apos;m rediscovering the urgency of being truly &lt;strong&gt;human&lt;/strong&gt; as well as being truly myself.&lt;/p&gt;
</content:encoded></item><item><title>The powerful e5 Pawn break against the Benoni: using it as White, neutralizing it as Black</title><link>https://franklinchen.com/blog/2016/07/29/the-powerful-e5-pawn-break-against-the-benoni-using-it-as-white-neutralizing-it-as-black/</link><guid isPermaLink="true">https://franklinchen.com/blog/2016/07/29/the-powerful-e5-pawn-break-against-the-benoni-using-it-as-white-neutralizing-it-as-black/</guid><pubDate>Fri, 29 Jul 2016 11:50:37 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been very busy coaching chess and therefore haven&apos;t published any chess writing lately, but I was inspired by a discussion about a chess position with Isaac, the creator of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://chesssummit.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://chesssummit.com/&quot;&amp;gt;Chess Summit&amp;lt;/span&amp;gt;, to write a guest &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://chesssummit.com/2016/07/28/the-powerful-e5-pawn-break-against-the-benoni-using-it-as-white-neutralizing-it-as-black/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://chesssummit.com/2016/07/28/the-powerful-e5-pawn-break-against-the-benoni-using-it-as-white-neutralizing-it-as-black/&quot;&amp;gt;blog post there&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;If you love chess and want to follow the journeys of chess players who are working hard to improve their game and share their stories along the way, check out the Chess Summit site!&lt;/p&gt;
</content:encoded></item><item><title>On finally achieving the US National Master chess title at age 45: part 1</title><link>https://franklinchen.com/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1/</link><guid isPermaLink="true">https://franklinchen.com/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1/</guid><pubDate>Sat, 23 Jan 2016 01:49:11 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/24441379882/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/1560/24441379882_36a8f817c7_b.jpg&quot; alt=&quot;National Master certificate&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On December 18, 2015, I finally achieved the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_title#Master&quot;&gt;United States National Master&lt;/a&gt;
chess title, at the relatively late age of 45 (I don&apos;t have
statistics, but I suspect the vast majority of chess players who reach
National Master do so in their teens and twenties). I plan to
eventually write about how I significantly improved my chess when I
returned after a twenty-year break to start playing again ten years
ago at age 35, and how I now teach and coach chess based on my
experience in self-improvement. I will also write more about how I
continue to work on self-improvement outside of chess.&lt;/p&gt;
&lt;p&gt;For now, below is an interview that was published in the June 2016
issue of the
&lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; publication, &quot;En
Passant&quot;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/28474055921/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8194/28474055921_0e62aa5380_b.jpg&quot; alt=&quot;En Passant interview&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;When did you learn chess? How old were you? Who taught you? What did you think or feel during that first experience?&lt;/h2&gt;
&lt;p&gt;I don&apos;t actually remember a moment in my life when I didn&apos;t know the
basic rules of chess!&lt;/p&gt;
&lt;p&gt;Here&apos;s what I mean: my first life memories are from shortly before I
was 3 years old (I remember celebrating my 3rd birthday), when I was
already playing chess with my father. The story is that when I was 2
years old, the 1972 Fischer-Spassky match was happening and the result
was that during the summer of 1972, my father and his grad school
classmates decided to teach themselves chess. According to him, at
some point I watched and deduced some of the movements, and he noticed
my interest. I don&apos;t remember any of that, but I remember that at some
point he bought &quot;Bobby Fischer Teaches Chess&quot; (he may still have this
in his library) and he led me through it after he had finished it
himself. So that was my first chess book, and we did it before I was 4
years old, because life changed for me after my sister was born before
I turned 4, and my father no longer had much attention for me for a
while.&lt;/p&gt;
&lt;p&gt;What I remember is simply the joy of seeing the geometry of the
different piece movements fitting together. I was also extremely
particular about setting up the board: I always wanted my Knights to
face each other, and I still am, and at the beginning of every game,
you will note that I always adjust my Knights accordingly.&lt;/p&gt;
&lt;h2&gt;What was the next big step in your chess life as a child?&lt;/h2&gt;
&lt;p&gt;After my father finished graduate school, he was very busy finding
jobs, etc., and chess was put aside for a while, but finding chess
sets lying around in school led me to find in the libraries some chess
books written for children, and I enjoyed them very much. When I was
7, he found his first stable job in Morristown, New Jersey, so we
moved yet again. We discovered that the Morris County Free Library had
a huge chess book collection, and we started reading through it
together. In the process, we finally realized that we had gotten some
of the rules wrong when playing with each other at home!&lt;/p&gt;
&lt;p&gt;I must have read through 30 or 40 chess books from that library
between age 7 and 9 before we moved again. During that time, I had
nobody to play with, because the one time in school recess I tried to
play with a classmate who claimed he knew how to play, he captured my
King after I overlooked a pin, and claimed victory, and would not
listen to me when I said I could not make an illegal make and Kings
cannot be captured! I did have one &lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/&quot;&gt;interesting experience with a chess
computer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also started teaching my younger sister chess during this time
period (at around age 4), because I had no one else to play with other
than my father. And I lost every single game I played with my father,
because he would not let me win; he would give me chances when I was
losing, but &lt;a href=&quot;/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him/&quot;&gt;never let me actually win&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;How did you get into playing in chess tournaments?&lt;/h2&gt;
&lt;p&gt;First, my father had to learn that there was such a thing as chess
tournaments for amateurs. This happened when he accidentally
discovered a chess club.&lt;/p&gt;
&lt;p&gt;Shortly before I turned 10, my parents and my sister and I were at the
local community center (for a new job, my father had moved the family
again, to Madison Heights, Michigan) when my father heard strange
noises in the basement and wondered what was going on. He went down
and came back up all excited. My sister and I went back down with him,
and I still remember the thick cigar smoke and the men loudly banging
on ticking chess clocks while swearing and trash-talking during
blitz. My father and I joined the club and began playing in casual
blitz as well as in unrated club tournaments.&lt;/p&gt;
&lt;p&gt;Everyone said we should also join the Michigan Chess Association and
the US Chess Federation and play in official rated tournaments. My
father said &quot;wait, we just paid for one membership and you want us to
pay for two others already?&quot;, but signed us up for MCA membership,
so that we could get the newsletter and stay informed.&lt;/p&gt;
&lt;h2&gt;When was your first tournament? Do you remember what you felt when you won your first official game?&lt;/h2&gt;
&lt;p&gt;By summer, everyone was excited about the upcoming annual Michigan
Open over Labor Day weekend, so we went, signed up with USCF, and
played in our first USCF rated tournament, the under-1800 Reserve
Section of the 1980 Michigan Open. I lost my first round game, but
in the second round, I won a very long, 88-move game as White (I
still have the original scoresheet and just looked over the game
again) against a 1400-rated opponent. My opponent made the final
blunder in an endgame, allowing me to trade into a King and Pawn
ending I knew was a win. I took the opposition, won the Pawn Queening
race, and knew how to win with a Queen against Knight Pawn.&lt;/p&gt;
&lt;p&gt;It felt great to bounce back so quickly from a first round loss to
winning my first tournament game. I ended up scoring 3.5/7.0 and
winning a 2nd place Unrated trophy, while my father won the 1st
place Unrated trophy. I achieved my first provisional rating of
1591, while his was 1574, lower than mine despite his higher score.&lt;/p&gt;
&lt;p&gt;My father was so excited by our success that we continued playing
in tournaments for a while.&lt;/p&gt;
&lt;h2&gt;What happened after your first tournament?&lt;/h2&gt;
&lt;p&gt;After our first tournament, my father and I were excited to continue
playing. He decided to continue playing in the Reserve Section while I
never played in the Reserve Section again after the first tournament,
because unlike him, I was not in it for the prizes but for the
challenge of playing against stronger opponents and getting better
myself. I did well in the Open Section of my second tournament three
months after my first, and my rating went up from 1591 to 1659, so
that was exciting. I won no prize, while my father got what he wanted
and won prizes for a fine performance in the Reserve Section. After
this second tournament, everyone was taking note of my progress, and
said I had talent. I didn&apos;t think so highly of myself, because by
then, I had met Ben Finegold, who was a year younger than me, but
already much better than me in the tournament scene.&lt;/p&gt;
&lt;p&gt;In January 1981, my father applied for a chess scholarship from the
American Chess Foundation in order for fund some chess instruction for
me, and we got funding for ten lessons in May from the winner of
the 1980 Michigan Open, Master David Whitehouse.&lt;/p&gt;
&lt;p&gt;Before the lessons even began, I had continued to do well in
tournaments, beat my first Expert, and gotten my rating up to 1741.&lt;/p&gt;
&lt;p&gt;I very much enjoyed the lessons, and still remember a great deal from
them in retrospect. Mr. Whitehouse showed me some endgames, openings,
and illustrative games of his, but most of all, gave me a tremendously
useful book list, and I would even today recommend the study of many
of the classics that he listed.&lt;/p&gt;
&lt;h2&gt;What was your first setback?&lt;/h2&gt;
&lt;p&gt;Unfortunately, despite the ten weeks of instruction, it turned out
that I was stuck at a plateau for an entire year of tournament play,
not having gone higher than 1765. In fact, during my second year of
tournament play (age 11), I had my first loss against a lower-rated
opponent, my first draw against a lower-rated opponent, and my first
loss to an unrated opponent.&lt;/p&gt;
&lt;p&gt;Meanwhile, my father himself had topped out at a rating of around
1774, I had finally beaten him at home (after which he never played a
game of chess again for another 20 years), family life was in disarray
as he looked for another job, and I was becoming a teenager and not
getting along with my parents or my teachers in school. So my father
let our USCF memberships expire, in July 1982, and my parents worried
that I was too obsessed with chess (my mother never approved of it in
the first place) and took away my chess set. I didn&apos;t protest too
much, because I had my own life problems at the time, plus had no idea
how to continue to improve in chess. So that&apos;s how I retired from
chess at age 12. Life was in disarray for everyone, and I almost
failed my classes in the fall during the 7th grade.&lt;/p&gt;
&lt;h2&gt;When did you return to chess after this setback?&lt;/h2&gt;
&lt;p&gt;Within the following year, some things had improved: my father had a
new job lined up, and he renewed my lapsed USCF membership and gave me
my chess set back. It was clear, though, that chess was only to be a
hobby and he would not be supporting me in any substantial way. In
1983-1985, I concluded my chess career of my youth by playing two
tournaments each of those years (during which my father had one more
job change, the final one of his career, and we had moved a couple
more times).&lt;/p&gt;
&lt;p&gt;Through introspection, I did make a conscious effort to improve my
play and broke through my 1700 plateau quickly during my return to
chess at age 13, having missed age 12. I got up to 2050 when I was
15. All the while, though, I felt more and more that I still didn&apos;t
really understand chess, and Ben Finegold had long since made Master,
and would drop out of high school to move to Europe for a professional
chess career. I did still think enough about chess that I wrote my
college application on how chess is simultaneously an art, sport, and
science, and informed how I think about human endeavors.&lt;/p&gt;
&lt;p&gt;Then chess ended for me for 20 years.&lt;/p&gt;
&lt;h2&gt;As your rating was rising, say after it past 1200, 1500, 1800, what types of thoughts did you have? Did you think you would one day become a Chess Master or Grandmaster? Can you share the emotions of reaching higher ratings?&lt;/h2&gt;
&lt;p&gt;In my youth, I never believed I was going to become a Master, and I
never acted as though I wanted to give it a try.&lt;/p&gt;
&lt;p&gt;I liked to play, hoped I was improving, but didn&apos;t have the internal
drive or family support to do anything really serious with chess. I
didn&apos;t really play that much chess as a youth: in 1980-1985, I played
16 rated tournaments, for a total of 83 rated games that took me from
unrated to an initial rating of 1591 to a peak rating of 2050. Compare
with my adult tournament career so far from 2005-2015, which consisted
of 436 rated games: the vast majority of my chess playing has occurred
in my adulthood, with rating range from 2057 up finally to 2201.&lt;/p&gt;
&lt;p&gt;My plateau at age 11, during which I received no encouragement or
support from anyone, made me pessimistic even when I recovered from
it. To be honest, during the entire time I played from 1983-1985, I
was afraid to have any serious expectations or goals. My own lack of
confidence combined with my fear of family disapproval caused me to
actually be relieved when I no longer had time for chess. In fact, I
considered myself rather lucky to have made it to past 2000 and had a
lingering fear that if I continued, I would just lose that.&lt;/p&gt;
&lt;h2&gt;What made you return to chess after a 20 year absence?&lt;/h2&gt;
&lt;p&gt;I did play a little bit of casual chess in my freshman year in
college, but then never played a game again for 17 years, nor did I
follow any chess world news during that time. Chess was dead to me
during those years.&lt;/p&gt;
&lt;p&gt;But in the early 2000s, a friend mentioned that there were strong free
chess engines that were worth trying out. I was skeptical at first,
because in my youth I could beat chess computers. But I started
playing with some engines to see how much they had improved since my
childhood. They were still not so strong, but were definitely much
stronger!&lt;/p&gt;
&lt;p&gt;I became very interested in whether the engines were strong enough to
resolve some analytical questions I had about complicated games in my
childhood in which I didn&apos;t know if I played something correctly (in
particular, some sacrifices). So my renewed interest in chess was not
as a competitor but as an analyst. I started reading chess books
again, and rejoining USCF, although not yet playing. In particular,
around 2003, my life was changed when a chess book showed up in the
public library, John Watson&apos;s &quot;Chess Strategy in Action&quot;. I checked it
out and it completely altered my perception of and understanding of
chess.&lt;/p&gt;
&lt;p&gt;Meanwhile, at this point in my life in my mid-30s, I was noticing
small but clear signs of physical and mental decline (I had peaked in
my 5K race speed) and thought to myself that I had unfinished business
in my life, dreams I gave up or did not allow myself in childhood,
that I should return to soon if I wanted to accomplish them at all
before it was too late. One of those dreams was to actually see how
well I can play chess if I committed to improvement, since I believed
deep in my heart that I had stopped before reaching my full potential.&lt;/p&gt;
&lt;p&gt;I discovered the existence of the Pittsburgh Chess Club in 2004,
played a game of chess with my father while visiting him for
Christmas, our first game in over 20 years, and in 2005, started
playing in tournaments again.&lt;/p&gt;
&lt;h2&gt;What did you do to move your rating up? Did you study a lot? play a lot? What types of exercises did you do? Did you have chess boards set up at places in the house? Was there anything unique you could share that readers will enjoy knowing or reading?&lt;/h2&gt;
&lt;p&gt;In my youth, there were no chess engines or computers really worth
using, so progress was much harder for someone like me who was on his
own and did not have access to strong coaches (other than the ten free
lessons I received at age 11). So, I initially just learned from
playing blitz often at the club, playing in tournaments and reading
books and magazines.&lt;/p&gt;
&lt;p&gt;To break my 1700 plateau, I studied specific opening systems that had
clear strategic goals for the middlegame. That made a huge difference
moving forward because I was no longer playing just randomly, but with
purpose. That worked to get me up to 2000+, but it was at that point
when I realized that I was holding myself back by playing only these
weird offbeat openings that I had studied. I had to go back to the
classics in order to rebuild myself to go beyond 2000.&lt;/p&gt;
&lt;p&gt;I had another plateau during my entire first year back to chess in
adulthood, I was stuck at a plateau of the low 2000s and despaired of
ever improving beyond my childhood level. I realized that I had to
rebuild my chess understanding from scratch. I had never studied chess
systematically before, had a really spotty understanding of every
aspect of the game, from openings to middlegames to endgames. So in my
second year back, in 2006, I started rebuilding myself, gradually
transforming how I play. That paid off as I finally cracked 2100 and
then 2150, during 2006 and 2007. It was not until I passed 2100 that
for the first time in my life, I decided to set myself a goal of
making Master!&lt;/p&gt;
&lt;p&gt;The single most helpful tool to me in recent years has been analyzing
my own games in detail with use of strong chess engines. I would say
this is more important than anything else. Being confronted with
reliable evidence of ideas or tactics that you missed (or your
opponent missed) must be the single most useful tool for improvement
available today that wasn&apos;t available in the pre-computer era. In
particular, computers make it easy to try &quot;what if&quot; by experimenting
with different continuations, setups, and see how they measure up.&lt;/p&gt;
&lt;h2&gt;Were there times you were disappointed with yourself and thought about quitting? Were there other factors like friend, family, girlfriend who led you or tried to dissuade you to continue playing chess? Is there any story you would like to share on this topic?&lt;/h2&gt;
&lt;p&gt;I have often been disappointed in my chess play, but interestingly,
never seriously thought about quitting except in one situation: I only
thought about quitting once I came close to reaching Master and kept
failing, which coincided chronologically with my meeting a young
woman.&lt;/p&gt;
&lt;p&gt;Every loss or draw that set me back as I approached 2200 had a
tendency of making me feel like I didn&apos;t have what it takes. And
starting to date again in 2007 definitely began to take a toll on my
chess, both because Abby actively opposed my chess activities at the
time and because of my whole schedule and routine was disrupted,
making tournament play difficult logistically. By the time we got
married in 2009, I had basically quit chess, and I thought for good,
and not willingly but as a concession. I periodically tried to come
back and play, but always less well than I was capable, because of
being rusty, unsupported, and tired. It wasn&apos;t until the second half
of 2015 that I was ready to try again to play the best I could, this
time finally with complete emotional support from Abby, who had
finally come to understand how much chess meant to me. I also canceled
a lot of my usual activities in the second half of 2015 in order to
focus my energy outside of work on chess, and all this paid off.&lt;/p&gt;
&lt;h2&gt;What is the single, most important factor a chess player must consider to move up his/her rating?&lt;/h2&gt;
&lt;p&gt;We all hit a plateau at some point, at which we are apparently making
the same kinds of errors that stronger players are not making, so
somehow we have to change the kinds of errors that we make.&lt;/p&gt;
&lt;p&gt;I think the most powerful tool available is analysis of your own
games. Each game you play has the fingerprints of your personal
weaknesses all over it. Using a chess engine, and ideally a strong
human guide who can explain concepts and variations that lie behind
the engine&apos;s numerical evaluations, you can learn to gradually remove
errors. For example, if you lost an otherwise good game only because
of one misconception during an endgame, avoiding that single error in
the future could pay off in any number of similar situations. Or if
you misplayed an opening, rebuilding your thought process that led to
a strategic misunderstanding can help in all future games using that
opening.&lt;/p&gt;
&lt;h2&gt;Have you been close to 2200 several times and then fell? (therefore postponing the Master level)? Can you give details of how you felt?&lt;/h2&gt;
&lt;p&gt;Yes, I have been close several times! In fact, a couple of times I had
2200 locked up, in the sense that if I had withdrawn from a tournament
in progress, I would have guaranteed going over 2200 based on the wins
I had already racked up in the tournament.&lt;/p&gt;
&lt;p&gt;The first time was in the 2007 PA State Action Championship. I went in
at 2171 and had won the first three rounds. In the fourth round, I had
a totally won game against a Master and nerves got to me and I fell
apart and lost. In the final round, I had a totally won game against
an 1800 and fell apart and lost. This was my first experience of
completely choking under the pressure of knowing I was very close to
2200.&lt;/p&gt;
&lt;p&gt;Then in January 2008, I had a rating of 2197 from a Pittsburgh Chess
League round. The thing you have to understand is that in
January-February, I was simultaneously playing in the PCC Championship
held on Tuesday nights, and had won my first three rounds by February,
which meant that if I had withdrawn, I would have secured far more
than the 3 rating points necessary to go over 2200. But I had never
withdrawn from a tournament in my life, and didn&apos;t want to achieve
Master through calculated cowardice. So I played on. But I choked, and
proceeded to draw the fourth game and lose the fifth. I continued to
play worse as I got engaged to be married, and quit chess the year of
my marriage in 2009.&lt;/p&gt;
&lt;p&gt;I periodically came back in 2010-2012 but just played worse and worse,
unforced errors. In 2013, I started recovering, and in 2014, I again
almost made Master. At 2195, I choked, losing a won game against a
much lower-rated player while a Rook up! All I needed was to win that
game to make Master. And I kept on choking in tournaments after that.&lt;/p&gt;
&lt;p&gt;In fall of 2015, I more or less stopped choking. I still played badly
sometimes, but I distinguish between poor quality of play and just
plain choking. How did I stop choking? I stopped paying attention to
my rating. In fact, in my final tournament games of 2015 that led me
to go over 2200, I did not do any calculations to determine whether I
would or would not go over. I knew it could be close, but did not want
to calculate. I tried to focus on my games and nothing else.&lt;/p&gt;
&lt;p&gt;I&apos;m still proud that I made Master without the trick of withdrawing
from any tournaments.&lt;/p&gt;
&lt;h2&gt;Can you discuss which is more important for chess improvement: studying the opening, middlegame, or endgame? Explain why.&lt;/h2&gt;
&lt;p&gt;The short answer is that everything is actually interconnected, and I
wish I had known this earlier. A quality game will have a story behind
it that connects all phases of chess. Because of this, I think the
study of complete, annotated games (including annotating your own
games) is the single most useful technique for improvement.&lt;/p&gt;
&lt;p&gt;For example, opening study is popular, but studying the opening in
isolation, apart from understanding fundamental principles and knowing
not to fall into tricky traps, is almost irrelevant at under-2000
level, where games will mostly be decided not by opening subtleties,
but by later parts of the game.&lt;/p&gt;
&lt;p&gt;My main improvements have come from understanding the middlegame
better, learning how to assess positions and create plans based on
features of the positions, especially through considering Pawn
structure. If you think of an opening as a way to try to get to a
certain kind of middlegame, and think of the middlegame as a way to
get to a certain kind of endgame, then everything starts to fit
together. The middlegame is the core.&lt;/p&gt;
&lt;p&gt;Improving in the endgame is important at all levels.  When I look at
my first tournament games at a 1500-1600 level, I see that the vast
majority of them went into endgames where anything could happen
because none of us really knew what we were doing, but I managed draws
and wins because I was a bit better there than opponents who otherwise
matched me in the opening and middlegame.&lt;/p&gt;
&lt;p&gt;With my young students, I go over the opening phase with them only
enough for them to survive it (by playing classically and avoiding
needlessly complex and subtle variations), but focus my instruction
primarily on how to get to a desired middlegame by means of opening
choice. I also add endgame instruction incrementally as it becomes a
bottleneck in overall performance: when they get good enough to get a
dominating middlegame and then fail to win in the endgame, that&apos;s when
we work on the endgame. But I feel like spending a lot of time on the
endgame up front is not realistic if one is not even surviving the
middlegame.&lt;/p&gt;
&lt;h2&gt;Were there any special, small or large celebration when you became a Master?&lt;/h2&gt;
&lt;p&gt;No, there was no celebration. I have to confess I&apos;m not really a
celebration kind of person.&lt;/p&gt;
&lt;h2&gt;What are your plans now?&lt;/h2&gt;
&lt;p&gt;I will continue what I&apos;ve already been doing in chess since 2012:
writing and teaching.&lt;/p&gt;
&lt;p&gt;I started writing about chess on my personal blog around 2012. I
really enjoy sharing my analysis and thoughts with others, and this
eventually led to my writing for GM Nigel Davies&apos; &lt;a href=&quot;https://ChessImprover.com/author/FranklinC/&quot;&gt;The Chess Improver&lt;/a&gt;
site and giving private chess lessons since 2013. I am still teaching
now and very much enjoy helping others improve their chess. So
teaching has been my main focus in chess for a while now.&lt;/p&gt;
&lt;p&gt;I will continue to play in local tournaments as time permits. I am not
done improving yet! Also, I enjoy being a role model for my students,
to walk the walk as I give them advice about how to study, improve,
and compete. I have even been inspired to try to play model games to
illustrate specific themes I teach. For example, last year when the
subject was isolated Pawns, I played a game in which I chose an
opening aimed specifically against an isolated Pawn structure.&lt;/p&gt;
&lt;h2&gt;(Update of 2016-06-25)&lt;/h2&gt;
&lt;p&gt;I still play chess with my father whenever I see him. He&apos;s still
playing pretty well at age 78. I feel he is possibly even better than
when he was in his 40s, probably because he has all the time in the
world to play casual games regularly at his local community center
since retirement. It&apos;s actually harder for me to beat him now than
when I was a kid. Here&apos;s a photo from the last visit to my parents&apos; in
May 2016; I barely managed to win this game, where I took advantage of
the weakness of his isolated Pawn in the endgame:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/27597310106/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7317/27597310106_994a1df764_b.jpg&quot; alt=&quot;Playing chess with father&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How the X-Files reminded me of the meaning of Martin Luther King Jr.</title><link>https://franklinchen.com/blog/2016/01/18/how-the-x-files-reminded-me-of-the-meaning-of-martin-luther-king-jr/</link><guid isPermaLink="true">https://franklinchen.com/blog/2016/01/18/how-the-x-files-reminded-me-of-the-meaning-of-martin-luther-king-jr/</guid><pubDate>Tue, 19 Jan 2016 03:07:06 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Today was my second official celebration (with a day off from work as
a holiday) of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Martin_Luther_King,_Jr._Day&quot;&gt;Martin Luther King, Jr. Day&lt;/a&gt;. (I
wrote last year on
&lt;a href=&quot;/blog/2015/01/19/for-martin-luther-king-jr-day-some-black-american-voices-that-spoke-to-me-recently/&quot;&gt;my first official celebration&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;For today, I not only reread MLK&apos;s 1963
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot;&amp;gt;&quot;Letter from a Birmingham jail&quot;&amp;lt;/span&amp;gt;
as I do annually, but also rewatched my single favorite X-Files
episode,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Musings_of_a_Cigarette_Smoking_Man&quot;&gt;&quot;Musings of a Cigarette Smoking Man&quot;&lt;/a&gt;
from 1997.&lt;/p&gt;
&lt;p&gt;Quite unexpectedly, this hilariously entertaining yet dark and sad
episode of the TV series made a deep impression on my mind when I saw
it almost twenty years ago.&lt;/p&gt;
&lt;h2&gt;MLK in the X-files episode (warning: spoilers!!)&lt;/h2&gt;
&lt;p&gt;If you haven&apos;t watched this old 1997 episode of the X-files before
you might want to go and watch it before reading any further. If you
already have watched it or don&apos;t care, here&apos;s an unofficial
&lt;a href=&quot;https://www.insidethex.co.uk/transcrp/scrp407.htm&quot;&gt;transcript&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Basically, this episode is a Forrest Gump inspired look back at
history, in which the infamous
&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Smoking_Man&quot;&gt;&quot;smoking man&quot;&lt;/a&gt;
character is revealed (or is he?) to have had a history involving
having a father who was an executed communist spy, but he himself
grows up into a young man devoted to working covertly to defeat
perceived threats to America. According to the story as it unfolds in
this episode, the smoking man personally assassinated both John
F. Kennedy and Martin Luther King, Jr.&lt;/p&gt;
&lt;p&gt;What made the part about assassinating MLK poignant was that he
respected MLK, and decided to eliminate him because of a speech by MLK
he heard on his radio against the Vietnam War.&lt;/p&gt;
&lt;p&gt;The smoking man says:&lt;/p&gt;
&lt;p&gt;&quot;If this were only a civil rights issue, I&apos;d vote for a King/Benjamin
Spock presidential ticket. But after last night, it&apos;s not...  I
respect King. He&apos;s an extraordinary man. But now he&apos;s talking like a
Maoist... And if he convinces Negroes not to fight in Vietnam, we&apos;ll
lose... and the first domino will have fallen.&quot;&lt;/p&gt;
&lt;h2&gt;MLK&apos;s 1967 speech, &lt;a href=&quot;https://en.wikipedia.org/wiki/Beyond_Vietnam:_A_Time_to_Break_Silence&quot;&gt;&quot;Beyond Vietnam: A Time to Break Silence&quot;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is a
&lt;a href=&quot;https://www.americanrhetoric.com/speeches/mlkatimetobreaksilence.htm&quot;&gt;transcript&lt;/a&gt;
of the actual speech that so angered and saddened the X-Files smoking
man (and in real history, a whole lot of people).&lt;/p&gt;
&lt;p&gt;An excerpt used in the X-Files episode: &quot;It is a sad fact that because
of comfort, complacency, a morbid fear of communism, our proneness to
adjust to injustice, the Western nations that initiated so much of the
revolutionary spirit of the modern world have now become the arch
anti-revolutionaries. This has driven many to feel that only Marxism
has a revolutionary spirit. Therefore, communism is a judgment against
our failure to make democracy real and follow through on the
revolutions that we initiated. Our only hope today lies in our ability
to recapture the revolutionary spirit and go out into a sometimes
hostile world declaring eternal hostility to poverty, racism, and
militarism.&quot;&lt;/p&gt;
&lt;p&gt;Here&apos;s audio of MLK himself speaking:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;zyE4eo_leX8&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;What the US and world were like in 1997&lt;/h2&gt;
&lt;p&gt;When I was watching this episode in 1997, I had been in a state of
apathy and disappointment in the legacy of MLK for a number of years,
partially thanks to having watched Spike Lee&apos;s 1992 film
&lt;a href=&quot;https://en.wikipedia.org/wiki/Malcolm_X_%281992_film%29&quot;&gt;&quot;Malcolm X&quot;&lt;/a&gt;
and then gone on to read the 1965
&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Autobiography_of_Malcolm_X&quot;&gt;&quot;The Autobiography of Malcolm X&quot;&lt;/a&gt;. I
had come to get the impression that MLK had failed, because he was too
&quot;soft&quot;, and Malcolm X was &quot;tougher&quot;. Note that the 1990s was a dark
time, as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Rodney_King&quot;&gt;Rodney King&lt;/a&gt;
beating was in 1991 and the LA riots were in 1992. And the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Bosnian_War&quot;&gt;Bosnian War&lt;/a&gt; 1992-1995 was
fresh in my memory, illustrating that the end of the Cold War in 1991
was just the beginning of a falling apart of the former Eastern Bloc.
So the 1990s were a time when I wondered what had gone wrong, not only
in America, but in the whole world.&lt;/p&gt;
&lt;p&gt;Somehow, revisiting MLK by accident through this X-Files episode, I
returned to thinking that I wished MLK had lived much longer. It felt
to me that he was only starting his global work when he was shut
down. Yet, as long as his words remain, and are not forgotten, there
may be hope. Not so much the overexposed 1963 words like
&lt;a href=&quot;https://en.wikipedia.org/wiki/I_Have_a_Dream&quot;&gt;&quot;I have a dream&quot;&lt;/a&gt;, but
the 1967 words against the American war on Vietnam.&lt;/p&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;That&apos;s why, when 2003 came around, with the beginning of the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Iraq_War&quot;&gt;Iraq War&lt;/a&gt;, I felt angry and
sad, and remembered that X-Files episode. I knew that MLK would have
warned against the Iraq War as well. Was there any way he could have
stopped it? Or would he have been eliminated, again?&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Every year, I will continue to renew my memory of and my understanding
of what MLK did in his life and what he was in the middle of doing
when he was murdered.&lt;/p&gt;
</content:encoded></item><item><title>If you were this old man playing chess against a young boy, what would you have done?</title><link>https://franklinchen.com/blog/2016/01/09/if-you-were-this-old-man-playing-chess-against-a-young-boy-what-would-you-have-done/</link><guid isPermaLink="true">https://franklinchen.com/blog/2016/01/09/if-you-were-this-old-man-playing-chess-against-a-young-boy-what-would-you-have-done/</guid><pubDate>Sat, 09 Jan 2016 17:08:32 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m going to tell you a true story about an old man and a young boy
(age under 10) who played a game of chess in a competitive tournament
where prize money was at stake. I&apos;d like you to think about the odd
situation that occurred, while looking at it, with &lt;em&gt;empathy&lt;/em&gt;, from
different points of view:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the old man&lt;/li&gt;
&lt;li&gt;the young boy&lt;/li&gt;
&lt;li&gt;the boy&apos;s parent&lt;/li&gt;
&lt;li&gt;the tournament director, whose job is to enforce the official
&lt;a href=&quot;https://www.uschess.org/content/view/7864/221/&quot;&gt;US Chess Federation rules of tournament chess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;the bigger picture of the chess community&lt;/li&gt;
&lt;li&gt;the biggest picture of life lessons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given the whole story, do you think that what happened was right?
Is there something you would have done differently if you had been one
of the actors in the story? In particular, what would you have done as
the old man?&lt;/p&gt;
&lt;h2&gt;Prelude&lt;/h2&gt;
&lt;p&gt;Let&apos;s call the old man Mr. M, the boy B, the tournament director T.&lt;/p&gt;
&lt;p&gt;In the beginning of the second half of a long tournament, Mr. M and B
were paired against each other. Neither had been doing too well in the
tournament up till that point, but there was the rest of the
tournament to go, and anything can happen in a long tournament. Mr. M
on paper had the highest US chess rating of their shared class
division going into the tournament and so was the favorite to win. B
was a young newcomer to chess who had only been playing for half a
year but was improving rapidly.&lt;/p&gt;
&lt;p&gt;It turned out during the game that B played extremely well, outplaying
Mr. M. The position was complicated but B had an advantage. B thought
he spotted a winning move, and carelessly (still being young and
impulsive, unfortunately) &lt;em&gt;picked up one of his pieces&lt;/em&gt; in order to
make the winning move, but in mid-air realized it was not going to
win.&lt;/p&gt;
&lt;h2&gt;Touch-move&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Touch-move_rule&quot;&gt;touch-move&lt;/a&gt; rule
in chess is one of the most important rules that exists in serious
tournament chess. If you touch your own piece with &lt;em&gt;intent&lt;/em&gt; to move
it, or touch an opponent&apos;s piece with &lt;em&gt;intent&lt;/em&gt; to capture it, then you
have to complete your move using the touched piece one way or another.&lt;/p&gt;
&lt;p&gt;Violating touch-move is very common among young chess players in a
casual setting, and therefore a critical bad habit to break, as B
learned the hard way in this game.&lt;/p&gt;
&lt;h2&gt;Where to move it?&lt;/h2&gt;
&lt;p&gt;However, since B was still in mid-air, he did not have to complete the
move he was going to play. He did have to complete some legal move
using his touched piece, which he still held. At this point, he
&lt;em&gt;intended&lt;/em&gt; to put the piece back on its &lt;em&gt;original&lt;/em&gt; square, as is legal
to do so, to think of what move to make with the piece.&lt;/p&gt;
&lt;p&gt;Unfortunately, in confusion, B accidentally released the piece on a
random other square rather than the original square. This was really
bad luck because the move that was thereby &lt;em&gt;determined&lt;/em&gt; by the
release.&lt;/p&gt;
&lt;h2&gt;The old man&apos;s decision&lt;/h2&gt;
&lt;p&gt;Since Mr. M knew as well as B did that B did not intend to release the
piece on the absurd square it was released at, he decided to allow B
to return the piece to the original square in order to make a
different legal move. Very charitable!&lt;/p&gt;
&lt;p&gt;But then Mr. M suddenly changed his mind and said the accidentally
determined move had to stand. The tournament director was called and
ruled that according to the rules, indeed the move had to stand: the
piece was released on a legal square.&lt;/p&gt;
&lt;p&gt;B&apos;s parent did not contest the ruling, because it was by the book, and
the result was that Mr. M captured B&apos;s piece and quickly won the game,
because the rest of the game was nonsensical given the nonsensical
move B was forced to play.&lt;/p&gt;
&lt;h2&gt;Your reaction?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Given this information, how do you feel about what happened? Rules
are rules, but Mr. M had the power to insist on strict enforcement
or to overlook the unintended violation, and originally intended to
let it go.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My first reaction when learning about this story was anger that Mr. M
had changed his mind like that. If Mr. M had taken one course of
action or the other, &lt;em&gt;without suddenly changing his mind&lt;/em&gt;, I would
have been OK with that. Either be forgiving or play by the book, but
be consistent!&lt;/p&gt;
&lt;p&gt;My second reaction, was from the point of view of what this
incident meant for B in the long run. I had some conflicting feelings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I felt bad about B being forced to lose an important game in which
he was playing some of the best chess he had ever played in his
life.&lt;/li&gt;
&lt;li&gt;I was annoyed that B still hadn&apos;t mastered &quot;touch-move&quot;, and felt
that he needed to &lt;em&gt;learn a lesson&lt;/em&gt; that would help him avoid such
carelessness in his future chess tournaments, and this was a
legitimate case of his learning an important lesson.&lt;/li&gt;
&lt;li&gt;I worried about how B would feel about this loss, given that he had
started off the tournament pretty badly and was just getting his
momentum back by the second half.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Complications&lt;/h2&gt;
&lt;p&gt;But this wasn&apos;t the whole story. The other thing Mr. M did when
explaining why he changed his mind was that he wanted to win the game
and the tournament (recall that he was in a worse position against B,
and hadn&apos;t been doing so well in the tournament despite being the
highest rated player in the section). So his concern wasn&apos;t about
strictly enforcing the rules; presumably if he already had a
tournament win locked up and this game didn&apos;t &quot;matter&quot;, he would have
been &quot;charitable&quot; and allowed B to continue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does this change how you feel about what happened?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For me, Mr. M&apos;s justification made me actively dislike him. At the
same time, maybe B learned an additional life lesson in this
tournament, that adults will do whatever is in their own interest and
any generosity offered may be contingent on whether it impacts their
own interest.&lt;/p&gt;
&lt;h2&gt;The end result&lt;/h2&gt;
&lt;p&gt;Some rounds later, the tournament was complete. It turned out that
Mr. M won all subsequent games he played in the tournament, and
therefore won the tournament, along with the prize money for first
place, $500. He achieved his goal, fulfilling his justification for
being firm in his game against B. So from his point of view, he made
the right decision and got his moment of glory.&lt;/p&gt;
&lt;p&gt;B bounced back from his disaster and also won his remaining games, and
ended up with a pretty successful tournament overall. You could say
that although it was unfortunate that his touch-move slip might have
cost him first place, he learned a lot about taking touch-move
seriously and about recovering from unfortunate incidents during a
chess tournament. So from B&apos;s point of view, he probably learned a lot
more from Mr. M&apos;s adherence to the rules than if Mr. M had been too
nice.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Although I don&apos;t like how Mr. M went about what he did, the end result
seems actually optimal for everyone involved. Or was it?&lt;/p&gt;
&lt;h2&gt;Appendix&lt;/h2&gt;
&lt;p&gt;I&apos;ve written in the past about some life lessons I learned from chess
as a child. I&apos;m curious how B will look back at his incident later in
life.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven&quot;&gt;Life lessons I learned from a lunch recess chess game at age seven&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him&quot;&gt;Why I am grateful that my father never let me win a chess game against him&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Accidentally discovering and performing some music by Brazilian composer Ernesto Nazareth: Coração que Sente</title><link>https://franklinchen.com/blog/2015/12/29/accidentally-discovering-and-performing-some-music-by-brazilian-composer-ernesto-nazareth-cora%25C3%25A7%25C3%25A3o-que-sente/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/29/accidentally-discovering-and-performing-some-music-by-brazilian-composer-ernesto-nazareth-cora%25C3%25A7%25C3%25A3o-que-sente/</guid><pubDate>Tue, 29 Dec 2015 23:05:10 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;In November, I fell in love with some music I accidentally discovered.&lt;/p&gt;
&lt;p&gt;What happened was that I was looking for some music for &lt;em&gt;flute&lt;/em&gt; and
&lt;em&gt;guitar&lt;/em&gt; to play, with me on flute and one of my friends on guitar, and
I did a simple search in the
&lt;a href=&quot;/blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;local library&lt;/a&gt;
&lt;a href=&quot;https://librarycatalog.einetwork.net/&quot;&gt;online catalog&lt;/a&gt;, and at the top
sorted by date was
&lt;a href=&quot;https://web.archive.org/web/20240909173900/https://www.halleonard.com/product/viewproduct.action?itemid=49044167&quot;&gt;&quot;Brazilian folk tunes for flute and guitar&quot;&lt;/a&gt;,
which came with a CD of sample performance tracks,
so I picked it up.&lt;/p&gt;
&lt;p&gt;What followed was a series of explorations that resulted in unexpected
changes in my life.&lt;/p&gt;
&lt;h2&gt;Exploring the Brazilian music in the score book&lt;/h2&gt;
&lt;p&gt;I listened to some tracks on the CD of this book of arrangements and
found the music (Brazilian polkas, tangos, waltzes) really
enchanting. Most of the music was by a composer
&lt;a href=&quot;https://en.wikipedia.org/wiki/Ernesto_Nazareth&quot;&gt;Ernesto Nazareth&lt;/a&gt;,
who lived 1863-1934. I wouldn&apos;t call this music &quot;folk tunes&quot;: it&apos;s
a sophisticated combination of popular and classical styles using
catchy dance rhythms.&lt;/p&gt;
&lt;p&gt;I&apos;m a real sucker for waltzes, so at first I thought I would pick one
of the beautiful waltzes to choose to suggest to play with a partner
on guitar. It came down to &quot;Confidências&quot; or &quot;Coração que Sente&quot;
(English translation: &quot;Heart that Feels&quot;). The
latter was much easier and shorter, as I learned while sight reading
through it with the CD track, so I thought I was done.&lt;/p&gt;
&lt;h2&gt;Finding astounding performances of &quot;Coração que Sente&quot; on YouTube&lt;/h2&gt;
&lt;p&gt;Looking for performances of the piece on YouTube to get an idea of
how people play it, I immediately entered a strange new world.&lt;/p&gt;
&lt;p&gt;First of all, I learned that the original music was for
&lt;em&gt;piano&lt;/em&gt;. OK. Then, while listening to and/or watching a dozen or so
videos of performances of this piece (OK, I was obsessed), I found a
huge variety of interpretations, and some of them spoke to me more
than others. Some I found light and boring. The ones that interested
me were the ones that were extremely intense and probing. You might
think this music was just fluff, but I found a dark undercurrent
behind it that spoke to me, in that its different sections (the piece
is roughly in rondo form) present clear emotional contrasts, with
longing, melancholy, and manic excitement.&lt;/p&gt;
&lt;h3&gt;Arthur Moreira Lima&lt;/h3&gt;
&lt;p&gt;A very intense performance I found was by a pianist named
&lt;a href=&quot;https://en.wikipedia.org/wiki/Arthur_Moreira_Lima&quot;&gt;Arthur Moreira Lima&lt;/a&gt;
in 1975, used after the fact as soundtrack on YouTube for a silent
film using footage from 1929. What an odd pairing!&lt;/p&gt;
&lt;p&gt;Lima goes all out in Romantic expressiveness, with extensive rubato
and dynamic and rhythmic flexibility. It was completely different from
the relatively straight, danceable version on the flute/guitar CD
demo.&lt;/p&gt;
&lt;p&gt;You have to listen to his performance (ignore the film or watch it, as
you wish):&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;Mmjt8RrfXtA&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;João Carlos Assis Brasil&lt;/h3&gt;
&lt;p&gt;Even more extreme than Lima was this weird guy João Carlos Assis
Brasil, who is apparently so unknown in the English-speaking world
that Wikipedia doesn&apos;t have an entry on him, although I found this
random
&lt;a href=&quot;https://www.bach-cantatas.com/Bio/Assis-Brasil-Joao-Carlos.htm&quot;&gt;pieced-together bio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;His live performance here from 2013 is the single most extreme, yet
deepest, interpretation of this waltz I found (he adds his own
ornamentation). I was deeply moved by it. (Warning, bad sound
quality.)&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;iG_o94sU1tE&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Other good performances&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://pt.wikipedia.org/wiki/Fernanda_Chaves_Canaud&quot;&gt;Fernanda Canaud&lt;/a&gt;,
with a very expressive performance (including her own extensive
embellishments), uses drastic changes in articulation and tempo for
contrast. I particularly liked how naturally she seemed to express her
personality through the piece:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;-DfOYvNCaqk&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pt.wikipedia.org/wiki/Maria_Teresa_Madeira&quot;&gt;Maria Theresa Madeira&lt;/a&gt;
captures well the moods of the different sections of the piece; I
really like the rhythmic alertness and drive throughout:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;eeztzLsF6Cc&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Some random YouTube guy named Ilton, playing a really crappy upright
piano, but with amazing rhythmic expression that I totally love (if he
played this on a good piano, I would consider his interpretation one
of my favorites, period):&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;b-gYk_YUoIM&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://lucianoalves.com.br/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://lucianoalves.com.br/&quot;&amp;gt;Luciano Alves&amp;lt;/span&amp;gt;, 2013, in an elegant
performance:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;y8LchR8Mi5Y&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pt.wikipedia.org/wiki/Marcelo_Bratke&quot;&gt;Marcelo Bratke&lt;/a&gt; in a
relaxed, easygoing, dream interpretation with a lilt (but after all
the intense interpretations, I find this tame, I confess):&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;Pn5vYhfQYHs&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;The performance that made me decide to learn and play the piece&lt;/h2&gt;
&lt;p&gt;So I spent a lot of time listening to and watching performances of the
piece, but one performance was the one that made me decide to go learn
and play the piece! It was this one by some random guy Marcelo Chiarella:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;QaQL9VlJy8s&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Why? Because I could &lt;em&gt;relate to&lt;/em&gt; his playing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;He wasn&apos;t some famous pro pianist, as far as I could tell.&lt;/li&gt;
&lt;li&gt;The sound quality was good and the recording was as though I were
standing right there, made me feel like I was in his home, and
nobody else there.&lt;/li&gt;
&lt;li&gt;I could see his hands up close.&lt;/li&gt;
&lt;li&gt;I liked various things he did with expression (especially when he
&lt;em&gt;wasn&apos;t&lt;/em&gt; pedaling).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And I knew that I could be much more expressive and personal
(remember, the title in English translation is &quot;Heart that feels&quot;)
while playing this piece &lt;em&gt;solo&lt;/em&gt;, on piano, than in a flute/guitar
duet. So I decided to go for it.&lt;/p&gt;
&lt;h2&gt;Finding an official free score&lt;/h2&gt;
&lt;p&gt;I had to find a score. Luckily, it turned out that there was some
big
&lt;a href=&quot;https://www.ernestonazareth150anos.com.br/&quot;&gt;150-year anniversary celebration for Ernesto Nazareth&lt;/a&gt;
in 2013, and I found an official &lt;a href=&quot;https://www.ernestonazareth150anos.com.br/files/uploads/work_elements/work_43/coracao_que_sente_piano.pdf&quot;&gt;free PDF score&lt;/a&gt; on the &lt;a href=&quot;https://www.ernestonazareth150anos.com.br/works/view/43&quot;&gt;page for the piece&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That page also had a story about the title of the piece and why it was
composed. It was in Portuguese, so I tried with the help of Google
Translate to translate it (I only studied Portuguese for several weeks
many years ago), and pieced together (I hope I didn&apos;t get this too
wrong) that Nazareth dedicated it to a student of his, Gabriella
Crauz, who had showed great emotion as Nazareth described the last
days of a dying nephew, as though she had been there herself
experiencing what he experienced as he saw the sights in the city one
last time. (If you know Portuguese, please correct me if I got the
story wrong.)&lt;/p&gt;
&lt;p&gt;This story only added to the sense I already had that this seemingly
simple piece hid a depth of emotion that some performers already
revealed for me.&lt;/p&gt;
&lt;h2&gt;My performance of &quot;Coração que Sente&quot;&lt;/h2&gt;
&lt;p&gt;As I started working on the piece, I had to decide where and when to
perform it. It turned out that I learned that friends who mean a lot
to me decided to move. This was really tough news to me, and they have
always invited me and Abby to their December holiday party, where I
play music, so I decided that I was going to perform the piece at
their (now farewell) party and openly dedicate my performance to them,
because they are human beings of deep feeling, hence &quot;Heart that
feels&quot;.&lt;/p&gt;
&lt;p&gt;I performed the piece at the party the day after Christmas. In my
nervousness, I completely lost my train of thought a couple of times
and botched things up inexplicably (I had gone through the piece with
no errors so many times at home), but I made it through, and my
gesture was appreciated.&lt;/p&gt;
&lt;p&gt;I then decided to quickly record myself at home soon after (and still
botched some things up), so here I am. This is for Henry and Gina:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;VBOS9btMUPI&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Other music by Ernesto Nazareth&lt;/h2&gt;
&lt;p&gt;I spent all this time talking about just one piece by Nazareth, but he
wrote much more, and more substantial pieces.&lt;/p&gt;
&lt;p&gt;I totally love Fernanda Canaud&apos;s performance of &lt;a href=&quot;https://www.ernestonazareth150anos.com.br/works/view/133&quot;&gt;&quot;Batuque&quot;&lt;/a&gt;, &quot;Coração
que Sente&quot;, and
&lt;a href=&quot;https://www.ernestonazareth150anos.com.br/works/view/136&quot;&gt;&quot;Odeon&quot;&lt;/a&gt;
(the performance of &quot;Coração que Sente&quot; is very different from the one
I posted above: more inward, refined, beautiful rather than super-dramatic):&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;U6WaAgRWqaw&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is Nazareth playing his own pieces in recordings from 1912-1930:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;eZS3bDNJEUY&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is a one-hour special documentary video &quot;Nazareth Revisitado&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;TJAT3pJJR6M&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;A note on the English-language-oriented Web&lt;/h2&gt;
&lt;p&gt;I found a whole world of music and musicians that barely register in
the English-language-oriented part of the Web. Most of what I found
when trying to look up Nazareth or various Brazilian pianists was in
Portuguese. So it&apos;s been really humbling to remember that many in the
English-speaking world might not even know about all these Brazilian
composers and musicians who are not big enough stars to warrant
international fame.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am grateful for accidentally discovering an entire world of
Brazilian music and performers of it through my search in the local
library catalog for music to play.&lt;/p&gt;
&lt;p&gt;I am grateful for friends who inspire me by their examples as human
beings of genuine and great feeling.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 24: conclusion and thanks</title><link>https://franklinchen.com/blog/2015/12/24/24-days-of-hackage-2015-day-24-conclusion-and-thanks/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/24/24-days-of-hackage-2015-day-24-conclusion-and-thanks/</guid><pubDate>Thu, 24 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 24&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3y3zpn/24_days_of_hackage_2015_day_24_conclusion_and/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Whew, it&apos;s finally over, this &quot;24 days of Hackage, 2015&quot; project!&lt;/p&gt;
&lt;p&gt;I never expected to do something like this, ever, and I am grateful to
everyone who encouraged me while I was engaged in it. I enjoyed the
quality of comments and corrections I got as well as links to related
Haskell libraries.&lt;/p&gt;
&lt;p&gt;Some closing thoughts:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;My project goals&lt;/h2&gt;
&lt;p&gt;My goals for the project were simple at first (&quot;show some stuff&quot;), but
quickly sharpened as I went along and became more explicit in my mind. Here
are some:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide running, tested code, not just snippets&lt;/li&gt;
&lt;li&gt;Make sure the code is reproducibly buildable, by using &lt;a href=&quot;http://haskellstack.org/&quot;&gt;Stack&lt;/a&gt; and
&lt;a href=&quot;https://www.stackage.org/lts&quot;&gt;Stackage LTS&lt;/a&gt; as a basis&lt;/li&gt;
&lt;li&gt;Anticipate later updating of the articles in case of factual
changes or library API changes&lt;/li&gt;
&lt;li&gt;Provide useful reference links to documentation and examples&lt;/li&gt;
&lt;li&gt;Write example code that, although necessarily limited, might
inspire enough curiosity to look further&lt;/li&gt;
&lt;li&gt;Explain why I find something interesting, rather than just show it&lt;/li&gt;
&lt;li&gt;Make note of possible improvements, especially for human
usability&lt;/li&gt;
&lt;li&gt;Discuss only libraries I have used, are starting to use, or intend
to use in the future&lt;/li&gt;
&lt;li&gt;Try to reuse tasks and code from earlier posts in order to create
more of a sense of progression and continuity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope that I have succeeded in accomplishing some of these goals. I
know that because of time constraints, I had to cut corners where if I
had time, I would have written much more text and written much more
realistic code.&lt;/p&gt;
&lt;h2&gt;The Haskell ecosystem keeps growing&lt;/h2&gt;
&lt;p&gt;There a hundred other libraries I could have picked to mention along
the way, some of which I&apos;ve used, many of which I&apos;ve heard good things
about and never used (yet).&lt;/p&gt;
&lt;p&gt;Some useful coverage of what&apos;s been happening in Haskell:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gabriel Gonzalez&apos;s &lt;a href=&quot;https://github.com/Gabriel439/post-rfc/blob/master/sotu.md&quot;&gt;State of the Haskell ecosystem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Stephen Diehl&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.stephendiehl.com/posts/haskell_2016.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.stephendiehl.com/posts/haskell_2016.html&quot;&amp;gt;reflections on Haskell in 2015&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;Commercial Haskell group&apos;s material in progress on &lt;a href=&quot;https://github.com/commercialhaskell/haskelldocumentation/blob/master/outline/intermediate-haskell.md&quot;&gt;intermediate Haskell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Other cool stuff I noticed&lt;/h2&gt;
&lt;p&gt;There is a
blog series on solving &lt;a href=&quot;http://adventofcode.com/&quot;&gt;Advent of Code&lt;/a&gt; &lt;a href=&quot;http://gelisam.blogspot.ca/2015/12/a-whirlwind-tour-of-haskell-via-advent.html&quot;&gt;using Haskell&lt;/a&gt;. I&apos;ve
deliberately not read this yet, because I might want to try Advent of
Code myself sometime.&lt;/p&gt;
&lt;h2&gt;On writing&lt;/h2&gt;
&lt;p&gt;I don&apos;t expect to do a &quot;24 days of Hackage&quot; again.&lt;/p&gt;
&lt;p&gt;For one thing, it was exhausting, at a time of year when I ended up
having to cancel most of my normal life in December to dedicate myself
to the project! I did this project out of gratitude and love for a
community that has provided me the tools to make my programming life
more fun, productive, and just plain &lt;em&gt;joyful&lt;/em&gt;, but I am relieved that
it&apos;s over and plan to just relax for the holidays.&lt;/p&gt;
&lt;p&gt;I also decided that in future writing projects (about anything, not
just Haskell-related), I would like more time to take a different
pace, and write in more &lt;em&gt;depth&lt;/em&gt; about topics, perhaps multi-part
articles that assume a well-defined audience. I knew up front for &quot;24
days&quot; that I was providing &quot;appetizers&quot; here, and without knowing
exactly which part of an undefined audience would find which
appetizers useful. I would like to provide complete meals targeted
toward well-defined audiences, with a preface for each article
explaining what background I assume, with pointers to prerequisites as
appropriate, and build up a web of interlinked information.&lt;/p&gt;
&lt;p&gt;I have a general suggestion: how about if the Haskell community
collaborated on a &quot;module of the week&quot; project, maybe even with the
idea of incrementally building up some kind of mega-demo app
showcasing Haskell that meaningfully incorporated many libraries and
would be an example real world project that would be very useful for
learners?&lt;/p&gt;
&lt;p&gt;Meanwhile, I would like to encourage anyone who wants to write
anything, however short or long, to go and do it. It&apos;s a tremendous
learning opportunity.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;d like to thank Ollie again for having done the &quot;24 days&quot; in the
past, putting out the word that he couldn&apos;t do it this year, and
encouraging me to take it up when I suggested maybe I could do
something to contribute. Don&apos;t forget, his
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/&quot;&amp;gt;&quot;24 days&quot; series&amp;lt;/span&amp;gt; are still up and
valuable as reference.&lt;/p&gt;
&lt;p&gt;Also, I was happy that
&lt;a href=&quot;http://haskellbr.com/&quot;&gt;the Haskell user group in Brazil&lt;/a&gt; has been
translating, with my permission, my articles into Portuguese for their
&lt;a href=&quot;http://blog.haskellbr.com/&quot;&gt;blog&lt;/a&gt; and use the articles as a basis for
discussion and growing the local Haskell community!&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 23: Liquid Haskell: refinement types for the real world</title><link>https://franklinchen.com/blog/2015/12/23/24-days-of-hackage-2015-day-23-liquid-haskell-refinement-types-for-the-real-world/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/23/24-days-of-hackage-2015-day-23-liquid-haskell-refinement-types-for-the-real-world/</guid><pubDate>Wed, 23 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 23&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3y00mx/24_days_of_hackage_2015_day_23_liquid_haskell/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;During the course of this article series &quot;24 days of Hackage, 2015&quot;,
I&apos;ve made an effort to give a flavor of using QuickCheck to specify
contracts that should be satisfied by our code that are not checked at
compile time but are checked through randomized testing at run
time. But we know that just because code has hundreds or thousands of
tests, that is not a &lt;em&gt;proof&lt;/em&gt; that code is &lt;em&gt;actually correct for all
possible cases&lt;/em&gt;. I&apos;ve also used &lt;code&gt;newtype&lt;/code&gt; as a way of indicating
&lt;em&gt;intent&lt;/em&gt; that I want to restrict legal values for a type, such
as
&lt;a href=&quot;/blog/2015/12/15/24-days-of-hackage-2015-day-15-iospec-testing-io-and-some-quickcheck-tricks/&quot;&gt;on day 15&lt;/a&gt;
when I laboriously intended &lt;em&gt;refinements&lt;/em&gt; of existing types but with
no automatically checkable proof that I was populating them correctly.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | User input without a newline, and not equal to &quot;secret&quot;.
newtype NotSecretString =
  NotSecretString { getNotSecretString :: NotNewlineString }

type NotNewlineString = [NotNewlineChar]

newtype NotNewlineChar =
  NotNewlineChar { getNotNewlineChar :: Char }
  deriving (Show)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is why I&apos;m so excited about
&lt;a href=&quot;http://goto.ucsd.edu/~rjhala/liquid/haskell/blog/about/&quot;&gt;Liquid Haskell&lt;/a&gt;,
a static analysis system for Haskell that is under very active
development. It provides a &lt;em&gt;refinement type&lt;/em&gt; system that allows you to
write, in a natural and clear way, certain varieties of contracts that
can be verified &lt;em&gt;at compile time&lt;/em&gt;. I believe this sort of system will
be a game changer in the future of programming languages.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;What is a refinement type?&lt;/h2&gt;
&lt;p&gt;A refinement type is a type with some predicate that &quot;refines&quot; what
possible values are allowed. In Liquid Haskell, you can add refinement
type annotations to Haskell code, &lt;em&gt;embedded in ordinary Haskell
comments&lt;/em&gt;, and also write your own predicates. It&apos;s great that Liquid
Haskell can be introduced into existing Haskell code without
disruption or requiring that the Liquid Haskell checker be run in
order to compile the Haskell code.&lt;/p&gt;
&lt;p&gt;As an example (taken from an official demo), below we have an ordinary
key-value association list data type and then we have values of two
different refinements of the type where we wanted to check &lt;em&gt;at compile
time&lt;/em&gt; that the integer key is constrained in the desired way.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data AssocP k v = KVP [(k, v)]

{-@ digitsP :: AssocP {v:Int | (Btwn 0 v 9)} String @-}
digitsP :: AssocP Int String
digitsP = KVP [ (1, &quot;one&quot;)
              , (2, &quot;two&quot;)
              , (3, &quot;three&quot;) ]

{-@ sparseVecP :: AssocP {v:Int | (Btwn 0 v 1000)} Double @-}
sparseVecP :: AssocP Int Double
sparseVecP = KVP [ (12 ,  34.1 )
                 , (92 , 902.83)
                 , (451,   2.95)
                 , (877,   3.1 )]

{-@ predicate Btwn Lo V Hi = (Lo &amp;lt;= V &amp;amp;&amp;amp; V &amp;lt;= Hi) @-}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One thing to note about refinement types is that an expression can
have more than one refinement type that you define. For example, an
&lt;code&gt;Int&lt;/code&gt; refined to being between 0 and 9 is of course also an &lt;code&gt;Int&lt;/code&gt;
refined to being between 0 and 20.&lt;/p&gt;
&lt;p&gt;You can use refinements for preconditions and postconditions, and
refine function types.&lt;/p&gt;
&lt;h2&gt;Great live demo site!&lt;/h2&gt;
&lt;p&gt;Go to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://goto.ucsd.edu:8090/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://goto.ucsd.edu:8090/index.html&quot;&amp;gt;interactive live Liquid Haskell demo site&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;p&gt;Because an excellent demo site already exists, I&apos;m not going to walk
through any examples of using Liquid Haskell, although I may look into
going back to my old code to retroactively start adding use of Liquid
Haskell.&lt;/p&gt;
&lt;p&gt;The demo site has dozens of fully worked out examples, embedded in a
live environment where you can change the code and rerun the checker
to see what happens. Examples include defining a refinement type of
a sorted list, so that you can write a sorting function of type &lt;code&gt;(Ord a) =&amp;gt; [a] -&amp;gt; IncrList a&lt;/code&gt; in which the type requires that it is
&lt;em&gt;proved by the solver&lt;/em&gt; that your sorting function actually performs a
sort as advertised.&lt;/p&gt;
&lt;h2&gt;How do refinement types work?&lt;/h2&gt;
&lt;p&gt;Liquid Haskell works by going from refinements to a collection of
logic constraints whose verification is outsourced to an off-the-shelf
&lt;a href=&quot;https://en.wikipedia.org/wiki/Satisfiability_modulo_theories&quot;&gt;SMT&lt;/a&gt;
solver, such as &lt;a href=&quot;https://github.com/Z3Prover/z3&quot;&gt;Z3&lt;/a&gt;, which needs to
be installed. (On Mac OS X, I install Z3 with &lt;code&gt;brew install z3&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;I have installed Liquid Haskell globally using Stack:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack install liquidhaskell intern liquid-fixpoint
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This installs the &lt;code&gt;liquid&lt;/code&gt; executable that you run.&lt;/p&gt;
&lt;h2&gt;Tutorials, books, blog, discussion group&lt;/h2&gt;
&lt;p&gt;An extensive, free book,
&lt;a href=&quot;http://ucsd-progsys.github.io/liquidhaskell-tutorial/&quot;&gt;&quot;Programming with Refinement Types: An Introduction to Liquid Haskell&quot;&lt;/a&gt;,
available both as PDF and as a beautifully readable HTML version.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/ucsd-progsys/liquidhaskell&quot;&gt;Liquid Haskell GitHub repo&lt;/a&gt;, with
lots of activity there.&lt;/p&gt;
&lt;p&gt;The
&lt;a href=&quot;http://goto.ucsd.edu/~rjhala/liquid/haskell/blog/&quot;&gt;Liquid Haskell blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The
&lt;a href=&quot;https://groups.google.com/forum/#!forum/liquidhaskell&quot;&gt;Google group mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-30)&lt;/h3&gt;
&lt;p&gt;Gabriel Gonzalez has put up a &lt;a href=&quot;http://www.haskellforall.com/2015/12/compile-time-memory-safety-using-liquid.html&quot;&gt;tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Videos&lt;/h2&gt;
&lt;p&gt;The Liquid Haskell team has been very active in giving
presentations about their work. Here are some:&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://ranjitjhala.github.io/&quot;&gt;Ranjit Jhala&lt;/a&gt;, &quot;Refinement Types for Haskell&quot;&lt;/h3&gt;
&lt;p&gt;This is from 2014:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vYh27zz9530&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-30)&lt;/h3&gt;
&lt;p&gt;There is a full LambdaConf 2015 video here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vQrutfPAERQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://gridaphobe.github.io/&quot;&gt;Eric Seidel&lt;/a&gt;, &quot;Refinement Types for the Real World&quot;&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot;
src=&quot;https://www.youtube.com/embed/vqvNQixKr6w&quot; frameborder=&quot;0&quot;
allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://goto.ucsd.edu/~nvazou/&quot;&gt;Niki Vazou&lt;/a&gt;, &quot;Bounded Refinement Types&quot;&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/nd3buP97Ryw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;The recent paper on this work is
&lt;a href=&quot;http://goto.ucsd.edu/~nvazou/icfp15/main.pdf&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A note on full-blown dependent types&lt;/h2&gt;
&lt;p&gt;You might wonder what the relationship is between refinement types and
a full-blown dependent type system. I see them both as useful
techniques.  With full-blown dependent types you can write really
fancy types that encode various forms of information (and I&apos;m
interested in using dependent types more in 2016 also), but the
flexibility and feel of using refinement types seems a win for
problems where it is very natural to write down amenable predicates
and also to work incrementally, refining gradually.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m very excited about Liquid Haskell because it&apos;s bringing refinement
types into a real world setting. I expect to try to make real use of
it in the coming year, 2016.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 22: Shake: the dynamic build system</title><link>https://franklinchen.com/blog/2015/12/22/24-days-of-hackage-2015-day-22-shake-the-dynamic-build-system/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/22/24-days-of-hackage-2015-day-22-shake-the-dynamic-build-system/</guid><pubDate>Tue, 22 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 22&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3xu80o/24_days_of_hackage_2015_day_22_shake_the_dynamic/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt;, the venerable build system, is flawed in many ways. For me,
the main two problems were&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;handling &lt;em&gt;dynamic&lt;/em&gt; builds, where something during the build triggers
dependencies&lt;/li&gt;
&lt;li&gt;wanting to write code in a real language, not &lt;code&gt;make&lt;/code&gt;-the-Turing-complete-language&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many improved build systems have come along since &lt;code&gt;make&lt;/code&gt;. For example,
a couple of years ago, I discovered &lt;a href=&quot;http://www.scons.org/&quot;&gt;SCons&lt;/a&gt;,
the Python-based &lt;em&gt;dynamic&lt;/em&gt; build system, and it made my life so much
better, because I could treat it as an embeddable library and have
tasks call my Python code. I still have SCons programs in use.&lt;/p&gt;
&lt;p&gt;However, &lt;a href=&quot;http://shakebuild.com/&quot;&gt;Shake&lt;/a&gt; has come along, and I&apos;m not
looking back. It has the virtues of SCons and more. I already use
Shake for new build setups and plan to migrate my old SCons builds to
Shake the next time they need any significant reworking.&lt;/p&gt;
&lt;p&gt;Note that the
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/wiki/Building/Shake&quot;&gt;GHC build is migrating to Shake&lt;/a&gt;,
so serious dogfooding is going on.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;For information about Shake&lt;/h2&gt;
&lt;p&gt;Instead of repeating some fraction of the extensive and excellent
documentation on Shake, I direct you to the
&lt;a href=&quot;http://shakebuild.com/&quot;&gt;Web site&lt;/a&gt;, which includes tutorial and
reference material. There is also a
&lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/shake-build-system&quot;&gt;Google group&lt;/a&gt;
mailing list. The &lt;a href=&quot;https://github.com/ndmitchell/shake&quot;&gt;GitHub repo&lt;/a&gt;
is extremely active always.&lt;/p&gt;
&lt;p&gt;Also, check out creator
&lt;a href=&quot;http://neilmitchell.blogspot.com/&quot;&gt;Neil Mitchell&apos;s blog&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A little example of Shake&lt;/h2&gt;
&lt;p&gt;I decided to dogfood Shake myself for this post. It turns out that I
should have done this earlier. I had stupidly done a repetitive task
every day, copying information into a growing table of contents of the
whole Days of Hackage series, when I should have written a program to
do it automatically.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example Shake program that I finally wrote to do it. It is a
dynamic build because the table of contents depends on running a
process (the Hugo static site generator) and saving off information
from that, as well as extracting information out of Markdown files.  I
extract the day and title from the Markdown source files, and match up
the day with the generated HTML URL to create a table of contents.&lt;/p&gt;
&lt;h3&gt;Compilation&lt;/h3&gt;
&lt;p&gt;I compile my Shake programs because that makes things much faster, but
you can run the &lt;code&gt;shake&lt;/code&gt; command also.&lt;/p&gt;
&lt;h3&gt;Dynamic dependencies&lt;/h3&gt;
&lt;p&gt;Note that I could have used an
&lt;a href=&quot;https://hackage.haskell.org/package/shake-0.15.5/docs/Development-Shake.html#g:11&quot;&gt;oracle&lt;/a&gt;
to save structured information, but for illustration I saved it into
files instead, at the expense of &quot;stringly typed&quot; assumptions about
the contents of the files.&lt;/p&gt;
&lt;p&gt;Shake is all about &lt;code&gt;want&lt;/code&gt; (target) and &lt;code&gt;need&lt;/code&gt; (what to depend
on). Some functions implicitly add a &lt;code&gt;need&lt;/code&gt;, such as
&lt;code&gt;getDirectoryFiles&lt;/code&gt; and &lt;code&gt;readFileLines&lt;/code&gt;. I use &lt;code&gt;writeFileChanged&lt;/code&gt; so
that Shake can decide whether the contents have stayed the same.&lt;/p&gt;
&lt;p&gt;I apologize for the non-explicit imports. Shake being an extensive
domain-specific language, I decided to just absorb the vocabulary, but
I realize it makes this harder to read.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}

module Main where

import MultilineRe (multilineRe)

import Development.Shake
import Development.Shake.FilePath

import Text.Regex.PCRE.Heavy (Regex, scan)
import Data.Maybe (listToMaybe)
import Text.Printf (printf)
import Control.Monad (zipWithM)

shakeDir :: FilePath
shakeDir = &quot;_build&quot;

-- | File, sorted by day, containing a line for each Markdown source of a post.
daysSources :: FilePath
daysSources = shakeDir &amp;lt;/&amp;gt; &quot;days-sources&quot;

-- | File, sorted by day, containing a line for each generated Day of Hackage post.
daysUrls :: FilePath
daysUrls = shakeDir &amp;lt;/&amp;gt; &quot;days-urls&quot;

tocFile :: FilePath
tocFile = shakeDir &amp;lt;/&amp;gt; &quot;TOC.md&quot;

-- | Base directory of blog source.
blogDir :: FilePath
blogDir = &quot;/Users/chen/Sync/ConscientiousProgrammer&quot;

-- | Base directory of generated blog.
publicDir :: FilePath
publicDir = &quot;/Users/chen/ConscientiousProgrammer-public&quot;

-- | Generated HTML directory for each post.
urlsGlob :: FilePattern
urlsGlob = &quot;blog/2015/1*/*/*hackage-2015-day-*&quot;

-- | Location of Markdown blog posts.
postDir :: FilePath
postDir = blogDir &amp;lt;/&amp;gt; &quot;content/post&quot;

-- | Rely on naming convention here.
postGlob :: FilePattern
postGlob = &quot;*hackage-2015-day-*&quot;

main :: IO ()
main = shakeArgs shakeOptions{shakeFiles=shakeDir} $ do
  want [tocFile]

  tocFile %&amp;gt; \out -&amp;gt; do
    sourcePaths &amp;lt;- readFileLines daysSources
    urls &amp;lt;- readFileLines daysUrls

    toc &amp;lt;- liftIO $ zipWithM extractTOCEntry sourcePaths urls
    writeFileChanged out $ unlines $ map formatTOCEntry toc

  -- Run Hugo to generate a directory for each post.
  daysUrls %&amp;gt; \out -&amp;gt; do
    need [daysSources]
    unit $ cmd (Cwd blogDir) &quot;hugo&quot;
    Stdout stdout &amp;lt;- cmd Shell (Cwd publicDir) &quot;echo&quot; urlsGlob
    writeFileChanged out $ unlines $ words stdout

  daysSources %&amp;gt; \out -&amp;gt; do
    daysFiles &amp;lt;- getDirectoryFiles postDir [postGlob]
    writeFileChanged out $ unlines $ map (postDir &amp;lt;/&amp;gt;) daysFiles

-- | A day&apos;s entry in the TOC.
data TOCEntry =
  TOCEntry { _day :: Int
           , _title :: String
           , _url :: String
           }
  deriving (Eq, Ord)

dayTitleRegex :: Regex
dayTitleRegex = [multilineRe|^title:.*day\s+(\d+):\s*([^&quot;]+)|]

extractTOCEntry :: FilePath -&amp;gt; String -&amp;gt; Action TOCEntry
extractTOCEntry sourcePath url = do
  text &amp;lt;- readFile&apos; sourcePath
  case listToMaybe (scan dayTitleRegex text) of
    Just (_, [dayString, title]) -&amp;gt;
      return $ TOCEntry (read dayString) title url
    _ -&amp;gt;
      error $ printf &quot;failed to extract day and title from %s&quot; sourcePath

formatTOCEntry :: TOCEntry -&amp;gt; String
formatTOCEntry entry =
  printf &quot;- Day %d: [%s](/%s/)&quot; (_day entry) (_title entry) (_url entry)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;More resources&lt;/h2&gt;
&lt;p&gt;A nice introductory talk by Neil aimed at a non-Haskell audience to
try to sell Shake as a killer app:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/iFZQyLMrkn4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;His talk at Haskell eXchange 2015,
&lt;a href=&quot;http://neilmitchell.blogspot.com/2015/10/defining-your-own-shake-build-system.html&quot;&gt;Defining your own build system with Shake&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you need to build stuff, use Shake. I&apos;m very excited by its active
development.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 21: hood, GHood, Hoed: observation oriented debugging in Haskell</title><link>https://franklinchen.com/blog/2015/12/21/24-days-of-hackage-2015-day-21-hood-ghood-hoed-observation-oriented-debugging-in-haskell/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/21/24-days-of-hackage-2015-day-21-hood-ghood-hoed-observation-oriented-debugging-in-haskell/</guid><pubDate>Mon, 21 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 21&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3xqaak/24_days_of_hackage_2015_day_21_hood_ghood_hoed/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;How do you debug your Haskell code?&lt;/p&gt;
&lt;p&gt;I have to confess up front that I don&apos;t have a good answer to the
question of how I debug in Haskell.&lt;/p&gt;
&lt;p&gt;I&apos;m not really the right person to talk about debuggers, because the
last time I used an official debugging tool was when I was developing
in C and C++ and used tools such as &lt;code&gt;gdb&lt;/code&gt; and higher-level interfaces
to that, and since then, my debugging process for most languages has
involved looking at stack traces and logs, insertion of &quot;print&quot;
statements, writing finer-grained tests, and refactoring code to find
out the root cause of a problem. I do not use official debugger
applications any more (with breakpoints, stepping, etc.). But should
I?&lt;/p&gt;
&lt;p&gt;The question becomes even more complicated when working in Haskell,
because I think it honest to say that Haskell
&lt;a href=&quot;https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#debugging&quot;&gt;does not have a great story for debugging&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve taken a look into a family of debugging tools for Haskell,
including &lt;a href=&quot;http://ku-fpg.github.io/software/hood/&quot;&gt;&lt;code&gt;hood&lt;/code&gt;&lt;/a&gt;,
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://community.haskell.org/~claus/GHood/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://community.haskell.org/~claus/GHood/&quot;&amp;gt;GHood&amp;lt;/span&amp;gt;, and
&lt;a href=&quot;https://wiki.haskell.org/Hoed&quot;&gt;&lt;code&gt;Hoed&lt;/code&gt;&lt;/a&gt;, which are all based on the
same concept: manual annotation of source code in order to generate
traces that can later be analyzed in interesting ways.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Hood&lt;/h2&gt;
&lt;p&gt;Let&apos;s take a look at &lt;a href=&quot;http://ku-fpg.github.io/software/hood/&quot;&gt;&lt;code&gt;hood&lt;/code&gt;&lt;/a&gt;
first, standing for &quot;Haskell Object Observation Debugger&quot;. It&apos;s all
about observation through a type class &lt;code&gt;Observable a&lt;/code&gt; and an
instrumenting function &lt;a href=&quot;https://hackage.haskell.org/package/hood-0.3/docs/Debug-Hood-Observe.html#v:observe&quot;&gt;&lt;code&gt;observe&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;observe :: Observable a =&amp;gt; String -&amp;gt; a -&amp;gt; a
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Secret side effects!&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Warning!&lt;/strong&gt; Despite its type signature, this function performs
effects underneath using &lt;code&gt;unsafePerformIO&lt;/code&gt;, so you have to be careful
how you write code that uses &lt;code&gt;observe&lt;/code&gt;, in order to get the traces you
want.&lt;/p&gt;
&lt;h3&gt;Example of instrumenting a pipeline&lt;/h3&gt;
&lt;p&gt;Let&apos;s instrument the word counting pipeline from
&lt;a href=&quot;/blog/2015/12/08/24-days-of-hackage-2015-day-8-multiset-i-wish-this-were-in-the-standard-containers-package/&quot;&gt;day 8&lt;/a&gt;. We
import &lt;code&gt;Debug.Hood.Observe&lt;/code&gt;, and copy and paste the original code with
modifications to insert calls to &lt;code&gt;observe&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE OverloadedStrings #-}

module HoodExample where

-- | hood
import Debug.Hood.Observe (Observable(..), observe, observeBase, printO)

import qualified Data.MultiSet as MultiSet
import qualified Data.Text.Lazy as LazyText
import qualified Data.Text.Lazy.Builder as LazyBuilder
import Data.Text.Lazy.Builder.Int (decimal)
import Data.Ord (Down(..))
import qualified Data.Char as Char
import qualified Data.List as List
import Control.Arrow ((&amp;gt;&amp;gt;&amp;gt;))
import Data.Monoid ((&amp;lt;&amp;gt;))

-- | Break up text into &quot;words&quot; separated by spaces, while treating
-- non-letters as spaces, count them, output a report line for each
-- word and its count in descending order of count but ascending order
-- of word.
wordCount :: LazyText.Text -&amp;gt; LazyText.Text
wordCount = observe &quot;(1) wordCount&quot;
  &amp;gt;&amp;gt;&amp;gt; LazyText.map replaceNonLetterWithSpace &amp;gt;&amp;gt;&amp;gt; observe &quot;(2) map replaceNonLetterWithSpace&quot;
  &amp;gt;&amp;gt;&amp;gt; LazyText.words             &amp;gt;&amp;gt;&amp;gt; observe &quot;(3) LazyText.words&quot;
  &amp;gt;&amp;gt;&amp;gt; MultiSet.fromList          &amp;gt;&amp;gt;&amp;gt; observe &quot;(4) MultiSet.fromList&quot;
  &amp;gt;&amp;gt;&amp;gt; MultiSet.toOccurList       &amp;gt;&amp;gt;&amp;gt; observe &quot;(5) MultiSet.toOccurList&quot;
  &amp;gt;&amp;gt;&amp;gt; List.sortOn (snd &amp;gt;&amp;gt;&amp;gt; Down) &amp;gt;&amp;gt;&amp;gt; observe &quot;(6) List.sortOn (snd &amp;gt;&amp;gt;&amp;gt; Down)&quot;
  &amp;gt;&amp;gt;&amp;gt; map summarizeWordCount     &amp;gt;&amp;gt;&amp;gt; observe &quot;(7) map summarizeWordCount&quot;
  &amp;gt;&amp;gt;&amp;gt; mconcat                    &amp;gt;&amp;gt;&amp;gt; observe &quot;(8) mconcat&quot;
  &amp;gt;&amp;gt;&amp;gt; LazyBuilder.toLazyText     &amp;gt;&amp;gt;&amp;gt; observe &quot;(9) LazyBuilder.toLazyText&quot;

replaceNonLetterWithSpace :: Char -&amp;gt; Char
replaceNonLetterWithSpace c
  | Char.isLetter c = c
  | otherwise = &apos; &apos;

summarizeWordCount :: (LazyText.Text, MultiSet.Occur) -&amp;gt; LazyBuilder.Builder
summarizeWordCount (word, count) =
  LazyBuilder.fromLazyText word &amp;lt;&amp;gt; &quot; &quot; &amp;lt;&amp;gt; decimal count &amp;lt;&amp;gt; &quot;\n&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(I apologize for the mindless boilerplate in the &lt;code&gt;String&lt;/code&gt; description
of each observation point: one can imagine writing a Template Haskell
wrapper, I guess, if desired.)&lt;/p&gt;
&lt;p&gt;Here I&apos;ve chosen just to instrument the natural data &quot;stages&quot; in the
pipeline. If we wanted to, we could instrument at any other level as
well, e.g.  the &lt;em&gt;result of calling&lt;/em&gt; &lt;code&gt;summarizeWordCount&lt;/code&gt; (with
&lt;code&gt;(summarizeWordCount &amp;gt;&amp;gt;&amp;gt; observe &quot;summarize word count&quot;&lt;/code&gt;), or many
other more powerful levels, such as instrumenting a function, not just
the result of a function call, e.g., &lt;code&gt;(observe &quot;summarizeWordCount function&quot; summarizeWordCount)&lt;/code&gt;, which results in collecting all the
calls to the function.&lt;/p&gt;
&lt;h3&gt;Implementing the &lt;code&gt;Observable&lt;/code&gt; type class&lt;/h3&gt;
&lt;p&gt;Annoyingly, because everything&apos;s based on the &lt;code&gt;Observable&lt;/code&gt; type class,
we ignore GHC warnings and create &lt;a href=&quot;https://wiki.haskell.org/Orphan_instance&quot;&gt;orphan
instances&lt;/a&gt; for various types
(the alternative, adding a &lt;code&gt;newtype&lt;/code&gt; wrapper for everything, is rather
onerous in this situation):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Some orphan instances of &apos;Observable&apos;.
instance Observable LazyText.Text where
  observer = observeBase
instance (Observable a, Show a) =&amp;gt; Observable (MultiSet.MultiSet a) where
  observer = observeBase
instance Observable LazyBuilder.Builder where
  observer = observeBase
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Sample output&lt;/h3&gt;
&lt;p&gt;For simplicity, let&apos;s use &lt;code&gt;printO :: Show a =&amp;gt; a -&amp;gt; IO ()&lt;/code&gt; to perform a
run that outputs a trace. More generally, there&apos;s &lt;code&gt;runO&lt;/code&gt; that executes
an arbitrary &lt;code&gt;IO&lt;/code&gt; action.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exampleRun :: IO ()
exampleRun = printO $
  wordCount &quot;I have all-too-many words; words I don&apos;t like much!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output (I just run this in GHCi):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- (1) wordCount
  &quot;I have all-too-many words; words I don&apos;t like much!&quot;
-- (2) map replaceNonLetterWithSpace
  &quot;I have all too many words  words I don t like much &quot;
-- (3) LazyText.words
   &quot;I&quot; :  &quot;have&quot; :  &quot;all&quot; :  &quot;too&quot; :  &quot;many&quot; :  &quot;words&quot; :  &quot;words&quot; :  &quot;I&quot; :
  &quot;don&quot; :  &quot;t&quot; :  &quot;like&quot; :  &quot;much&quot; : []
-- (4) MultiSet.fromList
  fromOccurList [(&quot;I&quot;,2),(&quot;all&quot;,1),(&quot;don&quot;,1),(&quot;have&quot;,1),(&quot;like&quot;,1),(&quot;many&quot;,1),(&quot;much&quot;,1),(&quot;t&quot;,1),(&quot;too&quot;,1),(&quot;words&quot;,2)]
-- (5) MultiSet.toOccurList
   (&quot;I&quot;, 2) :  (&quot;all&quot;, 1) :  (&quot;don&quot;, 1) :  (&quot;have&quot;, 1) :  (&quot;like&quot;, 1) :
  (&quot;many&quot;, 1) :  (&quot;much&quot;, 1) :  (&quot;t&quot;, 1) :  (&quot;too&quot;, 1) :  (&quot;words&quot;, 2) : []
-- (6) List.sortOn (snd &amp;gt;&amp;gt;&amp;gt; Down)
   (&quot;I&quot;, 2) :  (&quot;words&quot;, 2) :  (&quot;all&quot;, 1) :  (&quot;don&quot;, 1) :  (&quot;have&quot;, 1) :
  (&quot;like&quot;, 1) :  (&quot;many&quot;, 1) :  (&quot;much&quot;, 1) :  (&quot;t&quot;, 1) :  (&quot;too&quot;, 1) : []
-- (7) map summarizeWordCount
   &quot;I 2\n&quot; :  &quot;words 2\n&quot; :  &quot;all 1\n&quot; :  &quot;don 1\n&quot; :  &quot;have 1\n&quot; :
  &quot;like 1\n&quot; :  &quot;many 1\n&quot; :  &quot;much 1\n&quot; :  &quot;t 1\n&quot; :  &quot;too 1\n&quot; : []
-- (8) mconcat
  &quot;I 2\nwords 2\nall 1\ndon 1\nhave 1\nlike 1\nmany 1\nmuch 1\nt 1\ntoo 1\n&quot;
-- (9) LazyBuilder.toLazyText
  &quot;I 2\nwords 2\nall 1\ndon 1\nhave 1\nlike 1\nmany 1\nmuch 1\nt 1\ntoo 1\n&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This can definitely be a useful way to debug pipelines, or just to
generate traces for use in teaching. For example, here we might see
immediately that we didn&apos;t get the answer we wanted (classify &quot;don&apos;t&quot;
as a word) because at the third stage, we got &quot;don&quot;, which meant that
something went wrong in a previous stage, of which there happened to
be only one here, the removal of non-word characters.&lt;/p&gt;
&lt;p&gt;There&apos;s a lot more you can do with &lt;code&gt;hood&lt;/code&gt;, but this gives a taste.&lt;/p&gt;
&lt;h2&gt;GHood&lt;/h2&gt;
&lt;p&gt;Next, we briefly move to
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://community.haskell.org/~claus/GHood/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://community.haskell.org/~claus/GHood/&quot;&amp;gt;GHood&amp;lt;/span&amp;gt;, which has the
same &lt;code&gt;Observable&lt;/code&gt; interface as &lt;code&gt;hood&lt;/code&gt;, except we import
&lt;code&gt;Debug.Observe&lt;/code&gt; instead of &lt;code&gt;Debug.Hood.Observe&lt;/code&gt;. So I won&apos;t show the
example code because it is literally just copy and paste and changing
the import. Module copy/paste issues like this (which also arose on
&lt;a href=&quot;/blog/2015/12/15/24-days-of-hackage-2015-day-15-iospec-testing-io-and-some-quickcheck-tricks/&quot;&gt;day 15 on &lt;code&gt;IOSpec&lt;/code&gt;&lt;/a&gt;)
really make me wish Haskell had parameterized modules like ML. (And
the &lt;code&gt;Observable&lt;/code&gt; orphan instance issue as well, where ML-style modules
are the natural way to plug in different ways to observe the same data
type as desired.)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GHood&lt;/code&gt; is a Java-based graphical back end to &lt;code&gt;hood&lt;/code&gt;. When you
install &lt;code&gt;GHood&lt;/code&gt;, it comes with a Java JAR file. Java is executed to
read a log file &lt;code&gt;ObserveEvents.log&lt;/code&gt; that is generated from running
&lt;code&gt;hood&lt;/code&gt;-instrumented code. You can animate, step back and forth, and
the traces are shown in a tree structure, including showing evaluation
of thunks. It&apos;s an interesting proof of concept from 2001 but is kind
of primitive. I decided not to try to include a screenshot of a sample
run because the Java Swing app&apos;s output scrolls way to the right in
its window and is not really customizable.&lt;/p&gt;
&lt;h2&gt;Hoed&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://wiki.haskell.org/Hoed&quot;&gt;&lt;code&gt;Hoed&lt;/code&gt;&lt;/a&gt; has an API based on &lt;code&gt;hood&lt;/code&gt; but
is a much more modern, sophisticated, active project. It enables
&quot;algorithmic debugging&quot; by providing an interactive Web app where it
uses a tree structure to repeatedly prompts you for whether results
were correct, to narrows down and identify the source of the error
based on your feedback.&lt;/p&gt;
&lt;p&gt;Furthermore, it comes built in with support for hooking up to
QuickCheck for property-based debugging. Check out the
&lt;a href=&quot;https://wiki.haskell.org/Hoed&quot;&gt;documentation and screen shots&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Hoed&lt;/code&gt; launches a local Web server you can access with a browser
&lt;a href=&quot;http://localhost:10000/&quot;&gt;at port 10000&lt;/a&gt;. The GitHub repo contains a
lot of
&lt;a href=&quot;https://github.com/MaartenFaddegon/Hoed/tree/master/examples&quot;&gt;examples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, I ran out of time to get it working the way I wanted to
show here in the context of using the interactive debugging system, so
I&apos;ll just have to say, &lt;code&gt;Hoed&lt;/code&gt; is very interesting and I plan to get
more into it when I have time. I will update this post later.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I haven&apos;t used debugging tools much in recent years, but this could
change as I find ways to make use of new tools that are easy to
use. &lt;code&gt;hood&lt;/code&gt;-based systems seem useful as one way to collect
information during execution without radically restructuring code.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 20: dimensional: type-checked computation on physical quantities with units</title><link>https://franklinchen.com/blog/2015/12/20/24-days-of-hackage-2015-day-20-dimensional-type-checked-computation-on-physical-quantities-with-units/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/20/24-days-of-hackage-2015-day-20-dimensional-type-checked-computation-on-physical-quantities-with-units/</guid><pubDate>Sun, 20 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 20&lt;/h2&gt;
&lt;p&gt;(&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.reddit.com/r/haskell/comments/3xoe58/24_days_of_hackage_2015_day_20_dimensional/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.reddit.com/r/haskell/comments/3xoe58/24_days_of_hackage_2015_day_20_dimensional/&quot;&amp;gt;Reddit discussion&amp;lt;/span&amp;gt;)&lt;/p&gt;
&lt;p&gt;One thing that my science teachers in high school always emphasized,
when we did calculations, was to &lt;em&gt;be explicit about the units of
measurement&lt;/em&gt;. They were very stern that we show our units, carry them
and cancel them as appropriate, in order to get a final answer that
was meaningful. And for good reason! If you add a distance (such as in
meters) and a velocity (such as kilometers per second), that is a
&lt;em&gt;type error&lt;/em&gt;. It is also a type error to add the numerical value of a
distance in meters and a value of a distance in feet: to perform such
an addition, you have to convert to a common unit first and then add
the numbers.&lt;/p&gt;
&lt;p&gt;The programming language F# comes with
&lt;a href=&quot;https://web.archive.org/web/20160220013607/https://msdn.microsoft.com/en-us/library/dd233243.aspx&quot;&gt;units of measure&lt;/a&gt;
built into its type system. This is a really cool feature. How can we
do this in Haskell?&lt;/p&gt;
&lt;p&gt;It turns out that with a lot of fancy type machinery, people have done
this sort of thing in Haskell. A library I looked at for making
unit-checking into type-checking for physical quantities is the
actively evolving
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/dimensional&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/dimensional&quot;&amp;gt;dimensional&amp;lt;/span&amp;gt;
library.&lt;/p&gt;
&lt;p&gt;Today I&apos;ll show a little bit of code using it to give a flavor of what
you can do with it.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Because &lt;code&gt;dimensional&lt;/code&gt; is moving so quickly, I didn&apos;t use the old
version coming with the current Stackage LTS. I added to &lt;code&gt;stack.yaml&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- dimensional-1.0.1.1
- exact-pi-0.4.1.0
- numtype-dk-0.5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;dimensional&lt;/code&gt; is moving so quickly that the master branch
&lt;a href=&quot;https://github.com/bjornbm/dimensional&quot;&gt;on GitHub&lt;/a&gt; is already beyond
even this version.&lt;/p&gt;
&lt;h3&gt;(Update of 2016-01-06)&lt;/h3&gt;
&lt;p&gt;Stackage LTS 4 has caught up, no no more need for these modifications.&lt;/p&gt;
&lt;h2&gt;Example task&lt;/h2&gt;
&lt;p&gt;As a runner, I sometimes want to perform all kinds of predictions or
projections from goals, to calculate various quantities such as
required pace to finish a race in a certain time, so I decided to play
with using &lt;code&gt;dimensional&lt;/code&gt; to express a simple calculation.&lt;/p&gt;
&lt;p&gt;Given a goal 5K time and a target racing stride rate (180 steps per
minute), I calculate the stride length required.&lt;/p&gt;
&lt;h2&gt;An HSpec test&lt;/h2&gt;
&lt;p&gt;Imports:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module DimensionalExampleSpec where

import DimensionalExample (requiredStrideLength)

import Prelude hiding ((+))
import Numeric.Units.Dimensional.Prelude
       ( (*~), (/~)
       , (+)
       , Length, Time, kilo, meter, minute, second
       )
import Numeric.Units.Dimensional.NonSI (foot)

import Test.Hspec (Spec, hspec, describe, it, shouldSatisfy)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that I took the pain to provide explicit imports for
&lt;code&gt;Numeric.Units.Dimensional.Prelude&lt;/code&gt;. In reality, if I were using the
&lt;code&gt;dimensional&lt;/code&gt; library for a serious amount of code, I would bite the
bullet and acknowledge that we are working in an entire
domain-specific language of arithmetic that warrants hiding the
Prelude and just using everything the &lt;code&gt;dimensional&lt;/code&gt; Prelude provides,
as far as commonly used units, quantity types, and overloaded
arithmetic operators.&lt;/p&gt;
&lt;p&gt;The sample test, which just verifies I do not have to have a stride
greater than 4 feet but must be greater than 3 feet:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;dimensional&quot; $ do
    it &quot;check required running stride length&quot; $
      let fiveK :: Length Double
          fiveK = 5 *~ kilo meter

          goalTime :: Time Double
          goalTime = 24 *~ minute + 45 *~ second

          feetPerStep :: Double
          feetPerStep = requiredStrideLength fiveK goalTime /~ foot
      in feetPerStep `shouldSatisfy` (\x -&amp;gt; x &amp;gt; 3 &amp;amp;&amp;amp; x &amp;lt; 4)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that every quantity is parameterized over the numeric type
involved, e.g., &lt;code&gt;Length a&lt;/code&gt;. The operators with &lt;code&gt;~&lt;/code&gt; combine a numeric
value with a unit to give a complete quantity. You can multiply by
units, divide by them (as in dividing by &lt;code&gt;foot&lt;/code&gt; to get a &lt;code&gt;Double from a &lt;/code&gt;Length Double&lt;code&gt;above). The normal operators such as&lt;/code&gt;+` operate on
quantities.&lt;/p&gt;
&lt;h2&gt;Implementation&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;module DimensionalExample where

import Prelude hiding ((/))
import Numeric.Units.Dimensional.Prelude
       ( (*~)
       , (/)
       , Quantity, Recip, DTime, Length, Time
       , one, minute
       )

-- | &quot;Ideal&quot; turnover for steps while running is 180 steps per minute.
turnover :: Quantity (Recip DTime) Double
turnover = (180 *~ one) / (1 *~ minute)

requiredStrideLength
  :: Length Double
  -&amp;gt; Time Double
  -&amp;gt; Length Double
requiredStrideLength distance goalTime =
  distance / goalTime / turnover
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here &lt;code&gt;one&lt;/code&gt; is used to go to a dimensionless quantity. Underneath, the
&lt;code&gt;dimensional&lt;/code&gt; library uses type families to represent division by
units and so forth.&lt;/p&gt;
&lt;h2&gt;A concern about usability&lt;/h2&gt;
&lt;p&gt;Unfortunately, as you might expect from a library that uses a lot of
type level infrastructure and computation, there&apos;s definitely a
learning curve in understanding the conceptual foundation of this
library, although the documentation is pretty good. The worst thing is
that because of type synonyms in combination with all the type level
stuff, the error messages can get really weird if you do something
nonsensical. Even if you do something meaningful, you can get
confused. For example, supposed we didn&apos;t know enough to write the
type signature for &lt;code&gt;turnover&lt;/code&gt; above. The inferred type is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Top-level binding with no type signature:
      turnover :: dimensional-1.0.1.0:Numeric.Units.Dimensional.Internal.Dimensional
                    &apos;Numeric.Units.Dimensional.Variants.DQuantity
                    (&apos;Numeric.Units.Dimensional.Dimensions.TypeLevel.Dim
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Neg1
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero
                       &apos;numtype-dk-0.5:Numeric.NumType.DK.Integers.Zero)
                    Double
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ouch! This is in fact what I first got when writing the code without
explicit type annotations. I had to hunt down what was really going on
in order to find the type synonyms that expressed my intent.&lt;/p&gt;
&lt;p&gt;I don&apos;t know how to fix the general problem of type-heavy libraries
resulting in a lot of usability learning curves and gotchas, but I
think that as more and more fancy types are used in Haskell libraries,
something needs to be done. I have a hard time believing that a
typical scientist who barely knows any Haskell and whose job is to
write safe and correct code would use a library like &lt;code&gt;dimensional&lt;/code&gt; at
this stage, however cool it is. That said, I&apos;m pretty excited that
&lt;code&gt;dimensional&lt;/code&gt; exists and is currently being actively developed!&lt;/p&gt;
&lt;h2&gt;Real examples&lt;/h2&gt;
&lt;p&gt;Doug Burke uses &lt;code&gt;dimensional&lt;/code&gt; in his
&lt;a href=&quot;https://github.com/DougBurke/astro-haskell&quot;&gt;astronomy IHaskell notebooks&lt;/a&gt;,
for example &lt;a href=&quot;https://github.com/DougBurke/astro-haskell/blob/master/notebooks/angular%20diameter%20distance.ipynb&quot;&gt;this one&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dimensional&lt;/code&gt; is an interesting library for making units explicit and
type-checked in calculations involving physical quantities, and a
showcase for how types can be used to better express and check intent.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 19: ghc-core-html, list-fusion-probe; checking GHC&apos;s fusion rewrite rules for erasing intermediate data from existence</title><link>https://franklinchen.com/blog/2015/12/19/24-days-of-hackage-2015-day-19-ghc-core-html-list-fusion-probe-checking-ghcs-fusion-rewrite-rules-for-erasing-intermediate-data-from-existence/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/19/24-days-of-hackage-2015-day-19-ghc-core-html-list-fusion-probe-checking-ghcs-fusion-rewrite-rules-for-erasing-intermediate-data-from-existence/</guid><pubDate>Sat, 19 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 19&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3xie9b/24_days_of_hackage_2015_day_19_ghccorehtml/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;single coolest feature&lt;/em&gt; of using Haskell, for me, has to be
&lt;a href=&quot;https://wiki.haskell.org/GHC_optimisations#Fusion&quot;&gt;fusion&lt;/a&gt;. The GHC compiler
performs this remarkable optimization that can erase entire
intermediate data structures from existence.&lt;/p&gt;
&lt;p&gt;What does that mean, and how can we know it happened? Today I&apos;ll show
how &lt;a href=&quot;https://hackage.haskell.org/package/ghc-core-html&quot;&gt;&lt;code&gt;ghc-core-html&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://hackage.haskell.org/package/list-fusion-probe&quot;&gt;&lt;code&gt;list-fusion-probe&lt;/code&gt;&lt;/a&gt; can sort of help in
determining what the compiler actually did to your intermediate data
structures.&lt;/p&gt;
&lt;p&gt;I&apos;ll give examples with lists as the intermediate data, but also
mention vectors because yesterday,
&lt;a href=&quot;/blog/2015/12/18/24-days-of-hackage-2015-day-18-vector-vector-algorithms-unleash-your-inner-c-programmer/&quot;&gt;day 18&lt;/a&gt;,
I briefly mentioned fusion in the context of vectors.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Imports for code&lt;/h2&gt;
&lt;p&gt;First, let&apos;s get some imports out of the way before showing some HSpec
and QuickCheck tests:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE ScopedTypeVariables #-}

module ListFusionProbeSpec where

import Data.List.Fusion.Probe (fuseThis)

import Test.Hspec ( Spec, hspec, describe, it
                  , shouldBe, shouldSatisfy
                  , shouldThrow, errorCall
                  )
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck.Function (Fun(..), apply)
import Control.Exception (evaluate)
import Control.Arrow ((&amp;gt;&amp;gt;&amp;gt;))
import Data.Function ((&amp;amp;))
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What is intermediate data in a pipeline?&lt;/h2&gt;
&lt;p&gt;When programming in a compositional way, often we create pipelines of
data flow, in which data from one stage gets transformed into data for
the next stage, and so on until the final output. The problem is that
a naive implementation of a pipeline will result in construction of
some data structure that exists only for the purpose of being consumed
by the next stage.&lt;/p&gt;
&lt;p&gt;Here&apos;s an HSpec test illustrating a pipeline in which we &lt;em&gt;name each
intermediate list&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;list-fusion-probe&quot; $ do
    it &quot;runs a chain of maps, filters&quot; $
      let list1 = [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;]

          -- [&quot;Hello&quot;, &quot;world!&quot;]
          list2 = filter ((&amp;gt; 2) . length) list1

          -- [5, 6]
          list3 = map length list2

          list4 = map (*3) list3
      in list4 `shouldBe` [15, 18]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In a typical implementation of a typical programming language, code
looking like this will result in &lt;em&gt;allocating&lt;/em&gt; and &lt;em&gt;creating&lt;/em&gt; four
lists (or arrays, or whatever collection type is idiomatic and
desired), one after another, and traversing three lists using a filter
and two maps. To do something cleverer and avoid creating intermediate
data, one uses a special &quot;stream&quot; collection type, or more radically,
&lt;a href=&quot;http://clojure.org/transducers&quot;&gt;&quot;transducers&quot;&lt;/a&gt;. These techniques
enable collapsing the computation of the final data into a single
traversal and no allocation of intermediate data.&lt;/p&gt;
&lt;p&gt;The Haskell ecosystem contains many libraries for performing these
kinds of optimizations, such as
&lt;a href=&quot;https://hackage.haskell.org/package/foldl&quot;&gt;&lt;code&gt;foldl&lt;/code&gt;&lt;/a&gt;, but they are
outside the scope of this article. Instead, for simple examples such
as the one above, GHC already &lt;em&gt;automatically&lt;/em&gt; applies fusion, through
special
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/rewrite-rules.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/rewrite-rules.html&quot;&amp;gt;rewrite rules&amp;lt;/span&amp;gt;
that are included in the standard libraries.&lt;/p&gt;
&lt;h3&gt;A note on pipeline syntax and composition&lt;/h3&gt;
&lt;p&gt;We can write the pipeline in many different ways. Here&apos;s an OO-style
way using &lt;code&gt;&amp;amp;&lt;/code&gt; (reverse function application) and &lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt; (left-to-right composition):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;runs a chain of maps, filters (OO-style)&quot; $
      let list4 = [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;] &amp;amp;
                     (filter (length &amp;gt;&amp;gt;&amp;gt; (&amp;gt; 2))
                      &amp;gt;&amp;gt;&amp;gt; map length
                      &amp;gt;&amp;gt;&amp;gt; map (*3)
                     )
      in list4 `shouldBe` [15, 18]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is the same thing but with the compositionality factored
out. This is my preferred way of writing pipelines as first-class
values:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;runs a chain of maps, filters, written compositionally with &amp;gt;&amp;gt;&amp;gt;&quot; $
      let pipeline = filter (length &amp;gt;&amp;gt;&amp;gt; (&amp;gt; 2))
                     &amp;gt;&amp;gt;&amp;gt; map length
                     &amp;gt;&amp;gt;&amp;gt; map (*3)
      in pipeline [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;] `shouldBe` [15, 18]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using traditional right-left composition &lt;code&gt;.&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;runs a chain of maps, filters, written compositionally with .&quot; $
      let pipeline = map (*3)
                     . map length
                     . filter ((&amp;gt; 2) . length)
      in pipeline [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;] `shouldBe` [15, 18]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What does rewriting mean?&lt;/h2&gt;
&lt;p&gt;The thing that rewriting does that the other approaches do not: the
rewriting is a compiler preprocessing pass that &lt;em&gt;rewrites your source
code&lt;/em&gt; in order to optimize it. We&apos;re not going into exactly how it
works. There are rewrite rules that match source code constructs and
replace them with semantically equivalent constructs, and basically
fusion happens when during the course of repeatedly rewriting, certain
constructs cancel themselves out, and &quot;poof&quot; goes your intermediate
data.&lt;/p&gt;
&lt;p&gt;If you look at the source code for
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/src/GHC.Base.html#map&quot;&gt;&lt;code&gt;map&lt;/code&gt;&lt;/a&gt;
you will see scary-looking comments and compiler directives that look
like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map :: (a -&amp;gt; b) -&amp;gt; [a] -&amp;gt; [b]
{-# NOINLINE [1] map #-}    -- We want the RULE to fire first.
                            -- It&apos;s recursive, so won&apos;t inline anyway,
                            -- but saying so is more explicit
map _ []     = []
map f (x:xs) = f x : map f xs

-- Note eta expanded
mapFB ::  (elt -&amp;gt; lst -&amp;gt; lst) -&amp;gt; (a -&amp;gt; elt) -&amp;gt; a -&amp;gt; lst -&amp;gt; lst
{-# INLINE [0] mapFB #-}
mapFB c f = \x ys -&amp;gt; c (f x) ys

-- The rules for map work like this.
--
-- Up to (but not including) phase 1, we use the &quot;map&quot; rule to
-- rewrite all saturated applications of map with its build/fold
-- form, hoping for fusion to happen.
-- In phase 1 and 0, we switch off that rule, inline build, and
-- switch on the &quot;mapList&quot; rule, which rewrites the foldr/mapFB
-- thing back into plain map.
--
-- It&apos;s important that these two rules aren&apos;t both active at once
-- (along with build&apos;s unfolding) else we&apos;d get an infinite loop
-- in the rules.  Hence the activation control below.
--
-- The &quot;mapFB&quot; rule optimises compositions of map.
--
-- This same pattern is followed by many other functions:
-- e.g. append, filter, iterate, repeat, etc.

{-# RULES
&quot;map&quot;       [~1] forall f xs.   map f xs                = build (\c n -&amp;gt; foldr (mapFB c f) n xs)
&quot;mapList&quot;   [1]  forall f.      foldr (mapFB (:) f) []  = map f
&quot;mapFB&quot;     forall c f g.       mapFB (mapFB c f) g     = mapFB c (f.g)
  #-}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Some resources on fusion&lt;/h3&gt;
&lt;p&gt;Here are some articles illustrating more of the low-level workings of
fusion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://chrisdone.com/posts/stream-composability&quot;&gt;by Chris Done&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://lambda.jstolarek.com/2013/04/haskell-as-fast-as-c-a-case-study/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://lambda.jstolarek.com/2013/04/haskell-as-fast-as-c-a-case-study/&quot;&amp;gt;by Jan Stolarek&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;But how do we know whether fusion worked?&lt;/h2&gt;
&lt;p&gt;The thing that has always bothered me is that there has not been an
easy way to know whether fusion actually worked or tell the compiler,
&quot;I want the result of this expression fused, so report an error if you
can&apos;t fuse it for me because I care about maximum efficiency
here&quot;. For example, here is an
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/ticket/8763&quot;&gt;open bug report&lt;/a&gt; about
something that someone expected to be fused.&lt;/p&gt;
&lt;p&gt;When writing high-abstraction code and expecting the compiler to do
important optimizations for me, I consider it important to be notified
if they are not happening as expected.&lt;/p&gt;
&lt;p&gt;So it was interesting when I came across the &lt;code&gt;list-fusion-probe&lt;/code&gt;
library that does its own rewrite trickery to detect whether a list
has fused or not. The way you use it with an expression of list type
is you just wrap it with &lt;code&gt;fuseThis&lt;/code&gt;, and the library will rewrite the
call such that if fusion is happening, it just returns the list, but
if not, it generates code that at runtime throws an exception. This is
extremely primitive (I would never want to ship code that threw an
exception &quot;cannot fuse&quot;), but is a useful proof of concept for
testing.&lt;/p&gt;
&lt;p&gt;So here are a few tests illustrating how insertion of &lt;code&gt;fuseThis&lt;/code&gt; into
pipelines verifies that fusion &lt;em&gt;does&lt;/em&gt; happen (because there is no run
time exception):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;fuses a chain of maps, filters&quot; $
      let list1 = [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;]

          -- [&quot;Hello&quot;, &quot;world!&quot;]
          list2 = fuseThis $ filter ((&amp;gt; 2) . length) list1

          -- [5, 6]
          list3 = fuseThis $ map length list2

          list4 = map (*3) list3
      in list4 `shouldBe` [15, 18]
    it &quot;fuses a chain of maps, filters&quot; $
      let list4 = [&quot;Hello&quot;, &quot;my&quot;, &quot;world!&quot;]
          pipeline = filter (length &amp;gt;&amp;gt;&amp;gt; (&amp;gt; 2)) &amp;gt;&amp;gt;&amp;gt; fuseThis
                     &amp;gt;&amp;gt;&amp;gt; map length &amp;gt;&amp;gt;&amp;gt; fuseThis
                     &amp;gt;&amp;gt;&amp;gt; map (*3)
      in pipeline list4 `shouldBe` [15, 18]
    it &quot;Prelude foldl fuses&quot; $
      let list = fuseThis [0..1001] :: [Int]
      in foldl (+) 0 list `shouldBe` 501501
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We&apos;ve verified here that &lt;code&gt;list2&lt;/code&gt; and &lt;code&gt;list3&lt;/code&gt; never exist as
materialized data.&lt;/p&gt;
&lt;p&gt;Note, for example, that the &lt;code&gt;foldl&lt;/code&gt; example&apos;s fusion amounts to the
list &lt;code&gt;[0..1001]&lt;/code&gt; never being created; instead, the generated machine
code is basically a loop with index from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;1001&lt;/code&gt; adding to an
accumulator.&lt;/p&gt;
&lt;p&gt;Here&apos;s a fusion failure:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;handwritten myFoldl fails to fuse&quot; $
      let list = fuseThis [0..1001] :: [Int]
      in evaluate (myFoldl (+) 0 list) `shouldThrow`
           errorCall &quot;fuseThis: List did not fuse&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where we provided &lt;code&gt;myFoldl&lt;/code&gt; written in such a way that it does not
match the fusion rewriting rules:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | This example taken straight from `list-fusion-probe` tests directory.
myFoldl :: (b -&amp;gt; a -&amp;gt; b) -&amp;gt; b -&amp;gt; [a] -&amp;gt; b
myFoldl f = go
  where go a [] = a
        go a (x:xs) = go (f a x) xs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, for fun, let&apos;s write a QuickCheck test that tests arbitrary
predicates and transformation functions in a filter and map pipeline:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    prop &quot;Prelude foldl fuses the result of a filter, map pipeline&quot; $
      \(list :: [Int]) (predicate :: Fun Int Bool) (f :: Fun Int Int) -&amp;gt;
      let pipeline = fuseThis . filter (apply predicate)
                     . fuseThis . map (apply f)
      in
         -- Just to force evaluation.
        foldl (+) 0 (pipeline list) `shouldSatisfy` (&amp;lt;= maxBound)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Why not report a fusion failure at compile time instead?&lt;/h2&gt;
&lt;p&gt;There&apos;s a user interface issue when it comes to optimizations such as
fusion. Ideally, I&apos;d like to be able to declare desired fusion and
have a failure be reported as a compile-time error.&lt;/p&gt;
&lt;p&gt;However, the situation is tricky, because then the code can become
brittle in the face of different optimization settings. For example,
if you run the tests above within GHCi, you will find that GHCi never
reports fusion failure. This is because it&apos;s just not doing fusion at
all: it&apos;s ignoring rewrite rules, both in the standard library and in
&lt;code&gt;list-fusion-probe&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Maybe the solution is to have conditional directives. I do think that
there has to be an option to treat a known performance bug as a
compile-time error. It is not practical to live in fear and
defensiveness when writing performance-oriented code and deciding, in
the absence of clear compiler feedback, to simply manually write
low-level ugly code because of lack of confidence that the elegant
code will not perform properly.&lt;/p&gt;
&lt;p&gt;What do you think? What kind of feedback would you like to get from
compilation about optimizations you expect to be performed?&lt;/p&gt;
&lt;h2&gt;Checking generated code in yesterday&apos;s &lt;code&gt;vector&lt;/code&gt; example&lt;/h2&gt;
&lt;p&gt;Yesterday, I mentioned that fusion for vectors happens, but I wasn&apos;t
confident about how much actually happens. I found a useful tool
&lt;code&gt;ghc-core-html&lt;/code&gt; that outputs in somewhat prettified fashion the GHC
Core code generated within GHC.&lt;/p&gt;
&lt;p&gt;To use it, install it globally:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack install ghc-core-html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I ran it on a sample modified source file to get HTML output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack exec ghc-core-html src/VectorFusionExample.hs &amp;gt; VectorFusionExample.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The sample file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Extracted from VectorExample for minimal GHC Core output file.
module VectorFusionExample (makeCountsPurely) where

import qualified Data.Word as Word
import qualified Data.Vector.Unboxed as V

-- | Assume 8-bit unsigned integer.
type Value = Word.Word8

-- | Number of occurrences of an 8-bit unsigned value.
-- We assume no overflow beyond &apos;Int&apos; range.
type CountOfValue = Int

-- | NOT the real thing!! With fake constants 123, 789
-- to help in reading the GHC Core.
makeCountsPurely :: V.Vector Value -&amp;gt; V.Vector CountOfValue
makeCountsPurely =
  V.unsafeAccumulate (+) (V.replicate numPossibleValues 123)
  . V.map (\v -&amp;gt; (fromIntegral v, 789))

-- | 256, in our case.
numPossibleValues :: Int
numPossibleValues = fromIntegral (maxBound :: Value) + 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&apos;m not going to show the output, but just note that looking at it, I
saw two calls to &lt;code&gt;newByteArray#&lt;/code&gt;. Since one of the created arrays is
the final array, but there is another allocation, we didn&apos;t manage to
get down to creating just a single array without allocating any other,
unlike the implementation yesterday using an internal &lt;code&gt;MVector&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is good to know, but I shouldn&apos;t have to generate low-level code
and inspect it in order to obtain high-level information about what is
fused where.&lt;/p&gt;
&lt;h2&gt;For more information&lt;/h2&gt;
&lt;p&gt;A tutorial on understanding the GHC compilation process is
&lt;a href=&quot;http://blog.ezyang.com/2011/04/tracing-the-compilation-of-hello-factorial/&quot;&gt;here&lt;/a&gt;. Here&apos;s &lt;a href=&quot;http://www.haskellforall.com/2012/10/hello-core.html&quot;&gt;another&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://skillsmatter.com/skillscasts/6495-keynote-from-simon-peyton-jones&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://skillsmatter.com/skillscasts/6495-keynote-from-simon-peyton-jones&quot;&amp;gt;video by Simon Peyton Jones on Core&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Read anything and everything by
&lt;a href=&quot;http://blog.johantibell.com/&quot;&gt;Johan Tibell&lt;/a&gt; on Haskell performance.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Today I mentioned the importance of fusion and my frustration at not
being able to get the kind of detailed information I would like about
whether GHC performed fusion where I want it. However,
&lt;code&gt;list-fusion-probe&lt;/code&gt; helps with writing tests to detect list fusion
failure, and &lt;code&gt;ghc-core-html&lt;/code&gt; is a useful general-purpose tools for
examining generated code for any purpose.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 18: vector, vector-algorithms: unleash your inner C programmer!</title><link>https://franklinchen.com/blog/2015/12/18/24-days-of-hackage-2015-day-18-vector-vector-algorithms-unleash-your-inner-c-programmer/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/18/24-days-of-hackage-2015-day-18-vector-vector-algorithms-unleash-your-inner-c-programmer/</guid><pubDate>Fri, 18 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 18&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3xdqg8/24_days_of_hackage_2015_day_18_vector/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Often in programming, the right data structure to use is a C-style
array, whether treated as immutable or mutable.&lt;/p&gt;
&lt;p&gt;Ideally, I didn&apos;t need to write this article, but I&apos;ve gotten the
impression that many newcomers to Haskell don&apos;t know about
&lt;a href=&quot;https://hackage.haskell.org/package/vector&quot;&gt;&lt;code&gt;vector&lt;/code&gt;&lt;/a&gt;, the library for
zero-indexed C-style arrays, and use lists where arrays are better suited to
the problem. Arrays are efficient for indexing and are memory and
cache efficient also, being allocated in a block of memory rather than
spread out over pointer chasing.&lt;/p&gt;
&lt;p&gt;The terminology regarding arrays in the Haskell ecosystem is confusing
because Haskell in the 1990s originally came with a data structure
called an &lt;code&gt;Array&lt;/code&gt;, and there&apos;s even a supporting
&lt;a href=&quot;https://hackage.haskell.org/package/array&quot;&gt;&lt;code&gt;array&lt;/code&gt;&lt;/a&gt; package, but in
practice I never use it because it&apos;s more generic and weird than the
simple data structure later provided called &quot;vectors&quot; (for lack of a
better name).&lt;/p&gt;
&lt;p&gt;There are good tutorials on &lt;code&gt;vector&lt;/code&gt; I recommend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.haskell.org/Numeric_Haskell:_A_Vector_Tutorial&quot;&gt;Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/commercialhaskell/haskelldocumentation/blob/master/content/vector.md&quot;&gt;Commercial Haskell group&lt;/a&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I thought it would be useful to give a fully worked out example of
using both immutable and mutable vectors. In particular, we&apos;ll use
&lt;em&gt;unboxed&lt;/em&gt; vectors that are specialized and therefore contain no
indirection and are basically equivalent to C-style arrays. We&apos;ll do
some low-level C-style programming.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The problem to solve: finding the median of an array of 8-bit integers&lt;/h2&gt;
&lt;p&gt;Here is a problem
&lt;a href=&quot;http://programmingpraxis.com/2015/09/11/finding-the-median/&quot;&gt;found at Programming Praxis&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&quot;The median of an array is the value in the middle if the array
was sorted; if the array has an odd number of items &lt;code&gt;n&lt;/code&gt;, the median
is the &lt;code&gt;(n+1)/2&lt;/code&gt;’th largest item in the array (which is also the
&lt;code&gt;(n+1)/2&lt;/code&gt;’th smallest item in the array), and if the array has an
even number of items n, the median is the arithmetic average of the
&lt;code&gt;n/2&lt;/code&gt;’th smallest item in the array and the &lt;code&gt;n/2&lt;/code&gt;’th largest item in
the array. For instance, the median of the array &lt;code&gt;[2,4,5,7,3,6,1]&lt;/code&gt; is
&lt;code&gt;4&lt;/code&gt; and the median of the array &lt;code&gt;[5,2,1,6,3,4]&lt;/code&gt; is &lt;code&gt;3.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Your task is to write a program that takes an array of 8-bit
integers (possibly but not necessarily in sort) and finds the
median value in the array; you should find an algorithm that takes
&lt;em&gt;linear time&lt;/em&gt; and &lt;em&gt;constant space&lt;/em&gt;.&quot;&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;vector&lt;/code&gt; installation&lt;/h2&gt;
&lt;p&gt;Stackage LTS 3 is still on &lt;code&gt;vector-0.10&lt;/code&gt;, but I wanted to use
&lt;a href=&quot;https://hackage.haskell.org/package/vector-0.11.0.0&quot;&gt;version 0.11&lt;/a&gt;
because the API changed slightly, so I added a bound as appropriate in
the Cabal file.&lt;/p&gt;
&lt;h3&gt;(Update of 2016-01-06)&lt;/h3&gt;
&lt;p&gt;Stackage LTS 4 now uses this updated version of &lt;code&gt;vector&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;The importance of going unboxed&lt;/h2&gt;
&lt;p&gt;Because we are given that we should write code specific to an array of
8-bit integers, we will be using
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/primitives.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/primitives.html&quot;&amp;gt;unboxed&amp;lt;/span&amp;gt;
rather than &lt;em&gt;boxed&lt;/em&gt; (generic) vectors: boxed vectors contain elements
that are pointers to values, while unboxed vectors have elements are
the actual values themselves. This is pretty important for efficiency
if you know up front the type of your elements.&lt;/p&gt;
&lt;h2&gt;Some tests&lt;/h2&gt;
&lt;p&gt;Let&apos;s write some tests first, assuming we will later write a module
&lt;code&gt;VectorExample&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Some imports first. We will be using the constant-time vector indexing
operator &lt;code&gt;!&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module VectorExampleSpec where

import VectorExample
       ( Value, MedianValue, averageValue
       , spaceInefficientMedian, constantSpaceMedian
       )

import Data.Vector.Unboxed ((!))
import qualified Data.Vector.Unboxed as V
import qualified Data.Vector.Algorithms.Radix as Radix
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We will be using HSpec and QuickCheck, and writing our own random
vector generators:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Test.Hspec (Spec, hspec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck (Arbitrary(arbitrary, shrink), choose, sized, shrinkList)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We will be implementing both a simple reference implementation and the
desired clever one, so we will test both:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec = do
  describe &quot;compute median of vector of 8-bit unsigned integers&quot; $ do
    medianSpec &quot;inefficientSpaceMedian&quot; inefficientSpaceMedian
    medianSpec &quot;constantSpaceMedian&quot; constantSpaceMedian
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We test the examples given, as well as general properties. For
sorting, we conveniently use the radix sort from the
&lt;a href=&quot;https://hackage.haskell.org/package/vector-algorithms&quot;&gt;&lt;code&gt;vector-algorithms&lt;/code&gt;&lt;/a&gt;
package:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;medianSpec :: String
            -&amp;gt; (V.Vector Value -&amp;gt; Maybe MedianValue)
            -&amp;gt; Spec
medianSpec description findMedian =
  describe description $ do
    describe &quot;some examples&quot; $ do
      it &quot;handles odd number of elements&quot; $ do
        findMedian (V.fromList [2, 4, 5, 7, 3, 6, 1]) `shouldBe` Just 4.0
      it &quot;handles nonzero even number of elements&quot; $ do
        findMedian (V.fromList [5, 2, 1, 6, 3, 4]) `shouldBe` Just 3.5
    describe &quot;properties&quot; $ do
      it &quot;handles no elements&quot; $ do
        findMedian V.empty `shouldBe` Nothing
      prop &quot;handles one element&quot; $ \v -&amp;gt;
        findMedian (V.singleton v) == Just (fromIntegral v)
      prop &quot;handles odd number of elements&quot; $
        \(VectorWithOdd values) -&amp;gt;
          let len = V.length values
              midIndex = pred (succ len `div` 2)
              sorted = V.modify Radix.sort values
          in findMedian values == Just (fromIntegral (sorted ! midIndex))
      prop &quot;handles positive even number of elements&quot; $
        \(VectorWithPositiveEven values) -&amp;gt;
          let len = V.length values
              midIndex = pred (succ len `div` 2)
              sorted = V.modify Radix.sort values
          in findMedian values ==
            Just (averageValue (fromIntegral (sorted ! midIndex))
                               (sorted ! succ midIndex))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The property tests specify what a median is supposed to be, for all
possible cases.&lt;/p&gt;
&lt;h3&gt;A note on mutation&lt;/h3&gt;
&lt;p&gt;The radix sort operates on a mutable vector, but we are using an
immutable vector, so we use the
&lt;a href=&quot;https://hackage.haskell.org/package/vector-0.11.0.0/docs/Data-Vector-Unboxed.html#v:modify&quot;&gt;&lt;code&gt;modify&lt;/code&gt; function&lt;/a&gt;
that has a fancy type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;modify :: Unbox a =&amp;gt; (forall s. MVector s a -&amp;gt; ST s ()) -&amp;gt; Vector a -&amp;gt; Vector a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which takes a callback taking a mutable vector, and transforms an
immutable vector into another immutable vector (possibly the same one
&quot;secretly&quot; mutated underneath). It uses higher-rank types
and the
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Monad-ST.html&quot;&gt;&lt;code&gt;ST&lt;/code&gt; state transformer monad&lt;/a&gt;,
but all you have to know is that
&lt;a href=&quot;https://hackage.haskell.org/package/vector-algorithms-0.7.0.1/docs/Data-Vector-Algorithms-Radix.html#v:sort&quot;&gt;&lt;code&gt;Radix.sort&lt;/code&gt;&lt;/a&gt;
has the compatible callback type and therefore can be plugged into &lt;code&gt;modify&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sort :: forall e m v. (PrimMonad m, MVector v e, Radix e) =&amp;gt; v (PrimState m) e -&amp;gt; m ()
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Custom QuickCheck generators&lt;/h3&gt;
&lt;p&gt;Here are some quick and dirty generators of vectors of the kinds we
want for our tests. If we were doing this for real, we&apos;d probably
want to write custom shrinkers rather than go through lists.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Generate a vector with an odd number of elements.
newtype VectorWithOdd a =
  VectorWithOdd { getVectorWithOdd :: V.Vector a }
  deriving (Show)

instance (Arbitrary a, V.Unbox a) =&amp;gt; Arbitrary (VectorWithOdd a) where
  arbitrary = sized $ \n -&amp;gt; do
    k &amp;lt;- choose (0, n `div` 2)
    VectorWithOdd &amp;lt;$&amp;gt; V.replicateM (2*k+1) arbitrary
  shrink = map (VectorWithOdd . V.fromList)
           . shrinkList shrink
           . V.toList
           . getVectorWithOdd

-- | Generate a vector with a nonzero even number of elements.
newtype VectorWithPositiveEven a =
  VectorWithPositiveEven { getVectorWithPositiveEven :: V.Vector a }
  deriving (Show)

instance (Arbitrary a, V.Unbox a) =&amp;gt; Arbitrary (VectorWithPositiveEven a) where
  arbitrary = sized $ \n -&amp;gt; do
    k &amp;lt;- choose (1, 1 `max` (n `div` 2))
    VectorWithPositiveEven &amp;lt;$&amp;gt; V.replicateM (2*k) arbitrary
  shrink = map (VectorWithPositiveEven . V.fromList)
           . shrinkList shrink
           . V.toList
           . getVectorWithPositiveEven
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;An inefficient implementation that violates our space requirement&lt;/h2&gt;
&lt;p&gt;For reference (we could read it off from the QuickCheck tests almost):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE BangPatterns #-}

module VectorExample where

import qualified Data.Word as Word
import qualified Data.Vector.Unboxed as V
import qualified Data.Vector.Unboxed.Mutable as M
import qualified Data.Vector.Algorithms.Radix as Radix

-- | Assume 8-bit unsigned integer.
type Value = Word.Word8

-- | What to return as median when there is one.
type MedianValue = Double

-- | This is an obvious implementation, basically the specification.
-- The use of radix sort makes this linear in time, but a copy of
-- the original array is required.
inefficientSpaceMedian :: V.Vector Value -&amp;gt; Maybe MedianValue
inefficientSpaceMedian values
  | V.null values = Nothing
  | odd len = Just (fromIntegral (atSorted midIndex))
  | otherwise = Just (averageValue (atSorted midIndex)
                                   (atSorted (succ midIndex)))
  where
    len = V.length values
    midIndex = pred (succ len `div` 2)

    -- Make a local mutable copy to sort.
    atSorted = V.unsafeIndex (V.modify Radix.sort values)

-- | Average of two values.
averageValue :: Value -&amp;gt; Value -&amp;gt; MedianValue
averageValue a b = (fromIntegral a + fromIntegral b) / 2
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A note on unsafe operations&lt;/h3&gt;
&lt;p&gt;I promised we were going to do C-style programming. We could use
bounds-checked indexing (which throws a runtime exception if accessing
outside the bounds of a vector), but let&apos;s have some &quot;fun&quot;, and use
&lt;code&gt;unsafeIndex&lt;/code&gt;. Note that this is truly unsafe: let&apos;s get the element
at index 100 of a 1-element &lt;code&gt;Int&lt;/code&gt; vector:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Data.Vector.Unboxed&amp;gt; unsafeIndex (singleton (5 :: Int)) 100
4931475852
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why use unsafe operations? For illustration and also because it
happens that we can manually prove (outside the type system) that we
will never go out of bounds. In real life, I&apos;d hesitate to use the
unsafe operations unless maximum performance was critical though! But
&lt;em&gt;we can opt in the C world of potential disaster if we want to&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I do not want to promote using unsafe operations!!&lt;/strong&gt; Globally search
and replace all &lt;code&gt;unsafeXyz&lt;/code&gt; functions in today&apos;s sample code with
&lt;code&gt;xyz&lt;/code&gt; instead for peace of mind.&lt;/p&gt;
&lt;h2&gt;The clever solution&lt;/h2&gt;
&lt;p&gt;The clever solution allocates a table of every possible count (because
we know our values are 8-bit unsigned integers) and fills it, then
iterates through the table to find out where the median must lie, and
when it hits the right place, returns the middle value (if an odd
number of values) or the middle two values (if an even number of
values).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Number of occurrences of an 8-bit unsigned value.
-- We assume no overflow beyond &apos;Int&apos; range.
type CountOfValue = Int

-- | Create a table of counts for each possible value, since we know
-- the number of values is small and finite.
constantSpaceMedian :: V.Vector Value -&amp;gt; Maybe MedianValue
constantSpaceMedian values
  | V.null values = Nothing
  | odd len = Just (findMid 0 (numToCount - countOf 0))
  | otherwise = Just (findMid2 0 (numToCount - countOf 0))
  where
    len = V.length values

    -- How many sorted elements to count off, to reach first median value.
    numToCount = succ len `div` 2

    -- Make efficient table of counts for each possible value.
    countOf = V.unsafeIndex (makeCountsMutably values)

    findMid !i !numRemaining
      | numRemaining &amp;lt;= 0 = fromIntegral i
      | otherwise = findMid (succ i) (numRemaining - countOf (succ i))

    findMid2 !i !numRemaining =
      case numRemaining `compare` 0 of
        LT -&amp;gt; fromIntegral i -- median is duplicated, don&apos;t need average
        GT -&amp;gt; findMid2 (succ i) (numRemaining - countOf (succ i))
        EQ -&amp;gt; midAverage (succ i) (countOf (succ i))
          where
            midAverage j 0 = midAverage (succ j) (countOf (succ j))
            midAverage j _ = averageValue (fromIntegral i) (fromIntegral j)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the use of the GHC extension &lt;code&gt;BangPatterns&lt;/code&gt;, covered in a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2014-12-05-bang-patterns.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2014-12-05-bang-patterns.html&quot;&amp;gt;2014 Day of GHC Extensions&amp;lt;/span&amp;gt;,
to ensure strict evaluation in the tail-recursive loops.&lt;/p&gt;
&lt;h3&gt;Mutable versus immutable ways to create the counts table&lt;/h3&gt;
&lt;p&gt;What is &lt;code&gt;makeCountsMutably&lt;/code&gt;?&lt;/p&gt;
&lt;h4&gt;Mutable&lt;/h4&gt;
&lt;p&gt;The version of the function that uses mutation does it using the
&lt;a href=&quot;https://hackage.haskell.org/package/vector-0.11.0.0/docs/Data-Vector-Unboxed.html#v:create&quot;&gt;&lt;code&gt;create&lt;/code&gt; function&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Use local mutation for efficiency in creating a table of counts,
-- looping through to update it, and freezing the result to return.
makeCountsMutably
  :: V.Vector Value        -- ^ values seen
  -&amp;gt; V.Vector CountOfValue -- ^ value =&amp;gt; count
makeCountsMutably values = V.create $ do
  counts &amp;lt;- M.replicate numPossibleValues 0
  V.forM_ values $
     M.unsafeModify counts succ . fromIntegral
  return counts

-- | 256, in our case.
numPossibleValues :: Int
numPossibleValues = fromIntegral (maxBound :: Value) + 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;create&lt;/code&gt; has type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;create :: Unbox a =&amp;gt; (forall s. ST s (MVector s a)) -&amp;gt; Vector a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and cleverly &quot;freezes&quot;, in place, the mutable vector returned within
&lt;code&gt;ST&lt;/code&gt; monad context, into an immutable vector, avoiding any copying
because the mutation happening inside the callback is never visible
outside it.&lt;/p&gt;
&lt;h4&gt;Immutable&lt;/h4&gt;
&lt;p&gt;But wait, there&apos;s also a way to create the table using only immmutable
&lt;code&gt;Vector&lt;/code&gt;s, no intermediate &lt;code&gt;MVector&lt;/code&gt; needed!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Make table of counts without using &apos;MVector&apos;.
makeCountsPurely
  :: V.Vector Value
  -&amp;gt; V.Vector CountOfValue
makeCountsPurely =
  V.unsafeAccumulate (+) (V.replicate numPossibleValues 0)
  . V.map (\v -&amp;gt; (fromIntegral v, 1))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is straightforward and elegant but &lt;em&gt;seems to create an
intermediate vector&lt;/em&gt; using &lt;code&gt;map&lt;/code&gt;, which is not what we want to do
given that the whole point is to be space efficient.&lt;/p&gt;
&lt;h5&gt;Fusion&lt;/h5&gt;
&lt;p&gt;But &lt;code&gt;vector&lt;/code&gt; comes with sophisticated
&lt;a href=&quot;https://wiki.haskell.org/Numeric_Haskell:_A_Vector_Tutorial#A_note_on_fusion&quot;&gt;support for fusion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A later Day of Hackage (it&apos;s now here at &lt;a href=&quot;/blog/2015/12/19/24-days-of-hackage-2015-day-19-ghc-core-html-list-fusion-probe-checking-ghcs-fusion-rewrite-rules-for-erasing-intermediate-data-from-existence/&quot;&gt;day 19&lt;/a&gt;) will explain what is going on, but GHC actually
rewrites the calls to &lt;code&gt;unsafeAccumulate&lt;/code&gt; and &lt;code&gt;map&lt;/code&gt; in order to avoid
creating an intermediate vector!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Fixed-size arrays are a very important low-level building block for
many computations. I use &lt;code&gt;vector&lt;/code&gt; when doing (sequential) array
operations. Hopefully this little example shows how to write efficient
vector-based imperative code in Haskell while hiding as much of the
state as possible, through selected type-oriented APIs that operate
between the two worlds of mutable and immutable. It is even possible
to write code relying on fusion that does not explicitly build a
mutable vector.&lt;/p&gt;
&lt;p&gt;(These are sequential arrays. For parallel arrays, see a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2013-12-16-24-days-of-hackage-repa.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2013-12-16-24-days-of-hackage-repa.html&quot;&amp;gt;2013 Day of Hackage&amp;lt;/span&amp;gt;
which covered &lt;a href=&quot;https://hackage.haskell.org/package/repa&quot;&gt;&lt;code&gt;repa&lt;/code&gt;&lt;/a&gt;, a library
for &quot;high performance, regular, multi-dimensional, shape polymorphic
parallel arrays&quot;.)&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 17: ansi-wl-pprint: avoiding string hacking</title><link>https://franklinchen.com/blog/2015/12/17/24-days-of-hackage-2015-day-17-ansi-wl-pprint-avoiding-string-hacking/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/17/24-days-of-hackage-2015-day-17-ansi-wl-pprint-avoiding-string-hacking/</guid><pubDate>Thu, 17 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 17&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3x9r8j/24_days_of_hackage_2015_day_17_ansiwlpprint/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Today we do the inverse of what we did on
&lt;a href=&quot;/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/&quot;&gt;day 14&lt;/a&gt;,
which was parsing from text to an abstract syntax tree. Today we
pretty-print an abstract syntax tree to text.&lt;/p&gt;
&lt;p&gt;I think that in the wider world of programming, it&apos;s very common to
see ad hoc, inflexible solutions to this problem, using string hacking
and maybe at best some string-based templates. It&apos;s typically hard to
quickly customize indentation styles, expression wrapping, and other
such features when using such an ad hoc solution.&lt;/p&gt;
&lt;p&gt;In the Haskell community, a better solution is more often used,
because of the number of quality libraries out there to help in
pretty-printing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hackage.haskell.org/package/ansi-wl-pprint&quot;&gt;&lt;code&gt;ansi-wl-pprint&lt;/code&gt;&lt;/a&gt;
is one such library, that includes not only a lot of useful
convenience combinators, but also provides support for colored
terminal output, if you want to use that (you don&apos;t have to).&lt;/p&gt;
&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;A commenter on Reddit noted that there&apos;s another version of the
pretty-printing library,
&lt;a href=&quot;https://hackage.haskell.org/package/annotated-wl-pprint&quot;&gt;&lt;code&gt;annotated-wl-pprint&lt;/code&gt;&lt;/a&gt;. This
looks really cool, and here&apos;s a
&lt;a href=&quot;https://www.youtube.com/watch?v=m7BBCcIDXSg&quot;&gt;video by David Christiansen on its usage in Idris&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Back to our example expression type&lt;/h2&gt;
&lt;p&gt;Recall that our expression type is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Variable in an expression.
type Var = String

-- | Expression.
data Exp
  = N Int          -- ^ number
  | V Var          -- ^ variable
  | Plus Exp Exp   -- ^ sum
  | Times Exp Exp  -- ^ product
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Some sample pretty-printed output&lt;/h2&gt;
&lt;p&gt;Let&apos;s pretty-print a sample expression.  (In real life, we&apos;d create a
corpus of expressions to pretty-print and verify them, and also write
QuickCheck tests to confirm various properties.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}

module SymbolicDifferentiation.AnsiWlPprintSpec where

import qualified SymbolicDifferentiation.Earley as Earley
import qualified SymbolicDifferentiation.AnsiWlPprint as AnsiWlPprint

import Test.Hspec (Spec, hspec, describe, it, shouldBe, shouldSatisfy)

import Data.String.Here (hereLit)

spec :: Spec
spec =
  describe &quot;anti-wl-pprint for symbolic differentiation expression&quot; $ do
    let eString = [hereLit|(x*1) + 2*y + ((3+z) * (4*b)) * (5+d+w)|]
    let ([e], _) = Earley.parses eString
    it eString $ do
      show (AnsiWlPprint.prettyPrint e) `shouldBe`
        [hereLit|x*1 + 2*y + (3 + z)*4*b*(5 + d
+ w)|]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To avoid the hassle of constructing an &lt;code&gt;Exp&lt;/code&gt; value by hand, we&apos;re
reusing our parser.&lt;/p&gt;
&lt;p&gt;Exercise for the reader: write a QuickCheck generator of random
expressions, and write a test that verifies that when you roundtrip a
random &lt;code&gt;Exp&lt;/code&gt; through our &lt;code&gt;AnsiWlPprint.prettyPrint&lt;/code&gt; and then back to
an &lt;code&gt;Exp&lt;/code&gt; through &lt;code&gt;Earley.parses&lt;/code&gt;, we get the same &lt;code&gt;Exp&lt;/code&gt; back!&lt;/p&gt;
&lt;p&gt;The example here formats sums to be space-separated and products to be
run together, with minimal parenthesizing and optional line breaking.&lt;/p&gt;
&lt;h2&gt;The code&lt;/h2&gt;
&lt;p&gt;The code is brief. The
&lt;a href=&quot;https://hackage.haskell.org/package/ansi-wl-pprint-0.6.7.3/docs/Text-PrettyPrint-ANSI-Leijen.html&quot;&gt;Haddock documentation for &lt;code&gt;ansi-wl-pprint&lt;/code&gt;&lt;/a&gt;
is excellent, so you can check it out for an explanation of the
combinators used.&lt;/p&gt;
&lt;p&gt;The single fundamental concept behind the library is that there is a
data type &lt;code&gt;Doc&lt;/code&gt; that represents a &quot;document&quot;, a piece of
pretty-printed information, and there is an algebra of combining
documents to arrange them in various ways, and then you can use one of
a variety of interpreters over the document to perform the final
conversion to a string at the end.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module SymbolicDifferentiation.AnsiWlPprint where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times))
import Text.PrettyPrint.ANSI.Leijen
       ( Doc
       , int, text, char
       , (&amp;lt;/&amp;gt;), (&amp;lt;//&amp;gt;), (&amp;lt;+&amp;gt;), (&amp;lt;&amp;gt;)
       , parens
       )

-- | Very primitive, for illustration only!
--
-- Spaces for sums, but no spaces for products.
-- Soft breaks before operators.
prettyPrint :: Exp -&amp;gt; Doc
prettyPrint e = p 10 e

-- | Pretty-print inside a precedence context to avoid parentheses.
-- Consider + to be 6, * to be 7.
p :: Int -&amp;gt; Exp -&amp;gt; Doc
p _ (N n) = int n
p _ (V v) = text v
p prec (Plus e1 e2) = maybeParens (prec &amp;lt; 7)
  (p 7 e1 &amp;lt;/&amp;gt; char &apos;+&apos; &amp;lt;+&amp;gt; p 7 e2)
p prec (Times e1 e2) = maybeParens (prec &amp;lt; 6)
  (p 6 e1 &amp;lt;//&amp;gt; char &apos;*&apos; &amp;lt;&amp;gt; p 6 e2)

maybeParens :: Bool -&amp;gt; Doc -&amp;gt; Doc
maybeParens True = parens
maybeParens False = id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Exercise for the reader: there are many ways to improve the
pretty-printer, for example to line up terms to look like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a + b*c
  + d*e
  + f*g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I would probably first transform &lt;code&gt;Exp&lt;/code&gt; into a &lt;code&gt;SugaredExp&lt;/code&gt; that
represents an intermediate abstract syntax of terms and factors, and
then write a pretty-printer over that.&lt;/p&gt;
&lt;h2&gt;Duplication of work?&lt;/h2&gt;
&lt;p&gt;You might wonder about the duplication of effort in writing the parser
and the pretty-printer. Can&apos;t one write a single high-level
specification to do both simultaneously? Yes, there are tools for
that, but outside the scope of this article.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Pretty-printing is a very important part of a text-based user
interface, whether for inspecting generated code or creating good
error messages. &lt;code&gt;ansi-wl-pprint&lt;/code&gt; is a good library to use for
pretty-printing.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 16: safe; what is safety anyway?</title><link>https://franklinchen.com/blog/2015/12/16/24-days-of-hackage-2015-day-16-safe-what-is-safety-anyway/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/16/24-days-of-hackage-2015-day-16-safe-what-is-safety-anyway/</guid><pubDate>Wed, 16 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 16&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3x41la/24_days_of_hackage_2015_day_16_safe_what_is/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Today I&apos;m doing something strange: up till now, I&apos;ve discussed
libraries and tools I actually use. Today I&apos;m discussing a library I
do &lt;em&gt;not&lt;/em&gt; use, while thinking about why I not, and why you or I might
want to use it. This library is
&lt;a href=&quot;https://hackage.haskell.org/package/safe&quot;&gt;&lt;code&gt;safe&lt;/code&gt;&lt;/a&gt;, which aims to
protect against the unfortunate &quot;unsafety&quot; of common functions in the
standard Prelude.&lt;/p&gt;
&lt;p&gt;That&apos;s a good thing, right? After all, on
&lt;a href=&quot;/blog/2015/12/07/24-days-of-hackage-2015-day-7-semigroups-nonempty-list-and-a-case-study-of-types-and-tests/&quot;&gt;day 7&lt;/a&gt;,
I promoted the use of the &lt;code&gt;NonEmpty&lt;/code&gt; list, and again used in
&lt;a href=&quot;/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/&quot;&gt;day 14&lt;/a&gt;. I
like safety, but what does &quot;safety&quot; mean anyway?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Safety is relative&lt;/h2&gt;
&lt;p&gt;A notion of &lt;em&gt;safety&lt;/em&gt; is always relative to some criterion, some
expectation, and even more generally, in the context of some &lt;em&gt;way of
life&lt;/em&gt;. And ways of life can be safeguarded through different
mechanisms, from strict protection to &quot;style guides&quot; to implicit
social contracts and ostracism.&lt;/p&gt;
&lt;p&gt;In the context of the &lt;code&gt;safe&lt;/code&gt; package, the kind of safety we are
concerned about is not ever wanting to see a running program crash
with an &lt;em&gt;exception&lt;/em&gt; from pure code like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*** Exception: Prelude.head: empty list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This happens if you call &lt;code&gt;head&lt;/code&gt; on an empty list:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Crashes if nobody in line.
unsafeReportFirstInLine :: [Int] -&amp;gt; String
unsafeReportFirstInLine nums =
  &quot;next up: customer &quot; ++ show (head nums)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; unsafeReportFirstInLine []
&quot;next up: customer *** Exception: Prelude.head: empty list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &quot;safe&quot; solution is &lt;strong&gt;don&apos;t ever call &lt;code&gt;head&lt;/code&gt; on a list that might
be empty&lt;/strong&gt;. There are different ways to achieve this.&lt;/p&gt;
&lt;h2&gt;Solving a human psychology problem?&lt;/h2&gt;
&lt;p&gt;One possible solution is to change the type of &lt;code&gt;head&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Providing functions such as &lt;code&gt;head&lt;/code&gt; in the Haskell Prelude is arguably
a historical legacy mistake from 1990, because it encourages
programmers (especially those starting out with Haskell, especially
when using instructional materials that use &lt;code&gt;head&lt;/code&gt;!) to call
&lt;code&gt;head&lt;/code&gt;. &lt;em&gt;If you give people the easy ability to do something unsafe,
they will surely do it, and often.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Newer language communities attack the human psychology problem by &lt;em&gt;not
providing&lt;/em&gt; an unsafe &lt;code&gt;head&lt;/code&gt;: for example, the standard PureScript
ecosystem provides a
&lt;a href=&quot;https://github.com/purescript/purescript-lists/blob/master/docs/Data/List.md#head&quot;&gt;safe &lt;code&gt;Data.List.head&lt;/code&gt;&lt;/a&gt;
with type &lt;code&gt;forall a. List a -&amp;gt; Maybe a&lt;/code&gt; but also provides an entire
&lt;a href=&quot;https://github.com/purescript/purescript-lists/blob/master/docs/Data/List/Unsafe.md&quot;&gt;&lt;code&gt;Data.List.Unsafe&lt;/code&gt;&lt;/a&gt;
module that includes
&lt;a href=&quot;https://github.com/purescript/purescript-lists/blob/master/docs/Data/List/Unsafe.md#head&quot;&gt;&lt;code&gt;Data.List.Unsafe.head&lt;/code&gt;&lt;/a&gt;
with type &lt;code&gt;forall a. List a -&amp;gt; a&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;And Elm
&lt;a href=&quot;http://package.elm-lang.org/packages/elm-lang/core/3.0.0/List&quot;&gt;&lt;code&gt;List&lt;/code&gt; module&lt;/a&gt;
provides
&lt;a href=&quot;http://package.elm-lang.org/packages/elm-lang/core/3.0.0/List#head&quot;&gt;&lt;code&gt;List.head&lt;/code&gt;&lt;/a&gt;
of type &lt;code&gt;List a -&amp;gt; Maybe a&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Marking something as unsafe at least enables the writer and reader of
code to make note that something might go wrong, so I think this is a
good starting point for a solution. Furthermore, psychology research
has shown clearly that defaults matter: if the goal is to promote
safety, it is better to have the default be safe, and &quot;opt out&quot;
explicitly to be unsafe, rather than have the default be unsafe, and
&quot;opt in&quot; to be safe.&lt;/p&gt;
&lt;p&gt;Unfortunately, for historical reasons, if you&apos;re working with lists
and some other data structures in Haskell, you are forced to opt in to
safety, rather than opt out to unsafety.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;safe&lt;/code&gt; package allows you to opt in to safety.&lt;/p&gt;
&lt;p&gt;You get functions such as
&lt;a href=&quot;https://hackage.haskell.org/package/safe-0.3.9/docs/Safe.html#v:headMay&quot;&gt;&lt;code&gt;Safe.headMay&lt;/code&gt;&lt;/a&gt;
with type &lt;code&gt;[a] -&amp;gt; Maybe a&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Using &apos;Safe.headMay&apos; and pattern matching on Maybe.
reportFirstInLine :: [Int] -&amp;gt; String
reportFirstInLine nums =
  case Safe.headMay nums of
    Just num -&amp;gt; &quot;next up: customer &quot; ++ show num
    Nothing -&amp;gt; &quot;there are no customers in line&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Pattern-matching directly on the data structure as an alternative&lt;/h2&gt;
&lt;p&gt;In practice, I don&apos;t use functions like &lt;code&gt;headMay&lt;/code&gt; because I usually
just pattern-match on the list itself:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Using pattern matching on list.
reportFirstInLine2 :: [Int] -&amp;gt; String
reportFirstInLine2 [] = &quot;there are no customers in line&quot;
reportFirstInLine2 (num:_) = &quot;next up: customer &quot; ++ show num
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I think about it, though, there is something not quite right
about this solution. The wildcard &lt;code&gt;_&lt;/code&gt; in the pattern gives away the
fact that we are getting back more information than we actually
&lt;em&gt;need&lt;/em&gt;. In principle we should ask only for what we need, and
&lt;code&gt;headMay&lt;/code&gt; does precisely that. I&apos;m basically violating conceptual
encapsulation by getting back more than I need (the tail) and ignoring
it.&lt;/p&gt;
&lt;p&gt;So I believe I should really start using
&lt;code&gt;headMay&lt;/code&gt; in this kind of context, and thinking more deeply, I believe
that the single reason I haven&apos;t is that the standard Prelude didn&apos;t
provide it! It was easier to do the pattern-matching than to find
&lt;code&gt;safe&lt;/code&gt; and add it as a dependency.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How many of you think like me, and would happily use &lt;code&gt;headMay&lt;/code&gt; if it
were part of the standard Prelude, but because it is not, you use a
wildcarded pattern match on a list instead?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Revisiting the &lt;code&gt;headMay&lt;/code&gt; solution&lt;/h2&gt;
&lt;p&gt;Some of you might like using the &lt;code&gt;maybe&lt;/code&gt; function that has type &lt;code&gt;b -&amp;gt; (a -&amp;gt; b) -&amp;gt; Maybe a -&amp;gt; b&lt;/code&gt;, to avoid pattern matching on &lt;code&gt;Maybe&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | No pattern matching.
reportFirstInLine3 :: [Int] -&amp;gt; String
reportFirstInLine3 =
  maybe &quot;there are no customers in line&quot; reportOne . Safe.headMay

reportOne :: Int -&amp;gt; String
reportOne num = &quot;next up: customer &quot; ++ show num
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There&apos;s also a code golf version that I do &lt;em&gt;not&lt;/em&gt; recommend:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Code golf.
reportFirstInLine4 :: [Int] -&amp;gt; String
reportFirstInLine4 =
  maybe &quot;there are no customers in line&quot;
        ((&quot;next up: customer &quot; ++) . show)
        . Safe.headMay
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Other &lt;code&gt;safe&lt;/code&gt; goodies&lt;/h2&gt;
&lt;p&gt;Each of the &lt;code&gt;...May&lt;/code&gt; functions also has useful variants:&lt;/p&gt;
&lt;p&gt;One allows specifying a default to return upon empty:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;headDef :: a -&amp;gt; [a] -&amp;gt; a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another is unsafe, but at least generates a better exception. This is
useful if you &lt;em&gt;know&lt;/em&gt; that a list is not empty, and do not want to
handle the case in which it is empty, but &lt;em&gt;just in case&lt;/em&gt;, generate an
exception that if triggered, at least tells you where your &quot;internal
fatal error&quot; came from.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;headNote :: String -&amp;gt; [a] -&amp;gt; a
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exactness is a safety issue&lt;/h2&gt;
&lt;p&gt;The
&lt;a href=&quot;https://hackage.haskell.org/package/safe-0.3.9/docs/Safe-Exact.html&quot;&gt;&lt;code&gt;Safe.Exact&lt;/code&gt;&lt;/a&gt;
module provides a lot of useful functions that have to do with
indexing into a list or the checking the sizes of lists. Here,
&quot;safety&quot; no longer refers to an exception. It refers to something more
insidious: code you write that &lt;em&gt;typechecks and runs but does the
unintended thing&lt;/em&gt;. For example, it is very easy to use &lt;code&gt;take&lt;/code&gt; in a way
that you don&apos;t intend because it &lt;em&gt;silently&lt;/em&gt; allows you to &quot;take&quot; more
elements from a list than it contains, but just assumes you know what
you are doing and don&apos;t &quot;really&quot; mean &quot;take 1000 elements&quot; but rather
&quot;take 1000 elements or if there aren&apos;t 1000, take all the elements&quot;. I
have been bitten by &lt;code&gt;take&lt;/code&gt; before, where I passed in an absurd number
that I did not &lt;em&gt;intend&lt;/em&gt;. So the &lt;code&gt;Safe.Exact.takeExact...&lt;/code&gt; family of
functions is quite useful. In the past, before I discovered &lt;code&gt;safe&lt;/code&gt;, I
ended up basically writing my own wrappers, and now I won&apos;t do that
again.&lt;/p&gt;
&lt;h2&gt;Foldable&lt;/h2&gt;
&lt;p&gt;Finally the
&lt;a href=&quot;https://hackage.haskell.org/package/safe-0.3.9/docs/Safe-Foldable.html&quot;&gt;&lt;code&gt;Safe.Foldable&lt;/code&gt;&lt;/a&gt;
module is useful because &lt;code&gt;Foldable&lt;/code&gt; is full of unsafe operations.&lt;/p&gt;
&lt;h2&gt;When you know something about your data that the type doesn&apos;t know&lt;/h2&gt;
&lt;p&gt;A final note on exactness of list operations as a safety issue: the
principled solution to inexactness when it comes to indexing into or
size of lists is to &lt;em&gt;turn the potential bugs into type errors&lt;/em&gt;, using
dependent types: a &quot;list&quot; type that is dependent on its size. A later
Day of Hackage will mention solutions.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;safe&lt;/code&gt; package is a nice utility library that wraps &quot;unsafe&quot;
Prelude operations. There are technical and psychological reasons I
haven&apos;t used it, and I discussed them, but I will use it in the future
when it fits my needs.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 15: IOSpec: testing IO; and some QuickCheck tricks</title><link>https://franklinchen.com/blog/2015/12/15/24-days-of-hackage-2015-day-15-iospec-testing-io-and-some-quickcheck-tricks/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/15/24-days-of-hackage-2015-day-15-iospec-testing-io-and-some-quickcheck-tricks/</guid><pubDate>Tue, 15 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 15&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://web.archive.org/web/20230603045438/https://www.reddit.com/r/haskell/comments/3wy2ge/24_days_of_hackage_2015_day_15_iospec_testing_io/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;On
&lt;a href=&quot;/blog/2015/12/11/24-days-of-hackage-2015-day-11-monad-loops-avoiding-writing-recursive-functions-by-refactoring/&quot;&gt;day 11&lt;/a&gt;,
I tangentially mentioned feeling embarrassed that unlike all of my
other code examples, because I was using &lt;code&gt;IO&lt;/code&gt;, I didn&apos;t approach it by
writing tests up front. I didn&apos;t want to distract from the topic at
hand, which had nothing to do with &lt;code&gt;IO&lt;/code&gt; but to do with general monadic
combinators.&lt;/p&gt;
&lt;p&gt;But now I&apos;m back to fill in the gap by showing one way of &quot;mocking
out&quot; &lt;code&gt;IO&lt;/code&gt;, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/IOSpec&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/IOSpec&quot;&amp;gt;IOSpec&amp;lt;/span&amp;gt;
library. This isn&apos;t a perfect solution, and I wish there were some
kind of standard way of testing &lt;code&gt;IO&lt;/code&gt; in the Haskell ecosystem, rather
than the various different methods (often reinvented) floating around
out there, but at least gives the flavor of one approach.&lt;/p&gt;
&lt;p&gt;Ironically, I found and
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage/commit/3ed2b4963a226b0fa0a8193a0ef2a4086723f1a7&quot;&gt;fixed a bug in my code&lt;/a&gt;
for day 11 in the process of writing a test for it!! Sometimes I feel
I&apos;m super unlucky because when I do last-minute edits of code without
tests (in this case to turn one print statement into two, in the
course of revising the day 11 article), I inevitably introduce
bugs. This is precisely why I like to write tests. I do not trust
myself without tests.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The day 11 code to test&lt;/h2&gt;
&lt;p&gt;Below is a copy of the introductory description of the task in day 11,
with the first version of the Haskell code. We will test this first
version:&lt;/p&gt;
&lt;p&gt;Let&apos;s write a function to simulate a user login process, in which&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the user is prompted to enter a password&lt;/li&gt;
&lt;li&gt;a loop is entered in which
&lt;ul&gt;
&lt;li&gt;a guess is read in&lt;/li&gt;
&lt;li&gt;if it is not correct, we prompt again and loop&lt;/li&gt;
&lt;li&gt;if it is correct, we exit the loop&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;we print congratulations&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;logIn :: IO ()
logIn = do
  putStrLn &quot;% Enter password:&quot;
  go
  putStrLn &quot;$ Congratulations!&quot;

  where
    -- Use recursion for loop
    go = do
      guess &amp;lt;- getLine
      if guess /= &quot;secret&quot;
        then do
          putStrLn &quot;% Wrong password!&quot;
          putStrLn &quot;% Try again:&quot;
          go
        else
          return ()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Code changes in order to use &lt;code&gt;IOSpec&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;I copied the entire module for day 11 to a new module
&lt;code&gt;IOSpecExample.hs&lt;/code&gt;, with only a few modifications:&lt;/p&gt;
&lt;h3&gt;Changing the module name&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;-- | Copied with modification from MonadLoopsExample
module IOSpecExample where
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Hiding and adding IO-related imports&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import Prelude hiding (getLine, putStrLn)
import Test.IOSpec (IOSpec, Teletype, getLine, putStrLn)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Changing type signatures&lt;/h3&gt;
&lt;p&gt;We change &lt;code&gt;IO a&lt;/code&gt; to &lt;code&gt;IOSpec Teletype a&lt;/code&gt; everywhere, in order to set up
to use the &quot;teletype&quot; simulator for reading and printing characters,
since it happens that our &lt;code&gt;logIn&lt;/code&gt; only uses those operations. If we
used other operations, there are other simulators available, and
&lt;code&gt;IOSpec&lt;/code&gt;
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/IOSpec-0.3/docs/Test-IOSpec-Types.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/IOSpec-0.3/docs/Test-IOSpec-Types.html&quot;&amp;gt;uses a &quot;data types a la carte&quot; type mechanism for mixing and matching&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;How &lt;code&gt;IOSpec&lt;/code&gt; works&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;IOSpec&lt;/code&gt; works by making everything build up a data structure that is
then run with a &lt;code&gt;Scheduler&lt;/code&gt; to produce an &lt;code&gt;Effect&lt;/code&gt;. We use
&lt;code&gt;evalIOSpec&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;evalIOSpec :: Executable f =&amp;gt; IOSpec f a -&amp;gt; Scheduler -&amp;gt; Effect a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We (the tester) can then interpret the &lt;code&gt;Effect&lt;/code&gt; however we want. We&apos;ll
just use a basic single-threaded scheduler for this example.&lt;/p&gt;
&lt;h2&gt;The test&lt;/h2&gt;
&lt;p&gt;For our test, we&apos;ll use QuickCheck to generate random user input,
subject to some constraints. Since we&apos;re simulating a teletype, we
assume that the user enters a stream (we&apos;ll represent this as a list)
of strings that do not contain newlines. We want to verify that if one
of them is the word &lt;code&gt;&quot;secret&quot;&lt;/code&gt;, then the collective output will simply
be the introductory prompt, the correct total number of re-prompts
upon a wrong guess, and the final congratulations.&lt;/p&gt;
&lt;p&gt;Here&apos;s the spec, with auxiliary code discussed below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE ScopedTypeVariables #-}

module IOSpecExampleSpec where

import IOSpecExample (logIn)
import qualified Test.IOSpec as IO

import Test.Hspec (Spec, hspec, describe)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck
import Data.Coerce (coerce)

-- | Required for auto-discovery.
spec :: Spec
spec =
  describe &quot;IOSpec&quot; $ do
    prop &quot;logIn outputs prompts until secret is guessed&quot; $
      \(notSecretLines :: [NotSecretString]) (anyLines :: [NotNewlineString]) -&amp;gt;
      let allLines = coerce notSecretLines
                     ++ [&quot;secret&quot;]
                     ++ coerce anyLines
          outputLines = [&quot;% Enter password:&quot;]
                        ++ concatMap
                           (const [ &quot;% Wrong password!&quot;
                                  , &quot;% Try again:&quot;])
                           notSecretLines
                        ++ [&quot;$ Congratulations!&quot;]
      in takeOutput (withInput (unlines allLines)
                               (IO.evalIOSpec logIn IO.singleThreaded))
         == unlines outputLines
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;newtype&lt;/code&gt;s to drive QuickCheck&lt;/h2&gt;
&lt;p&gt;We&apos;re using a standard QuickCheck trick to create domain-specific
random generators for already-existing data types.&lt;/p&gt;
&lt;p&gt;One of our types is &lt;code&gt;NotSecretString&lt;/code&gt;, representing a line typed by
the user that is not equal to &lt;code&gt;&quot;secret&quot;&lt;/code&gt;; it also should not have a
newline. The QuickCheck &lt;code&gt;Arbitrary&lt;/code&gt; instance is boilerplate to
maintain the desired invariants.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | User input without a newline, and not equal to &quot;secret&quot;.
newtype NotSecretString =
  NotSecretString { getNotSecretString :: NotNewlineString }
  deriving (Show)

instance Arbitrary NotSecretString where
  arbitrary = NotSecretString &amp;lt;$&amp;gt;
              arbitrary `suchThat` ((/= &quot;secret&quot;) . coerce)
  shrink = map NotSecretString
              . filter ((/= &quot;secret&quot;) . coerce)
              . shrink
              . getNotSecretString
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We refine further down to the &lt;code&gt;Char&lt;/code&gt; level, to generate
&lt;code&gt;NotNewlineChar&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type NotNewlineString = [NotNewlineChar]

newtype NotNewlineChar =
  NotNewlineChar { getNotNewlineChar :: Char }
  deriving (Show)

-- | Quick hack. Ideally should write specific generator rather than
-- filtering off the default &apos;Char&apos; generator.
instance Arbitrary NotNewlineChar where
  arbitrary = NotNewlineChar &amp;lt;$&amp;gt;
              arbitrary `suchThat` (/= &apos;\n&apos;)
  shrink = map NotNewlineChar
              . filter (/= &apos;\n&apos;)
              . shrink
              . getNotNewlineChar
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A note on random strings&lt;/h3&gt;
&lt;p&gt;We used a quick hack for getting an &quot;arbitrary&quot; string. It&apos;s not so
arbitrary, as you can see from
&lt;a href=&quot;https://github.com/nick8325/quickcheck/blob/master/Test/QuickCheck/Arbitrary.hs#L473&quot;&gt;the QuickCheck source code&lt;/a&gt;. For
quality Unicode string generation, use &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/quickcheck-unicode&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/quickcheck-unicode&quot;&amp;gt;quickcheck-unicode&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;A note on &lt;code&gt;coerce&lt;/code&gt;: it&apos;s just an optimization hack&lt;/h2&gt;
&lt;p&gt;If you haven&apos;t seen &lt;code&gt;coerce&lt;/code&gt; from
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Coerce.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Coerce.html&quot;&amp;gt;Data.Coerce&amp;lt;/span&amp;gt;
before, you may wonder what it is. It&apos;s just an efficiency hack to
take advantage of Haskell&apos;s guarantee that a &lt;code&gt;newtype&lt;/code&gt;&apos;s data
representation is identical to the type it wraps. &lt;code&gt;coerce&lt;/code&gt; solves the
problem of ensuring that wrapping of wrapping (of wrapping...) is
still recognized as having the same representation, such that there is
no runtime cost in treating a value as being of a different type. It&apos;s
an ugly hack but convenient. If something can&apos;t be coerced, that&apos;s a
type error, so this is &lt;em&gt;safe&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If you don&apos;t like using &lt;code&gt;coerce&lt;/code&gt;, you have to use a lot of &lt;code&gt;map&lt;/code&gt; and
unwrapping and rewrapping to convert between all the different types,
such as&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;notSecretStringsAsStrings :: [NotSecretString] -&amp;gt; [String]
notSecretStringsAsStrings = map notSecretStringAsString

notSecretStringAsString :: NotSecretString -&amp;gt; String
notSecretStringAsString = map getNotNewlineChar . getNotSecretString
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It was easier if less principled for me to just think &quot;they&apos;re all
just &lt;code&gt;Char&lt;/code&gt; and &lt;code&gt;[Char]&lt;/code&gt; underneath&quot;.  If anyone has guidelines on
when to use &lt;code&gt;coerce&lt;/code&gt; and when not, I&apos;d be happy to link to them from
here (and change my code as appropriate).&lt;/p&gt;
&lt;h2&gt;Interpreting an &lt;code&gt;Effect&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;We interpret the &lt;code&gt;Effect&lt;/code&gt; in a way taken from an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/IOSpec-0.3/src/examples/Echo.hs&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/IOSpec-0.3/src/examples/Echo.hs&quot;&amp;gt;example coming with the library&amp;lt;/span&amp;gt;. We
convert &lt;code&gt;Print&lt;/code&gt; and &lt;code&gt;ReadChar&lt;/code&gt; how you would expect if generating a
stream of characters or reading from one.&lt;/p&gt;
&lt;p&gt;Taking output is straightforward, interpreting &lt;code&gt;Done&lt;/code&gt; and &lt;code&gt;Print&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;takeOutput :: IO.Effect () -&amp;gt; String
takeOutput (IO.Done _) = &quot;&quot;
takeOutput (IO.Print c xs) = c : takeOutput xs
takeOutput _ = error &quot;takeOutput: expects only Done, Print&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reading input is trickier, because what is really happening is that an
input stream of characters is used to convert one &lt;code&gt;Effect&lt;/code&gt; into
another. The &lt;code&gt;ReadChar&lt;/code&gt; constructor has type &lt;code&gt;Char -&amp;gt; Effect a&lt;/code&gt; and
therefore when its value is called on a &lt;code&gt;Char&lt;/code&gt;, goes to the &quot;next
thing that happens&quot;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;withInput :: [Char] -&amp;gt; IO.Effect a -&amp;gt; IO.Effect a
withInput _ (IO.Done x) = IO.Done x
withInput stdin (IO.Print c e) = IO.Print c (withInput stdin e)
withInput (char:stdin) (IO.ReadChar f) = withInput stdin (f char)
withInput _ _ = error &quot;withInput: expects only Done, Print, ReadChar&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And with this test, I found the bug in my code, in which the output
was not what I expected because of a percent sign that went missing
during a hasty edit.&lt;/p&gt;
&lt;h2&gt;A final note: there is a popular pattern called &quot;free monad&quot;&lt;/h2&gt;
&lt;p&gt;If you already know about free monads, you probably wanted to tell me
&quot;what about the free monad&quot; as this article began, but I didn&apos;t want
to go there, yet. Maybe later.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Today I presented one way of adding a layer of abstraction to &lt;code&gt;IO&lt;/code&gt;
operations in order to be able to interpret them in an alternate way
than actually doing them, in order to be able to write and run
interesting tests.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 14: Earley: a promising newer parser library for Haskell</title><link>https://franklinchen.com/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/</guid><pubDate>Mon, 14 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 14&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3wtswv/24_days_of_hackage_2015_day_14_earley_a_promising/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;On
&lt;a href=&quot;/blog/2015/12/10/24-days-of-hackage-2015-day-10-s-cargot-using-s-expression-syntax/&quot;&gt;day 10&lt;/a&gt;,
I showed how to use S-expressions to avoid having to write a custom
parser. But writing parsers isn&apos;t too bad in Haskell, or is it? The
popular &lt;code&gt;parsec&lt;/code&gt; library
&lt;a href=&quot;http://blog.ezyang.com/2014/05/parsec-try-a-or-b-considered-harmful/&quot;&gt;has many problems&lt;/a&gt;,
because it requires hand-hacked backtracking that causes weird error
messages and difficulty in reasoning about your grammar. There&apos;s an
improved fork of &lt;code&gt;parsec&lt;/code&gt; called
&lt;a href=&quot;https://hackage.haskell.org/package/megaparsec&quot;&gt;&lt;code&gt;megaparsec&lt;/code&gt;&lt;/a&gt;, but
it&apos;s still the same kind of technology. How about something completely
different.&lt;/p&gt;
&lt;p&gt;The recent &lt;a href=&quot;https://hackage.haskell.org/package/Earley&quot;&gt;&lt;code&gt;Earley&lt;/code&gt;&lt;/a&gt; is
intriguing and I&apos;ve begun using it for new projects where I don&apos;t need
the monadic power of something like &lt;code&gt;parsec&lt;/code&gt; but are OK with an
applicative API instead and don&apos;t need the performance of something
like &lt;code&gt;attoparsec&lt;/code&gt;. Apart from good error messages, it allows handles
online parsing and ambiguity.&lt;/p&gt;
&lt;p&gt;Today I&apos;ll give two small examples of using &lt;code&gt;Earley&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Since Stackage LTS is behind right now, and &lt;code&gt;Earley&lt;/code&gt; keeps moving,
I decided to use the latest version of &lt;code&gt;Earley&lt;/code&gt; by modifying our
&lt;code&gt;stack.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- Earley-0.10.1.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;(Update of 2016-01-06)&lt;/h3&gt;
&lt;p&gt;Stackage LTS 4 has caught up, no no more need for this modification.&lt;/p&gt;
&lt;h2&gt;Parsing into day 10&apos;s AST&lt;/h2&gt;
&lt;p&gt;Let&apos;s go back to the symbolic differentiation problem on day 10, and
create a math-like infix syntax to parse.&lt;/p&gt;
&lt;h3&gt;Tests&lt;/h3&gt;
&lt;p&gt;Here are some HSpec/QuickCheck tests to illustrate what we want when
parsing a string into an &lt;code&gt;Exp&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Imports&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;Text.Earley&lt;/code&gt; is the main module of the &lt;code&gt;Earley&lt;/code&gt; package; &lt;code&gt;Report&lt;/code&gt; is
used for return a report on the progress of the parse.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE LambdaCase #-}

module SymbolicDifferentiation.EarleySpec where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times))
import qualified SymbolicDifferentiation.Earley as Earley
import Text.Earley (Report(..))

import Test.Hspec (Spec, hspec, describe, it, shouldBe, shouldSatisfy)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck (NonNegative(..))

import Data.String.Here (i)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;QuickCheck tests&lt;/h4&gt;
&lt;p&gt;Some QuickCheck tests that show that some sample expressions such as
&lt;code&gt;x*a + y*b * (z+c)&lt;/code&gt; parse into the expected ASTs:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;Custom syntax for expression parsed by Earley&quot; $ do
    -- For simplicity, don&apos;t support negative numeric literals now.
    prop &quot;x + a&quot; $ \(NonNegative (a :: Int)) -&amp;gt;
      fst (Earley.parses [i|x + ${a}|]) `shouldBe`
        [Plus (V &quot;x&quot;) (N a)]

    prop &quot;x*a + y*b * (z+c)&quot; $
      \(NonNegative (a :: Int))
       (NonNegative (b :: Int))
       (NonNegative (c :: Int)) -&amp;gt;
      fst (Earley.parses [i|x*${a} + y*${b} * (z+${c})|]) `shouldBe`
        [Plus (Times (V &quot;x&quot;) (N a))
              (Times (Times (V &quot;y&quot;) (N b))
                     (Plus (V &quot;z&quot;) (N c)))]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Expected parse errors&lt;/h4&gt;
&lt;p&gt;Finally, one example of how to check for expected parse errors. The
error tokens are user-defined and attached to grammar productions, as
we will see.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;x + y * + 5&quot; $
      Earley.parses &quot;x + y * + 5&quot; `shouldSatisfy`
        \case
          ([], Report { position = 8
                      , expected = [&quot;number&quot;, &quot;identifier&quot;, &quot;(&quot;]
                      , unconsumed = &quot;+ 5&quot;
                      }) -&amp;gt; True
          _ -&amp;gt; False
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Implementation&lt;/h3&gt;
&lt;p&gt;The implementation involves &lt;code&gt;Applicative&lt;/code&gt; idioms that will be familiar
to you if you have used &lt;code&gt;parsec&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Imports&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RecursiveDo #-}
{-# LANGUAGE FlexibleContexts #-}

module SymbolicDifferentiation.Earley where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times))

import qualified Text.Earley as E
import Text.Earley ((&amp;lt;?&amp;gt;))
import Control.Applicative (many, some, (&amp;lt;|&amp;gt;))
import qualified Data.Char as Char
import Control.Monad.ST (ST)
import Data.ListLike (ListLike)

-- | What to report for something expected.
type Expected = String
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;?&amp;gt;&lt;/code&gt; operator is used to attach an expectation (which we have
decided to specify as a string, with type synonym &lt;code&gt;Expected&lt;/code&gt;) to a
production.&lt;/p&gt;
&lt;h4&gt;Drivers&lt;/h4&gt;
&lt;p&gt;What we want for our particular problem is a parser that takes a
string as input and expects to fully parse it. We construct it from a
more generic parser that comes from processing our grammar.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Return a list of all possible `Exp` parses, and also a status report
-- regardless of how many successes.
parses :: String -&amp;gt; ([Exp], E.Report Expected String)
parses = E.fullParses expParser

-- | Parser created from the grammar.
expParser :: ListLike input Char =&amp;gt;
             ST state (input -&amp;gt; ST state (E.Result state Expected input Exp))
expParser = E.parser grammar
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Grammar&lt;/h4&gt;
&lt;p&gt;Our grammar is straightforward. &lt;code&gt;Earley&lt;/code&gt; uses a monad to maintain its
internal state, and we use the &lt;code&gt;RecursiveDo&lt;/code&gt; GHC extension (covered in
a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2014-12-09-recursive-do.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2014-12-09-recursive-do.html&quot;&amp;gt;2014 Day of GHC Extensions&amp;lt;/span&amp;gt;)
in order to be able to refer to a rule within the grammar
recursively. Note that left recursion in the grammar is just fine for
&lt;code&gt;Earley&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prod&lt;/code&gt; is the &lt;a href=&quot;https://hackage.haskell.org/package/Earley-0.10.1.0/docs/Text-Earley.html#t:Prod&quot;&gt;type constructor for a production&lt;/a&gt;, and you build up
productions using combinators such as &lt;code&gt;satisfy&lt;/code&gt; and &lt;code&gt;symbol&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Basically taken from &amp;lt;https://github.com/ollef/Earley/blob/master/examples/Expr2.hs Earley example expression parser&amp;gt;
grammar :: forall r. E.Grammar r (E.Prod r Expected Char Exp)
grammar = mdo
  whitespace &amp;lt;- E.rule $
    many $ E.satisfy Char.isSpace

  let token :: E.Prod r Expected Char a -&amp;gt; E.Prod r Expected Char a
      token p = whitespace *&amp;gt; p

      sym x   = token $ E.symbol x &amp;lt;?&amp;gt; [x]

      ident   = token $ (:) &amp;lt;$&amp;gt; E.satisfy Char.isAlpha
                            &amp;lt;*&amp;gt; many (E.satisfy Char.isAlphaNum)
                            &amp;lt;?&amp;gt; &quot;identifier&quot;
      num     = token $ some (E.satisfy Char.isDigit) &amp;lt;?&amp;gt; &quot;number&quot;
      -- For now, just handle unsigned numeric literals.

  atom &amp;lt;- E.rule $
    (N . read) &amp;lt;$&amp;gt; num
    &amp;lt;|&amp;gt; V &amp;lt;$&amp;gt; ident
    &amp;lt;|&amp;gt; sym &apos;(&apos; *&amp;gt; term &amp;lt;* sym &apos;)&apos;

  factor &amp;lt;- E.rule $
    Times &amp;lt;$&amp;gt; factor &amp;lt;* sym &apos;*&apos; &amp;lt;*&amp;gt; atom
    &amp;lt;|&amp;gt; atom

  term &amp;lt;- E.rule $
    Plus &amp;lt;$&amp;gt; term &amp;lt;* sym &apos;+&apos; &amp;lt;*&amp;gt; factor
    &amp;lt;|&amp;gt; factor

  return $ term &amp;lt;* whitespace
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For more examples of grammars, see the
&lt;a href=&quot;https://github.com/ollef/Earley/tree/master/examples&quot;&gt;examples directory in the &lt;code&gt;Earley&lt;/code&gt; GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-17)&lt;/h3&gt;
&lt;p&gt;The inverse of parsing is pretty-printing, covered on &lt;a href=&quot;/blog/2015/12/17/24-days-of-hackage-2015-day-17-ansi-wl-pprint-avoiding-string-hacking/&quot;&gt;day 17&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;For fun: solving the &quot;number word&quot; problem&lt;/h2&gt;
&lt;p&gt;The ability to handle ambiguity and return all possible parses is a
useful one in many situations. Here I show a solution to the
&lt;a href=&quot;http://programmingpraxis.com/2014/07/25/number-words/&quot;&gt;&quot;number word&quot;&lt;/a&gt;
problem. In the past, I have managed ambiguity using
&lt;a href=&quot;https://www.haskell.org/happy/doc/html/sec-glr.html&quot;&gt;Happy&apos;s GLR support&lt;/a&gt;,
but I don&apos;t like writing parsers using Happy.&lt;/p&gt;
&lt;p&gt;The &quot;number word&quot; problem:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Given a positive integer, return all the ways that the integer can be
represented by letters using the mapping 1 -&amp;gt; A, 2 -&amp;gt; B, ..., 26 -&amp;gt;
Z. For instance, the number 1234 can be represented by the words ABCD,
AWD and LCD.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is a toy version of an actually serious problem, that of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Text_segmentation&quot;&gt;segmentation in natural language&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Test&lt;/h3&gt;
&lt;p&gt;The test reflects the problem statement:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module EarleyExampleSpec where

import EarleyExample (grammar, NumberWord, Expected)
import qualified Text.Earley as E
import qualified Data.List.NonEmpty as NonEmpty

import Test.Hspec (Spec, hspec, describe, it, shouldMatchList)

spec :: Spec
spec =
  describe &quot;EarleyExample&quot; $ do
    it &quot;returns all possible parses of number words&quot; $ do
      let (result, _) = parseNumberWord 1234
      map NonEmpty.toList result `shouldMatchList`
        [&quot;ABCD&quot;, &quot;AWD&quot;, &quot;LCD&quot;]

parseNumberWord :: Integer -&amp;gt; ([NumberWord], E.Report Expected String)
parseNumberWord = E.fullParses (E.parser grammar) . show
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that I am using a &lt;code&gt;NonEmpty&lt;/code&gt; list of &lt;code&gt;Char&lt;/code&gt; because an empty
string is not a valid solution to the &quot;number word&quot; problem. (I
covered &lt;code&gt;NonEmpty&lt;/code&gt; on &lt;a href=&quot;/blog/2015/12/07/24-days-of-hackage-2015-day-7-semigroups-nonempty-list-and-a-case-study-of-types-and-tests/&quot;&gt;day 7&lt;/a&gt;.)&lt;/p&gt;
&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;The solution is just to write a grammar that tries to pick off valid
consecutive digits to make a letter. We create a production for each
possible letter that we care about, using &lt;code&gt;numberLetterFor&lt;/code&gt;, combine
those productions with alternation using &lt;code&gt;asum&lt;/code&gt; to get a composite
production &lt;code&gt;numberLetter&lt;/code&gt;, then use that for &lt;code&gt;numberWord&lt;/code&gt; which is the
grammar.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE RecursiveDo #-}

module EarleyExample where

import qualified Text.Earley as E
import Text.Earley ((&amp;lt;?&amp;gt;))
import Control.Applicative ((&amp;lt;|&amp;gt;))
import qualified Data.Foldable as Foldable
import qualified Data.Char as Char
import qualified Data.List.NonEmpty as NonEmpty
import Data.List.NonEmpty (NonEmpty((:|)))

-- | Result wanted.
type NumberWord = NonEmpty NumberLetter

-- | &apos;A&apos; to &apos;Z&apos;.
type NumberLetter = Char

-- | What to report for something expected.
type Expected = String

grammar :: E.Grammar r (E.Prod r Expected Char NumberWord)
grammar = mdo
  numberWord &amp;lt;- E.rule $
    NonEmpty.cons &amp;lt;$&amp;gt; numberLetter &amp;lt;*&amp;gt; numberWord
    &amp;lt;|&amp;gt; (:| []) &amp;lt;$&amp;gt; numberLetter
  return numberWord

numberLetter :: E.Prod r Expected Char NumberLetter
numberLetter = (Foldable.asum . map numberLetterFor) [&apos;A&apos;..&apos;Z&apos;] &amp;lt;?&amp;gt; &quot;number&quot;

-- | Return a production for a given letter.
--
-- 1 is &apos;A&apos;, 2 is &apos;B&apos;, .. 26 is &apos;Z&apos;.
numberLetterFor :: NumberLetter -&amp;gt; E.Prod r Expected Char NumberLetter
numberLetterFor c = c &amp;lt;$ E.word (show (toNumber c)) &amp;lt;?&amp;gt; [c]

-- | &apos;A&apos; is 1, ... &apos;Z&apos; is 26
toNumber :: NumberLetter -&amp;gt; Int
toNumber c = (Char.ord c - Char.ord &apos;A&apos;) + 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I only recently discovered the &lt;code&gt;Earley&lt;/code&gt; parser library and started
using it. I&apos;m pretty excited by its friendliness.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 13: hint: runtime eval for Haskell</title><link>https://franklinchen.com/blog/2015/12/13/24-days-of-hackage-2015-day-13-hint-runtime-eval-for-haskell/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/13/24-days-of-hackage-2015-day-13-hint-runtime-eval-for-haskell/</guid><pubDate>Sun, 13 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 13&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3wp27i/24_days_of_hackage_2015_day_13_hint_runtime_eval/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;One hallmark of a &quot;dynamic language&quot; such as Lisp and JavaScript is
the ability to evaluate code at runtime inside a running
process. Since runtime loading of classes is a fundamental feature of
Java, is Java a &quot;dynamic language&quot; then? I think the terms &quot;static
language&quot; and &quot;dynamic language&quot; are not very useful terms, and a
comparison of language and compiler and development environments
should focus on specific features of the user experience and where the
boundaries lie in the semantics. One tricky thing is that a lot of
what is interesting is actually implementation-dependent.&lt;/p&gt;
&lt;p&gt;For example, the Haskell standard says nothing about runtime &lt;code&gt;eval&lt;/code&gt;,
so there is some sense in which Haskell considered as a strictly
defined &quot;language&quot; has no support for it. But if we consider the GHC
implementation and its ecosystem, which is dominant today despite the
existence of other Haskell implementations, there&apos;s a lot of tooling
that is &quot;dynamic&quot;, in the sense of being able to access GHC APIs in
one of many different ways.&lt;/p&gt;
&lt;p&gt;Edward Yang recently wrote an interesting blog post
&lt;a href=&quot;http://blog.ezyang.com/2015/12/the-convergence-of-compilers-build-systems-and-package-managers/&quot;&gt;&quot;The convergence of compilers, build systems and package managers&quot;&lt;/a&gt;
on a subset of the general issue of what can access what for the sake
of tooling. It didn&apos;t touch on runtime evaluation, which is an entire
topic in itself.&lt;/p&gt;
&lt;p&gt;For today, I decided to mention that you can already do runtime eval
of GHC Haskell code using the package
&lt;a href=&quot;https://hackage.haskell.org/package/hint&quot;&gt;&lt;code&gt;hint&lt;/code&gt;&lt;/a&gt; and offer the
thought that maybe we might want something less ad hoc than
third-party packages like this.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why dynamic loading and evaluation of Haskell code?&lt;/h2&gt;
&lt;p&gt;For me, it always comes down to being jealous of the Lisp world.&lt;/p&gt;
&lt;p&gt;There are times when I have wanted to be able to do dynamic loading
and evaluation of Haskell code, and wished I were in Lisp. The main
example is when supporting user-written &quot;plugins&quot; that can be loaded
from a source file or even typed at a custom REPL. The cleanest way of
doing such a thing is to create and implement a limited
domain-specific language and write a parser, type checker (if the DSL
is typed), compiler/interpreter for it. But why do all that if we can
just allow using the full power of Haskell instead?&lt;/p&gt;
&lt;p&gt;Luckily, I found libraries such as &lt;code&gt;hint&lt;/code&gt; that enabled me to do what I
wanted. I&apos;ll show a toy example of the kind of thing that I have done.&lt;/p&gt;
&lt;h2&gt;The task&lt;/h2&gt;
&lt;p&gt;Imagine a program that does sorting, and allows the user at runtime to
submit a custom sorting function to have it be used in place of the
default options. For example, the user could have specified the path
of a Haskell source file &lt;code&gt;OurSorter.hs&lt;/code&gt; as a command-line argument, or
the program could have a preferences dialog box allowing the user to
enter the text of a sorting function.&lt;/p&gt;
&lt;p&gt;To make things even more interesting, let&apos;s say that the sorting
function to be specified has to be polymorphic, constrained only to
require comparison:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;userDefinedSort :: Ord a =&amp;gt; [a] -&amp;gt; [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;How do we load this type of function at runtime?&lt;/p&gt;
&lt;h2&gt;A necessary type wrapper&lt;/h2&gt;
&lt;p&gt;The first thing to get out of the way is that we cannot load a
function of type &lt;code&gt;Ord a =&amp;gt; [a] -&amp;gt; [a]&lt;/code&gt; directly, because of lack of
current GHC support for
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jozefg.bitbucket.org/posts/2014-12-23-impredicative.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jozefg.bitbucket.org/posts/2014-12-23-impredicative.html&quot;&amp;gt;impredicate types&amp;lt;/span&amp;gt;. However,
there is a trick we can play, which is to wrap such a type in a
&lt;code&gt;newtype&lt;/code&gt;, along with using the higher-rank type language feature. I
learned this trick from this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jozefg.bitbucket.org/posts/2014-12-23-impredicative.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jozefg.bitbucket.org/posts/2014-12-23-impredicative.html&quot;&amp;gt;article on impredicative types&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE RankNTypes #-}

module SortWrapper (Sort(..)) where

newtype Sort =
  Sort { getSort :: forall a. Ord a =&amp;gt; [a] -&amp;gt; [a] }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we can try to load values of type &lt;code&gt;Sort&lt;/code&gt; instead of type &lt;code&gt;Ord a =&amp;gt; [a] -&amp;gt; [a]&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;How to load?&lt;/h2&gt;
&lt;p&gt;Let&apos;s create an API called &lt;code&gt;loadSort&lt;/code&gt; that enables loading a
particular &lt;code&gt;Sort&lt;/code&gt; by looking for it by module and name. Here&apos;s an
HSpec test that illustrates that we want to be able to load a &lt;code&gt;Sort&lt;/code&gt;
and use it on different types of lists. We&apos;re using
&lt;code&gt;Language.Haskell.Interpreter&lt;/code&gt; to do the work:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module HintExampleSpec where

import SortWrapper (Sort(Sort))
import HintExample (loadSort)

import qualified Language.Haskell.Interpreter as I

import Test.Hspec (Spec, hspec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)

spec :: Spec
spec =
  describe &quot;hint&quot; $ do
    it &quot;dynamically loads a correct polymorphic sort function&quot; $ do
      Right (Sort ourSort) &amp;lt;-
        I.runInterpreter (loadSort &quot;OurSorter&quot; &quot;ourSort&quot;)
      ourSort &quot;ebcad&quot; `shouldBe` &quot;abcde&quot;
      ourSort [1 :: Int, 5, 4, 3, 7] `shouldBe` [1, 3, 4, 5, 7]
    it &quot;dynamically loads a wrong (only head) sort function&quot; $ do
      Right (Sort onlyHead) &amp;lt;-
        I.runInterpreter (loadSort &quot;OurSorter&quot; &quot;onlyHead&quot;)
      onlyHead &quot;ebcad&quot; `shouldBe` &quot;e&quot;
      onlyHead [True, False] `shouldBe` [True]

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;A sample &quot;plugin&quot;&lt;/h2&gt;
&lt;p&gt;We created a sample &quot;plugin&quot; in a directory whose source code is &lt;em&gt;not&lt;/em&gt; compiled
into our main program. Imagine that the user has a separate plugins directory.&lt;/p&gt;
&lt;h2&gt;The loader&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;module HintExample where

import SortWrapper (Sort)
import qualified Language.Haskell.Interpreter as I
import Language.Haskell.Interpreter (OptionVal((:=)))

-- | Dynamically load a &apos;Sort&apos; implementation from a file.
-- src is needed to pick up our SortWrapper.
-- sort-plugins is a sample user plugins directory
loadSort :: I.MonadInterpreter m =&amp;gt;
            String  -- ^ module name
         -&amp;gt; String  -- ^ function name
         -&amp;gt; m Sort
loadSort moduleName functionName = do
  I.set [I.searchPath := [&quot;src&quot;, &quot;sort-plugins&quot;]]
  I.loadModules [moduleName]
  I.setImports [moduleName, &quot;SortWrapper&quot;]
  I.interpret (moduleName ++ &quot;.&quot; ++ functionName) (I.as :: Sort)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The most interesting part is the use of the &lt;code&gt;interpret&lt;/code&gt; function that
has type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;interpret :: (MonadInterpreter m, Typeable a) =&amp;gt; String -&amp;gt; a -&amp;gt; m a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;taking a string and a witness for a monomorphic type in order to tell
&lt;code&gt;interpret&lt;/code&gt; what runtime dictionary for &lt;code&gt;Typeable&lt;/code&gt; to use (the modern
standard way for the library to have done this would have been to use
a
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Proxy.html&quot;&gt;&lt;code&gt;Proxy&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;So there we have it: runtime eval in GHC Haskell. What &lt;code&gt;hint&lt;/code&gt; provides
is fairly primitive, but I found it useful.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;d like to see more official support for dynamism in environments for
languages such as Haskell. This does require access to compiler
internals or official APIs, but I think this is the way to
go. Principled phase separations are important but so is
integration. I like that &lt;code&gt;hint&lt;/code&gt; exists to allow me to dynamically load
GHC Haskell code.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 12: json-autotype: inferring types from data</title><link>https://franklinchen.com/blog/2015/12/12/24-days-of-hackage-2015-day-12-json-autotype-inferring-types-from-data/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/12/24-days-of-hackage-2015-day-12-json-autotype-inferring-types-from-data/</guid><pubDate>Sat, 12 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 12&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3wk5h9/24_days_of_hackage_2015_day_12_jsonautotype/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Today we revisit a problem from
&lt;a href=&quot;/blog/2015/12/04/24-days-of-hackage-2015-day-4-wreq-web-client-programming-with-notes-on-lens-and-operator-syntax/&quot;&gt;day 4&lt;/a&gt;,
in which we grabbed JSON off the Web in order to extract information
about it. I mentioned then that we were using an untyped
representation for JSON. Ideally, if it&apos;s not too onerous, we want to
use a typed representation for our data, to avoid common errors such
as trying to access a nonexistent field. The Aeson library allows us
to write our own data types and convert them from and to JSON. If we
were in charge of the data and data format, then this would be the way
to go.&lt;/p&gt;
&lt;p&gt;But what if, for whatever reason, we do not already have a typed data
model, but are consuming, for example, JSON from a source that has not
given us a spec of the data types, maybe with JSON Schema? Then we
have to reverse-engineer the data types, possibly from an informal text
spec of the format (which is a real pain).&lt;/p&gt;
&lt;p&gt;Or we could take a lazy way out, and &lt;em&gt;infer&lt;/em&gt; plausible types from a
corpus of representative data. This is what the useful
&lt;a href=&quot;https://hackage.haskell.org/package/json-autotype&quot;&gt;&lt;code&gt;json-autotype&lt;/code&gt;&lt;/a&gt;
package does (&lt;a href=&quot;https://github.com/mgajda/json-autotype&quot;&gt;documentation on the GitHub repo page&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Video (update of 2016-01-08)&lt;/h2&gt;
&lt;p&gt;It just came to my attention that there is a video on &lt;code&gt;json-autotype&lt;/code&gt; that may be of interest:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/8D2-m2ikydc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Generating a module of types from JSON data&lt;/h2&gt;
&lt;p&gt;I saved off a sample JSON document,
&lt;code&gt;pittsburgh-code-and-supply-events.json&lt;/code&gt; from a query of the Meetup
events API.&lt;/p&gt;
&lt;p&gt;The easiest way to use &lt;code&gt;json-autotype&lt;/code&gt; is to use its command line
tool, installing it globally first.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack install json-autotype
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For our quick example, I just manually generated Haskell source code
(ideally we should integrate this process into a fully automated
build):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ json-autotype pittsburgh-code-and-supply-events.json -o
MeetupEventsJSON.hs
$ mkdir generated-src
$ mv MeetupEventsJSon.hs generated-src/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that although for this example, we only ran the inference on a
single document, running it on more documents may give more precise
types.&lt;/p&gt;
&lt;h3&gt;A quick look at the generated code&lt;/h3&gt;
&lt;p&gt;Here is a sample of what was generated (reformatted and edited for clarity):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE TypeOperators #-}

import Data.Aeson.AutoType.Alternative ((:|:))

data TopLevel = TopLevel {
    topLevelResults :: [ResultsElt],
    topLevelMeta :: Meta
  } deriving (Show,Eq,Generic)

data ResultsElt = ResultsElt {
    resultsEltStatus :: Text,
    resultsEltGroup :: Group,
    resultsEltTime :: Int,
    resultsEltWaitlistCount :: Int,
    resultsEltVenue :: (Maybe (Venue:|:[(Maybe Value)])),
    resultsEltCreated :: Int,
    resultsEltUtcOffset :: Int,
    resultsEltEventUrl :: Text,
    resultsEltYesRsvpCount :: Int,
    resultsEltHeadcount :: Int,
    resultsEltFee :: (Maybe (Fee:|:[(Maybe Value)])),
    resultsEltVisibility :: Text,
    resultsEltMaybeRsvpCount :: Int,
    resultsEltName :: Text,
    resultsEltId :: Text,
    resultsEltRsvpLimit :: (Maybe (Int:|:[(Maybe Value)])),
    resultsEltUpdated :: Int,
    resultsEltDuration :: (Maybe (Int:|:[(Maybe Value)])),
    resultsEltDescription :: (Maybe (Text:|:[(Maybe Value)]))
  } deriving (Show,Eq,Generic)

instance FromJSON ResultsElt where
  parseJSON (Object v) = ResultsElt
    &amp;lt;$&amp;gt; v .:   &quot;status&quot;
    &amp;lt;*&amp;gt; v .:   &quot;group&quot;
    &amp;lt;*&amp;gt; v .:   &quot;time&quot;
    &amp;lt;*&amp;gt; v .:   &quot;waitlist_count&quot;
    &amp;lt;*&amp;gt; v .:?? &quot;venue&quot;
    &amp;lt;*&amp;gt; v .:   &quot;created&quot;
    &amp;lt;*&amp;gt; v .:   &quot;utc_offset&quot;
    &amp;lt;*&amp;gt; v .:   &quot;event_url&quot;
    &amp;lt;*&amp;gt; v .:   &quot;yes_rsvp_count&quot;
    &amp;lt;*&amp;gt; v .:   &quot;headcount&quot;
    &amp;lt;*&amp;gt; v .:?? &quot;fee&quot;
    &amp;lt;*&amp;gt; v .:   &quot;visibility&quot;
    &amp;lt;*&amp;gt; v .:   &quot;maybe_rsvp_count&quot;
    &amp;lt;*&amp;gt; v .:   &quot;name&quot;
    &amp;lt;*&amp;gt; v .:   &quot;id&quot;
    &amp;lt;*&amp;gt; v .:?? &quot;rsvp_limit&quot;
    &amp;lt;*&amp;gt; v .:   &quot;updated&quot;
    &amp;lt;*&amp;gt; v .:?? &quot;duration&quot;
    &amp;lt;*&amp;gt; v .:?? &quot;description&quot;
  parseJSON _          = mzero

data Venue = Venue {
    venueRepinned :: Bool,
    venueState :: Text,
    venueCountry :: Text,
    venueZip :: (Maybe (Text:|:[(Maybe Value)])),
    venueLat :: Int,
    venueName :: Text,
    venueCity :: Text,
    venueId :: Int,
    venueLon :: Int,
    venueAddress1 :: Text
  } deriving (Show,Eq,Generic)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isn&apos;t this much better than inferring and writing the boilerplate
manually? Now we can parse raw JSON directly into our set of types.&lt;/p&gt;
&lt;p&gt;The funny &lt;code&gt;:|:&lt;/code&gt; operator is an &lt;code&gt;Either&lt;/code&gt;-like type constructor used to
deal with the fact that when a field is missing from some data
examples, we cannot infer whether it could potentially be a complex
object that we just don&apos;t know about from our corpus of examples.&lt;/p&gt;
&lt;h2&gt;Using the generated types&lt;/h2&gt;
&lt;p&gt;Imports:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}

module JSONAutoTypeExample where

-- Reuse what we did earlier.
import WreqExample (EventInfo(..), GroupId, getMeetupEventsJSONBytes)

-- Module automatically generated using json-autotype.
import qualified MeetupEventsJSON as Meetup
import qualified Data.Aeson as Aeson
import Control.Arrow ((&amp;gt;&amp;gt;&amp;gt;))
import Data.Aeson.AutoType.Alternative ((:|:)(AltLeft, AltRight))
import qualified Data.Text as Text
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Our replacement for the old &lt;code&gt;getMeetupEventInfos&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getMeetupEventInfos :: GroupId -&amp;gt; IO (Either String [EventInfo])
getMeetupEventInfos groupId =
  getMeetupEventsJSONBytes groupId
  &amp;gt;&amp;gt;= (Aeson.eitherDecode
       &amp;gt;&amp;gt;&amp;gt; fmap extractEventInfos
       &amp;gt;&amp;gt;&amp;gt; return
      )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note already the differences from before. We are now using
&lt;code&gt;Aeson.eitherDecode&lt;/code&gt; to turn JSON bytes into a full-fledged
&lt;code&gt;Meetup.TopLevel&lt;/code&gt; typed data object, and therefore can detect up front
whether the JSON we got was valid (in the sense of, conforms to our
prior inferred types).&lt;/p&gt;
&lt;p&gt;Extracting events:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extractEventInfos :: Meetup.TopLevel -&amp;gt; [EventInfo]
extractEventInfos =
  Meetup.topLevelResults
  &amp;gt;&amp;gt;&amp;gt; map extractEventInfo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is also different from before, in that we are not just using
hardcoded string keys to hopefully find what we want in the JSON
result. We have a &lt;code&gt;Meetup.TopLevel&lt;/code&gt; object and just use ordinary typed
record access to dive into the data.&lt;/p&gt;
&lt;p&gt;Extracting information from a single event:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extractEventInfo :: Meetup.ResultsElt -&amp;gt; EventInfo
extractEventInfo event =
  EventInfo { eventName = Meetup.resultsEltName event
            , venueName = extractVenueName (Meetup.resultsEltVenue event)
            }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, we just use the typed record fields from &lt;code&gt;Meetup.ResultsElt&lt;/code&gt;,
instead of string keys into an object.&lt;/p&gt;
&lt;p&gt;Finally, bottoming out as we try to get a venue name from the venue
object of an event:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Trickier because json-autotype apparently found events without a venue.
extractVenueName :: Maybe (Meetup.Venue :|: [Maybe Aeson.Value]) -&amp;gt; Text.Text
extractVenueName Nothing = &quot;&quot;
extractVenueName (Just (AltLeft venue)) = Meetup.venueName venue
extractVenueName (Just (AltRight jsonValues)) =
  Text.pack (&quot;(unexpected JSON venue: &quot; ++ show jsonValues ++ &quot;)&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here we recognize that maybe there is no venue, or the &lt;code&gt;venue&lt;/code&gt; JSON
field is not actually a &lt;code&gt;Venue&lt;/code&gt;. In practice, recognizing this fact
might result in changing our &lt;code&gt;EventInfo&lt;/code&gt; type so that it doesn&apos;t
assume a &lt;code&gt;Text&lt;/code&gt; as its &lt;code&gt;venueName&lt;/code&gt;, but for here, for now, we just
stay in the stringly-typed world and try to make to with return a
useful string in all cases.&lt;/p&gt;
&lt;p&gt;But you see how having typed JSON can drive rethinking of our original
assumptions leading to our definition of &lt;code&gt;EventInfo&lt;/code&gt; and maybe improve
our design. The cool thing about &lt;code&gt;json-autotype&lt;/code&gt; is that you can make
use it without having to write the JSON types by hand.&lt;/p&gt;
&lt;h2&gt;Type providers&lt;/h2&gt;
&lt;p&gt;The F# language includes support for
&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/hh156509.aspx&quot;&gt;type providers&lt;/a&gt;,
which are ways to get types from somewhere without having to write
them yourself. This is a really cool feature I&apos;d like to see put into
more typed language ecosystems. For example, there is a library for
&lt;a href=&quot;https://github.com/david-christiansen/idris-type-providers&quot;&gt;type providers for Idris&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not aware of how much work there has been on a type provider
ecosystem for Haskell, but I imagine that you could use Template
Haskell, for example, to automate some of what we did here with
&lt;code&gt;json-autotype&lt;/code&gt;, as a crude form of type provider.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;json-autotype&lt;/code&gt; is a nice library that helps in making sense of
JSON that comes your way but without an associated set of types
already written for you. It infers types and writes out a Haskell
module for you.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 11: monad-loops: avoiding writing recursive functions by refactoring</title><link>https://franklinchen.com/blog/2015/12/11/24-days-of-hackage-2015-day-11-monad-loops-avoiding-writing-recursive-functions-by-refactoring/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/11/24-days-of-hackage-2015-day-11-monad-loops-avoiding-writing-recursive-functions-by-refactoring/</guid><pubDate>Fri, 11 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 11&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3wev5a/24_days_of_hackage_2015_day_11_monadloops/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I often dislike writing recursive functions. Recursion is a form of
&lt;code&gt;goto&lt;/code&gt; and therefore recursion is, conceptually, the assembly
language low-level infrastructure of functional programming, a
fundamental building block but not necessarily something I want to see
every day.&lt;/p&gt;
&lt;p&gt;An analogy: imperative programming in the 1960s was altered
significantly when brand new control structures such as &lt;code&gt;for&lt;/code&gt; and
&lt;code&gt;while&lt;/code&gt; loops changed the face of imperative programming by removing
the boilerplate of using the low-level &lt;code&gt;goto&lt;/code&gt; everywhere; &lt;code&gt;for&lt;/code&gt; and
&lt;code&gt;while&lt;/code&gt; are the higher-order control structures of imperative programming.&lt;/p&gt;
&lt;p&gt;In functional programming, recursion boilerplate is avoided through
writing and using higher-order functions such as &lt;code&gt;map&lt;/code&gt;,&lt;code&gt;filter&lt;/code&gt;,
&lt;code&gt;foldr&lt;/code&gt;, and &lt;code&gt;traverse&lt;/code&gt;. The cool thing is that in functional
programming, these are ordinary user-space functions, whereas in
imperative programming, the control structures are built into the
language and it&apos;s typically not so easy to invent your own.&lt;/p&gt;
&lt;p&gt;Why would you want to define control structures yourself? I&apos;ll show
examples and a useful little library
&lt;a href=&quot;https://hackage.haskell.org/package/monad-loops&quot;&gt;&lt;code&gt;monad-loops&lt;/code&gt;&lt;/a&gt; that
you can use in order to avoid reinventing the wheel.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;A sample task&lt;/h2&gt;
&lt;p&gt;Let&apos;s write a function to simulate a user login process, in which&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the user is prompted to enter a password&lt;/li&gt;
&lt;li&gt;a loop is entered in which
&lt;ul&gt;
&lt;li&gt;a guess is read in&lt;/li&gt;
&lt;li&gt;if it is not correct, we prompt again and loop&lt;/li&gt;
&lt;li&gt;if it is correct, we exit the loop&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;we print congratulations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a literal translation of the pseudocode into Haskell using
recursion for the loop:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;logIn :: IO ()
logIn = do
  putStrLn &quot;% Enter password:&quot;
  go
  putStrLn &quot;$ Congratulations!&quot;

  where
    -- Use recursion for loop
    go = do
      guess &amp;lt;- getLine
      if guess /= &quot;secret&quot;
        then do
          putStrLn &quot;% Wrong password!&quot;
          putStrLn &quot;% Try again:&quot;
          go
        else
          return ()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do you like this code? Me, I&apos;m annoyed by having to write that
&quot;helper&quot; recursive function just to write a loop.&lt;/p&gt;
&lt;h3&gt;Comparision with typical imperative style&lt;/h3&gt;
&lt;p&gt;Compare with typical Python code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def log_in():
  print &quot;% Enter password:&quot;
  while raw_input() != &apos;secret&apos;:
    print &quot;% Wrong password!&quot;
    print &quot;% Try again:&quot;
  print &quot;% Congratulations!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There&apos;s a reason
&lt;a href=&quot;https://en.wikipedia.org/wiki/While_loop&quot;&gt;&lt;code&gt;while&lt;/code&gt; loops&lt;/a&gt; were
invented in the 1960s for imperative programming. It was to improve
the expression of &lt;em&gt;control flow patterns&lt;/em&gt; of this form. It would be
backwards to return to programming entirely in &lt;code&gt;goto&lt;/code&gt; style. (However,
this does &lt;em&gt;not&lt;/em&gt; mean &lt;code&gt;goto&lt;/code&gt; and recursion are bad. Knuth famously
wrote an
&lt;a href=&quot;http://c2.com/cgi/wiki?StructuredProgrammingWithGoToStatements&quot;&gt;article in 1974&lt;/a&gt;
defending the careful use of &lt;code&gt;goto&lt;/code&gt; against what he correctly noted
was dogma that went to far against &lt;code&gt;goto&lt;/code&gt;. The same could be said
against any anti-recursion dogma.)&lt;/p&gt;
&lt;p&gt;When I teach Haskell, I get embarrassed when people wonder what&apos;s so
&quot;wrong&quot; about Haskell that you can&apos;t write straightforward code like
the Python code above, but have to pull out the recursion thing just
to do something simple. The dilemma I face when teaching is that the
thought in my mind is, &quot;But, but, we can have loops too, they&apos;re just
not built into the language and you can even write your own using
higher-order functions!&quot; while I know that many are thinking &quot;What a
crappy ivory-tower impractical academic language, it doesn&apos;t even have
while loops&quot;, and meanwhile I also know that you can&apos;t just jump into
higher-order functions in the first hour.&lt;/p&gt;
&lt;h3&gt;Making your own loop&lt;/h3&gt;
&lt;p&gt;The central mindset of functional programming is that if you see
boilerplate, a pattern, then it might be worthwhile to refactor into
two components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the abstract structure of the pattern&lt;/li&gt;
&lt;li&gt;the concrete instance of the problem&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;monad-loops&lt;/code&gt; provides a bunch of useful combinators capturing
common control flow patterns. For example, we can use the function
&lt;code&gt;whileM_&lt;/code&gt; for our problem:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Control.Monad.Loops (whileM_)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The type of &lt;code&gt;whileM&lt;/code&gt; is&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;whileM_ :: Monad m =&amp;gt; m Bool -&amp;gt; m a -&amp;gt; m ()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It takes a &quot;condition&quot; that evaluates a &lt;code&gt;Bool&lt;/code&gt; (in a monadic context
&lt;code&gt;m&lt;/code&gt;), along with an arbitrary monadic &quot;body&quot; action to perform, to
return a &quot;loop&quot; (the monadic action that returns unit) which keeps
testing the condition and performing the body.&lt;/p&gt;
&lt;p&gt;Our code rewritten:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | No explicit recursion
logIn2 :: IO ()
logIn2 = do
  putStrLn &quot;% Enter password:&quot;
  whileM_ (do
             guess &amp;lt;- getLine
             return (guess /= &quot;secret&quot;)
          ) (do
               putStrLn &quot;% Wrong password!&quot;
               putStrLn &quot;% Try again:&quot;
            )
  putStrLn &quot;$ Congratulations!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This looks better than the explicit recursion, except for the clumsy
syntax because our loop &quot;condition&quot; and &quot;body&quot; are just ordinary
expressions and therefore need to be parenthesized to be passed into
the &lt;code&gt;whileM_&lt;/code&gt; function.&lt;/p&gt;
&lt;p&gt;Note that the
&lt;a href=&quot;https://hackage.haskell.org/package/monad-loops-0.4.3/docs/src/Control-Monad-Loops.html#whileM_&quot;&gt;implementation of &lt;code&gt;whileM&lt;/code&gt;&lt;/a&gt;
is just ordinary Haskell code that abstracts exactly from the
structure of our original code, by pulling out the condition and
body. Functional programming is all about &lt;a href=&quot;http://refactoring.com/catalog/extractMethod.html&quot;&gt;&quot;extract method&quot;&lt;/a&gt;!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;whileM_ :: (Monad m) =&amp;gt; m Bool -&amp;gt; m a -&amp;gt; m ()
whileM_ p f = go
    where go = do
            x &amp;lt;- p
            if x
                then f &amp;gt;&amp;gt; go
                else return ()
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Improving the syntax&lt;/h4&gt;
&lt;p&gt;I&apos;ve warned in earlier posts against getting too clever with syntax,
so I deliberately presented &quot;normal&quot; syntax above for calling the
&lt;code&gt;whileM_&lt;/code&gt; function, to show that it really is normal code, nothing
magical. But for those of you who are not already deeply embedded in
Haskell shortcut idioms, below are some rewrites into &quot;fancier&quot;
syntax, but &lt;em&gt;do exactly the same thing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The first step to avoid a lot of parenthesizing of expressions is to
use the &lt;code&gt;$&lt;/code&gt; function application operator, a trick to enable removing
the parentheses of the final expression (the one serving as loop
&quot;body&quot;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | With $ syntax.
logIn3 :: IO ()
logIn3 = do
  putStrLn &quot;% Enter password:&quot;
  whileM_ (do
             guess &amp;lt;- getLine
             return (guess /= &quot;secret&quot;)
          ) $ do
    putStrLn &quot;% Wrong password!&quot;
    putStrLn &quot;% Try again:&quot;
  putStrLn &quot;$ Congratulations!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another step is to use some lifting of operations into the monad using
&lt;code&gt;liftM&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Control.Monad (liftM)

-- | With lifting.
logIn4 :: IO ()
logIn4 = do
  putStrLn &quot;% Enter password:&quot;
  whileM_ (liftM (\guess -&amp;gt; guess /= &quot;secret&quot;) getLine) $ do
    putStrLn &quot;% Wrong password!&quot;
    putStrLn &quot;% Try again:&quot;
  putStrLn &quot;$ Congratulations!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The cost is that you have to understand lifting and the
&lt;code&gt;$&lt;/code&gt; operator.&lt;/p&gt;
&lt;p&gt;If you&apos;re willing to pay another cost, that of using operator
sectioning and the symbolic &lt;code&gt;fmap&lt;/code&gt; operator &lt;code&gt;&amp;lt;$&amp;gt;&lt;/code&gt;, here&apos;s a final
version:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | With operator sectioning and &amp;lt;$&amp;gt;.
logIn5 :: IO ()
logIn5 = do
  putStrLn &quot;% Enter password:&quot;
  whileM_ ((/= &quot;secret&quot;) &amp;lt;$&amp;gt; getLine) $ do
    putStrLn &quot;% Wrong password!&quot;
    putStrLn &quot;% Try again:&quot;
  putStrLn &quot;$ Congratulations!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This looks a lot like the Python code, except it is full of syntax
that is completely mysterious to a newcomer to Haskell.&lt;/p&gt;
&lt;h2&gt;Another task: reading and collecting lines&lt;/h2&gt;
&lt;p&gt;One last example of refactoring away recursion:&lt;/p&gt;
&lt;p&gt;Suppose you want to write an &lt;code&gt;IO&lt;/code&gt; action for a console application
that reads lines from user input until encountering &quot;quit&quot;, and you
want to collect all these lines (but not &quot;quit&quot;) into a list:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;readLinesUntilQuit :: IO [String]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&apos;s a sample interactive session:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; readLinesUntilQuit
hello
lovely
world!
quit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Result:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[&quot;hello&quot;,&quot;lovely&quot;,&quot;world!&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&apos;s a straightforward implementation, using recursion.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;readLinesUntilQuit :: IO [String]
readLinesUntilQuit = do
  line &amp;lt;- getLine
  if line /= &quot;quit&quot;
    then do
      -- recursive call, to loop
      restOfLines &amp;lt;- readLinesUntilQuit
      return (line : restOfLines)
    else return []
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is not unreadable, but there is definitely a lot of boilerplate
going on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a condition&lt;/li&gt;
&lt;li&gt;recursion&lt;/li&gt;
&lt;li&gt;collection stuff into a list&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Refactoring recursion away&lt;/h3&gt;
&lt;p&gt;We&apos;ll use &lt;code&gt;unfoldM&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;unfoldM :: Monad m =&amp;gt; m (Maybe a) -&amp;gt; m [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All the work is in the argument, which we extract into its own
definition:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | No explicit recursion.
readLinesUntilQuit2 :: IO [String]
readLinesUntilQuit2 = unfoldM maybeReadLine

-- | Read a single line and check whether it&apos;s &quot;quit&quot;.
maybeReadLine :: IO (Maybe String)
maybeReadLine = do
  line &amp;lt;- getLine
  return (if line /= &quot;quit&quot;
          then Just line
          else Nothing)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can go further in this refactoring, because &lt;code&gt;maybeReadLine&lt;/code&gt;
intermingles both &lt;code&gt;IO&lt;/code&gt; and a pure conditional check of the input
line. &lt;strong&gt;Parenthesized expressions are often a code smell suggesting a
refactoring opportunity.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;readLinesUntilQuit3 :: IO [String]
readLinesUntilQuit3 = unfoldM (notQuit &amp;lt;$&amp;gt; getLine)

notQuit :: String -&amp;gt; Maybe String
notQuit line =
  if line /= &quot;quit&quot;
    then Just line
    else Nothing
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I like this last version because it decouples the loop, the condition,
and the fundamental IO action bringing in more information to use.&lt;/p&gt;
&lt;h2&gt;A note on testing&lt;/h2&gt;
&lt;p&gt;If you&apos;ve been following this entire Days of Hackage article series,
you may be wondering why I didn&apos;t provide HSpec tests and walk through
in test-driven development style. The reason is that I didn&apos;t want to
get into how one would &quot;mock out&quot; IO in order to write tests that
simulate user activity.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I gave two example refactorings of code to avoid explicit recursion in
favor of using combinators from &lt;code&gt;monad-loops&lt;/code&gt;. I hope the exploration
of refactoring as well as of syntax is useful to those not already
familiar with these techniques and idioms. Check out the whole library
for more combinators you can use.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 10: s-cargot: using S-expression syntax</title><link>https://franklinchen.com/blog/2015/12/10/24-days-of-hackage-2015-day-10-s-cargot-using-s-expression-syntax/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/10/24-days-of-hackage-2015-day-10-s-cargot-using-s-expression-syntax/</guid><pubDate>Thu, 10 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 10&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3w83i2/24_days_of_hackage_2015_day_10_scargot_using/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;There are times when I&apos;m jealous of the Lisp world.&lt;/p&gt;
&lt;p&gt;One of those times is when defining some domain-specific language,
because in the Lisp world, the natural thing to do is to represent it
using S-expressions as the concrete syntax, and not fuss with defining
yet another special syntax, along with writing a parser for that
syntax into the abstract syntax as well as a pretty-printer from the
abstract syntax back to the concrete syntax. Maybe in the long run
users might want a special syntax that is not just S-expressions, but
for quick initial prototyping, at least, it seems worthwhile to not
commit to any special syntax and just use S-expressions. Although
there is nothing magical about S-expressions (or XML or JSON or any
other generic representation of a tree data structure), they are
particularly concise and flexible.&lt;/p&gt;
&lt;p&gt;S-expressions are so useful that in my first job as a software
engineer in the 1990s, we actually had a C++ S-expression library for
input and output of a format that amounted to a domain-specific
language (this was before XML was invented) that was processed by many
tools (including a validator that I wrote in Standard ML).&lt;/p&gt;
&lt;p&gt;A library on Hackage for working with S-expressions in Haskell is
&lt;a href=&quot;https://hackage.haskell.org/package/s-cargot&quot;&gt;&lt;code&gt;s-cargot&lt;/code&gt;&lt;/a&gt;. There have
been many others, but most of them have gone sadly unmaintained,
whereas this one is new and comes with bells and whistles.&lt;/p&gt;
&lt;p&gt;Today I&apos;ll give an example of how to use this library, in the context
of a problem domain in which having a concrete syntax is important.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;We need to add &lt;code&gt;s-cargot&lt;/code&gt; to &lt;code&gt;stack.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- s-cargot-0.1.0.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The task: symbolic differentiation&lt;/h2&gt;
&lt;p&gt;The task we solve here is, appropriately enough, a translation from the Lisp
(Scheme, to be precise) code for a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-16.html#%_sec_2.3.2&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-16.html#%_sec_2.3.2&quot;&amp;gt;symbolic differentiator of mathematical expressions&amp;lt;/span&amp;gt; in the classic computer science textbook
&lt;a href=&quot;https://web.archive.org/web/20171226134539/https://mitpress.mit.edu/sicp/&quot;&gt;&quot;Structure and Interpretation of Computer Programs&quot;&lt;/a&gt;. I
won&apos;t be walking through the solution here, but just focusing on some
syntax issues.&lt;/p&gt;
&lt;p&gt;Example: given a mathematical expression such as the linear function
&lt;code&gt;5x + 7&lt;/code&gt;, we want to find the symbolic derivative with respect to &lt;code&gt;x&lt;/code&gt;,
to get &lt;code&gt;5&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Simplest syntax for the expression type&lt;/h2&gt;
&lt;p&gt;How do we model an expression and a function to compute a derivative
of an expression? Let&apos;s start with the most vanilla possible way,
which is to define a data type for expression, &lt;code&gt;Exp&lt;/code&gt;, along with
ordinary alphanumeric constructors &lt;code&gt;N&lt;/code&gt; (for number), &lt;code&gt;V&lt;/code&gt; (for
variable), &lt;code&gt;Plus&lt;/code&gt; (for sum of subexpressions), &lt;code&gt;Times&lt;/code&gt; (for product of
subexpressions). A sample subset of an appropriate HSpec/QuickCheck
spec to define what we need:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module SymbolicDifferentiation.AlphaSyntaxSpec where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times), deriv)

import Test.Hspec (Spec, hspec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck ((==&amp;gt;))

spec :: Spec
spec =
  describe &quot;symbolic differentiation&quot; $ do
    prop &quot;d/dx (x + n) == 1&quot; $ \x n -&amp;gt;
      deriv (Plus (V x) (N n)) x `shouldBe` N 1
    prop &quot;d/dx (x + y) == x, if x /= y&quot; $ \x y -&amp;gt;
      x /= y ==&amp;gt;
      deriv (Times (V x) (V y)) x `shouldBe` V y
    prop &quot;d/dx (a * x + b) == x&quot; $ \a x b -&amp;gt;
      deriv (Plus (Times (N a) (V x)) (N b)) x `shouldBe` N a
    it &quot;d/dx (x * y * (x + 3)) == (x * y) + y * (x + 3)&quot; $ do
      deriv (Times (Times (V &quot;x&quot;) (V &quot;y&quot;))
                   (Plus (V &quot;x&quot;) (N 3))) &quot;x&quot; `shouldBe`
        (Plus (Times (V &quot;x&quot;) (V &quot;y&quot;))
              (Times (V &quot;y&quot;) (Plus (V &quot;x&quot;) (N 3))))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The syntax looks OK for simple expressions, but ugly when you have
lots of nested subexpressions, with parentheses for grouping, as in
the final artificial example.&lt;/p&gt;
&lt;p&gt;Here is the code for a still-naive symbolic differentiator, having
only a few heuristics built in for some simplification through
rewriting (for example, adding &lt;code&gt;0&lt;/code&gt; to an expression results in that
expression rather than construction of a superfluous &lt;code&gt;N 0&lt;/code&gt;
subexpression):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module SymbolicDifferentiation.AlphaSyntax where

-- | Variable in an expression.
type Var = String

-- | Expression.
data Exp
  = N Int          -- ^ number
  | V Var          -- ^ variable
  | Plus Exp Exp   -- ^ sum
  | Times Exp Exp  -- ^ product
  deriving (Show, Eq)

-- | Derivative of expression with respect to a variable.
deriv :: Exp -&amp;gt; Var -&amp;gt; Exp
deriv (N _)         _ = N 0
deriv (V v&apos;)        v = N (if v&apos; == v then 1 else 0)
deriv (Plus e1 e2)  v = plus (deriv e1 v) (deriv e2 v)
deriv (Times e1 e2) v = plus (times e1 (deriv e2 v))
                             (times (deriv e1 v) e2)

-- | Smart constructor that simplifies while combining subexpressions.
plus :: Exp -&amp;gt; Exp -&amp;gt; Exp
plus (N 0)  e      = e
plus e      (N 0)  = e
plus (N n1) (N n2) = N (n1 + n2)
plus e1     e2     = Plus e1 e2

-- | Smart constructor that simplifies while combining subexpressions.
times :: Exp -&amp;gt; Exp -&amp;gt; Exp
times (N 0)  _      = N 0
times _      (N 0)  = N 0
times (N 1)  e      = e
times e      (N 1)  = e
times (N n1) (N n2) = N (n1 * n2)
times e1     e2     = Times e1 e2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The syntax of the code, using pattern matching, looks reasonably good
to me. It&apos;s the &lt;code&gt;Exp&lt;/code&gt; data construction that looks a bit ugly,
although not terrible. So we have a situation in which the implementor
of this little expression language is fairly happy, but the user is
not. In fact, we haven&apos;t even provided a way for a user outside the
system to create expressions: right now, we have an API but no parser
from a string into an expression.&lt;/p&gt;
&lt;h2&gt;Parsing from what format?&lt;/h2&gt;
&lt;p&gt;One way to go is to write a custom parser from a custom syntax, for
example maybe write a function &lt;code&gt;fromString :: String -&amp;gt; Exp&lt;/code&gt; such that&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fromString &quot;5x + 7y + 20&quot; ==
  Plus (Plus (Times (N 5) (V &quot;x&quot;))
             (Times (N 7) (V &quot;y&quot;)))
       (N 20)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We would also want to write a pretty-printer &lt;code&gt;toString :: Exp -&amp;gt; String&lt;/code&gt; such that maybe it&apos;s smart enough to go&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;toString (Plus (Plus (Times (N 5) (V &quot;x&quot;))
                     (Times (N 7) (V &quot;y&quot;)))
               (N 20)) == &quot;5x + 7y + 20&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is straightforward to write such a parser using
&lt;a href=&quot;https://hackage.haskell.org/package/parsec&quot;&gt;&lt;code&gt;parsec&lt;/code&gt;&lt;/a&gt; or the
like, but you can imagine that sometimes it might be annoying to
design the syntax for a much more complex language (including special
infix operators, precedences, scoping keywords, different kinds of
braces, etc.) and also make users learn it.&lt;/p&gt;
&lt;p&gt;So let&apos;s assume for the purpose of this article that we have a reason
to prefer prefix-only S-expressions, just as the Lisp community does
in order to avoid all the hassles of a custom syntax.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-14) Providing a custom syntax using &lt;code&gt;Earley&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;On
&lt;a href=&quot;/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/&quot;&gt;day 14&lt;/a&gt;,
I created a custom syntax and a parser using the &lt;code&gt;Earley&lt;/code&gt; parser library.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-17) Providing a custom pretty-printer using &lt;code&gt;ansi-wl-pprint&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The inverse of parsing is pretty-printing, covered on &lt;a href=&quot;/blog/2015/12/17/24-days-of-hackage-2015-day-17-ansi-wl-pprint-avoiding-string-hacking/&quot;&gt;day 17&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;QuickCheck tests&lt;/h3&gt;
&lt;p&gt;Here are some sample QuickCheck tests to show what it is we want to be
able to do. (Note that for convenience, we are using string
interpolation through the
&lt;a href=&quot;https://hackage.haskell.org/package/here&quot;&gt;&lt;code&gt;here&lt;/code&gt;&lt;/a&gt; package as
introduced yesterday,
&lt;a href=&quot;/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/&quot;&gt;day 9&lt;/a&gt;.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}

module SymbolicDifferentiation.SExpSpec where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times))
import qualified SymbolicDifferentiation.SExp as SExp

import Test.Hspec (Spec, hspec, describe, shouldBe)
import Test.Hspec.QuickCheck (prop)

import Data.String.Here (i)

-- | Required for auto-discovery.
spec :: Spec
spec =
  describe &quot;S-expression syntax for expression&quot; $ do
    prop &quot;(+ x a)&quot; $ \a -&amp;gt;
      SExp.parse [i|(+ x ${a})|] `shouldBe`
        Right (Plus (V &quot;x&quot;) (N a))

    prop &quot;(* (+ x a) (+ y b))&quot; $ \a b -&amp;gt;
      SExp.parse [i|
                     (* (+ x ${a})
                        (+ y ${b}))
                   |] `shouldBe`
        Right (Times (Plus (V &quot;x&quot;) (N a))
                     (Plus (V &quot;y&quot;) (N b)))

    it &quot;(!? x y)&quot; $
      SExp.parse &quot;(!? x y)&quot; `shouldBe`
        Left &quot;\&quot;!?\&quot; is not a valid operator&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&apos;ve included a little test to indicate that we want some kind of
error handling also. Nothing is more annoying to a user than terrible
parse error messages. We won&apos;t provide great messages here, but at
least will give an idea of how one could.&lt;/p&gt;
&lt;h2&gt;The S-expression parser&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;s-cargot&lt;/code&gt; provides very flexible ways of constructing S-expression
parsers, based on what kind of syntax you want to allow (full Scheme
or not, for example), and allows hooks on many levels to support
readers as well as specifying the desired atom parser.&lt;/p&gt;
&lt;p&gt;Some imports first:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}

module SymbolicDifferentiation.SExp where

import SymbolicDifferentiation.AlphaSyntax (Exp(N, V, Plus, Times))

import qualified Data.SCargot as S
import Data.SCargot.Language.Basic (basicParser)
import Data.SCargot.Repr.WellFormed
       (WellFormedSExpr(WFSList, WFSAtom), fromWellFormed)

import qualified Data.Text as Text
import Data.Text (Text)
import Data.Text.Read (signed, decimal)

import Data.String.Here (i)

-- | Error when parsing.
type Error = String
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The main driver is a pipeline of calling an &lt;code&gt;s-cargot&lt;/code&gt; parser and then
calling our own parser of an S-expression into our &lt;code&gt;Exp&lt;/code&gt; type:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | For simplicity, we use &apos;basicParser&apos; which just treats every atom
-- as &apos;Text&apos;, which we parse later rather than up front.
parse :: Text -&amp;gt; Either Error Exp
parse text = parseOneSexp text &amp;gt;&amp;gt;= toExp

parseOneSexp :: Text -&amp;gt; Either Error (WellFormedSExpr Text)
parseOneSexp = S.decodeOne (S.asWellFormed basicParser)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once we have a well-formed S-expression, we can pick it apart, while
catching errors if we encounter one.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;toExp :: WellFormedSExpr Text -&amp;gt; Either Error Exp
toExp (WFSAtom text) = fromAtom text
toExp (WFSList [WFSAtom operatorText, sexp1, sexp2]) = do
  operator &amp;lt;- fromOperator operatorText
  e1 &amp;lt;- toExp sexp1
  e2 &amp;lt;- toExp sexp2
  return (operator e1 e2)
toExp list@(WFSList _) = Left [i|${list} should have exactly 3 elements|]

fromOperator :: Text -&amp;gt; Either Error (Exp -&amp;gt; Exp -&amp;gt; Exp)
fromOperator &quot;+&quot; = return Plus
fromOperator &quot;*&quot; = return Times
fromOperator text = Left [i|${text} is not a valid operator|]

-- | Either an integer or a variable.
fromAtom :: Text -&amp;gt; Either Error Exp
fromAtom text =
  case signed decimal text of
    Right (n, &quot;&quot;) -&amp;gt;
      return (N n)
    Right (_, _) -&amp;gt;
      Left [i|extra garbage after numeric in ${text}|]
    Left _ -&amp;gt;
      return (V (Text.unpack text))
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Pretty-printing&lt;/h2&gt;
&lt;p&gt;And we get pretty-printing for free from &lt;code&gt;s-cargot&lt;/code&gt; if we turn our
&lt;code&gt;Exp&lt;/code&gt; into an S-expression first. I won&apos;t show the details, but you
can use the basic S-expression printer or customize it with a lot
options including indentation strategy. Let&apos;s just use the basic.&lt;/p&gt;
&lt;p&gt;A sample test for our &lt;code&gt;SExp.prettyPrint&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    prop &quot;pretty-printing&quot; $ \a b -&amp;gt;
      SExp.prettyPrint (Times (Plus (V &quot;x&quot;) (N a))
                              (Plus (V &quot;y&quot;) (N b))) `shouldBe`
       [i|(* (+ x ${a}) (+ y ${b}))|]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fromExp :: Exp -&amp;gt; WellFormedSExpr Text
fromExp (N n) = WFSAtom (Text.pack (show n))
fromExp (V x) = WFSAtom (Text.pack x)
fromExp (Plus e1 e2) = WFSList [WFSAtom &quot;+&quot;, fromExp e1, fromExp e2]
fromExp (Times e1 e2) = WFSList [WFSAtom &quot;*&quot;, fromExp e1, fromExp e2]

prettyPrint :: Exp -&amp;gt; Text
prettyPrint =
  S.encodeOne (S.setFromCarrier fromWellFormed (S.basicPrint id))
  . fromExp
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Summary of S-expression parsing and pretty-printing&lt;/h2&gt;
&lt;p&gt;So there you have it: with a little bit of boilerplate you can get an
experience similar to that of working in Lisp. Note that with even
clever Template Haskell work with quasiquotation you could go further
than the pure text templates we&apos;ve used for convenience, and create
pattern templates as well.&lt;/p&gt;
&lt;p&gt;We didn&apos;t have to write a traditional parser, and we were able to
separate well-formedness from further processing. This is really
useful in many contexts: in my experience, the multi-level error
checking makes good error messages easier to create. Also, not
discussed here is how S-expressions can also help with prediction and
completion.&lt;/p&gt;
&lt;h2&gt;Optional further notes on syntax for domain-specific languages&lt;/h2&gt;
&lt;p&gt;I wanted to point out that for some problem domains, such as this one
that happens to be mathematical, it is sometimes popular to make
things look mathematical. I&apos;ve deliberately presented it without that
attempt first, but now I&apos;ll show some syntactic variants.&lt;/p&gt;
&lt;h3&gt;Alphanumeric identifiers as operators&lt;/h3&gt;
&lt;p&gt;First, one can use operator syntax with backticks and precedence
levels:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module SymbolicDifferentiation.AlphaOperatorSyntax where

-- | Variable in an expression.
type Var = String

-- | Precedences for our expression constructors.
infixl 6 `Plus`
infixl 7 `Times`

-- | Expression.
data Exp
  = N Int          -- ^ number
  | V Var          -- ^ variable
  | Plus Exp Exp   -- ^ sum
  | Times Exp Exp  -- ^ product
  deriving (Show, Eq)

-- | Derivative of expression with respect to a variable.
deriv :: Exp -&amp;gt; Var -&amp;gt; Exp
deriv (N _)         _ = N 0
deriv (V v&apos;)        v = N (if v&apos; == v then 1 else 0)
deriv (Plus e1 e2)  v = deriv e1 v `plus` deriv e2 v
deriv (Times e1 e2) v = e1 `times` deriv e2 v
                        `plus`
                        deriv e1 v `times` e2

-- | Precedences for our expression &quot;smart&quot; constructors.
infixl 6 `plus`
infixl 7 `times`

-- | Smart constructor that simplifies while combining subexpressions.
plus :: Exp -&amp;gt; Exp -&amp;gt; Exp
N 0  `plus` e    = e
e    `plus` N 0  = e
N n1 `plus` N n2 = N (n1 + n2)
e1   `plus` e2   = e1 `Plus` e2

-- | Smart constructor that simplifies while combining subexpressions.
times :: Exp -&amp;gt; Exp -&amp;gt; Exp
N 0  `times` _    = N 0
_    `times` N 0  = N 0
N 1  `times` e    = e
e    `times` N 1  = e
N n1 `times` N n2 = N (n1 * n2)
e1   `times` e2   = e1 `Times` e2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that nothing has really changed, except the use of infix
function definitions and calls, and use of precedence to remove
parentheses, such as in the big expression for the derivative of a
product of expressions. But clarity is starting to be lost, for those
not already familiar with the problem domain and conventions.&lt;/p&gt;
&lt;h3&gt;Symbolic identifiers as operators&lt;/h3&gt;
&lt;p&gt;One can go further and use symbolic identifiers in place of the
backticked alphanumeric operators. This is where many of us start
wondering what is going on:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module SymbolicDifferentiation.OperatorSyntax where

-- | Variable in an expression.
type Var = String

-- | Precedences for our expression constructors.
infixl 6 :+:
infixl 7 :*:

-- | Expression.
data Exp
  = N Int        -- ^ number
  | V Var        -- ^ variable
  | Exp :+: Exp  -- ^ sum
  | Exp :*: Exp  -- ^ product
  deriving (Show, Eq)

-- | Derivative of expression with respect to a variable.
deriv :: Exp -&amp;gt; Var -&amp;gt; Exp
deriv (N _)       _ = N 0
deriv (V x )      y = N (if x == y then 1 else 0)
deriv (e1 :+: e2) v = deriv e1 v .+. deriv e2 v
deriv (e1 :*: e2) v = e1 .*. deriv e2 v
                      .+.
                      deriv e1 v .*. e2

-- | Precedences for our expression &quot;smart&quot; constructors.
infixl 6 .+.
infixl 7 .*.

-- | Smart constructor that simplifies while combining subexpressions.
(.+.) :: Exp -&amp;gt; Exp -&amp;gt; Exp
N 0  .+. e    = e
e    .+. N 0  = e
N n1 .+. N n2 = N (n1 + n2)
e1   .+. e2   = e1 :+: e2

-- | Smart constructor that simplifies while combining subexpressions.
(.*.) :: Exp -&amp;gt; Exp -&amp;gt; Exp
N 0  .*.  _   = N 0
_    .*. N 0  = N 0
N 1  .*. e    = e
e    .*. N 1  = e
N n1 .*. N n2 = N (n1 * n2)
e1   .*. e2   = e1 :*: e2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depending on your taste, you might find that this funny syntax makes
the tests look nicer:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;symbolic differentiation&quot; $ do
    prop &quot;d/dx (x + n) == 1&quot; $ \x n -&amp;gt;
      deriv (V x :+: N n) x `shouldBe` N 1
    prop &quot;d/dx (x + y) == x, if x /= y&quot; $ \x y -&amp;gt;
      x /= y ==&amp;gt;
      deriv (V x :*: V y) x `shouldBe` V y
    prop &quot;d/dx (a * x + b) == x&quot; $ \a x b -&amp;gt;
      deriv (N a :*: V x :+: N b) x `shouldBe` N a
    it &quot;d/dx (x * y * (x + 3)) == (x * y) + y * (x + 3)&quot; $ do
      deriv (V &quot;x&quot; :*: V &quot;y&quot; :*: (V &quot;x&quot; :+: N 3)) &quot;x&quot; `shouldBe`
        (V &quot;x&quot; :*: V &quot;y&quot;) :+: (V &quot;y&quot; :*: (V &quot;x&quot; :+: N 3))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All this looks kind of cute if you&apos;re used to it, but I think it can
look really weird otherwise; and I know that many non-Haskellers
seeing this before seeing the vanilla way get the wrong idea that you
have to write this way in Haskell and turn away in disgust and
confusion. This is why I showed the vanilla way first, and show this
only to illustrate that there are libraries out there that do try to
be very suggestive in symbolic operator usage, and also that there is
nothing special going on here: it&apos;s just a different way of saying
exactly the same thing as the first version, with the second version
(backticked alphanumerics as operators) being a transitional step
toward this third version. It&apos;s good to know about all three variants,
regardless of which one you prefer to read and write.&lt;/p&gt;
&lt;p&gt;But what about the S-expression route, which is to decouple the user
(represented by the tests) side of things from the abstract syntax and
the Haskell syntax? My intuition is that there are real benefits in at
least providing an alternate S-expression syntax for whatever other
concrete syntax is made available.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;S-expressions are a time-honored way of representing data. The
&lt;code&gt;s-cargot&lt;/code&gt; library comes with ways to build custom S-expression
parsers and pretty-printers and also comes with useful defaults.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 9: Template Haskell goodies: here, interpolate, file-embed</title><link>https://franklinchen.com/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/</guid><pubDate>Wed, 09 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 9&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3w4d9z/24_days_of_hackage_2015_day_9_template_haskell/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;A stray negative remark I made on
&lt;a href=&quot;/blog/2015/12/08/24-days-of-hackage-2015-day-8-multiset-i-wish-this-were-in-the-standard-containers-package/&quot;&gt;day 8&lt;/a&gt;
regarding Haskell and its unergonomic support for multi-line string
literals and interpolation led to good comments that I was being
misleading because there actually exist good solutions. I already use
one of them, but had not brought them into the picture because I
didn&apos;t want to be distracting in that post by bringing in other
libraries, especially since they are implemented in
&lt;a href=&quot;https://wiki.haskell.org/Template_Haskell&quot;&gt;Template Haskell&lt;/a&gt;, the GHC
extension that is &quot;macros for Haskell&quot;, enabling compile-time
metaprogramming (see the
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/guest-posts/2014-12-22-template-haskell.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/guest-posts/2014-12-22-template-haskell.html&quot;&amp;gt;2014 Day of Hackage article about Template Haskell&amp;lt;/span&amp;gt;. On
&lt;a href=&quot;/blog/2015/12/02/24-days-of-hackage-2015-day-2-regexes-with-pcre-heavy-standalone-haskell-scripts-using-stack/&quot;&gt;day 2&lt;/a&gt;
I already introduced a package that uses Template Haskell, so it looks
like I&apos;ll be continuing to do that today.&lt;/p&gt;
&lt;p&gt;These packages require only that you turn on &lt;code&gt;QuasiQuotes&lt;/code&gt; in modules
where you use them, so our example source code will have the header&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE QuasiQuotes #-}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Better string literals with &lt;code&gt;here&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;I&apos;ve been using &lt;a href=&quot;https://hackage.haskell.org/package/here&quot;&gt;&lt;code&gt;here&lt;/code&gt;&lt;/a&gt; for
&quot;here&quot; strings and interpolation. Check out the
&lt;a href=&quot;https://github.com/tmhedberg/here&quot;&gt;documentation&lt;/a&gt; for full details,
but for context, here are some examples using data we already have.&lt;/p&gt;
&lt;p&gt;Imports:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Data.String.Here (hereLit, here, hereFile, i)
import Test.Hspec (Spec, hspec, describe, it, shouldBe)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A trimmed multi-line literal, where leading and trailing white space
are removed, making it particularly easy to just copy and paste blocks
of text in between the &lt;code&gt;here&lt;/code&gt; quasiquoter brackets.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;makes trimmed multi-line strings prettier&quot; $ do
      -- In this case we want trimming.
      let original = &quot;words 3\n\
                     \I 2\n\
                     \have 2\n\
                     \so 2\n\
                     \for 1\n\
                     \like 1\n\
                     \many 1\n\
                     \to 1&quot;
      let trimmedHereDoc = [here|
words 3
I 2
have 2
so 2
for 1
like 1
many 1
to 1
|]
      trimmedHereDoc `shouldBe` original
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For more control (typically what I do for small examples), use &lt;code&gt;hereLit&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;makes literal multi-line strings prettier&quot; $ do
      -- In this case assume we want the trailing newline.
      let original = &quot;words 3\n\
                     \I 2\n\
                     \have 2\n\
                     \so 2\n\
                     \for 1\n\
                     \like 1\n\
                     \many 1\n\
                     \to 1\n&quot;
      let literalHereDoc = [hereLit|words 3
I 2
have 2
so 2
for 1
like 1
many 1
to 1
|]
      literalHereDoc `shouldBe` original
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But why stop at copy/paste? Much better to embed an actual file with
&lt;code&gt;hereFile&lt;/code&gt;. We use our own little HSpec discovery &lt;code&gt;test/Spec.hs&lt;/code&gt; file
as an example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;allows file embed&quot; $ do
      [hereFile|test/Spec.hs|] `shouldBe`
        &quot;{-# OPTIONS_GHC -F -pgmF hspec-discover #-}&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, some interpolation, using &lt;code&gt;i&lt;/code&gt;. Although it is very
convenient, I have some reservations about overusing this quasiquoter,
because it is engaging in &quot;stringly typed&quot; programming that just makes
use of anything that implements &lt;code&gt;Show&lt;/code&gt; and &lt;code&gt;Typeable&lt;/code&gt;. It is easy to
accidentally write code that compiles but does the wrong thing when
operating at this implicit level. Still, it&apos;s useful:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;makes interpolation prettier&quot; $ do
      let list = [1 :: Int, 2]
      let num = 42 :: Int
      [i|number: ${num}, stuff: ${map (+1) list}|] `shouldBe`
        &quot;number: 42, stuff: [2,3]&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;interpolate&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://hackage.haskell.org/package/interpolate&quot;&gt;&lt;code&gt;interpolate&lt;/code&gt;&lt;/a&gt; is
another package that does the same sort of thing. You might like its
&lt;a href=&quot;https://hackage.haskell.org/package/interpolate-0.1.0/docs/Data-String-Interpolate-Util.html&quot;&gt;&lt;code&gt;unindent&lt;/code&gt;&lt;/a&gt;
feature, which facilitates the copy/paste mode of embedding blocks of
text into your code.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;file-embed&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://hackage.haskell.org/package/file-embed&quot;&gt;&lt;code&gt;file-embed&lt;/code&gt;&lt;/a&gt; is also
useful, because you can use it to embed contents of entire
directories. It also has a unique feature of injection into an
executable.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You don&apos;t have to settle for the built-in syntax for creating strings
out of literals in Haskell. With libraries using Template Haskell, you
can use much prettier representations of strings. Check out &lt;code&gt;here&lt;/code&gt;,
&lt;code&gt;interpolate&lt;/code&gt;, and &lt;code&gt;file-embed&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 8: multiset; I wish this were in the standard containers package</title><link>https://franklinchen.com/blog/2015/12/08/24-days-of-hackage-2015-day-8-multiset-i-wish-this-were-in-the-standard-containers-package/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/08/24-days-of-hackage-2015-day-8-multiset-i-wish-this-were-in-the-standard-containers-package/</guid><pubDate>Tue, 08 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 8&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vy605/24_days_of_hackage_2015_day_8_multiset_i_wish/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I don&apos;t remember when it was, but one day I got sick and tired of
reimplementing in Haskell the same boilerplate logic when keeping
track of many objects classified under the same key. This is a data
structure known as a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Multiset&quot;&gt;multiset&lt;/a&gt;, also known as a
&lt;em&gt;bag&lt;/em&gt;, in contrast with a regular &lt;em&gt;set&lt;/em&gt;, which only keeps track of one
unique object per key.&lt;/p&gt;
&lt;p&gt;I was surprised that by the lack of a multiset module in the standard
&lt;a href=&quot;https://hackage.haskell.org/package/containers&quot;&gt;&lt;code&gt;containers&lt;/code&gt;&lt;/a&gt;
package, although not completely surprised because you can implement a
multiset on top of a set, so in some sense a multiset is
&quot;superfluous&quot;. Still, I was used to having a multiset available
without any work (however trivial), because of long using a &lt;a href=&quot;http://www.cplusplus.com/reference/set/multiset/&quot;&gt;multiset
in C++&lt;/a&gt;, which I&apos;d
used back in the 1990s from the original implementation of the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_Template_Library&quot;&gt;Standard Template Library&lt;/a&gt;,
and also Python&apos;s collections library has a
&lt;a href=&quot;https://docs.python.org/2/library/collections.html#collections.Counter&quot;&gt;&lt;code&gt;Counter&lt;/code&gt;&lt;/a&gt;
class which serves a similar purpose.&lt;/p&gt;
&lt;p&gt;Today I&apos;ll briefly show some code using &lt;code&gt;multiset&lt;/code&gt; and talk about why
something like this maybe should be in the standard library.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The classic example of multiset use&lt;/h2&gt;
&lt;p&gt;Multisets are often used for counting things. Word count is a
time-honored use case for multisets, so let&apos;s implement a very simple
word count program that break up text into &quot;words&quot; separated by
spaces, while treating non-letters as spaces, count the words, and
finally output a report which consists of a line for each word and its
count, in descending order of count but ascending order of word.&lt;/p&gt;
&lt;p&gt;For a bit more realism and efficiency even for a toy program, let&apos;s
have the input not be &lt;code&gt;String&lt;/code&gt;, but the &lt;code&gt;Text&lt;/code&gt; type from
&lt;code&gt;Data.Text.Lazy&lt;/code&gt; module of the
&lt;a href=&quot;https://hackage.haskell.org/package/text&quot;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/a&gt; package. Let&apos;s also
build up the final &lt;code&gt;Text&lt;/code&gt; report efficiently.&lt;/p&gt;
&lt;h3&gt;A sample HSpec test&lt;/h3&gt;
&lt;p&gt;Here&apos;s a sample test (for fun you may wish to write a reasonable
QuickCheck generators and tests for this problem). I apologize for the
illegible Haskell multiline string literal; I wish Haskell had
multiline string literals, interpolation, and all that good stuff
other languages have!&lt;/p&gt;
&lt;h4&gt;(A tangent from day 9)&lt;/h4&gt;
&lt;p&gt;A number of people commented that I made a misleading remark above
about string support in Haskell. It is true that the core Haskell
syntax for strings is limited, but it is easy to work around that with
Template Haskell, so see
&lt;a href=&quot;/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/&quot;&gt;Day 9&lt;/a&gt;
for how to do this. I totally recommend using one of the libraries
mentioned.&lt;/p&gt;
&lt;p&gt;In brief, the ugly string literal I wrote can be written&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;      let expected = [hereLit|words 3
I 2
have 2
so 2
for 1
like 1
many 1
to 1
|]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;The code&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE OverloadedStrings #-}

module MultisetExampleSpec where

import MultisetExample (wordCount)

import Test.Hspec (Spec, hspec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)

-- | Required for auto-discovery.
spec :: Spec
spec =
  describe &quot;multiset&quot; $ do
    it &quot;wordCount&quot; $ do
      let input = &quot;I have so   many words; words I so like to have words for!?&quot;
      let expected = &quot;words 3\n\
                     \I 2\n\
                     \have 2\n\
                     \so 2\n\
                     \for 1\n\
                     \like 1\n\
                     \many 1\n\
                     \to 1\n&quot;
      wordCount input `shouldBe` expected
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;The solution&lt;/h3&gt;
&lt;p&gt;The code almost writes itself from a natural language description of
the problem.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE OverloadedStrings #-}

module MultisetExample where

import qualified Data.MultiSet as MultiSet
import qualified Data.Text.Lazy as LazyText
import qualified Data.Text.Lazy.Builder as LazyBuilder
import Data.Text.Lazy.Builder.Int (decimal)
import Data.Ord (Down(..))
import qualified Data.Char as Char
import qualified Data.List as List
import Control.Arrow ((&amp;gt;&amp;gt;&amp;gt;))
import Data.Monoid ((&amp;lt;&amp;gt;))

wordCount :: LazyText.Text -&amp;gt; LazyText.Text
wordCount =
  LazyText.map replaceNonLetterWithSpace
  &amp;gt;&amp;gt;&amp;gt; LazyText.words
  &amp;gt;&amp;gt;&amp;gt; MultiSet.fromList
  &amp;gt;&amp;gt;&amp;gt; MultiSet.toOccurList
  &amp;gt;&amp;gt;&amp;gt; List.sortOn (snd &amp;gt;&amp;gt;&amp;gt; Down)
  &amp;gt;&amp;gt;&amp;gt; map summarizeWordCount
  &amp;gt;&amp;gt;&amp;gt; mconcat
  &amp;gt;&amp;gt;&amp;gt; LazyBuilder.toLazyText

replaceNonLetterWithSpace :: Char -&amp;gt; Char
replaceNonLetterWithSpace c
  | Char.isLetter c = c
  | otherwise = &apos; &apos;

summarizeWordCount :: (LazyText.Text, MultiSet.Occur) -&amp;gt; LazyBuilder.Builder
summarizeWordCount (word, count) =
  LazyBuilder.fromLazyText word &amp;lt;&amp;gt; &quot; &quot; &amp;lt;&amp;gt; decimal count &amp;lt;&amp;gt; &quot;\n&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&apos;s go through this step by step. Note that we&apos;re using my favorite
left-to-right composition operator &lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt; as opposed to the
right-to-left composition operator &lt;code&gt;.&lt;/code&gt; because it looks much more
natural to me for pipelines, and because my description below top to
bottom matches this syntax.&lt;/p&gt;
&lt;h4&gt;(Update on syntax)&lt;/h4&gt;
&lt;p&gt;Here is the pipeline part of the code in more traditional
right-to-left syntax. I think it&apos;s important to be able to read and
write in both styles:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Same thing, using traditional right-to-left composition.
wordCountTraditional :: LazyText.Text -&amp;gt; LazyText.Text
wordCountTraditional =
  LazyBuilder.toLazyText
  . mconcat
  . map summarizeWordCount
  . List.sortOn (Down . snd)
  . MultiSet.toOccurList
  . MultiSet.fromList
  . LazyText.words
  . LazyText.map replaceNonLetterWithSpace
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Get the words from text&lt;/h3&gt;
&lt;p&gt;First, replace all non-letters with spaces for the purpose of this
problem, then use the &lt;code&gt;words&lt;/code&gt; from &lt;code&gt;Data.Text.Lazy&lt;/code&gt; (which we imported
as &lt;code&gt;LazyText&lt;/code&gt;) to break up into words (real tokenization would have
more sophisticated rules). By the way, this is done very efficiently
because GHC performs
&lt;a href=&quot;https://hackage.haskell.org/package/text-1.2.1.3/docs/Data-Text-Lazy.html#g:1&quot;&gt;fusion&lt;/a&gt;
in order to do the replacement and the breaking up into words in a
single pass, rather than two as written in the code. Fusion is a
really, really cool optimization that we rely on for our Haskell code
to be super-efficient:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wordCount =
  LazyText.map replaceNonLetterWithSpace
  &amp;gt;&amp;gt;&amp;gt; LazyText.words
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Put the words into a multiset&lt;/h3&gt;
&lt;p&gt;Next, we get the list words into a multiset. &lt;code&gt;MultiSet&lt;/code&gt; conveniently
has a constructor for that, &lt;a href=&quot;https://hackage.haskell.org/package/multiset-0.3.0/docs/Data-MultiSet.html#v:fromList&quot;&gt;&lt;code&gt;fromList :: Ord a =&amp;gt; [a] -&amp;gt; MultiSet a&lt;/code&gt;&lt;/a&gt;,
and it does this in &lt;code&gt;O(n log n)&lt;/code&gt; time because of the use of comparison
through &lt;code&gt;Ord&lt;/code&gt; to construct a tree (exercise for you if you wish: use
one of the hash table libraries in Hackage to create a
&lt;code&gt;MultiHashSet&lt;/code&gt; instead).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;gt;&amp;gt;&amp;gt; MultiSet.fromList
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Count the words&lt;/h4&gt;
&lt;p&gt;We grab a list of word/count pairs (in ascending order of words) using
&lt;a href=&quot;https://hackage.haskell.org/package/multiset-0.3.0/docs/Data-MultiSet.html#v:toOccurList&quot;&gt;&lt;code&gt;toOccurList :: MultiSet a -&amp;gt; [(a, Occur)]&lt;/code&gt;&lt;/a&gt;
where
&lt;a href=&quot;https://hackage.haskell.org/package/multiset-0.3.0/docs/Data-MultiSet.html#t:Occur&quot;&gt;&lt;code&gt;type Occur = Int&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;gt;&amp;gt;&amp;gt; MultiSet.toOccurList
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Sort the word/count list&lt;/h4&gt;
&lt;p&gt;We sort using the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Schwartzian_transform&quot;&gt;&quot;Schwartzian transform&quot;&lt;/a&gt;
for efficiency using
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-List.html#v:sortOn&quot;&gt;&lt;code&gt;Data.List.sortOn&lt;/code&gt;&lt;/a&gt;
of type &lt;code&gt;sortOn :: Ord b =&amp;gt; (a -&amp;gt; b) -&amp;gt; [a] -&amp;gt; [a]&lt;/code&gt;;
recall we want the count (the second element of the tuple we get back
from the multiset) to be descending.&lt;/p&gt;
&lt;p&gt;Documentation of
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Ord.html#t:Down&quot;&gt;&lt;code&gt;Data.Ord.Down&lt;/code&gt;&lt;/a&gt;
explains how this &quot;newtype hack&quot; is used to change the default
ordering comparison during a sort.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;gt;&amp;gt;&amp;gt; List.sortOn (snd &amp;gt;&amp;gt;&amp;gt; Down)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Make a report for each word/count&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;  &amp;gt;&amp;gt;&amp;gt; map summarizeWordCount
  &amp;gt;&amp;gt;&amp;gt; mconcat
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where our summarizing function, for efficiency in avoiding unnecessary
allocations, does not construct a &lt;code&gt;Text&lt;/code&gt; but rather a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Builder_pattern&quot;&gt;builder&lt;/a&gt;, since we
don&apos;t need this information for each as &lt;code&gt;Text&lt;/code&gt; but plan to combine the
reports for all the lines into one &lt;code&gt;Text&lt;/code&gt; at the end.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;summarizeWordCount :: (LazyText.Text, MultiSet.Occur) -&amp;gt; LazyBuilder.Builder
summarizeWordCount (word, count) =
  LazyBuilder.fromLazyText word &amp;lt;&amp;gt; &quot; &quot; &amp;lt;&amp;gt; decimal count &amp;lt;&amp;gt; &quot;\n&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(If you&apos;re curious how the builder works, check out the
&lt;a href=&quot;https://hackage.haskell.org/package/text-1.2.1.3/docs/src/Data-Text-Internal-Builder.html&quot;&gt;source code&lt;/a&gt;. It
uses higher-rank types, unsafe operations, and strictness
annotations.)&lt;/p&gt;
&lt;h4&gt;Make the final report&lt;/h4&gt;
&lt;p&gt;Just materialize the &lt;code&gt;Text&lt;/code&gt; from the builder:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;gt;&amp;gt;&amp;gt; LazyBuilder.toLazyText
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What should go into a standard library?&lt;/h2&gt;
&lt;p&gt;I mentioned that I think this should go into the standard library, for
convenience. The argument for &lt;em&gt;not&lt;/em&gt; putting something into the
standard library is always, everyone think their useful thing should
be in there, but there&apos;s no way that can happen, and so choices have
to be made. Given that, I cannot really argue based on my own
experience or perception of my experience that an entire community
would benefit from my favorite things being made &quot;standard&quot;. I&apos;d like
to think that we have the technology now to collect real data to
determine people&apos;s real needs and change the way we make libraries
discoverable and usable. Even something like mining Stack Overflow
questions could bring up many interesting statistics about what people
need. Such data gathering would not substitute for expert curation, of
course, but surely would be useful.&lt;/p&gt;
&lt;p&gt;There is another argument for not having something like multiset be
incorporated: it&apos;s easy to implement once you have the regular set. If
you look at the
&lt;a href=&quot;https://hackage.haskell.org/package/multiset-0.3.0/docs/src/Data-MultiSet.html#MultiSet&quot;&gt;source code&lt;/a&gt;,
the following basically says it all. A multiset is just a map from a
key to a count.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;newtype MultiSet a = MS { unMS :: Map a Occur }

type Occur = Int
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Everything else is a straightforward wrapper.&lt;/p&gt;
&lt;p&gt;But that&apos;s like saying a language should not have any syntactic
sugar. I think &quot;library sugar&quot; is as valuable as syntactic
sugar.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Multisets are useful. You could implement one yourself. Or you could
use the &lt;code&gt;multiset&lt;/code&gt; package someone already wrote for us.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 7: semigroups; NonEmpty list and a case study of types and tests</title><link>https://franklinchen.com/blog/2015/12/07/24-days-of-hackage-2015-day-7-semigroups-nonempty-list-and-a-case-study-of-types-and-tests/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/07/24-days-of-hackage-2015-day-7-semigroups-nonempty-list-and-a-case-study-of-types-and-tests/</guid><pubDate>Mon, 07 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 7&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vsnk7/24_days_of_hackage_2015_day_7_semigroups_nonempty/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;How often has the following runtime error happened to you, whether in
Haskell or in some other language?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*** Exception: Prelude.head: empty list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Basically, code blew up that assumed a list was nonempty but it
wasn&apos;t.&lt;/p&gt;
&lt;p&gt;In fact,
&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vlb8v/reading_data_problems/&quot;&gt;posted on Reddit recently&lt;/a&gt;
was a question about code that failed with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;** Exception: Prelude.foldl1: empty list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which is the same problem.&lt;/p&gt;
&lt;p&gt;Today, I present a case study: refactoring that code to take advantage
of an important data type that is going to be part of the Haskell
standard library, the &lt;code&gt;NonEmpty&lt;/code&gt; list type. This is part of Edward
Kmett&apos;s &lt;a href=&quot;https://hackage.haskell.org/package/semigroups&quot;&gt;&lt;code&gt;semigroups&lt;/code&gt;&lt;/a&gt;
package that is
&lt;a href=&quot;https://web.archive.org/web/20190917225053/https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid&quot;&gt;going into the standard library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;In general, should we adopt defensive or confident programming?&lt;/h2&gt;
&lt;p&gt;It&apos;s easy to say, &quot;well, we should program &lt;em&gt;defensively&lt;/em&gt; and not call
unsafe functions like &lt;code&gt;head&lt;/code&gt; and &lt;code&gt;foldl1&lt;/code&gt; but should always check for an empty
list&quot;. But what if we &lt;em&gt;know&lt;/em&gt; that the list is supposed to have at
least one element, perhaps because we validated that fact earlier on
in our data model. For example, say you are buying tickets for a
concert. You have to buy at least one, but could buy more than one. So
the business logic for the ticket pickup should always assume that
there is at least one ticket for you. It should not perpetually check
for emptiness because that should have been caught up front when you
ordered.&lt;/p&gt;
&lt;p&gt;The situation is exactly analogous to the problem of &lt;code&gt;NULL&lt;/code&gt; in many
languages: languages that use &lt;code&gt;NULL&lt;/code&gt; don&apos;t distinguish at the &lt;em&gt;type&lt;/em&gt;
level between something that is &lt;em&gt;possibly-nonexistent&lt;/em&gt; (0 or 1
element) and something that is always there (1 element). It is
unfortunate when we know something about our data but aren&apos;t saying it
in our type. In the case of lists, the situation is that a
&lt;em&gt;possibly-empty&lt;/em&gt; list can have 0 or more elements, while a nonempty
list can have 1 or more elements. Both situations are extremely common
(think of regex matching that distinguishes between &lt;code&gt;x*&lt;/code&gt; and &lt;code&gt;x+&lt;/code&gt;) and
should be modeled by different types!&lt;/p&gt;
&lt;p&gt;I believe that the real solution to this kind of problem is not to go
&lt;em&gt;defensive&lt;/em&gt; and litter all our code with random &lt;code&gt;NULL&lt;/code&gt; or &lt;code&gt;isEmpty&lt;/code&gt;
kinds of runtime checks. The solution is also not to just go &quot;cowboy
hacker&quot; and invite possible and actual runtime exceptions by skipping
all checking.&lt;/p&gt;
&lt;p&gt;Instead, the solution, when practical, is to &lt;em&gt;use the right types&lt;/em&gt; so
that in the appropriate delimited scope of our code, runtime
exceptions &lt;em&gt;cannot possibly occur&lt;/em&gt; and therefore within that scope we
can program &lt;em&gt;confidently&lt;/em&gt; rather than &lt;em&gt;defensively&lt;/em&gt;. If we don&apos;t use
our language&apos;s type system to our advantage, we are just doing
ordinary dynamically typed programming in a typed language and missing
out on the full benefits of types. Since we made some sacrifices in
adopting a statically typed language instead of a dynamically typed
one, we should take advantage of what we got ourselves into. There&apos;s
an interesting asymmetry in the programming world: it is &lt;em&gt;impossible&lt;/em&gt;
to write statically typed code in a dynamically typed language, but it
is &lt;em&gt;easy&lt;/em&gt; to write dynamically typed code in a statically typed
language!&lt;/p&gt;
&lt;h2&gt;A nonempty list type&lt;/h2&gt;
&lt;p&gt;Let&apos;s look at the &lt;code&gt;NonEmpty&lt;/code&gt; list. You can already use it today before
it becomes part of the standard library, by just adding &lt;code&gt;semigroups&lt;/code&gt;
to your dependencies.&lt;/p&gt;
&lt;h3&gt;What are the requirements for a nonempty list?&lt;/h3&gt;
&lt;p&gt;Roughly, a &lt;code&gt;NonEmpty&lt;/code&gt; list should&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;support operations to interconvert with a regular possibly-empty list&lt;/li&gt;
&lt;li&gt;support analogues of standard list operations (like &lt;code&gt;map&lt;/code&gt; and
&lt;code&gt;filter&lt;/code&gt;) that carefully take into account whether the output is possibly-empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;QuickCheck for specifying laws (properties)&lt;/h3&gt;
&lt;p&gt;On
&lt;a href=&quot;/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/&quot;&gt;day 3&lt;/a&gt;,
I mentioned that QuickCheck is very useful for specifying requirements
when designing a new module. Ideally, when designing an API around a
new type, we treat it as an abstract data type and check the behavior
of operations on that type. The &lt;code&gt;NonEmpty&lt;/code&gt; list is simple enough that you
might think it&apos;s overkill to do that, but I just wanted to present a
taste of what one might do up front if one were starting out with
property test-driven development. Let&apos;s imagine we are creating a
module &lt;code&gt;Data.List.NonEmpty&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE ScopedTypeVariables #-}

-- Part of a hypothetical test module for the semigroups package.
module HypotheticalSemigroupsSpec where

import qualified Data.List.NonEmpty as NonEmpty

import Test.Hspec (Spec, hspec, describe, it, shouldBe, shouldSatisfy)
import Test.Hspec.QuickCheck (prop)
import qualified Test.QuickCheck as QuickCheck
import qualified Data.Maybe as Maybe

spec :: Spec
spec =
  describe &quot;semigroups&quot; $ do
    describe &quot;Data.List.NonEmpty&quot; $ do
      describe &quot;constructor NonEmpty.nonEmpty&quot; $ do
        it &quot;fails on trying to construct from an empty regular list&quot; $ do
          NonEmpty.nonEmpty ([] :: [Int]) `shouldBe` Nothing
        prop &quot;succeeds on any nonempty list&quot; $ do
          \(QuickCheck.NonEmpty (xs :: [Int])) -&amp;gt;
            NonEmpty.nonEmpty xs `shouldSatisfy` Maybe.isJust
      describe &quot;conversion to regular list&quot; $ do
        prop &quot;converts back to the original regular list&quot; $ do
          \(QuickCheck.NonEmpty (xs :: [Int])) -&amp;gt;
            let Just nonEmptyXs = NonEmpty.nonEmpty xs
            in NonEmpty.toList nonEmptyXs `shouldBe` xs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Basically, &lt;code&gt;nonEmpty&lt;/code&gt; is a safe constructor:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nonEmpty :: [a] -&amp;gt; Maybe (NonEmpty a)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is also an unsafe constructor called &lt;code&gt;fromList&lt;/code&gt;. I wouldn&apos;t use
that except in case I really know that a list was not empty, because
it was returned from an API that guaranteed it but not in a typed
way. For example, I&apos;ve faced this annoying problem when writing
parsers using libraries such as
&lt;a href=&quot;https://hackage.haskell.org/package/parsec&quot;&gt;&lt;code&gt;parsec&lt;/code&gt;&lt;/a&gt;, because
combinators such as &lt;code&gt;many1&lt;/code&gt; have a type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;many1 :: Stream s m t =&amp;gt; ParsecT s u m a -&amp;gt; ParsecT s u m [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;even though the library &lt;em&gt;guarantees&lt;/em&gt; that if the parse succeeds, the
resulting list has at least one element! So in a situation like this,
I would feel justified in using the unsafe &lt;code&gt;NonEmpty.fromList&lt;/code&gt; to
&lt;em&gt;immediately&lt;/em&gt; unsafely wrap to get my known-to-be-nonempty-list into a
more refined type.&lt;/p&gt;
&lt;p&gt;A note on QuickCheck internals: &lt;code&gt;QuickCheck.NonEmpty&lt;/code&gt; (ignore the
coincidence of the token &lt;code&gt;NonEmpty&lt;/code&gt; in common with our module and type
in question!) is just a
&lt;a href=&quot;https://hackage.haskell.org/package/QuickCheck-2.8.1/docs/Test-QuickCheck.html#t:NonEmptyList&quot;&gt;newtype in QuickCheck&lt;/a&gt;
to generate regular lists &lt;code&gt;[a]&lt;/code&gt; that happen to be nonempty at runtime
(as in they are of the form &lt;code&gt;(x:xs)&lt;/code&gt;). Imagine if QuickCheck had been
written when the &lt;code&gt;NonEmpty&lt;/code&gt; type we want had existed. Then it could
just generate a real &lt;code&gt;NonEmpty&lt;/code&gt; rather than a fake newtype!&lt;/p&gt;
&lt;p&gt;If you don&apos;t use QuickCheck or similar generative testing libraries,
check them out! These methods of testing are far more useful than the
example-based tests that I&apos;ve provided so far in these articles just
for illustrative purposes. When possible, generative tests should be
written instead of manual example-based tests.&lt;/p&gt;
&lt;p&gt;(The use of &lt;code&gt;[Int]&lt;/code&gt; type annotations is because QuickCheck requires a
monomorphic type in order to generate concrete data to
test. &lt;code&gt;ScopedTypeVariables&lt;/code&gt; is a GHC extension that I wish were just
part of the standard Haskell language; it was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/guest-posts/2014-12-20-scoped-type-variables.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/guest-posts/2014-12-20-scoped-type-variables.html&quot;&amp;gt;covered in a 2014 Day of GHC Extensions&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-14) Using &lt;code&gt;NonEmpty&lt;/code&gt; for a parser&lt;/h3&gt;
&lt;p&gt;On &lt;a href=&quot;/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/&quot;&gt;day 14&lt;/a&gt;, I used &lt;code&gt;NonEmpty&lt;/code&gt; to represent in a principled way the result from a parser.&lt;/p&gt;
&lt;h2&gt;A few notes on the full &lt;code&gt;NonEmpty&lt;/code&gt; API&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;map&lt;/code&gt; behaves as expected, because it doesn&apos;t change the number of
elements and therefore mapping over a &lt;code&gt;NonEmpty&lt;/code&gt; is clearly a &lt;code&gt;NonEmpty&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map :: (a -&amp;gt; b) -&amp;gt; NonEmpty a -&amp;gt; NonEmpty b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, &lt;code&gt;filter&lt;/code&gt; on a &lt;code&gt;NonEmpty&lt;/code&gt; returns a regular possibly-empty
list, as it should, because the predicate can potentially fail on
every element:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;filter :: (a -&amp;gt; Bool) -&amp;gt; NonEmpty a -&amp;gt; [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And &lt;code&gt;foldl1&lt;/code&gt;, unlike that of the regular list, is &lt;em&gt;safe&lt;/em&gt;. It cannot
fail, because it always starts off the reduction with the first
element as the seed.&lt;/p&gt;
&lt;p&gt;There are a whole bunch of other useful list functions.&lt;/p&gt;
&lt;p&gt;Oh, and the &lt;a href=&quot;https://hackage.haskell.org/package/semigroups-0.18.0.1/docs/src/Data-List-NonEmpty.html#NonEmpty&quot;&gt;internal implementation&lt;/a&gt; is what you might suspect: it&apos;s
just a tuple of the first element with the possibly-empty tail, with a
special &quot;cons&quot; operator &lt;code&gt;:|&lt;/code&gt; that resembles the normal list&apos;s &lt;code&gt;:&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data NonEmpty a = a :| [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;A case study in refactoring&lt;/h2&gt;
&lt;p&gt;Let&apos;s look at refactoring some
&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vlb8v/reading_data_problems/&quot;&gt;code posted on Reddit&lt;/a&gt;
that was throwing an exception unexpectedly at run time.&lt;/p&gt;
&lt;p&gt;We won&apos;t go into how the code might be written in a completely
different way, but just focus on identifying and removing unsafe code
that might throw exceptions.&lt;/p&gt;
&lt;p&gt;The code uses the excellent package
&lt;a href=&quot;https://hackage.haskell.org/package/split&quot;&gt;&lt;code&gt;split&lt;/code&gt;&lt;/a&gt; which I am a happy
user of. I have taken the liberty of adding comments to the code and
explicit imports for presentation here.&lt;/p&gt;
&lt;h3&gt;Original unsafe code&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import qualified Data.List.Split as Split

totalArea :: [(Int, Int, Int)] -&amp;gt; Int
totalArea xs = foldl (\acc x -&amp;gt; (acc + partialArea x)) 0 xs

partialArea :: (Int, Int, Int) -&amp;gt; Int
partialArea (l, w, h) = 2 * (l*w + w*h + h*l) + slack
  where areas       = [l, w, h]

        -- &apos;maximum&apos; is unsafe
        smallSides  = filter (&amp;lt; maximum areas) areas

        -- &apos;foldl1&apos; is unsafe
        slack       = foldl1 (*) smallSides

parseFile :: String -&amp;gt; [(Int, Int, Int)]
parseFile xs = map (splitDimensions) (breakLines xs)

breakLines :: String -&amp;gt; [String]
breakLines = Split.splitOn &quot;\n&quot;

-- | &apos;read&apos; is unsafe. &apos;(!!)&apos; is unsafe.
splitDimensions :: String -&amp;gt; (Int, Int, Int)
splitDimensions xs = (item 0, item 1, item 2)
                   where item n = read ((Split.splitOn &quot;x&quot; xs)!!n)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This crashes on &lt;code&gt;foldl1&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;UnsafeListExample&quot; $ do
    it &quot;totalArea crashes for a particular input&quot; $ do
      let contents = &quot;1 x 1 x 1&quot;
      evaluate (totalArea (parseFile contents)) `shouldThrow` anyException
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&apos;ve already identified the problems above.&lt;/p&gt;
&lt;p&gt;We&apos;ll ignore the fact that &lt;code&gt;read&lt;/code&gt; and list indexing &lt;code&gt;(!!)&lt;/code&gt; are unsafe,
because that&apos;s not what is of interest here today.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;maximum&lt;/code&gt; and &lt;code&gt;foldl1&lt;/code&gt; are both unsafe on lists because they crash
on empty lists.&lt;/p&gt;
&lt;p&gt;It turns out &lt;em&gt;from manual inspection, acting as a human static
analyzer&lt;/em&gt; that the use of &lt;code&gt;maximum&lt;/code&gt; is OK here, because it&apos;s operating
on a 3-element list &lt;code&gt;[l, w, h]&lt;/code&gt; created just before being passed to
&lt;code&gt;maximum&lt;/code&gt;. But this safety is not reflected in the types.&lt;/p&gt;
&lt;p&gt;How about &lt;code&gt;foldl1&lt;/code&gt;? If you carefully think about what &lt;code&gt;filter&lt;/code&gt;
returns, you can deduce that it might return an empty list, and if you
can&apos;t guarantee that it&apos;s nonempty, then the &lt;code&gt;foldl1&lt;/code&gt; will crash
hard. And it does.&lt;/p&gt;
&lt;p&gt;That was a lot of human thinking we had to do. Luckily, tests were run
that discovered the bug, but still, the code ended up posted to Reddit
asking what the bug was, so it&apos;s not trivial to find these kinds of
lurking bugs. Is there a better way?&lt;/p&gt;
&lt;h3&gt;Refactoring to &lt;code&gt;NonEmpty&lt;/code&gt; lists&lt;/h3&gt;
&lt;p&gt;Let&apos;s use &lt;code&gt;NonEmpty&lt;/code&gt;. First of all, we change &lt;code&gt;totalArea&lt;/code&gt; to take a
&lt;code&gt;NonEmpty&lt;/code&gt; because that&apos;s what we really want.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;totalArea :: NonEmpty (Int, Int, Int) -&amp;gt; Int
totalArea xs = foldl (\acc x -&amp;gt; (acc + partialArea x)) 0 xs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that we only had to change the type of the parameter, not any of
the code, because &lt;code&gt;foldl&lt;/code&gt; has been implemented on &lt;code&gt;NonEmpty&lt;/code&gt; as well
as regular lists.&lt;/p&gt;
&lt;p&gt;Next, we change the body of &lt;code&gt;partialArea&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;partialArea :: (Int, Int, Int) -&amp;gt; Int
partialArea (l, w, h) = 2 * (l*w + w*h + h*l) + slack
  where
    areas :: NonEmpty Int
    areas = NonEmpty.fromList [l, w, h]

    -- &apos;maximum&apos; is safe on &apos;NonEmpty&apos;
    -- But &apos;smallSides&apos; can be empty because of &apos;NonEmpty.filter&apos;,
    -- and &apos;NonEmpty.fromList&apos; is unsafe!
    smallSides :: [Int]
    smallSides = NonEmpty.filter (&amp;lt; maximum areas) areas

    -- unsafe!
    smallSides1 :: NonEmpty Int
    smallSides1 = NonEmpty.fromList smallSides

    -- &apos;foldl1&apos; is safe on &apos;NonEmpty&apos;
    slack = foldl1 (*) smallSides1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We made a number of changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;since we&apos;re creating a nonempty list, we turn it immediately into a
&lt;code&gt;NonEmpty&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maximum&lt;/code&gt; is defined for &lt;code&gt;NonEmpty&lt;/code&gt; so we don&apos;t have to change the
text of the code, but we know that &lt;code&gt;maximum&lt;/code&gt; is &lt;em&gt;guaranteed&lt;/em&gt; to be
safe for &lt;code&gt;NonEmpty&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NonEmpty.filter&lt;/code&gt;, as we discussed, returns a regular list, &lt;em&gt;not&lt;/em&gt; a
&lt;code&gt;NonEmpty&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;at the end, we want to safely compute &lt;code&gt;slack&lt;/code&gt;, but we can&apos;t unless
we use a safe &lt;code&gt;foldl1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;working backwards, we must convert a regular list to a &lt;code&gt;NonEmpty&lt;/code&gt;,
but there&apos;s only one way to do that, and it&apos;s unsafe!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So by refining the types used in the program, we have identified the
exact point at which &lt;em&gt;we could not write the necessary code&lt;/em&gt; without
resorting to &lt;code&gt;NonEmpty.fromList&lt;/code&gt;. So, strictly speaking, we haven&apos;t
made a run time error turn into a compile time error, but we have
narrowed down what is going on purely mechanically by means of
following the types.&lt;/p&gt;
&lt;p&gt;The real problem in the code here seems to be that we wanted
&lt;code&gt;smallSides&lt;/code&gt; to be nonempty. The attempt to use only safe code
automatically resolved one possible source of unsafety (&lt;code&gt;maximum&lt;/code&gt;) and
pointed at a more complicated situation requiring a proof obligation
on the result of the &lt;code&gt;filter&lt;/code&gt;. &lt;code&gt;partialArea&lt;/code&gt; could be written to avoid
the proof obligation, by not using a list type at all for &lt;code&gt;areas&lt;/code&gt; to
perform the desired logic.&lt;/p&gt;
&lt;h3&gt;Maybe the real problem is that we shouldn&apos;t use lists at all here&lt;/h3&gt;
&lt;p&gt;You may have protested at this entire &lt;code&gt;NonEmpty&lt;/code&gt; exercise all this
time, because &lt;code&gt;NonEmpty&lt;/code&gt; is just the wrong type for all of this work!
&lt;strong&gt;There&apos;s no point in trying to use some kind of fancy type that
doesn&apos;t fit the problem.&lt;/strong&gt; There was no reason for the list
&lt;code&gt;[l, w, h]&lt;/code&gt; to be created at all. If you&apos;re using a type and you still
run into proof obligations, often that means the type is not the right
one.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;partialArea&lt;/code&gt;, if we state the logic of what we really wanted (the
two smallest values out of three), then we can just write what we
mean:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Don&apos;t use lists at all!
bestPartialArea :: (Int, Int, Int) -&amp;gt; Int
bestPartialArea (l, w, h) = 2 * (l*w + w*h + h*l) + slack
  where
    (side0, side1, _) = sort3 (l, w, h)
    slack = side0 * side1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where we created a utility module &lt;code&gt;Sort3&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module Sort3 (sort3) where

-- | Sort exactly 3 values.
sort3 :: Ord a =&amp;gt; (a, a, a) -&amp;gt; (a, a, a)
sort3 (a0, a1, a2) =
  if a0 &amp;gt; a1
  then if a0 &amp;gt; a2
       then if a2 &amp;lt; a1
               then (a2, a1, a0)
               else (a1, a2, a0)
       else (a1, a0, a2)
  else if a1 &amp;gt; a2
       then if a0 &amp;gt; a2
            then (a2, a0, a1)
            else (a0, a2, a1)
       else (a0, a1, a2)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Yes, I did look on Hoogle (as recommended in my article yesterday on
searching for utility modules), and although I did not find this exact
function, I found the logic for it embedded in a context of optimal
sorting of vectors, in the
&lt;a href=&quot;https://hackage.haskell.org/package/vector-algorithms-0.7.0.1/docs/Data-Vector-Algorithms-Optimal.html&quot;&gt;&lt;code&gt;Data.Vector.Algorithms.Optimal&lt;/code&gt; module&lt;/a&gt;
of the
excellent
&lt;a href=&quot;https://hackage.haskell.org/package/vector-algorithms&quot;&gt;&lt;code&gt;vector-algorithms&lt;/code&gt; package&lt;/a&gt;
that I highly recommend when working with vectors. I copied and
pasted the logic in order to work on a simple triple.&lt;/p&gt;
&lt;h3&gt;The value of tests&lt;/h3&gt;
&lt;p&gt;QuickCheck is a great tool. Suppose we didn&apos;t want to or couldn&apos;t
refine the types in our code, for some reason. We can often still make of
testing to try to weed out easy-to-discover bugs. For example, we
could have written a sanity check test on &lt;code&gt;totalArea&lt;/code&gt; by generating a
whole bunch of random input and checking that the result is what we
expect, or at least something reasonable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import UnsafeListExample (totalArea, parseFile)

import Test.Hspec (Spec, hspec, describe, it, shouldSatisfy, shouldThrow, anyException)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck (Positive(..))
import Control.Exception (evaluate)
import Text.Printf (printf)

spec :: Spec
spec =
  describe &quot;UnsafeListExample&quot; $ do
    it &quot;totalArea crashes for a particular input&quot; $ do
      let contents = &quot;1 x 1 x 1&quot;
      evaluate (totalArea (parseFile contents)) `shouldThrow` anyException
    prop &quot;totalArea gives something reasonable on any triple of ints&quot; $ do
      \(Positive (l :: Int)) (Positive (w :: Int)) (Positive (h :: Int)) -&amp;gt;
        let contents = printf &quot;%d x %d x %d&quot; l w h
        in totalArea (parseFile contents) `shouldSatisfy` (&amp;gt; 0)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Very quickly we get a counterexample reported by QuickCheck:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  1) UnsafeListExample totalArea does not crash on any triple of ints
       uncaught exception: ErrorCall (Prelude.foldl1: empty list) (after 4 tests)
       Positive {getPositive = 2}
       Positive {getPositive = 2}
       Positive {getPositive = 2}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also, you may have wondered about that complicated optimal sort of 3
values. Did I copy and paste the logic correctly? For peace of mind, I
wrote a QuickCheck test for it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;Sort3&quot; $ do
    prop &quot;sort3 sorts correctly&quot; $ do
      \(triple :: (Int, Int, Int)) -&amp;gt;
        let (a0&apos;, a1&apos;, a2&apos;) = Sort3.sort3 triple
        in a0&apos; &amp;lt;= a1&apos; &amp;amp;&amp;amp; a1&apos; &amp;lt;= a2&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I love QuickCheck. What would life be without it?&lt;/p&gt;
&lt;h3&gt;Some bonus refactorings&lt;/h3&gt;
&lt;p&gt;Some other type-oriented refactorings into &lt;code&gt;NonEmpty&lt;/code&gt; as much as
possible that I won&apos;t discuss in detail because they were mostly
irrelevant here:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;parseFile :: NonEmpty Char -&amp;gt; NonEmpty (Int, Int, Int)
parseFile xs = NonEmpty.map (splitDimensions) (breakLines xs)

-- | We ended up not needing the fact that the input is nonempty, and
-- converted it to a regular list.
breakLines :: NonEmpty Char -&amp;gt; NonEmpty String
breakLines string1 = ourSplitOn &quot;\n&quot; (NonEmpty.toList string1)

-- | &apos;read&apos; is unsafe. &apos;(!!)&apos; is unsafe.
splitDimensions :: String -&amp;gt; (Int, Int, Int)
splitDimensions xs = (item 0, item 1, item 2)
                   where item n = read ((Split.splitOn &quot;x&quot; xs)!!n)

-- | Using unsafe &apos;NonEmpty.fromList&apos; is safe because we know
-- the result &apos;from Split.splitOn&apos; is nonempty. Note that the elements
-- themselves can be empty.
ourSplitOn :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; NonEmpty [a]
ourSplitOn subList list = NonEmpty.fromList (Split.splitOn subList list)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The most interesting thing was a tangential observation that
&lt;code&gt;Split.splitOn&lt;/code&gt; always returns a nonempty list of lists. So in
principle we could wrap the result into a &lt;code&gt;NonEmpty&lt;/code&gt;. I even wrote a
little passing QuickCheck test:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;split&quot; $ do
    prop &quot;splitOn always results in nonempty list&quot; $ do
      \subList (list :: String) -&amp;gt;
        Split.splitOn subList list `shouldSatisfy` not . null
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note: &lt;code&gt;split&lt;/code&gt; already has a &lt;a href=&quot;http://hub.darcs.net/byorgey/split/browse/test/&quot;&gt;huge set of property tests for its own
purposes&lt;/a&gt;. I love the
&lt;code&gt;split&lt;/code&gt; library. I think it&apos;s been very well-tested. Check it out.&lt;/p&gt;
&lt;h2&gt;A brief note on semigroups &lt;a href=&quot;https://hackage.haskell.org/package/semigroups-0.18.0.1/docs/Data-Semigroup.html&quot;&gt;&lt;code&gt;Semigroup&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A &lt;code&gt;Semigroup&lt;/code&gt; is a type class representing an algebraic structure
requiring a single associative operation to be defined on it,
&quot;append&quot;, which in this library is provided as an operator &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Data.Semigroup ((&amp;lt;&amp;gt;))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A QuickCheck test verifying what we already know, which is that
&lt;code&gt;String&lt;/code&gt; has a &lt;code&gt;Semigroup&lt;/code&gt; instance, string append, and is associative as required:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    describe &quot;Data.Semigroup.Semigroup&quot; $ do
      prop &quot;&amp;lt;&amp;gt; is associative for String&quot; $ do
        \(x :: String) y z -&amp;gt; (x &amp;lt;&amp;gt; y) &amp;lt;&amp;gt; z `shouldBe` x &amp;lt;&amp;gt; (y &amp;lt;&amp;gt; z)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You may already use this operator &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; in
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Monoid.html&quot;&gt;&lt;code&gt;Monoid&lt;/code&gt;, which is already in the standard library&lt;/a&gt;,
but the &lt;code&gt;Monoid&lt;/code&gt; type class should really be a subclass of &lt;code&gt;Semigroup&lt;/code&gt;
and that&apos;s what&apos;s going to happen in a future version of Haskell
(conceptually, it should have been there all along, but Haskell was
invented 25 years ago in 1990 and &lt;code&gt;Semigroup&lt;/code&gt; was apparently not
considered important enough to put into the type class hierarchy then). The difference is that a &lt;code&gt;Monoid&lt;/code&gt; also requires
an identity element &lt;code&gt;mempty&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There&apos;s no space here to say anything about why semigroups and monoids
are useful in computing. Monoids in particular have become an everyday
word in Big Data circles because of MapReduce, which based on monoids for performance.&lt;/p&gt;
&lt;p&gt;A few Haskell oriented resources on monoids to check out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://en.wikibooks.org/wiki/Haskell/Monoids&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://en.wikibooks.org/wiki/Haskell/Monoids&quot;&amp;gt;On Wikibooks&amp;lt;/span&amp;gt;
(The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://en.wikibooks.org/wiki/Haskell&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://en.wikibooks.org/wiki/Haskell&quot;&amp;gt;Haskell Wikibook&amp;lt;/span&amp;gt; is a great resource for Haskell in general)&lt;/li&gt;
&lt;li&gt;A really nice article with code &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://izbicki.me/blog/gausian-distributions-are-monoids&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://izbicki.me/blog/gausian-distributions-are-monoids&quot;&amp;gt;&quot;Gaussian distributions are monoids&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The main takeaways today: consider using &lt;code&gt;NonEmpty&lt;/code&gt; when you have a
list that you know is not empty, so that you can confidently perform
operations on it without throwing an exception.  It&apos;s just one
additional Cabal dependency away! Also make sure that you actually
wanted a list, and not a tuple or fixed-size vector or something like
that. And use QuickCheck.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 6: finding utilities with Hoogle and Hayoo: MissingH, extra</title><link>https://franklinchen.com/blog/2015/12/06/24-days-of-hackage-2015-day-6-finding-utilities-with-hoogle-and-hayoo-missingh-extra/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/06/24-days-of-hackage-2015-day-6-finding-utilities-with-hoogle-and-hayoo-missingh-extra/</guid><pubDate>Sun, 06 Dec 2015 13:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 6&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vo5x4/24_days_of_hackage_2015_day_6_finding_utilities/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;It will never be the case that everything everyone will find useful
will already be in the &quot;standard library&quot; for any language
ecosystem. However, one of the coolest features of the Haskell
ecosystem (which wows all non-Haskellers when I show them), is the ability to search for useful functions by type
signature, using &lt;a href=&quot;http://hoogle.haskell.org/&quot;&gt;&lt;code&gt;Hoogle&lt;/code&gt;&lt;/a&gt; or
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://hayoo.fh-wedel.de/examples&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://hayoo.fh-wedel.de/examples&quot;&amp;gt;Hayoo&amp;lt;/span&amp;gt;. You can use other
criteria also, such as names; this can be useful if you have a guess
at what some useful function might be named.&lt;/p&gt;
&lt;p&gt;There seem to be two philosophies as far as using other people&apos;s
utility libraries (or even making one&apos;s own to share between different
projects):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reuse is great, let&apos;s do it&lt;/li&gt;
&lt;li&gt;every dependency is a potential liability, so it&apos;s better to
reinvent, or copy and paste, rather than use something of uncertain
quality or maintainability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tend to prefer reuse, but there have been times when I have copied
(and even modified) only just what I need, because I don&apos;t want the
rest of what is inside a sprawling library that depends transitively
on a whole lot of stuff I don&apos;t need. I think this is a granularity
issue. Many people have proposed the idea that since we have a Web
now, in theory the concept of &quot;library&quot; should go obsolete in favor of
micro-libraries, so to speak, maybe sometimes even to the level of
single standalone functions, and maybe even having a unique
identifier, but this topic is outside the scope of this article. (For
just one idea, check out Gabriel Gonzalez&apos;s
&lt;a href=&quot;http://www.haskellforall.com/2015/05/the-internet-of-code.html&quot;&gt;&quot;The internet of code&quot;&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;The situation is also complicated by the fact that often, so much can
be reinvented with only a couple of lines of Haskell code, so why even
bother looking for someone&apos;s implementation of it?&lt;/p&gt;
&lt;p&gt;But let&apos;s assume for this article that you are interested in finding
and using utility libraries. I show how to find some example functions
and reach two utility libraries that I use, very cleverly and
informatively named
&lt;a href=&quot;https://hackage.haskell.org/package/MissingH&quot;&gt;&lt;code&gt;MissingH&lt;/code&gt;&lt;/a&gt; and
&lt;a href=&quot;https://hackage.haskell.org/package/extra&quot;&gt;&lt;code&gt;extra&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;List/string example&lt;/h2&gt;
&lt;p&gt;A while ago I was manipulating strings (I was given &lt;code&gt;String&lt;/code&gt;, as
opposed to &lt;code&gt;Text&lt;/code&gt; or &lt;code&gt;ByteString&lt;/code&gt;) and needed to replace all
occurrences of a substring in a file path with a different
substring. For example, as an HSpec test item for a hypothetical
function creatively named &lt;code&gt;replace&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  it &quot;replaces all substrings within a string&quot; $ do
    replace &quot;abc&quot; &quot;d&quot; &quot;123abc123abc&quot; `shouldBe` &quot;123d123d&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sure, it would not be hard to write code to do this, but why not see
if it&apos;s out there already for me to use?&lt;/p&gt;
&lt;p&gt;What type should we search for? Maybe&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;String -&amp;gt; String -&amp;gt; String -&amp;gt; String
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;i.e.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;String     -- ^ matching substring
-&amp;gt; String  -- ^ replacement for the match
-&amp;gt; String  -- ^ original string
-&amp;gt; String  -- ^ result string
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK, let&apos;s try this type as a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://hayoo.fh-wedel.de/?query=String+-%3E+String+-%3E+String+-%3E+String&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://hayoo.fh-wedel.de/?query=String+-%3E+String+-%3E+String+-%3E+String&quot;&amp;gt;Hayoo search&amp;lt;/span&amp;gt;. Hmm,
the results are not too promising. At the top is some weird
undocumented regex thing, and that&apos;s probably not what we want.&lt;/p&gt;
&lt;h2&gt;An important search technique: make the fewest assumptions&lt;/h2&gt;
&lt;p&gt;Probably the single most important tip for getting good search results
from a type is to make the type as generic as possible: &lt;em&gt;the more type
variables, the better&lt;/em&gt;, and also use only type class constraints you
need. The operation we want is not really
string-specific. Rather, it was a list operation. So the real type we
want is&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This utility function makes the &lt;em&gt;least&lt;/em&gt; assumptions necessary to get
the job done, while working for &lt;code&gt;String&lt;/code&gt; because &lt;code&gt;String&lt;/code&gt; is just
&lt;code&gt;[Char]&lt;/code&gt; and &lt;code&gt;Char&lt;/code&gt; is an instance of the &lt;code&gt;Eq&lt;/code&gt; type class. But for the
purpose of replacements, we don&apos;t care about whether we&apos;re comparing
characters: we only care that whatever element type is involved in
these subsequences, we can compare for equality.&lt;/p&gt;
&lt;p&gt;The
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://hayoo.fh-wedel.de/?query=Eq+a+%3D%3E+[a]+-%3E+[a]+-%3E+[a]+-%3E+[a]&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://hayoo.fh-wedel.de/?query=Eq+a+%3D%3E+[a]+-%3E+[a]+-%3E+[a]+-%3E+[a]&quot;&amp;gt;Hayoo search&amp;lt;/span&amp;gt;
immediately brings up much more promising results than with &lt;code&gt;String&lt;/code&gt;,
from packages such as &lt;code&gt;utility-ht&lt;/code&gt;, &lt;code&gt;MissingH&lt;/code&gt;, and &lt;code&gt;extra&lt;/code&gt;. &lt;code&gt;pandoc&lt;/code&gt;
also popped up, but that&apos;s a
&lt;a href=&quot;http://pandoc.org/&quot;&gt;huge text-processing tool&lt;/a&gt;, not a library I would
pull in for just one tiny utility function! (Note that &lt;code&gt;pandoc&lt;/code&gt; was
covered in a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/guest-posts/2013-12-12-24-days-of-hackage-pandoc.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/guest-posts/2013-12-12-24-days-of-hackage-pandoc.html&quot;&amp;gt;2013 day of Hackage&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;The
&lt;a href=&quot;http://hoogle.haskell.org/?hoogle=Eq+a+%3D%3E+%5Ba%5D+-%3E+%5Ba%5D+-%3E+%5Ba%5D+-%3E+%5Ba%5D&amp;amp;scope=set%3Astackage&quot;&gt;Hoogle search at &lt;code&gt;hoogle.haskell.org&lt;/code&gt;&lt;/a&gt;
search works pretty well also. (Note that the Hoogle search at the old
site &lt;a href=&quot;https://www.haskell.org/hoogle/?hoogle=Eq+a+%3D%3E+%5Ba%5D+-%3E+%5Ba%5D+-%3E+%5Ba%5D+-%3E+%5Ba%5D&quot;&gt;gives bad results&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;Modifying our tests to check the function with the more generic type&lt;/h2&gt;
&lt;p&gt;I briefly mentioned refactoring HSpec tests on
&lt;a href=&quot;/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/&quot;&gt;day 3&lt;/a&gt;. Here&apos;s
how to test multiple implementations of the same desired function
(let&apos;s go with &lt;code&gt;MissingH&lt;/code&gt; and &lt;code&gt;extra&lt;/code&gt;), and also test &lt;code&gt;replace&lt;/code&gt; on
different input types: both &lt;code&gt;String&lt;/code&gt; (which is just &lt;code&gt;[Char]&lt;/code&gt;) and &lt;code&gt;[Int]&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module MissingHExtraExampleSpec where

-- | From MissingH
import qualified Data.List.Utils as ListUtils

-- | From extra
import qualified Data.List.Extra as ListExtra

import Test.Hspec (Spec, hspec, describe, it, shouldBe)

-- | Required for auto-discovery.
spec :: Spec
spec =
  describe &quot;MissingH and extra&quot; $ do
    describeReplace &quot;MissingH&quot; ListUtils.replace
    describeReplace &quot;extra&quot; ListExtra.replace
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But the following fails to compile! Why?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Fails to compile!
describeReplace
  :: String  -- ^ description
  -&amp;gt; (Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a])  -- ^ replace
  -&amp;gt; Spec
describeReplace description replace =
  describe description $ do
    it &quot;replaces all substrings within a string&quot; $ do
      replace &quot;abc&quot; &quot;d&quot; &quot;123abc123abc&quot; `shouldBe` &quot;123d123d&quot;
    it &quot;replaces all int sublists within an int list&quot; $ do
      replace [0 :: Int, 1] [100, 101, 102] [0, 1, 2, 3, 0, 0, 1, 4]
        `shouldBe` [100, 101, 102, 2, 3, 0, 100, 101, 102, 4]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A note on the critical use of higher-rank types for refactoring&lt;/h3&gt;
&lt;p&gt;The error message is useful if you know what is going on, but not
useful but if not. Yes, we need higher-rank types.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Illegal polymorphic or qualified type:
      Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]
    Perhaps you intended to use RankNTypes or Rank2Types
    In the type signature for ‘describeReplace’:
      describeReplace :: String
                         -&amp;gt; (Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]) -&amp;gt; Spec
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Higher-rank types are a
supported GHC extension discussed in a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/guest-posts/2014-12-18-rank-n-types.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/guest-posts/2014-12-18-rank-n-types.html&quot;&amp;gt;2014 Day of GHC Extensions&amp;lt;/span&amp;gt;. Higher-rank
types are tremendously useful and a feature that is missing from type
systems in most other languages.&lt;/p&gt;
&lt;p&gt;Briefly, the &lt;code&gt;replace&lt;/code&gt; function we want has the type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;forall a. Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where we have explicitly quantified the type variable &lt;code&gt;a&lt;/code&gt; so that the
&lt;code&gt;Eq&lt;/code&gt; constraint applies inside its scope. Read the type as &quot;for all
types &lt;code&gt;a&lt;/code&gt; such that &lt;code&gt;a&lt;/code&gt; is a member of the &lt;code&gt;Eq&lt;/code&gt; type class, &lt;code&gt;[a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;/code&gt;&quot;. Ordinary Haskell without the extension doesn&apos;t
allow you to write down this type as a parameter into some function,
because it doesn&apos;t have explicit &lt;code&gt;forall&lt;/code&gt; and implicitly inserts a
&lt;code&gt;forall&lt;/code&gt; for you at the top level for everything, but then that is the
wrong scoping for what we want to say.&lt;/p&gt;
&lt;p&gt;So we need to add the directive and change the &lt;code&gt;replace&lt;/code&gt; parameter
type to have explicit quantification, and all is OK:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE RankNTypes #-}

describeReplace
  :: String  -- ^ description
  -&amp;gt; (forall a. Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a])  -- ^ replace
  -&amp;gt; Spec
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A note on implicit quantification in Haskell and related languages&lt;/h3&gt;
&lt;p&gt;I kind of wish type variable quantification were explicit in Haskell,
i.e., &lt;em&gt;requiring&lt;/em&gt; &lt;code&gt;forall&lt;/code&gt; annotations, as
&lt;a href=&quot;http://www.purescript.org/&quot;&gt;PureScript&lt;/a&gt;
&lt;a href=&quot;https://github.com/purescript/purescript/wiki/Differences-from-Haskell&quot;&gt;does&lt;/a&gt;,
because understanding type variable quantification is important for
fully understanding what is going on at the type level in languages
such as ML and Haskell.&lt;/p&gt;
&lt;p&gt;For example, here&apos;s a good article about
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jozefg.bitbucket.org/posts/2015-03-27-unsafe.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jozefg.bitbucket.org/posts/2015-03-27-unsafe.html&quot;&amp;gt;how to understand the value restriction and monomorphism restriction&amp;lt;/span&amp;gt;,
which can be puzzling if you don&apos;t have the mental model of what is going
on underneath.&lt;/p&gt;
&lt;h2&gt;The joy of browsing libraries&lt;/h2&gt;
&lt;p&gt;One thing that can happen if you find a utility function useful, is
you can browse around in the module that contains it, or the whole
library, just looking for stuff you might find useful in the
future. For example, I find Neil Mitchell&apos;s &lt;code&gt;extra&lt;/code&gt; pleasant enough
(good names and great documentation on Hackage) that I use it when I
can, and I recommend checking it out. The GitHub repo of &lt;code&gt;MissingH&lt;/code&gt;
suggests that it is not really being updated any more, so I&apos;m
downplaying my use of it.&lt;/p&gt;
&lt;p&gt;In the world of physical books and magazines, I still go to my local
libraries and browse both the new book/magazine/DVD shelves as well as
the look around on the shelf of an item I find in the stacks to see if
there&apos;s something related that I might enjoy checking out.&lt;/p&gt;
&lt;h2&gt;Digging more deeply&lt;/h2&gt;
&lt;p&gt;Also, note that if you&apos;re on the hunt for possibly useful libraries,
but without an immediate need, you can also find them just by looking
at the dependency list that popular libraries already use. I confess
that I have sometimes clicked away on dependencies on a Hackage
page. If you transitively click around on Edward Kmett&apos;s
&lt;a href=&quot;https://hackage.haskell.org/package/lens&quot;&gt;&lt;code&gt;lens&lt;/code&gt;&lt;/a&gt; dependencies, you
will reach a huge number of useful libraries, because he is the master
of the universe of code reuse.&lt;/p&gt;
&lt;p&gt;The physical book or paper analogy here, of course, is looking at the
references or bibliography to find more things to read.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For day 6, I gave an example of how to search for a function on Hoogle
and Hayoo, and go polymorphic for a good result. I recommend using the
quality &lt;code&gt;extra&lt;/code&gt; utility library.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 5: should-not-typecheck: making Haskell sort of dynamically typed with deferred type errors</title><link>https://franklinchen.com/blog/2015/12/05/24-days-of-hackage-2015-day-5-should-not-typecheck-making-haskell-sort-of-dynamically-typed-with-deferred-type-errors/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/05/24-days-of-hackage-2015-day-5-should-not-typecheck-making-haskell-sort-of-dynamically-typed-with-deferred-type-errors/</guid><pubDate>Sat, 05 Dec 2015 13:20:32 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 5&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vjy10/24_days_of_hackage_2015_day_5_shouldnottypecheck/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Have you ever been frustrated when using a statically typed language
because there&apos;s a type error somewhere in your code base but you want
to run your program anyway, either because you don&apos;t care about that
remote type error that has nothing to do with what you&apos;re working on,
or because you want to step through your code and debug what the type
error really is? I certainly have.&lt;/p&gt;
&lt;p&gt;Also, have you ever wanted to write a unit test to verify that your
typed code disallows code you want to disallow, but you are
frustrated because how do you write code in a typed language that
says, &quot;This code (that you won&apos;t typecheck) won&apos;t typecheck&quot; and passes
the typechecker and runs?&lt;/p&gt;
&lt;p&gt;Welcome to the land of GHC&apos;s
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime&quot;&gt;&quot;deferred type errors&quot;&lt;/a&gt;,
a feature that has been part of GHC &lt;a href=&quot;https://downloads.haskell.org/~ghc/7.6.1/docs/html/users_guide/defer-type-errors.html&quot;&gt;since version 7.6.1&lt;/a&gt; in 2013. Since
this was not covered in Ollie&apos;s
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/pages/2014-12-01-24-days-of-ghc-extensions.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/pages/2014-12-01-24-days-of-ghc-extensions.html&quot;&amp;gt;2014 series &quot;24 Days of GHC Extensions&quot;&amp;lt;/span&amp;gt;,
I decided to bring it up here, and in the context of a cute package, &lt;a href=&quot;https://hackage.haskell.org/package/should-not-typecheck&quot;&gt;&lt;code&gt;should-not-typecheck&lt;/code&gt;&lt;/a&gt;
that hooks up with HSpec to make assertions that something won&apos;t
typecheck.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Since LTS does not know about this obscure package, Stack helpfully
tells us exactly what to add to our &lt;code&gt;stack.yaml&lt;/code&gt; to bring it in:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extra-deps:
- should-not-typecheck-2.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Let&apos;s write some tests&lt;/h2&gt;
&lt;p&gt;The full documentation of &lt;code&gt;should-not-typecheck&lt;/code&gt; is right there on
&lt;a href=&quot;https://hackage.haskell.org/package/should-not-typecheck&quot;&gt;its Hackage page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First, we need to enable the GHC option &lt;code&gt;-fdefer-type-errors&lt;/code&gt; in the
test module, with a directive:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# OPTIONS_GHC -fdefer-type-errors #-}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Our first test&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import ShouldNotTypecheckExample

import Test.Hspec ( Spec, hspec, describe, it
                  , shouldBe
                  , shouldThrow, anyException
                  )
import Test.ShouldNotTypecheck (shouldNotTypecheck)

spec :: Spec
spec =
  describe &quot;should-not-typecheck&quot; $ do
    it &quot;should not allow mapping negation over a list of strings&quot; $ do
      shouldNotTypecheck (map not [&quot;hello&quot;, &quot;world&quot;])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s self-explanatory. We can&apos;t do a Boolean negation on a
string. Haskell is not a &quot;truthy&quot;-based language, but a truth-based
language.&lt;/p&gt;
&lt;h2&gt;Some puzzling code&lt;/h2&gt;
&lt;p&gt;Now let&apos;s look at the &lt;code&gt;ShouldNotTypecheckExample&lt;/code&gt; module:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# OPTIONS_GHC -fdefer-type-errors #-}

module ShouldNotTypecheckExample (thisWorks, thisFails) where

thisWorks :: String
thisWorks =
  fst (&quot;hello&quot;, [&quot;world&quot; / True, &quot;!&quot;])

thisFails :: String
thisFails =
  snd (&quot;hello&quot;, [&quot;world&quot; / True, &quot;!&quot;])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pause for a moment, and think of what should happen when &lt;code&gt;thisWorks&lt;/code&gt;
and &lt;code&gt;thisFails&lt;/code&gt; are used, and in what way, and why. In both cases, we
have a tuple and are returning the first element or the second element of
the tuple. The second element is a list that is clearly ill-typed,
because it contains something that is nonsensical (division of a
string by a boolean).&lt;/p&gt;
&lt;h2&gt;The role of laziness&lt;/h2&gt;
&lt;p&gt;To understand what happens in the following tests, you need to
understand how laziness works in Haskell. The word &quot;lazy&quot; has come to
be used for many different ideas and constructs in different
programming languages, but Haskell&apos;s &quot;laziness&quot; is unique. A full
discussion is outside the scope of this article, but I thought that
showing what happens with deferred type errors might be a gateway
toward better understanding the execution model of Haskell.&lt;/p&gt;
&lt;h3&gt;Never reached&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;you can run code even if it contains ill-typed parts&quot; $ do
      thisWorks `shouldBe` &quot;hello&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works because tuples in Haskell are lazy, and therefore in
ordinary typechecking, taking the first element of a well-typed tuple
succeeds no matter what is in the second element of the tuple. The
difference when operating in deferred typechecking mode is that the
tuple doesn&apos;t even need to be well-typed, and the second element can
be complete junk, as it is here. So this example is straightforward if
you consider that what GHC does is somehow push the type error into a
reasonably small context so that outside of it, things still typecheck
and run normally.&lt;/p&gt;
&lt;h3&gt;Laziness all the way down&lt;/h3&gt;
&lt;p&gt;So what happens if we get the second element of the tuple, it is junk,
and take its length?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;deferred type errors are only lazily reached&quot; $ do
      length thisFails `shouldBe` 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The answer is that everything is still fine, because the embedded list
inside the lazy tuple is a lazy list (because lists in Haskell are
lazy), and &lt;code&gt;length&lt;/code&gt; never looks at the elements of the list, only
counts their number, so it passes over the junky thunk for &lt;code&gt;&quot;world&quot; / True&lt;/code&gt; perfectly fine without needing to evaluate it.&lt;/p&gt;
&lt;h3&gt;Forcing the laziness&lt;/h3&gt;
&lt;p&gt;To explicitly force laziness into fully evaluated data (the kind of
data in standard programming languages), we need to use the
&lt;a href=&quot;https://hackage.haskell.org/package/deepseq&quot;&gt;&lt;code&gt;deepseq&lt;/code&gt;&lt;/a&gt; package. It&apos;s
work to fully, deeply evaluate something in Haskell! We use
&lt;a href=&quot;https://hackage.haskell.org/package/deepseq-1.4.1.2/docs/Control-DeepSeq.html#v:force&quot;&gt;&lt;code&gt;force&lt;/code&gt;&lt;/a&gt;
from that package.&lt;/p&gt;
&lt;p&gt;In order to catch, in HSpec, the exception we expect to finally get, we
also need to use
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Exception.html#v:evaluate&quot;&gt;&lt;code&gt;evaluate&lt;/code&gt;&lt;/a&gt;
from &lt;code&gt;Control.Exception&lt;/code&gt; in
&lt;a href=&quot;https://hackage.haskell.org/package/base&quot;&gt;&lt;code&gt;base&lt;/code&gt;&lt;/a&gt;, the main package
of the ecosystem (discussed
in a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-23-24-days-of-hackage-base.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-23-24-days-of-hackage-base.html&quot;&amp;gt;2012 Day of Hackage post&amp;lt;/span&amp;gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Control.Exception (evaluate)
import Control.DeepSeq (force)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Our test (which for simplicity is coarse in that it catches any
exception, rather than the specific typechecking exception):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    it &quot;deferred type errors cause an exception only when reached&quot; $ do
      evaluate (force thisFails) `shouldThrow` anyException
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The deep evaluation will go all the way down to the junky expression
in the list in the tuple of our example, and a typechecking error is
thrown there at run time, as expected.&lt;/p&gt;
&lt;p&gt;Suppose we were just evaluating &lt;code&gt;thisFails&lt;/code&gt; from code, say within
GHCi. This is what we get:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*Main&amp;gt; import ShouldNotTypecheckExample
*Main ShouldNotTypecheckExample&amp;gt; thisFails
&quot;*** Exception: /Users/chen/Sync/haskell/twenty-four-days2015-of-hackage/src/ShouldNotTypecheckExample.hs:14:26:
    No instance for (Fractional Char) arising from a use of ‘/’
    In the expression: &quot;world&quot; / True
    In the expression: [&quot;world&quot; / True, &quot;!&quot;]
    In the first argument of ‘snd’, namely
      ‘(&quot;hello&quot;, [&quot;world&quot; / True, &quot;!&quot;])’
(deferred type error)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Haskell is not really being dynamic here&lt;/h2&gt;
&lt;p&gt;So is Haskell dynamically typed then, when running in this mode? Not
really. It&apos;s faking it. What it&apos;s basically doing is that the
typechecker is &lt;em&gt;still finding the type error at compile time&lt;/em&gt;, but
then secretly creating the exception information at the site of the
crappy code and replacing that code with a call to throw that
exception. The technical details are
&lt;a href=&quot;http://dreixel.net/research/pdf/epdtecp.pdf&quot;&gt;in this paper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is completely different from the dynamic checking where nothing
is checked at compile time and an error is discovered during the
course of run time execution. Here, the error is discovered up front,
stashed away, and kept a secret until or unless it is demanded.&lt;/p&gt;
&lt;h2&gt;For more on laziness and forcing&lt;/h2&gt;
&lt;p&gt;Simon Marlow&apos;s free book
&lt;a href=&quot;http://chimera.labs.oreilly.com/books/1230000000929&quot;&gt;&quot;Parallel and Concurrent Programming in Haskell&quot;&lt;/a&gt;
has chapters on evaluation strategies, starting with &lt;a href=&quot;http://chimera.labs.oreilly.com/books/1230000000929/ch02.html#sec_par-eval-sudoku2&quot;&gt;chapter 2&lt;/a&gt;. This stuff is subtle.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For day 5, I introduced the &lt;code&gt;should-not-typecheck&lt;/code&gt; package and briefly
discussed Haskell&apos;s lazy evaluation and how it interacts with GHC&apos;s
deferred type errors. A later Day of Hackage will venture into the
world of doing &quot;real&quot; dynamic typing in Haskell.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 4: wreq: Web client programming; with notes on lens and operator syntax</title><link>https://franklinchen.com/blog/2015/12/04/24-days-of-hackage-2015-day-4-wreq-web-client-programming-with-notes-on-lens-and-operator-syntax/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/04/24-days-of-hackage-2015-day-4-wreq-web-client-programming-with-notes-on-lens-and-operator-syntax/</guid><pubDate>Fri, 04 Dec 2015 22:05:23 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 4&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vihed/24_days_of_hackage_2015_day_4_wreq_web_client/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;In the late 1990s, I eagerly bought the book
&lt;a href=&quot;http://www.oreilly.com/openbook/webclient/&quot;&gt;&quot;Web Client Programming with Perl&quot;&lt;/a&gt;
and used the &lt;a href=&quot;http://search.cpan.org/dist/libwww-perl/lib/LWP.pm&quot;&gt;LWP&lt;/a&gt;
library to scrape the Web in automated fashion. I continued doing that
into the 2000s. I am happy that nowadays, I can just use Haskell to do
this kind of programming, in a succinct way also.&lt;/p&gt;
&lt;p&gt;Today&apos;s topic is &lt;a href=&quot;http://www.serpentine.com/wreq/&quot;&gt;&lt;code&gt;wreq&lt;/code&gt;&lt;/a&gt;,
&lt;a href=&quot;http://www.serpentine.com/blog/&quot;&gt;Bryan O&apos;Sullivan&lt;/a&gt;&apos;s high-level
library for doing Web client programming designed specifically for
usability.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wreq&lt;/code&gt; makes use of the
&lt;a href=&quot;https://hackage.haskell.org/package/aeson&quot;&gt;&lt;code&gt;aeson&lt;/code&gt;&lt;/a&gt; ecosystem for JSON
and &lt;a href=&quot;https://hackage.haskell.org/package/lens&quot;&gt;&lt;code&gt;lens&lt;/code&gt;&lt;/a&gt; and ecosystem,
including
&lt;a href=&quot;https://hackage.haskell.org/package/lens-aeson&quot;&gt;&lt;code&gt;lens-aeson&lt;/code&gt;&lt;/a&gt;, so you
may want to check out Ollie&apos;s 2012 Days of Hackage posts on
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-07-24-days-of-hackage-aeson.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-07-24-days-of-hackage-aeson.html&quot;&amp;gt;aeson&amp;lt;/span&amp;gt;
and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-09-24-days-of-hackage-lens.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-09-24-days-of-hackage-lens.html&quot;&amp;gt;lens&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Since &lt;code&gt;wreq&lt;/code&gt; already has an extensive
&lt;a href=&quot;http://www.serpentine.com/wreq/&quot;&gt;tutorial and reference documentation&lt;/a&gt;,
I&apos;m not going to repeat its explanations. Instead, I&apos;m going to give an
example of use that should be simple enough to be understood from
context, then discuss the issue of using operator syntax in Haskell.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;The task&lt;/h2&gt;
&lt;p&gt;I&apos;m a member of many groups on &lt;a href=&quot;https://www.meetup.com/&quot;&gt;Meetup&lt;/a&gt;. It&apos;s
often useful for me to get information using the official
&lt;a href=&quot;https://www.meetup.com/meetup_api/&quot;&gt;Meetup API&lt;/a&gt; rather than go around
clicking on a Web site on or a mobile app. Why do by hand what I can
do much more efficiently and correctly with code?&lt;/p&gt;
&lt;p&gt;Here&apos;s a very simplified example of something I might want to do with
Meetup. I&apos;ve been active in the
&lt;a href=&quot;http://www.codeandsupply.co/&quot;&gt;Pittsburgh Code and Supply&lt;/a&gt; community,
which has a
&lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/&quot;&gt;Meetup site&lt;/a&gt; with a
packed calendar of events (it&apos;s on hiatus now in December for the
holidays, but is otherwise very active). Maybe I want to find out what
upcoming events they are, and search for events of interest according
to some criteria. For our toy example here, let&apos;s say I want to find
the ten upcoming events and get their names and venue names, and make
sure there&apos;s at least one event that has a name and venue name already
set up (sometimes, an event is proposed but no venue has been found
yet).&lt;/p&gt;
&lt;h2&gt;A test&lt;/h2&gt;
&lt;p&gt;Yesterday,
&lt;a href=&quot;/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/&quot;&gt;day 3&lt;/a&gt;
of this article series, I mentioned liking using HSpec, so let&apos;s use
HSpec.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# LANGUAGE OverloadedStrings #-}

import WreqExample (GroupId, eventName, venueName, getMeetupEventInfos)
import Test.Hspec ( Spec, hspec, describe, it
                  , shouldSatisfy, shouldNotSatisfy
                  )
import qualified Data.Text as Text
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We are using the &lt;a href=&quot;https://hackage.haskell.org/package/text&quot;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/a&gt;
packed Unicode string type, because that&apos;s what &lt;code&gt;wreq&lt;/code&gt;
uses. &lt;code&gt;OverloadedStrings&lt;/code&gt; is a convenient GHC extension that allows
string literals in code to be treated as &lt;code&gt;Text&lt;/code&gt; values rather than
&lt;code&gt;String&lt;/code&gt;. Ollie discusses this extension in his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2014-12-17-overloaded-strings.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2014-12-17-overloaded-strings.html&quot;&amp;gt;2014 Days of GHC Extensions&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Also, since I&apos;m operating in test-driven development style, I wrote
this test first, before writing the &lt;code&gt;WreqExample&lt;/code&gt; module: I only wrote
the imports for what I need for the test.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;wreq&quot; $ do
    it &quot;there are named, located Pittsburgh Code and Supply events coming up&quot; $ do
      -- Warning! This is a stateful test going out to the Web.
      events &amp;lt;- getMeetupEventInfos pittsburghCodeAndSupplyId
      events `shouldNotSatisfy` null
      events `shouldSatisfy` any
        (\event -&amp;gt; (not . Text.null . eventName) event
                   &amp;amp;&amp;amp; (not . Text.null . venueName) event)

pittsburghCodeAndSupplyId :: GroupId
pittsburghCodeAndSupplyId = &quot;13452572&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Module signatures&lt;/h2&gt;
&lt;p&gt;If Haskell had
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jozefg.bitbucket.org/posts/2015-01-08-modules.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jozefg.bitbucket.org/posts/2015-01-08-modules.html&quot;&amp;gt;module signatures, like Standard ML and OCaml do&amp;lt;/span&amp;gt;,
I would write an explicit module signature for the module I intend to
implement that will conform to that signature, but Haskell doesn&apos;t, so
the best we can do is operate in &quot;duck typing&quot; manner at the module
level, relying implicitly on compilation to fail on import of a
conforming module implementation rather than on matching against an
explicit signature without the need for an implementation.&lt;/p&gt;
&lt;p&gt;Here are the types we need (in a pseudo-syntax as though Haskell had
module signatures):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type GroupId    -- abstract

type EventInfo  -- abstract

-- abstract type accessors
eventName :: EventInfo -&amp;gt; Text
venueName :: EventInfo -&amp;gt; Text

getMeetupEventInfos :: GroupId -&amp;gt; IO [EventInfo]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Implementation&lt;/h2&gt;
&lt;h3&gt;Imports&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import Network.Wreq (Options, defaults, param, getWith, asValue, responseBody)
import Data.Text (Text)
import Data.Aeson (Value)
import Control.Lens (view, set, toListOf)
import Data.Aeson.Lens (key, _Array, _String)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Types&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;-- | Information that we care about from a Meetup event.
data EventInfo =
  EventInfo { eventName :: Text
            , venueName :: Text
            }
  deriving (Show)

-- | A valid Meetup group ID.
type GroupId = Text
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;The Web client part&lt;/h3&gt;
&lt;p&gt;Since we&apos;re only making one request, and are not doing any error
handling, but letting &lt;code&gt;wreq&lt;/code&gt; throw exceptions instead, the Web client
part is very brief. The Meetup API allows returning information as
JSON.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;meetupEventsUrl :: String
meetupEventsUrl = &quot;https://api.meetup.com/2/events&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We perform a &lt;code&gt;GET&lt;/code&gt; with query parameters. &lt;code&gt;wreq&lt;/code&gt; uses lens as its
domain-specific language for creating options for &lt;code&gt;GET&lt;/code&gt;, so let&apos;s
create a &lt;code&gt;wreq&lt;/code&gt; &lt;code&gt;Options&lt;/code&gt; value, by setting the parameters one after
another using a builder pattern starting with the &lt;code&gt;wreq&lt;/code&gt; &lt;code&gt;defaults&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eventsOptions :: GroupId
              -&amp;gt; Options
eventsOptions groupId =
  set (param &quot;page&quot;) [&quot;10&quot;] (
    set (param &quot;order&quot;) [&quot;time&quot;] (
      set (param &quot;status&quot;) [&quot;upcoming&quot;] (
        set (param &quot;group_id&quot;) [groupId] (
          set (param &quot;format&quot;) [&quot;json&quot;] defaults))))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We begin by going out to the Web to get back a response, which is a
&lt;a href=&quot;https://hackage.haskell.org/package/bytestring-0.10.6.0/docs/Data-ByteString-Lazy.html&quot;&gt;lazy &lt;code&gt;ByteString&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getMeetupEventInfos :: GroupId -&amp;gt; IO [EventInfo]
getMeetupEventInfos groupId = do
  response &amp;lt;- getWith (eventsOptions groupId) meetupEventsUrl
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;The JSON part&lt;/h3&gt;
&lt;p&gt;Then we parse the lazy &lt;code&gt;ByteString&lt;/code&gt; response, including the headers
and the body, into an untyped JSON object, an &lt;code&gt;aeson&lt;/code&gt;
&lt;a href=&quot;https://hackage.haskell.org/package/aeson-0.10.0.0/docs/Data-Aeson.html#t:Value&quot;&gt;&lt;code&gt;Value&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  jsonResponse &amp;lt;- asValue response
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More precisely, &lt;a href=&quot;https://hackage.haskell.org/package/aeson-0.10.0.0/docs/src/Data-Aeson-Types-Internal.html#Value&quot;&gt;&lt;code&gt;Value&lt;/code&gt; is unityped&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type Object = HashMap Text Value

type Array = Vector Value

data Value = Object !Object
           | Array !Array
           | String !Text
           | Number !Scientific
           | Bool !Bool
           | Null
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;The lens part&lt;/h3&gt;
&lt;p&gt;It was annoying figuring out from the official
Meetup API site what fields I needed from the response and what their
types were supposed to be. In practice I just saved off JSON from a
representative query and looked at some events to see what I wanted. I
was told where to find the
&lt;a href=&quot;meetup.json&quot;&gt;automatically generated documentation of all the API methods&lt;/a&gt;
but it was not ideal. A later Day of Hackage will discuss what I did
about this problem.&lt;/p&gt;
&lt;p&gt;We extract the list of events, using a traversal to get the whole
list, which is encoded as a JSON array in the top level JSON object&apos;s
&lt;code&gt;results&lt;/code&gt; field:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  let events = toListOf (responseBody
                         . key &quot;results&quot;
                         . _Array . traverse
                        ) jsonResponse
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here we use &lt;code&gt;toListOf&lt;/code&gt; from lens with a traversal and a JSON object to
pull out everything from that traversal.&lt;/p&gt;
&lt;p&gt;Finally, since we only want, for each event, its name and
its venue&apos;s name (the venue&apos;s name is actually a field in a venue
object):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  return (map jsonToEventInfo events)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We again use lens, at the level of an individual event object, to
extract what we want from it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Extract our typed data model from an untyped JSON object.
jsonToEventInfo :: Value -&amp;gt; EventInfo
jsonToEventInfo json =
  EventInfo { eventName = view (key &quot;name&quot; . _String) json
            , venueName = view (key &quot;venue&quot;
                                . key &quot;name&quot; . _String) json
            }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here we use the &lt;code&gt;view&lt;/code&gt; function of &lt;code&gt;lens&lt;/code&gt;, to apply a lens to the JSON
object to pull a field out of it.&lt;/p&gt;
&lt;p&gt;And we&apos;re done! We&apos;ve written a script that looks pretty much like
what you&apos;d write in Perl or Python. It will also &quot;fail&quot; in similar
ways, because we&apos;re basically not using any types at all; even the
final result just has strings, which may or may not be empty, whatever
that&apos;s supposed to mean. For example, if you try to find a field by a
string key that doesn&apos;t exist, the particular code here will just
silently give back an empty string. Can we do better? Yes, there are
various ways to do better. Stay tuned for a later Day of Hackage.&lt;/p&gt;
&lt;h2&gt;Lens operator syntax&lt;/h2&gt;
&lt;p&gt;If you&apos;ve already used &lt;code&gt;wreq&lt;/code&gt; or &lt;code&gt;lens&lt;/code&gt;, you may have noticed
something strange above: I didn&apos;t use any &lt;code&gt;lens&lt;/code&gt; operator syntax. This
was deliberate. Although the &lt;code&gt;wreq&lt;/code&gt; tutorial gives a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.serpentine.com/wreq/tutorial.html#a-quick-lens-backgrounder&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.serpentine.com/wreq/tutorial.html#a-quick-lens-backgrounder&quot;&amp;gt;little bit of background on lens&amp;lt;/span&amp;gt;,
the reality is that when some friends who were not experienced lensers
or Haskellers asked me how I do Web client programming in Haskell, and
I pointed to &lt;code&gt;wreq&lt;/code&gt; as being pretty cool, they got immediately stuck
on the lens stuff. Looking back at the tutorial, I do see that it
jumps straight into operator soup. This is unfortunate. You can
immediately use libraries like &lt;code&gt;wreq&lt;/code&gt; without having the lens
operators memorized already. You have to understand some facts (such
as the use of the function composition operator to compose lenses) and
have an idea of how the types work out, but one thing you don&apos;t need
is the funny operators. I think it&apos;s best to understand how to do
things without operators before starting to use them as a convenient
shortcut.&lt;/p&gt;
&lt;p&gt;For example, an idiomatic way to set the options object, as presented
in the &quot;whirlwind tour&quot; section of the &lt;code&gt;wreq&lt;/code&gt; tutorial, is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Control.Lens ((&amp;amp;), (.~))

eventsOptions :: GroupId
              -&amp;gt; Options
eventsOptions groupId = defaults
  &amp;amp; param &quot;format&quot; .~ [&quot;json&quot;]
  &amp;amp; param &quot;group_id&quot; .~ [groupId]
  &amp;amp; param &quot;status&quot; .~ [&quot;upcoming&quot;]
  &amp;amp; param &quot;order&quot; .~ [&quot;time&quot;]
  &amp;amp; param &quot;page&quot; .~ [&quot;10&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I don&apos;t like the idea of newcomers to this library just copying and
pasting stuff without understanding what it does, or getting the
impression that these operators are somehow built into the Haskell
language or required for using the library. People really do get these
impressions.&lt;/p&gt;
&lt;p&gt;I happen to like the reverse function operator &lt;code&gt;&amp;amp;&lt;/code&gt; a lot, although
it&apos;s not as suggestive as the exact same reverse function operator in
many other languages (such as F#, OCaml, Elm, Elixir) in the form of a pipe
instead
&lt;a href=&quot;http://package.elm-lang.org/packages/elm-lang/core/3.0.0/Basics#%7C%3E&quot;&gt;&lt;code&gt;|&amp;gt;&lt;/code&gt;&lt;/a&gt;,
so I feel OK about using it.&lt;/p&gt;
&lt;p&gt;But the &lt;code&gt;.~&lt;/code&gt; is I think not very suggestive to newcomers to
&lt;code&gt;lens&lt;/code&gt;. Is &lt;code&gt;set lens newValue object&lt;/code&gt; so much worse to write or read than
&lt;code&gt;object &amp;amp; lens .~ newValue&lt;/code&gt;?&lt;/p&gt;
&lt;h2&gt;(Update of 2014-12-12) Thinking compositionally&lt;/h2&gt;
&lt;p&gt;One thing that is unfortunately lost if you use pipeline application
operators such as &lt;code&gt;&amp;amp;&lt;/code&gt; is the &lt;em&gt;compositionality&lt;/em&gt; that underlies the
power of lenses. So here is a refactoring of &lt;code&gt;eventsOptions&lt;/code&gt; that
shows how to best think of what we are doing, which is creating a
&quot;builder&quot; and applying it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eventsOptionsRefactored :: GroupId -&amp;gt; Options
eventsOptionsRefactored groupId = builder defaults
  where builder = eventsOptionsBuilder groupId

-- | Recall: type is sugar for GroupId -&amp;gt; (Options -&amp;gt; Options)
eventsOptionsBuilder :: GroupId -&amp;gt; Options -&amp;gt; Options
eventsOptionsBuilder groupId =
  set (param &quot;page&quot;) [&quot;10&quot;]
  . set (param &quot;order&quot;) [&quot;time&quot;]
  . set (param &quot;status&quot;) [&quot;upcoming&quot;]
  . set (param &quot;group_id&quot;) [groupId]
  . set (param &quot;format&quot;) [&quot;json&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the separation of concerns here: instead of thinking of building
an &lt;code&gt;Options&lt;/code&gt; object as&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;starting with a default&lt;/li&gt;
&lt;li&gt;successively applying an extra setting to it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;we think of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;creating an options builder through composition&lt;/li&gt;
&lt;li&gt;applying the builder to the default&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Partial application in functional programming is used here to
implement the builder pattern: &lt;code&gt;eventsOptionsBuilder&lt;/code&gt; takes one
argument, and returns an &lt;code&gt;Options&lt;/code&gt; transformer of type &lt;code&gt;Options -&amp;gt; Options&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Code golf?&lt;/h2&gt;
&lt;p&gt;To illustrate both the up sides and down sides of using operators (but
in this case mostly down sides, I think), here is a code golf version
of the entire code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Network.Wreq (Options, defaults, param, getWith, asValue, responseBody)
import Data.Text (Text)
import Control.Lens ((&amp;amp;), (.~), (^.), (^..))
import Data.Aeson.Lens (key, _Array, _String)
import Control.Arrow ((&amp;gt;&amp;gt;&amp;gt;), (&amp;amp;&amp;amp;&amp;amp;))

meetupEventsUrl :: String
meetupEventsUrl = &quot;https://api.meetup.com/2/events&quot;

-- | A valid Meetup group ID.
type GroupId = Text

-- | For searching for events in a Meetup group.
eventsOptions :: GroupId
              -&amp;gt; Options
eventsOptions groupId = defaults
  &amp;amp; param &quot;format&quot; .~ [&quot;json&quot;]
  &amp;amp; param &quot;group_id&quot; .~ [groupId]
  &amp;amp; param &quot;status&quot; .~ [&quot;upcoming&quot;]
  &amp;amp; param &quot;order&quot; .~ [&quot;time&quot;]
  &amp;amp; param &quot;page&quot; .~ [&quot;10&quot;]

-- | Code golf version. Don&apos;t do this?
getMeetupNameAndVenues :: GroupId -&amp;gt; IO [(Text, Text)]
getMeetupNameAndVenues groupId =
  getWith (eventsOptions groupId) meetupEventsUrl
  &amp;gt;&amp;gt;= asValue
  &amp;gt;&amp;gt;= ((^.. responseBody
        . key &quot;results&quot;
        . _Array . traverse)
       &amp;gt;&amp;gt;&amp;gt; map ((^. key &quot;name&quot; . _String)
                 &amp;amp;&amp;amp;&amp;amp; (^. key &quot;venue&quot;
                      . key &quot;name&quot; . _String)
                 )
       &amp;gt;&amp;gt;&amp;gt; return
      )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In a way, this looks cool because the piping left to right reads well
and naturally, if you know all the operators and are happy with
operator sectioning syntax and point-free combinators. But when I
showed this to friends who are not so fluent in Haskell, they didn&apos;t
like this. Also, note that I made concessions in order to arrange this
pipeline. I lost the comments, the intermediate named sub-computations
(very useful for finer-grained testing), and even my custom result
type (resorting to just tupling). I feel something has been lost by
writing in this style even though part of me secretly likes it.&lt;/p&gt;
&lt;h2&gt;An interview with Bryan O&apos;Sullivan&lt;/h2&gt;
&lt;p&gt;Recently (September 2015), &lt;a href=&quot;http://www.haskellcast.com/&quot;&gt;The Haskell Cast&lt;/a&gt; interviewed Bryan
O&apos;Sullivan. I highly recommend listening to &lt;a href=&quot;http://www.haskellcast.com/episode/010-bryan-osullivan-on-performance-and-efficiency/&quot;&gt;the whole thing&lt;/a&gt;. He
had stories to tell about how he got into Haskell, how he ended up
writing all these libraries, and how he goes about designing them and
what his goals are when implementing them. Note that &lt;code&gt;aeson&lt;/code&gt; and
&lt;code&gt;text&lt;/code&gt;, which everyone uses, are his creations. Thank you, Bryan, for
all you&apos;ve done for the Haskell community!&lt;/p&gt;
&lt;h2&gt;Lens resources&lt;/h2&gt;
&lt;p&gt;Gabriel Gonzalez wrote a
&lt;a href=&quot;https://hackage.haskell.org/package/lens-tutorial&quot;&gt;lens tutorial&lt;/a&gt;
that is useful. Thank you, Gabriel, for writing tutorials not only on
your own libraries, but for others as well!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For day 4, I presented a tiny example of use of &lt;code&gt;wreq&lt;/code&gt; with &lt;code&gt;aeson&lt;/code&gt;
and &lt;code&gt;lens&lt;/code&gt; to perform a simple task of getting information from the
Web, and tried to make &lt;code&gt;wreq&lt;/code&gt; more accessible by not requiring use of
&lt;code&gt;lens&lt;/code&gt; operators up front.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 3: HSpec; the importance of testing</title><link>https://franklinchen.com/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/</guid><pubDate>Thu, 03 Dec 2015 12:55:59 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 3&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3vaj0z/24_days_of_hackage_2015_day_3_hspec_the/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I spent my formative years writing software before &quot;testing framework&quot;
was in my vocabulary, before
&lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;&quot;test-driven development&quot;&lt;/a&gt;
was a thing. I shudder to think of those years, because now I&apos;m a
believer in tests and even in test-driven development (TDD), according to my
interpretation of what that means (since everyone has a different
definition).&lt;/p&gt;
&lt;p&gt;There are a bunch of testing tools that have been available in the
Haskell ecosystem for some time. In fact, Ollie in his &quot;24 Days of
Hackage&quot; covered&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hackage.haskell.org/package/QuickCheck&quot;&gt;&lt;code&gt;QuickCheck&lt;/code&gt;&lt;/a&gt;
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-08-24-days-of-hackage.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-08-24-days-of-hackage.html&quot;&amp;gt;in 2012&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hackage.haskell.org/package/doctest&quot;&gt;&lt;code&gt;doctest&lt;/code&gt;&lt;/a&gt; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2013-12-18-doctest.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2013-12-18-doctest.html&quot;&amp;gt;in 2013&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://documentup.com/feuerbach/tasty&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://documentup.com/feuerbach/tasty&quot;&amp;gt;tasty&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2013-12-03-24-days-of-hackage-tasty.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2013-12-03-24-days-of-hackage-tasty.html&quot;&amp;gt;in 2013&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and I heartily recommend looking those up.&lt;/p&gt;
&lt;p&gt;But today I&apos;m going to show use of &lt;a href=&quot;http://hspec.github.io/&quot;&gt;&lt;code&gt;HSpec&lt;/code&gt;&lt;/a&gt;
(noting that a framework like &lt;code&gt;tasty&lt;/code&gt; or
&lt;a href=&quot;%60https://batterseapower.github.io/test-framework/&quot;&gt;&lt;code&gt;test-framework&lt;/code&gt;&lt;/a&gt;
are a lot fancier).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why tests?&lt;/h2&gt;
&lt;p&gt;I first got into writing tests for two reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using languages like Perl, it was essentially impossible to
be productive without writing tests.&lt;/li&gt;
&lt;li&gt;Such languages spawned the tooling to ease the pain of writing,
running, and getting feedback from tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But after getting started, I didn&apos;t look back, even when using other
languages such as Scala and Haskell. Today, no matter what language
I&apos;m using, I expect there to be a decent testing framework I can
immediately start using. I even did the experiment of
&lt;a href=&quot;/blog/2013/08/26/openhack-pittsburgh-learning-elixir-test-driven-and-package-publishing/&quot;&gt;learning a brand new language, Elixir, through writing tests&lt;/a&gt;. I
cannot take a language ecosystem seriously if there is not at least
some reasonable default standard testing framework that is part of it.&lt;/p&gt;
&lt;p&gt;There&apos;s a myth (or joke) about using languages like Haskell that have
a decent type system: that you don&apos;t need tests because you have
types. Hence the unfortunate phrase &quot;tests versus types&quot;. I completely
disagree with this. I want my types and I want my tests too: I want to
use every possible tool to help me design, verify, and troubleshoot my
code! At &lt;a href=&quot;http://pghtechfest.com/&quot;&gt;Pittsburgh TechFest&lt;/a&gt; 2014, I gave a
talk
&lt;a href=&quot;https://www.slideshare.net/FranklinChen/presentation-37257104&quot;&gt;&quot;Exploring type-directed, test-driven development&quot;&lt;/a&gt;
giving my personal view of making the best use of both types and tests
as part of an iterative process of refining understanding and
expression of a solution for a task
(this was before the term &quot;type-directed development&quot; became the title
of a coming book on using Idris,
&lt;a href=&quot;https://www.manning.com/books/type-driven-development-with-idris&quot;&gt;&quot;Type-directed development with Idris&quot;&lt;/a&gt;,
whose completion I look forward to!).&lt;/p&gt;
&lt;p&gt;The general topic of how best to combine types and tests is well
outside the scope of this article, but I just want to make one claim:
the primary benefits of tests come from their role as &lt;em&gt;explicit
documentation of intent during a design process&lt;/em&gt;. Ideally, we prefer to
write down expressive types to fully encode intent, and dependently
typed languages such as Idris enable transforming a lot of what used
to be runtime tests into compile-time tests encoded as type checking,
and you can do a bunch of this with Haskell already if you work hard
enough (and
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/wiki/DependentHaskell&quot;&gt;Dependent Haskell&lt;/a&gt;
is in progress), but there is nothing wrong with writing tests today
that someday you might turn into types.&lt;/p&gt;
&lt;h3&gt;Breaking news!&lt;/h3&gt;
&lt;p&gt;By sheer coincidence, a
&lt;a href=&quot;https://blogs.janestreet.com/testing-with-expectations/&quot;&gt;new testing framework was just announced for OCaml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And today, right after I initially published this article, I found in
my news feed an announcement about &lt;a href=&quot;http://quickfuzz.org/&quot;&gt;QuickFuzz&lt;/a&gt;,
a grammar fuzz tester for Haskell!&lt;/p&gt;
&lt;p&gt;It&apos;s great that testing is being taken more seriously everywhere and by
everyone.&lt;/p&gt;
&lt;h2&gt;Why HSpec?&lt;/h2&gt;
&lt;p&gt;Why do I use HSpec, and not one of the fancier testing frameworks? I&apos;m
not ruling out migrating to one of those in the future, but for now,
HSpec just feels really easy and comfortable to use, and is good
enough for me. I am so freaking lazy that I might not write tests if I
get intimidated by any possible sources of friction. And I&apos;ll admit
that its &lt;a href=&quot;http://hspec.github.io/&quot;&gt;Web site&lt;/a&gt; is pretty good! Marketing
matters, I guess.&lt;/p&gt;
&lt;p&gt;Also, when I was using Ruby, I got accustomed to using
&lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt;, which of course was the inspiration for
HSpec.&lt;/p&gt;
&lt;h2&gt;It&apos;s all about auto-discovery&lt;/h2&gt;
&lt;p&gt;Before even saying anything more about HSpec, I want to say that one
selling point of HSpec for me was auto-discovery. Check out the
&lt;a href=&quot;http://hspec.github.io/hspec-discover.html&quot;&gt;manual&lt;/a&gt; for full details.&lt;/p&gt;
&lt;p&gt;Auto-discovery means that given a simple boilerplate setup, you can
use &quot;convention over configuration&quot; and just give test module file
names matching &lt;code&gt;*Spec.hs&lt;/code&gt; and sticking them anywhere embedded inside
your &lt;code&gt;test/&lt;/code&gt; directory and they will all be picked up when you run
&lt;code&gt;stack test&lt;/code&gt;. This means being able to write test modules at will,
rename, delete, add, refactor them and not have to worry about
manually writing a boilerplate driver module that tediously imports
all the test modules and wires them up into a single project test
suite.&lt;/p&gt;
&lt;p&gt;Here&apos;s the setup I have for all my projects that use HSpec. I provide
it from my sample project template described on
&lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;,
so you can now generate a starter project with HSpec all ready to go
by running&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack new my-new-project franklinchen
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is a &lt;code&gt;test/&lt;/code&gt; directory with a single file in it, the
auto-discovery file named &lt;code&gt;test/Spec.hs&lt;/code&gt;, which has a single line of
code, actually a comment:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works because when you have HSpec installed, a program
&lt;code&gt;hspec-discover&lt;/code&gt; also gets installed, and it&apos;s called by GHC to do the
work of auto-discovery. Each test module should export &lt;code&gt;spec&lt;/code&gt;, because
that&apos;s what the auto-discovery program will collect to call.&lt;/p&gt;
&lt;h2&gt;Writing and refactoring tests&lt;/h2&gt;
&lt;p&gt;I didn&apos;t mention it in
&lt;a href=&quot;/blog/2015/12/02/24-days-of-hackage-2015-day-2-regexes-with-pcre-heavy-standalone-haskell-scripts-using-stack/&quot;&gt;yesterday&apos;s post about using a regex&lt;/a&gt;
to solve a problem, but when I wrote out examples of strings that are
supposed to match a regex and examples of strings that are not
supposed to match it, I simply copied and pasted those examples from
tests I had written.&lt;/p&gt;
&lt;p&gt;Let&apos;s walk through writing &lt;code&gt;PCREHeavyExampleSpec.hs&lt;/code&gt;, step by
step.&lt;/p&gt;
&lt;h3&gt;Initial version of test code&lt;/h3&gt;
&lt;p&gt;First, I&apos;ll present code that I never actually wrote initially, because I
skipped this step and immediately refactored it in my mind. But I
decided that to showcase Haskell&apos;s strength as a language for
embedding a domain-specific language (DSL), I retroactively wrote the
most obvious code that shows how HSpec works without introducing
non-HSpec considerations. (The code is on branch &lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage/tree/boilerplated-hspec&quot;&gt;&lt;code&gt;boilerplated-hspec&lt;/code&gt;&lt;/a&gt;.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module PCREHeavyExampleSpec where

import PCREHeavyExample (mediaRegex)

import Test.Hspec (Spec, describe, it, shouldSatisfy)
import Text.Regex.PCRE.Heavy ((=~))

-- | Required for auto-discovery.
spec :: Spec
spec =
  describe &quot;pcre-heavy&quot; $ do
    describe &quot;match&quot; $ do
      it &quot;has audio&quot; $ do
        &quot;@Media:\thas-audio,   audio&quot; `shouldSatisfy` (=~ mediaRegex)
      it &quot;has video&quot; $ do
        &quot;@Media:\thas-video,video&quot; `shouldSatisfy` (=~ mediaRegex)
      it &quot;has audio but missing&quot; $ do
        &quot;@Media:\thas-audio-but-missing, audio, missing&quot; `shouldSatisfy` (=~ mediaRegex)
      it &quot;has video but unlinked&quot; $ do
        &quot;@Media:\thas-video-but-unlinked  , video,      unlinked&quot; `shouldSatisfy` (=~ mediaRegex)
    describe &quot;no match&quot; $ do
      it &quot;no audio or video&quot; $ do
        &quot;@Media:\tno-audio-or-video&quot; `shouldSatisfy` (not . (=~ mediaRegex))
      it &quot;missing media field&quot; $ do
        &quot;@Media:\tmissing-media-field, unlinked&quot; `shouldSatisfy` (not . (=~ mediaRegex))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The main thing to understand is that for simplest use (without
fixtures, effects, etc.), a basic description-labeled spec item is
introduced with &lt;code&gt;it&lt;/code&gt;, and a labeled &lt;code&gt;describe&lt;/code&gt; can contain many of
those as well as sub-&lt;code&gt;describe&lt;/code&gt;s.&lt;/p&gt;
&lt;p&gt;Here, we have two sub-&lt;code&gt;Spec&lt;/code&gt;s, one for examples that &lt;em&gt;should match&lt;/em&gt; the regex
and one for examples that &lt;em&gt;should not&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Note that we imported and used &lt;code&gt;mediaRegex&lt;/code&gt; from module
&lt;code&gt;PCREHeavyExample&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Unlike in our example program yesterday, which used &lt;code&gt;scan&lt;/code&gt; from
&lt;code&gt;pcre-heavy&lt;/code&gt; to collect match bindings, we only care whether something
matched, so we use its &lt;code&gt;=~&lt;/code&gt; operator instead that takes an input
string and a regex, and returns a &lt;code&gt;Bool&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The test code is concise enough, and the problem domain well
understood enough, that even if the syntax looks strange, I hope it is
clear &lt;em&gt;what&lt;/em&gt; is going on, even if not clear &lt;em&gt;how&lt;/em&gt; it&apos;s being done.&lt;/p&gt;
&lt;h3&gt;A note on syntax in Haskell code&lt;/h3&gt;
&lt;p&gt;Now is a good time to talk about the issue of syntax in Haskell code,
because I&apos;m expecting that if you are reading this, you might not
already be familiar with HSpec, and I also cannot assume that you are
already a seasoned Haskell developer, because I&apos;m writing this article
series not for advanced Haskellers but for those starting to dip into
the library ecosystem and even friends with limited experience with
Haskell.&lt;/p&gt;
&lt;p&gt;It is convenient to use
&lt;a href=&quot;https://wiki.haskell.org/Section_of_an_infix_operator&quot;&gt;operator sectioning syntax&lt;/a&gt;
above, but I could have written&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;text `shouldSatisfy` (\inputString -&amp;gt; inputString =~ mediaRegex)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Furthermore, it is also convenient to use
&lt;a href=&quot;https://wiki.haskell.org/Infix_operator&quot;&gt;infix syntax for named functions&lt;/a&gt;
when sensible, but it is not required. I could have written in
bare-bones style&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;shouldSatisfy text (\inputString -&amp;gt; inputString =~ mediaRegex)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the cute &lt;code&gt;(not . (=~ mediaRegex))&lt;/code&gt; can be written as&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\inputString -&amp;gt; not (inputString =~ mediaRegex)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I mention these facts about syntax because I have often been told by
people looking into Haskell that it&apos;s confusing because of all the
operator syntax. But you don&apos;t have to use this syntax if you don&apos;t
want to: much that looks weird in Haskell is not something about the
language itself, but just about optional syntax for which there is
&quot;normal&quot; syntax if you prefer that. It&apos;s not just about operators, but
about a lot of other optional syntax as well; if you are still
relatively new to Haskell syntax, Gabriel Gonzalez wrote a nice
&quot;syntax decoding&quot; tutorial covering some of that
&lt;a href=&quot;http://www.haskellforall.com/2014/10/how-to-desugar-haskell-code.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But saying &quot;you don&apos;t have to write it&quot; is no use if &quot;everyone is doing
it&quot; and you have to &lt;em&gt;read&lt;/em&gt; it anyway. So it is the community as a whole
that sets the tone for what gets written and what gets read.&lt;/p&gt;
&lt;p&gt;One reason I like HSpec is that it does not go overboard with
syntax. &lt;a href=&quot;https://hackage.haskell.org/package/HUnit&quot;&gt;HUnit&lt;/a&gt;, an older
testing framework, provided funny operators that really turned me off,
such as
&lt;a href=&quot;https://hackage.haskell.org/package/HUnit-1.3.0.0/docs/Test-HUnit-Base.html&quot;&gt;&lt;code&gt;~=?&lt;/code&gt;&lt;/a&gt;. I
like Gabriel Gonzalez&apos;s article
&lt;a href=&quot;http://www.haskellforall.com/2015/09/how-to-make-your-haskell-code-more.html&quot;&gt;&quot;How to make your Haskell code more readable to non-Haskell programmers&quot;&lt;/a&gt;. It
applies also to making the code more readable to experienced Haskell
programmers!&lt;/p&gt;
&lt;p&gt;I admit to having been guilty of some practices he calls out. I have
mixed feelings about giving them all up, all the time. For example, it
seems idiomatic to use the infix function operator &lt;code&gt;$&lt;/code&gt; for embedded
DSLs such HSpec, rather than parenthesize everything. I&apos;m curious what
you think. Would you prefer to read the following, which is what the
&lt;code&gt;$&lt;/code&gt; operator avoids requiring?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;pcre-heavy&quot; (do
    describe &quot;match&quot; (do
      it &quot;has audio&quot; (do
        &quot;@Media:\thas-audio,   audio&quot; `shouldSatisfy` (=~ mediaRegex)
        )
      -- ...
      )
    describe &quot;no match&quot; (do
      -- ...
      )
    )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I personally think that languages with a &lt;code&gt;begin&lt;/code&gt;/&lt;code&gt;end&lt;/code&gt; kind of block
(such as Pascal, Ruby) instead of braces or parentheses have an
advantage because that is more readable (to me), and recent research
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://dl.acm.org/citation.cfm?id=2534973&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://dl.acm.org/citation.cfm?id=2534973&quot;&amp;gt;&quot;An empirical investigation into programming language syntax&quot;&amp;lt;/span&amp;gt;
claims to have evidence of this.&lt;/p&gt;
&lt;p&gt;Meanwhile, we make do with the language we have, and learn and teach
its quirks and features. It&apos;s regrettable that English and Chinese are
really hard languages to use too, but we make do if we want to be part
of the community in the United States or in China. It goes both ways:
if we want to be part of the community, we have to invest in
understanding how it operates, and if the community wants to grow, it
has to reach out to newcomers rather than just say &quot;you&apos;re on your
own, deal with it&quot;. Think of the immense amount of effort that goes
into promoting universal literacy.&lt;/p&gt;
&lt;h3&gt;A one-minute review of test-driven development&lt;/h3&gt;
&lt;p&gt;Let&apos;s continue with the test writing process.&lt;/p&gt;
&lt;p&gt;When doing test-driven development, we write an HSpec spec first,
&lt;em&gt;before even writing any implementation code&lt;/em&gt;. Test-driven development is
where you show how something is supposed to work before you actually
write that something. In a typed setting, this means we get a
compile-time error when first trying to run the test, which we fix by
creating &lt;code&gt;PCREHeavyExample&lt;/code&gt; as a new module with a stub:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module PCREHeavyExample (mediaRegex) where

mediaRegex = undefined
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, every test fails (in the terminal, the failures are
highlighted in red):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack test
PCREHeavyExample
  pcre-heavy
    match
      has audio FAILED [1]
      has video FAILED [2]
      has audio but missing FAILED [3]
      has video but unlinked FAILED [4]
    no match
      no audio or video FAILED [5]
      missing media field FAILED [6]

Failures:

  test/PCREHeavyExampleSpec.hs:13:
  1) PCREHeavyExample.pcre-heavy.match has audio
       uncaught exception: ErrorCall (Prelude.undefined)

  test/PCREHeavyExampleSpec.hs:15:
  2) PCREHeavyExample.pcre-heavy.match has video
       uncaught exception: ErrorCall (Prelude.undefined)

  test/PCREHeavyExampleSpec.hs:17:
  3) PCREHeavyExample.pcre-heavy.match has audio but missing
       uncaught exception: ErrorCall (Prelude.undefined)

  test/PCREHeavyExampleSpec.hs:19:
  4) PCREHeavyExample.pcre-heavy.match has video but unlinked
       uncaught exception: ErrorCall (Prelude.undefined)

  test/PCREHeavyExampleSpec.hs:22:
  5) PCREHeavyExample.pcre-heavy, no match, no audio or video
       uncaught exception: ErrorCall (Prelude.undefined)

  test/PCREHeavyExampleSpec.hs:24:
  6) PCREHeavyExample.pcre-heavy, no match, missing media field
       uncaught exception: ErrorCall (Prelude.undefined)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;A tangent on GHC&apos;s error reporting&lt;/h4&gt;
&lt;p&gt;A super-annoying thing, and a long-standing embarrassment for GHC, is
that using &lt;code&gt;undefined&lt;/code&gt; doesn&apos;t trigger useful error reporting. I
look forward to
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/wiki/Status/GHC-8.0.1&quot;&gt;GHC 8.0&lt;/a&gt;&apos;s
new feature of
&lt;a href=&quot;https://ghc.haskell.org/trac/ghc/wiki/ExplicitCallStack/ImplicitLocations&quot;&gt;implicit parameters providing callstacks/source locations&lt;/a&gt;. This
stuff is important! It&apos;s time we got line numbers and call stacks for
errors without having to jump through hoops.&lt;/p&gt;
&lt;h3&gt;Skipping to the end, assume we finished the implementation&lt;/h3&gt;
&lt;p&gt;OK, let&apos;s assume we finished the implementation, which is simply
writing the regex for &lt;code&gt;mediaRegex&lt;/code&gt;. Then the tests pass (and in the
terminal they display in green):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PCREHeavyExample
  pcre-heavy
    match
      has audio
      has video
      has audio but missing
      has video but unlinked
    no match
      no audio or video
      missing media field

Finished in 0.0010 seconds
6 examples, 0 failures
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Tests are code too!&lt;/h2&gt;
&lt;p&gt;It&apos;s easy to not take test code seriously and not hold it up to the
same standards as &quot;regular&quot; code. That is a mistake: test code should
actually be cleaner and tighter than main implementation code because
it is our &lt;em&gt;executable documentation&lt;/em&gt; and what we need to make as easy
to read, write, and modify as requirements change.&lt;/p&gt;
&lt;h3&gt;Refactoring, part 1&lt;/h3&gt;
&lt;p&gt;Notice the tremendous amount of code duplication in the tests. We can
do better than this item-by-item copy-and-paste job. We can write code
to generate all the matching examples, by refactoring the relevant
data into a table and a function that maps over the table to get a
composite &lt;code&gt;Spec&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here is a table that pairs a test description with each example input
string:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;matchExamples :: [(String, String)]
matchExamples =
  [ ( &quot;has audio&quot;
    , &quot;@Media:\thas-audio,   audio&quot;
    )
  , ( &quot;has video&quot;
    , &quot;@Media:\thas-video,video&quot;
    )
  , ( &quot;has audio but missing&quot;
    , &quot;@Media:\thas-audio-but-missing, audio, missing&quot;
    )
  , ( &quot;has video but unlinked&quot;
    , &quot;@Media:\thas-video-but-unlinked  , video,      unlinked&quot;
    )
  ]

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is a function that generates a spec item given a description/input pair.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;matchSpec :: (String, String) -&amp;gt; Spec
matchSpec (description, text) =
  it description $ do
    text `shouldSatisfy` (=~ mediaRegex)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Similarly for the non-matching examples.&lt;/p&gt;
&lt;p&gt;And the refactored &lt;code&gt;Spec&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describe &quot;pcre-heavy&quot; $ do
    describe &quot;match&quot; $ do
      mapM_ matchSpec matchExamples
    describe &quot;no match&quot; $ do
      mapM_ nonMatchSpec nonMatchExamples
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Refactoring, part 2&lt;/h3&gt;
&lt;p&gt;Uh oh, I said &quot;similarly&quot;. Usually when something is &quot;similar&quot;,
there&apos;s more refactoring that might be doable.&lt;/p&gt;
&lt;p&gt;But &lt;strong&gt;Haskell makes refactoring joyful&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Haskell is a expressive language, where &quot;might&quot; usually means &quot;can&quot;,
and &quot;can&quot; often means &quot;should&quot;. In my experience, Haskell&apos;s &lt;em&gt;single
best quality&lt;/em&gt; in terms of user experience is its support for
refactoring at will and with confidence that everything will still
mean exactly the same thing after as before the refactoring.&lt;/p&gt;
&lt;p&gt;I particularly look forward to the
ongoing development of a
&lt;a href=&quot;https://github.com/haskell/haskell-ide-engine&quot;&gt;universal Haskell IDE engine&lt;/a&gt;
refactoring even easier, e.g., folding in
&lt;a href=&quot;http://www.cs.kent.ac.uk/projects/refactor-fp/&quot;&gt;&lt;code&gt;HaRe&lt;/code&gt;&lt;/a&gt; support.&lt;/p&gt;
&lt;p&gt;We see a pattern of positive examples and negative examples using
a predicate and its negation. Let&apos;s abstract this pattern out. Let&apos;s
collect the positive and negative examples in one place. For
simplicity, let&apos;s tuple them.&lt;/p&gt;
&lt;p&gt;And now that we&apos;re dealing with arbitrary predicates, we no longer
have to hardcode &lt;code&gt;(=~ mediaRegex)&lt;/code&gt; or &lt;code&gt;String&lt;/code&gt; everywhere. We can &lt;em&gt;go
polymorphic&lt;/em&gt; in the predicate type, replacing &lt;code&gt;matchSpec&lt;/code&gt; and
&lt;code&gt;nonMatchSpec&lt;/code&gt; with a single &lt;code&gt;predSpec&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The final result:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;spec :: Spec
spec =
  describePredicate &quot;pcre-heavy&quot;
    (&quot;match&quot;, (=~ mediaRegex))
    (matchExamples, nonMatchExamples)

describePredicate :: Show a =&amp;gt;
     String                           -- ^ description
  -&amp;gt; (String, a -&amp;gt; Bool)              -- ^ (base description, predicate)
  -&amp;gt; ( [(String, a)], [(String, a)] ) -- ^ positive and negative examples
  -&amp;gt; Spec
describePredicate description
                  (baseDescription, predicate)
                  (positiveExamples, negativeExamples) =
  describe description $ do
    describe baseDescription $ do
      mapM_ (predSpec predicate) positiveExamples
    describe (&quot;not &quot; ++ baseDescription) $ do
      mapM_ (predSpec (not . predicate)) negativeExamples

predSpec :: Show a =&amp;gt; (a -&amp;gt; Bool) -&amp;gt; (String, a) -&amp;gt; Spec
predSpec predicate (description, a) =
  it description $ do
    a `shouldSatisfy` predicate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that &lt;code&gt;describePredicate&lt;/code&gt; and &lt;code&gt;predSpec&lt;/code&gt; can then be pulled out
into a test utilities module for use by other specs using the same
pattern.&lt;/p&gt;
&lt;p&gt;Unfortunately, this refactoring, although good in some ways, came with
a cost. It doesn&apos;t look so great to me. Does it to you?&lt;/p&gt;
&lt;h3&gt;Refactoring, part 3?&lt;/h3&gt;
&lt;p&gt;One reason the refactored code doesn&apos;t actually look so great now is
that our refactoring led to many nested primitive types
(&lt;a href=&quot;http://c2.com/cgi/wiki?PrimitiveObsession&quot;&gt;&quot;primitive obsession&quot;&lt;/a&gt;)
and an explosion in number of positional arguments to our new
&lt;code&gt;describePredicate&lt;/code&gt;. Let&apos;s face it, calling &lt;code&gt;describePredicate&lt;/code&gt; is
cryptic, calling out for &quot;keyword arguments&quot; (in a language that
supports them).&lt;/p&gt;
&lt;p&gt;In Haskell, &quot;keyword arguments&quot; means there&apos;s a configuration data
type crying to be defined. A related code smell is that documenting
the parameters to &lt;code&gt;describePredicate&lt;/code&gt; is now super-awkward. Each of
those parameters should be a thing in itself, not just parenthesized,
bracketed, tupled glop.&lt;/p&gt;
&lt;p&gt;If we are really serious about refactoring, we should wrap these
things into new data types that are an explicit model of what we want
to do when classifying and testing examples.  We might even turn the
whole thing into its own embedded sub-DSL of HSpec.&lt;/p&gt;
&lt;p&gt;This illustrates how refactoring can sometimes lead to new complexity
that didn&apos;t exist before. There are tradeoffs constantly. Abstraction
for its own sake does not always make things clearer. For this reason,
I did not actually go this far initially for the example code
yesterday: I did not feel it was worth the trouble. I&apos;ve left it in
the &lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage/tree/refactoring-2&quot;&gt;&lt;code&gt;refactoring-2&lt;/code&gt;&lt;/a&gt; branch of the GitHub repo.&lt;/p&gt;
&lt;h2&gt;Combining testing frameworks&lt;/h2&gt;
&lt;p&gt;One last thing about HSpec: you can use it within a larger testing
framework, or you can embed another testing framework into it as
well. For example, I like to use
&lt;a href=&quot;http://hspec.github.io/quickcheck.html&quot;&gt;QuickCheck through HSpec&lt;/a&gt; as
part of &quot;type-directed development&quot;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Testing is important, but few love to do it. Making it easy to write
and use tests goes a long way toward actually doing it. I like HSpec
because it&apos;s easy to write, and because of auto-discovery. I hope you
consider using it for your own projects if you don&apos;t already use it or
some other testing framework.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>24 days of Hackage, 2015: day 2: Regexes with pcre-heavy; standalone Haskell scripts using Stack</title><link>https://franklinchen.com/blog/2015/12/02/24-days-of-hackage-2015-day-2-regexes-with-pcre-heavy-standalone-haskell-scripts-using-stack/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/02/24-days-of-hackage-2015-day-2-regexes-with-pcre-heavy-standalone-haskell-scripts-using-stack/</guid><pubDate>Wed, 02 Dec 2015 12:50:12 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;p&gt;A table of contents is at the top of the article for &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;day 1&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 2&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3v77oa/24_days_of_hackage_2015_day_2_regexes_with/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Don&apos;t laugh, but once upon a time, I made Perl my main programming
language of choice (between around 1999 and 2010). There were many
reasons for this, but one reason was that Perl made it very easy to do
text processing using regexes.&lt;/p&gt;
&lt;p&gt;If you are a seasoned Haskeller, you might be thinking, &quot;Why not use a
real parser instead?&quot;, such as the venerable
&lt;a href=&quot;https://hackage.haskell.org/package/parsec&quot;&gt;parsec&lt;/a&gt;, which was covered in a
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-10-24-days-of-hackage-parsec.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-10-24-days-of-hackage-parsec.html&quot;&amp;gt;2012 day of Hackage&amp;lt;/span&amp;gt;?
(Or, today, one could consider one of several other newer alternative libraries
for parsing. A later day of Hackage will say more about this!)&lt;/p&gt;
&lt;p&gt;After all, Jamie Zawinski famously once wrote, &lt;em&gt;&quot;Some people, when
confronted with a problem, think &apos;I know, I&apos;ll use regular
expressions.&apos;  Now they have two problems.&quot;&lt;/em&gt; I even gave a talk at
&lt;a href=&quot;http://pghtechfest.com/&quot;&gt;Pittsburgh Tech Fest&lt;/a&gt; in 2013,
&lt;a href=&quot;https://www.slideshare.net/FranklinChen/handout-22302440&quot;&gt;&quot;Stop overusing regular expressions!&quot;&lt;/a&gt;,
in which I promoted writing parsers rather than writing regexes.&lt;/p&gt;
&lt;p&gt;But, sometimes I do want to use a regex. In that case, I have been
using an obscure but useful package, &lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy&quot;&gt;&lt;code&gt;pcre-heavy&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today I&apos;ll show how to use &lt;code&gt;pcre-heavy&lt;/code&gt;, and while at it, also show
how to ship &lt;em&gt;one-file standalone Haskell scripts&lt;/em&gt; that only require
Stack.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why use regexes at all?&lt;/h2&gt;
&lt;p&gt;Before going into &lt;code&gt;pcre-heavy&lt;/code&gt;, I thought I should explain when I use
regexes.&lt;/p&gt;
&lt;p&gt;Back when I was doing a lot of text extraction, cleaning, including
&lt;em&gt;correction&lt;/em&gt;, restructuring of messy data, regexes seemed the only
choice really. I had to not lose any &quot;intended&quot; information even if it
was obscured by garbage or misspellings or the like. I therefore could
not use some kind of approximate statistical technique, but had to
iteratively do do a lot exploratory work with some interactive
prompting in order to gradually clean up the data. Super-powerful
regex constructs of the Perl variety seemed perfect for this task.&lt;/p&gt;
&lt;p&gt;But even outside of such use cases, there&apos;s no hiding from the fact
that regexes can be very convenient for simple tasks. Also,
because regexes are used so much in our programming world in general,
if we are migrating to Haskell some already-working regexes from
already-written code in some other language, it&apos;s convenient to just
stick with regexes.&lt;/p&gt;
&lt;h2&gt;Which Haskell regex library to use?!&lt;/h2&gt;
&lt;p&gt;A newcomer to Haskell must be overwhelmed by the lack of a single
standard library and syntax for regexes. I mean, take a look at this
&lt;a href=&quot;https://wiki.haskell.org/Regular_expressions&quot;&gt;wiki page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, I&apos;m presenting
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy&quot;&gt;&lt;code&gt;pcre-heavy&lt;/code&gt;&lt;/a&gt;, a
regex library that I&apos;ve been using when I want regexes at all (I try
not to want them). It&apos;s pretty new and not even mentioned on that wiki
page.&lt;/p&gt;
&lt;p&gt;Some of my criteria for choosing a regex library:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I want Perl-style regexes. That&apos;s what I&apos;m used to and are a kind of
standard across regex support in many programming languages.&lt;/li&gt;
&lt;li&gt;Nice syntax is a plus. One of the selling points of using regexes is
that the conciseness of writing patterns, binding matches,
etc. Without such conciseness, I just think &quot;Why not just write a
real parser? It only takes a couple of lines in Haskell anyway.&quot;&lt;/li&gt;
&lt;li&gt;High performance is a perfectly legitimate reason to use regexes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given these criteria, using a &lt;a href=&quot;http://www.pcre.org/&quot;&gt;PCRE&lt;/a&gt;-based
library seemed the way to go. OK, the wiki page lists a bunch of
PCRE-based libraries.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hackage.haskell.org/package/pcre-light&quot;&gt;&lt;code&gt;pcre-light&lt;/code&gt;&lt;/a&gt; is a
good way to go.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It does require installation of the C library for
PCRE.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m mainly on Mac OS X, so I have PCRE installed through
Homebrew with &lt;code&gt;$ brew install pcre&lt;/code&gt;. I have PCRE working on
Linux. Unfortunately, I don&apos;t use Windows, so if someone can verify
that &lt;code&gt;pcre-light&lt;/code&gt; installs OK on Windows, that would be great. I would
feel sad if I picked a library that is problematic for Windows users.&lt;/p&gt;
&lt;p&gt;Recently, out came
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy&quot;&gt;&lt;code&gt;pcre-heavy&lt;/code&gt;&lt;/a&gt;, a
wrapper around &lt;code&gt;pcre-light&lt;/code&gt; that uses
&lt;a href=&quot;https://wiki.haskell.org/Template_Haskell&quot;&gt;Template Haskell&lt;/a&gt;, the GHC
extension that is &quot;macros for Haskell&quot;, enabling compile-time
metaprogramming (see the
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/guest-posts/2014-12-22-template-haskell.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/guest-posts/2014-12-22-template-haskell.html&quot;&amp;gt;2014 Day of Hackage article about Template Haskell&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I liked it, so I use it.&lt;/p&gt;
&lt;h2&gt;Example program using &lt;code&gt;pcre-heavy&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pcre-heavy&lt;/code&gt; has decent documentation on
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy&quot;&gt;its Hackage page&lt;/a&gt;, so
I recommend reading that for the full details on how to use it. I&apos;ll
give just a simple example here in the context of a complete program
that does something.&lt;/p&gt;
&lt;h3&gt;Specification and some test cases&lt;/h3&gt;
&lt;p&gt;Say we have a file of lines of text that are supposed to have a
comma-separated format of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a fixed header&lt;/li&gt;
&lt;li&gt;a text transcript&apos;s file path&lt;/li&gt;
&lt;li&gt;an &quot;audio&quot; or &quot;video&quot; field indicating the type of associated media&lt;/li&gt;
&lt;li&gt;an optional annotation about whether the associated media is missing
or not yet linked into the transcript&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(I made up this example based on the structured text specification
called CHAT that happens to include a single line of this format,
e.g. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://talkbank.org/data-orig/Meeting/SCOTUS/2008/08-205.cha&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://talkbank.org/data-orig/Meeting/SCOTUS/2008/08-205.cha&quot;&amp;gt;this coded Supreme Court oral argument transcript for &quot;Citizens United v. Federal Election Commission&quot;&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;Examples that should match:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Media:	has-audio,   audio
@Media:	has-video,video
@Media:	has-audio-but-missing, audio, missing
@Media:	has-video-but-unlinked  , video,      unlinked
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Examples that should fail to match:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Media:	no-audio-or-video
@Media:	missing-media-field, unlinked
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Creating a regex&lt;/h3&gt;
&lt;p&gt;Here is a &lt;code&gt;pcre-heavy&lt;/code&gt; regex, using the
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy-1.0.0.1/docs/Text-Regex-PCRE-Heavy.html#v:re&quot;&gt;&lt;code&gt;re&lt;/code&gt;&lt;/a&gt;
Template Haskell
&lt;a href=&quot;https://wiki.haskell.org/Template_Haskell#QuasiQuoters&quot;&gt;quasiquoter&lt;/a&gt;
that builds a PCRE-compiled
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy-1.0.0.1/docs/Text-Regex-PCRE-Heavy.html#t:Regex&quot;&gt;&lt;code&gt;Regex&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mediaRegex :: Regex
mediaRegex = [re|^@Media:\t([^ ,]+)\ *,\ *(audio|video)(\ *,\ *(?:missing|unlinked))?|]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Regex string validated at Haskell compile-time&lt;/h2&gt;
&lt;p&gt;One selling point of &lt;code&gt;pcre-heavy&lt;/code&gt; for me is that because it uses
Template Haskell, a bad regex string results in a Haskell-level
compile-time error rather than a runtime error.&lt;/p&gt;
&lt;p&gt;Example of a compile-time error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- This Haskell code fails to compile!
mediaRegex :: Regex
mediaRegex = [re|^@Media:\t([^ ,]+)\ *,\ *(audio|video)(\ *,\ *(?:missing|unlinked)?|]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Loading this in GHCi or compiling with GHC results in&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Exception when trying to run compile-time code:
      Text.Regex.PCRE.Light: Error in regex: missing )
    Code: template-haskell-2.10.0.0:Language.Haskell.TH.Quote.quoteExp
            re
            &quot;^@Media:\\t([^ ,]+)\\ *,\\ *(audio|video)(\\ *,\\ *(?:missing|unlinked)?&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Using the regex&lt;/h2&gt;
&lt;p&gt;We&apos;ll use
&lt;a href=&quot;https://hackage.haskell.org/package/pcre-heavy-1.0.0.1/docs/Text-Regex-PCRE-Heavy.html#v:scan&quot;&gt;&lt;code&gt;scan&lt;/code&gt;&lt;/a&gt;
to extract the matches (if any) against our regex on a string.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;scan&lt;/code&gt; returns a lazy list of all possible matches:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Simplified type signature for our purposes.
scan :: Regex -&amp;gt; String -&amp;gt; [(String, [String])]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Each match is a pair &lt;code&gt;(String, [String])&lt;/code&gt;, where the first component
is the whole string that matched, and the second is an ordered list of
parenthesized groupings in the regex. In our regex, we had three
parenthesized groupings, so a match could result in a three-element
grouping list:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*Main&amp;gt; scan mediaRegex &quot;@Media:\tfoo, audio, unlinked&quot;
[(&quot;@Media:\tfoo, audio, unlinked&quot;,[&quot;foo&quot;,&quot;audio&quot;,&quot;, unlinked&quot;])]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since we only want
the first match (if any), we can just compose it with
&lt;a href=&quot;https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Maybe.html#v:listToMaybe&quot;&gt;&lt;code&gt;listToMaybe&lt;/code&gt; from &lt;code&gt;Data.Maybe&lt;/code&gt;&lt;/a&gt;,
which has type&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;listToMaybe :: [a] -&amp;gt; Maybe a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;so &lt;code&gt;listToMaybe . scan mediaRegex&lt;/code&gt; has type &lt;code&gt;String -&amp;gt; Maybe (String, [String])&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*Main&amp;gt; (listToMaybe . scan mediaRegex) &quot;@Media:\tfoo, audio, unlinked&quot;
Just (&quot;@Media:\tfoo, audio, unlinked&quot;,[&quot;foo&quot;,&quot;audio&quot;,&quot;, unlinked&quot;])
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Extracting useful information&lt;/h2&gt;
&lt;p&gt;Finally, what we really wanted to do after matching is apply
additional business logic and get stuff into a real type as soon as
possible, rather than engage in &quot;stringly-typed&quot; programming and
context-dependent list lengths.&lt;/p&gt;
&lt;p&gt;Let&apos;s say that for our task, we only care about matched lines that are
&lt;em&gt;not&lt;/em&gt; missing or unlinked, and skip those that are missing or
unlinked. We define a data type and use pattern matching to get out of
the untyped world into the typed world of our data model.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data Info =
    Skip
  | Audio FilePath
  | Video FilePath
    deriving (Eq, Show)

-- | Extract information about a media file if it is present.
extractIfPresent :: (String, [String]) -&amp;gt; Info
extractIfPresent (_, [name, &quot;audio&quot;]) = Audio name
extractIfPresent (_, [name, &quot;video&quot;]) = Video name
extractIfPresent (_, _) = Skip
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Presentation as a report&lt;/h2&gt;
&lt;p&gt;Finally, now that we are done with the regex world, and have a data
model, all that is left is a driver to complete an example
command-line program.&lt;/p&gt;
&lt;p&gt;We have all the information needed to print out a report for each line.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | Output a report.
reportOnInfo :: Maybe Info -&amp;gt; IO ()
reportOnInfo Nothing = putStrLn &quot;no match&quot;
reportOnInfo (Just Skip) = putStrLn &quot;match, but missing or unlinked&quot;
reportOnInfo (Just (Audio path)) = printf &quot;audio at %s\n&quot; path
reportOnInfo (Just (Video path)) = printf &quot;video at %s\n&quot; path
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the final driver, piping everything through from standard input:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;main :: IO ()
main = do
  s &amp;lt;- getContents
  mapM_ (reportOnInfo
        . fmap extractIfPresent
        . listToMaybe
        . scan mediaRegex
       ) (lines s)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Using Stack to ship standalone scripts&lt;/h2&gt;
&lt;p&gt;We can try our program from within the GHCi REPL by just typing &lt;code&gt;main&lt;/code&gt;
or &lt;code&gt;:main&lt;/code&gt; at the REPL prompt and typing in lines of text. We can also
do &lt;code&gt;stack build&lt;/code&gt; to native-compile into a shippable binary.&lt;/p&gt;
&lt;p&gt;But another option is to ship the source code as a standalone one-file
script. This can be very convenient in some circumstances, when you
can rely on the recipient simply installing Stack.&lt;/p&gt;
&lt;p&gt;Here&apos;s how we can turn our program into such a standalone script: just
add the following two lines and make the file executable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env stack
-- stack --resolver lts-6.9 --install-ghc runghc --package pcre-heavy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Stack will read the embedded command in order to install GHC, if
needed, and first download and install the packages listed (here
&lt;code&gt;pcre-heavy&lt;/code&gt;), if needed. We have pinned down the exact version of
LTS in order to guarantee what versions of everything will be used by
Stack. (Note: in this case, because of FFI with a
C library, the recipient has to install PCRE first.)&lt;/p&gt;
&lt;p&gt;So if you have short programs that don&apos;t need to be organized into
full-scale Cabal projects, you can treat Haskell as a &quot;scripting
language&quot; with full access to the libraries of Hackage!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ app/PCREHeavyExampleMain.hs &amp;lt; input.txt &amp;gt; output.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A warning&lt;/h3&gt;
&lt;p&gt;Although this Stack-as-Haskell-interpreter feature is kind of cool, I
prefer to write modular, separately testable libraries, while having
the &lt;code&gt;main&lt;/code&gt; driver of the &lt;code&gt;Main&lt;/code&gt; module of a program just use library
modules that do most of the real work. Furthermore, I prefer to build
and use native-compiled libraries and binaries because they&apos;re just
much faster to start up and also run: &lt;code&gt;runghc&lt;/code&gt; is a Haskell
interpreter rather than a native optimizing compiler. But the beauty
of the GHC Haskell world is you can run in either mode, and flip from
one to the other seamlessly.&lt;/p&gt;
&lt;h3&gt;Here&apos;s our complete example standalone program&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env stack
-- stack --resolver lts-6.9 --install-ghc runghc --package pcre-heavy

{-# LANGUAGE QuasiQuotes #-}

module Main where

import Text.Regex.PCRE.Heavy (Regex, re, scan)
import Data.Maybe (listToMaybe)
import Text.Printf (printf)

-- | Match a media name, audio/video, and optional missing/unlinked.
mediaRegex :: Regex
mediaRegex = [re|^@Media:\t([^ ,]+)\ *,\ *(audio|video)(\ *,\ *(?:missing|unlinked))?|]

data Info =
    Skip
  | Audio FilePath
  | Video FilePath
    deriving (Eq, Show)

-- | Extract information about a media file if it is present.
extractIfPresent :: (String, [String]) -&amp;gt; Info
extractIfPresent (_, [name, &quot;audio&quot;]) = Audio name
extractIfPresent (_, [name, &quot;video&quot;]) = Video name
extractIfPresent (_, _) = Skip

-- | Output a report.
reportOnInfo :: Maybe Info -&amp;gt; IO ()
reportOnInfo Nothing = putStrLn &quot;no match&quot;
reportOnInfo (Just Skip) = putStrLn &quot;match, but missing or unlinked&quot;
reportOnInfo (Just (Audio path)) = printf &quot;audio at %s\n&quot; path
reportOnInfo (Just (Video path)) = printf &quot;video at %s\n&quot; path

-- | Driver, in traditional right-to-left syntax.
main :: IO ()
main = do
  s &amp;lt;- getContents
  mapM_ (reportOnInfo
        . fmap extractIfPresent
        . listToMaybe
        . scan mediaRegex
       ) (lines s)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Some additional notes&lt;/h2&gt;
&lt;p&gt;One limitation faced by a short expository article with example code
is that we don&apos;t like to waste space and attention, and therefore tend
to present quick-and-dirty code, rather than production-level code
(which is efficient, has sensible error recovery, well-commented). I&apos;ve
been thinking about the dilemma of &lt;em&gt;how not to give the
wrong impression and set a bad example by showing simplistic example
code&lt;/em&gt;. There&apos;s no easy answer, but I felt it might be useful to
provide optional &quot;advanced&quot; notes sometimes, on how to write real code.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pcre-heavy&lt;/code&gt; allows matching not only of &lt;code&gt;String&lt;/code&gt;, but also of
&lt;code&gt;ByteString&lt;/code&gt; and &lt;code&gt;Text&lt;/code&gt; types. In practice, for efficiency, we
want to use
&lt;a href=&quot;https://hackage.haskell.org/package/bytestring&quot;&gt;&lt;code&gt;bytestring&lt;/code&gt;&lt;/a&gt; and
&lt;a href=&quot;https://hackage.haskell.org/package/text&quot;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/a&gt; as much as possible,
rather than the inefficient &lt;code&gt;String&lt;/code&gt; type. (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-12-24-days-of-hackage-text.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-12-24-days-of-hackage-text.html&quot;&amp;gt;A 2012 day of hackage article talks about text&amp;lt;/span&amp;gt;.)
Since the underlying PCRE C library uses bytes, I generally hand
bytestrings to &lt;code&gt;pcre-heavy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The sample driver code uses lazy I/O to get the lines from input. This
is superficially elegant and concise for pedagogical purposes, but in
real life is a source of resource leaks and other problems and even
causes people to think &quot;Haskell is inefficient&quot;. For real work, I like
to use &lt;a href=&quot;https://hackage.haskell.org/package/pipes&quot;&gt;&lt;code&gt;pipes&lt;/code&gt;&lt;/a&gt;, which was
covered in another
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-16-24-days-of-hackage-pipes.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-16-24-days-of-hackage-pipes.html&quot;&amp;gt;2012 day of Hackage&amp;lt;/span&amp;gt;
and also has an
&lt;a href=&quot;https://hackage.haskell.org/package/pipes-4.1.7/docs/Pipes-Tutorial.html&quot;&gt;extensive, beautiful tutorial&lt;/a&gt;
by its author, Gabriel Gonzalez, who also has a fantastic,
long-running, active blog
&lt;a href=&quot;http://www.haskellforall.com/&quot;&gt;&quot;Haskell for all&quot;&lt;/a&gt; that every
Haskeller should follow.&lt;/p&gt;
&lt;p&gt;Finally, was a regex the right choice here? It was simple enough for
this problem, but you can see from the ad hoc pattern matching and
hardcoded strings and fragile positional ordering and number of groups
that things could get error-prone really quickly if the regex got any
more complex or we wanted to do proper error handling in case of a
failed match.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Regex support is not a strong point of the Haskell ecosystem, which is
geared to more structured parsing, but there are options if you really
want to use regexes, and I like the Perl-style &lt;code&gt;pcre-light&lt;/code&gt; family of
libraries that now includes &lt;code&gt;pcre-heavy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Also, I showed how to add two lines to the top of a Haskell program to
turn it into a Stack script.&lt;/p&gt;
&lt;h3&gt;(Update from day 9)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/&quot;&gt;Day 9&lt;/a&gt;
covers more libraries based on Template Haskell.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series are at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Haskell tidbits: 24 days of Hackage, 2015: day 1: Introduction and Stack</title><link>https://franklinchen.com/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/</guid><pubDate>Mon, 30 Nov 2015 21:20:11 GMT</pubDate><content:encoded>&lt;h2&gt;Table of contents for the whole series&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Day 1: &lt;a href=&quot;/blog/2015/12/01/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/&quot;&gt;Introduction and Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 2: &lt;a href=&quot;/blog/2015/12/02/24-days-of-hackage-2015-day-2-regexes-with-pcre-heavy-standalone-haskell-scripts-using-stack/&quot;&gt;Regexes with pcre-heavy; standalone Haskell scripts using Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 3: &lt;a href=&quot;/blog/2015/12/03/24-days-of-hackage-2015-day-3-hspec-the-importance-of-testing/&quot;&gt;HSpec; the importance of testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 4: &lt;a href=&quot;/blog/2015/12/04/24-days-of-hackage-2015-day-4-wreq-web-client-programming-with-notes-on-lens-and-operator-syntax/&quot;&gt;wreq: Web client programming;
with notes on lens and operator syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 5: &lt;a href=&quot;/blog/2015/12/05/24-days-of-hackage-2015-day-5-should-not-typecheck-making-haskell-sort-of-dynamically-typed-with-deferred-type-errors/&quot;&gt;should-not-typecheck: making
Haskell sort of dynamically typed with deferred type errors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 6: &lt;a href=&quot;/blog/2015/12/06/24-days-of-hackage-2015-day-6-finding-utilities-with-hoogle-and-hayoo-missingh-extra/&quot;&gt;finding utilities with Hoogle
and Hayoo: MissingH, extra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 7: &lt;a href=&quot;/blog/2015/12/07/24-days-of-hackage-2015-day-7-semigroups-nonempty-list-and-a-case-study-of-types-and-tests/&quot;&gt;semigroups; NonEmpty list and
a case study of types and tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 8: &lt;a href=&quot;/blog/2015/12/08/24-days-of-hackage-2015-day-8-multiset-i-wish-this-were-in-the-standard-containers-package/&quot;&gt;multiset; I wish this were in
the standard containers package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 9: &lt;a href=&quot;/blog/2015/12/09/24-days-of-hackage-2015-day-9-template-haskell-goodies-here-interpolate-file-embed/&quot;&gt;Template Haskell goodies:
here, interpolate, file-embed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 10: &lt;a href=&quot;/blog/2015/12/10/24-days-of-hackage-2015-day-10-s-cargot-using-s-expression-syntax/&quot;&gt;s-cargot: using S-expression syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 11: &lt;a href=&quot;/blog/2015/12/11/24-days-of-hackage-2015-day-11-monad-loops-avoiding-writing-recursive-functions-by-refactoring/&quot;&gt;monad-loops: avoiding
writing recursive functions by refactoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 12: &lt;a href=&quot;/blog/2015/12/12/24-days-of-hackage-2015-day-12-json-autotype-inferring-types-from-data/&quot;&gt;json-autotype: inferring
types from data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 13: &lt;a href=&quot;/blog/2015/12/13/24-days-of-hackage-2015-day-13-hint-runtime-eval-for-haskell/&quot;&gt;hint: runtime eval for Haskell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 14: &lt;a href=&quot;/blog/2015/12/14/24-days-of-hackage-2015-day-14-earley-a-promising-newer-parser-library-for-haskell/&quot;&gt;Earley: a promising newer
parser library for Haskell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 15: &lt;a href=&quot;/blog/2015/12/15/24-days-of-hackage-2015-day-15-iospec-testing-io-and-some-quickcheck-tricks/&quot;&gt;IOSpec: testing IO; and some
QuickCheck tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 16: &lt;a href=&quot;/blog/2015/12/16/24-days-of-hackage-2015-day-16-safe-what-is-safety-anyway/&quot;&gt;safe; what is safety anyway?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 17: &lt;a href=&quot;/blog/2015/12/17/24-days-of-hackage-2015-day-17-ansi-wl-pprint-avoiding-string-hacking/&quot;&gt;ansi-wl-pprint: avoiding
string hacking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 18: &lt;a href=&quot;/blog/2015/12/18/24-days-of-hackage-2015-day-18-vector-vector-algorithms-unleash-your-inner-c-programmer/&quot;&gt;vector, vector-algorithms: unleash your inner C programmer!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 19: &lt;a href=&quot;/blog/2015/12/19/24-days-of-hackage-2015-day-19-ghc-core-html-list-fusion-probe-checking-ghcs-fusion-rewrite-rules-for-erasing-intermediate-data-from-existence/&quot;&gt;ghc-core-html,
list-fusion-probe; checking GHC&apos;s fusion rewrite rules for erasing intermediate data from existence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 20: &lt;a href=&quot;/blog/2015/12/20/24-days-of-hackage-2015-day-20-dimensional-type-checked-computation-on-physical-quantities-with-units/&quot;&gt;dimensional: type-checked computation on physical quantities with units&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 21: &lt;a href=&quot;/blog/2015/12/21/24-days-of-hackage-2015-day-21-hood-ghood-hoed-observation-oriented-debugging-in-haskell/&quot;&gt;hood, GHood, Hoed: observation oriented debugging in Haskell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 22: &lt;a href=&quot;/blog/2015/12/22/24-days-of-hackage-2015-day-22-shake-the-dynamic-build-system/&quot;&gt;Shake: the dynamic build system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 23: &lt;a href=&quot;/blog/2015/12/23/24-days-of-hackage-2015-day-23-liquid-haskell-refinement-types-for-the-real-world/&quot;&gt;Liquid Haskell: refinement
types for the real world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Day 24: &lt;a href=&quot;/blog/2015/12/24/24-days-of-hackage-2015-day-24-conclusion-and-thanks/&quot;&gt;conclusion and thanks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&lt;a href=&quot;http://haskellbr.com/&quot;&gt;The Haskell user group in Brazil&lt;/a&gt;&apos;s
translation of the series into
Portuguese is included at their &lt;a href=&quot;http://blog.haskellbr.com/&quot;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Day 1&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://www.reddit.com/r/haskell/comments/3v108p/24_days_of_hackage_2015_day_1_introduction_and/&quot;&gt;Reddit discussion&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;A couple of days ago, I happened to see a
&lt;a href=&quot;https://twitter.com/acid2/status/669882628695281669&quot;&gt;tweet from Ollie Charles&lt;/a&gt;
that he didn&apos;t have time to do his usual annual December &quot;24 days of...&quot;
Haskell blog posts this year (2015) and felt sad because I&apos;ve
learned a huge amount from
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/&quot;&amp;gt;reading them&amp;lt;/span&amp;gt;. In both 2012 and 2013, he
wrote &quot;24 days of Hackage&quot;, daily short and sweet blog posts that
showed how to use selected Haskell packages you can get from the
community archive &lt;a href=&quot;https://hackage.haskell.org/&quot;&gt;Hackage&lt;/a&gt;, and in 2014
he covered GHC language extensions.&lt;/p&gt;
&lt;p&gt;With some trepidation, I decided that I would do a &quot;24 days of
Hackage&quot; series myself to cap off this year, to share a selection of
the huge number of Haskell packages I find useful. I thought it would
be particularly appropriate to do this given that 2015 was the year
that I migrated to &lt;em&gt;using Haskell as my main language&lt;/em&gt; for most new work and
personal projects, and therefore this has been a year of considerable
discovery for me.&lt;/p&gt;
&lt;h2&gt;All the code&lt;/h2&gt;
&lt;p&gt;All my code for my article series will be at
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;My selection criteria&lt;/h2&gt;
&lt;p&gt;How to choose what to cover? I like what Ollie wrote in his
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ocharles.org.uk/blog/posts/2012-12-01-24-days-of-hackage.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ocharles.org.uk/blog/posts/2012-12-01-24-days-of-hackage.html&quot;&amp;gt;2012 inaugural post&amp;lt;/span&amp;gt;:
&quot;This will be a whirlwind tour of some modules that I use on an almost
daily basis, including modules that have inspired me, modules that
have changed the way I think about code, and some modules that are so
amazing I’m not even smart enough to use them!&quot;&lt;/p&gt;
&lt;p&gt;My own intention: some of what I&apos;ll cover is already popular and
well-known, some may be just minor but useful utilities, some may be
completely obscure, but the underlying theme will be &quot;stuff I use and
can briefly say something useful about&quot;.&lt;/p&gt;
&lt;h2&gt;Stack&lt;/h2&gt;
&lt;p&gt;It was a no-brainer to choose the first day&apos;s topic:
&lt;a href=&quot;http://haskellstack.org/&quot;&gt;Stack&lt;/a&gt;, the main new thing for Haskell in
2015 other than &lt;a href=&quot;https://www.haskell.org/ghc/&quot;&gt;GHC&lt;/a&gt; 7.10.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stack changed my (Haskell) life.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Stack is a game changer for the Haskell community. It is an all-in-one
solution for creating Haskell projects, managing dependencies,
building, and more. Since Stack came out, I&apos;ve been slowly migrating
old projects to use it, and I use Stack for all new projects,
including the
&lt;a href=&quot;https://github.com/FranklinChen/twenty-four-days2015-of-hackage&quot;&gt;repo for this article series&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not giving a full-blown tutorial on Stack here today, just a
little taste, and you can read the
&lt;a href=&quot;http://haskellstack.org/&quot;&gt;official documentation&lt;/a&gt; for details, but
what I want to emphasize is that Stack is useful not only for
experienced developers, but especially also for newcomers, so part of
today&apos;s article is geared specifically to newcomers (or those who
tried Haskell once and are interested in a fresh start with better
tooling).&lt;/p&gt;
&lt;h2&gt;&quot;How do I get started with Haskell&quot;?&lt;/h2&gt;
&lt;p&gt;When I launched &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://pittsburghhaskell.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://pittsburghhaskell.org/&quot;&amp;gt;Pittsburgh Haskell&amp;lt;/span&amp;gt;
in February this year (2015), I faced a huge hurdle: helping newcomers
to Haskell get started. I created an introductory workshop session,
but a huge number of people were discouraged by my best shot at
creating &lt;a href=&quot;https://github.com/pittsburgh-haskell/haskell-installation&quot;&gt;a now-obsolete set of Haskell installation instructions&lt;/a&gt; that would work for Mac OS,
Windows, and Linux, and people had major problems installing a basic
tool chain, and versioning issues if they already had an old version
of GHC installed. Too much time was wasted on trying to help people with
installation.&lt;/p&gt;
&lt;p&gt;Pittsburgh Haskell happened to go on hiatus in April as I got busy
with many other things and there was no momentum at the time to keep
it going, but I believe one huge problem in trying to create a new
local Haskell community from newcomers was the tooling/setup
annoyance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stack solves this problem.&lt;/strong&gt; If I gave an introductory Haskell workshop again, I would definitely use Stack.&lt;/p&gt;
&lt;h2&gt;An example of getting started with Stack using a custom template&lt;/h2&gt;
&lt;p&gt;If you don&apos;t already use Stack,
&lt;a href=&quot;http://docs.haskellstack.org/en/stable/README.html#how-to-install&quot;&gt;download it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Stack Web site already has documentation on how to get started
with Stack using a default template. Here, I want to promote the idea
of using and sharing custom templates. This is not documented so well,
but I think will become more and more important for newcomers, and is
also of course useful for any of us who end up creating the same
boilerplate project setups.&lt;/p&gt;
&lt;h3&gt;Using an official template&lt;/h3&gt;
&lt;p&gt;I&apos;ve created a custom template called &lt;code&gt;franklinchen&lt;/code&gt; that is part of
the official &lt;a href=&quot;https://github.com/commercialhaskell/stack-templates&quot;&gt;&lt;code&gt;stack-templates&lt;/code&gt;&lt;/a&gt;
repo.&lt;/p&gt;
&lt;p&gt;If you run&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack new stack-template-demo franklinchen
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;you will be prompted for information to create a new project called &lt;code&gt;stack-template-demo&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Using your own local template&lt;/h3&gt;
&lt;p&gt;Note that the template specified does &lt;em&gt;not&lt;/em&gt; have to be in the official
&lt;code&gt;stack-templates&lt;/code&gt; repo. It can also be on your local file system. For
example, before I submitted my template to &lt;code&gt;stack-templates&lt;/code&gt;, I used
to run&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack new stack-template-demo /path/on/my/computer/to/franklinchen.hsfiles
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where &lt;code&gt;franklinchen.hsfiles&lt;/code&gt; is my template (read below on creating
your own template).&lt;/p&gt;
&lt;p&gt;(I&apos;ve put up an instance of the generated project up
&lt;a href=&quot;https://github.com/FranklinChen/stack-template-demo&quot;&gt;on GitHub&lt;/a&gt; if
you want to look at its structure without installing and running Stack
right now.)&lt;/p&gt;
&lt;h3&gt;Getting started with the newly generated project&lt;/h3&gt;
&lt;p&gt;Enter the project directory:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd stack-template-demo
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Stack downloads GHC for you&lt;/h3&gt;
&lt;p&gt;Run&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack setup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you do not already have an appropriate version of GHC installed,
Stack will &lt;em&gt;automatically&lt;/em&gt; download and install it for you, into an
area in Stack&apos;s configuration directory &lt;code&gt;~/.stack/&lt;/code&gt;. The important
thing to note is that when using Stack, multiple versions of GHC can
coexist as desired for different build configurations and setups. This
feature is really important, because not everyone uses the same
version of GHC and you can build your project against multiple
versions of GHC easily.&lt;/p&gt;
&lt;p&gt;This automatic-downloading feature is particularly useful for
newcomers who don&apos;t need to mess around with some kind of separate
global installation requiring special privileges.&lt;/p&gt;
&lt;p&gt;The output, if Stack needs to download anything:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Preparing to install GHC to an isolated location.
This will not interfere with any system-level installation.
Downloaded ghc-7.10.2.
Installed GHC.
stack will use a locally installed GHC
For more information on paths, see &apos;stack path&apos; and &apos;stack exec env&apos;
To use this GHC and packages outside of a project, consider using:
stack ghc, stack ghci, stack runghc, or stack exec
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Launching the GHCi REPL&lt;/h3&gt;
&lt;p&gt;The most important thing for a newcomer to Haskell is to get started
with the GHCi REPL, so let&apos;s do that right away. Doing this within the
context of a project while preloading the modules of the project is
simple with Stack.&lt;/p&gt;
&lt;p&gt;Run&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack ghci
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that &lt;strong&gt;only the first time&lt;/strong&gt; you do this (or other commands that
require getting library dependencies), Stack may take a while to
download and build them. The dependencies will actually end up being
installed and cached such that &lt;em&gt;other projects&lt;/em&gt; in the future that use
them can reuse them. This is a huge advantage of using Stack versus
the old days before Stack, when there was always an issue of
redownloading and recompiling the same libraries for different
projects; that was a tremendous time and space waster! Stack
intelligently figures out for you what can be shared consistently or
not.&lt;/p&gt;
&lt;p&gt;Stack launches a GHCi REPL with our modules preloaded:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Ok, modules loaded: Lib, Main.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In &lt;code&gt;src/Lib.hs&lt;/code&gt; of the sample project, we have a silly module
illustrating some &lt;a href=&quot;https://www.haskell.org/haddock/&quot;&gt;Haddock&lt;/a&gt;
documentation comments:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- | A library to do stuff.
module Lib
    (
      ourAdd
    ) where

-- | Add two &apos;Int&apos; values.
ourAdd :: Int  -- ^ left
       -&amp;gt; Int  -- ^ right
       -&amp;gt; Int  -- ^ sum
ourAdd x y = x + y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can access the &lt;code&gt;Lib&lt;/code&gt; module from the REPL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*Main&amp;gt; ourAdd 2 3
5
*Main&amp;gt; Lib.ourAdd 4 5
9
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can also access &lt;code&gt;Main&lt;/code&gt;, which is defined in &lt;code&gt;app/Main.hs&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;module Main where

import Lib (ourAdd)

import Text.Printf (printf)

main :: IO ()
main = printf &quot;2 + 3 = %d\n&quot; (ourAdd 2 3)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;*Main&amp;gt; main
2 + 3 = 5
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Building and running the project&lt;/h3&gt;
&lt;p&gt;You could have explicitly compiled the project first, before launching
the REPL. In practice in real projects, I start by compiling a project
to get the dependencies compiled, before I use GHCi, but the above
does it for you too:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Because I defined a native-compiled binary executable named
&lt;code&gt;stack-template-demo&lt;/code&gt; in our Cabal file &lt;code&gt;stack-template-demo.cabal&lt;/code&gt;,
we can run the executable:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack exec stack-template-demo
2 + 3 = 5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I supplied unit tests for &lt;code&gt;Lib&lt;/code&gt; in &lt;code&gt;test/LibSpec.hs&lt;/code&gt; that can be run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack test
Lib
  Lib
    works
    ourAdd is commutative

Finished in 0.0007 seconds
2 examples, 0 failures
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installing the library and executable&lt;/h3&gt;
&lt;p&gt;You can now install the library and executable for your own use later:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack install
...
...
Copying from /Users/chen/stack-template-demo/.stack-work/install/x86_64-osx/lts-3.16/7.10.2/bin/stack-template-demo to /Users/chen/.local/bin/stack-template-demo

Copied executables to /Users/chen/.local/bin:
- stack-template-demo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For example (since &lt;code&gt;~/.local/bin&lt;/code&gt; is in my &lt;code&gt;PATH&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ stack-template-demo
2 + 3 = 5
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Your own Stack template configuration&lt;/h3&gt;
&lt;p&gt;When using Stack templates, it&apos;s useful to set up a
configuration so that information can automatically be filled out for
you when you generate new projects. The documentation for
configuration is
&lt;a href=&quot;http://docs.haskellstack.org/en/stable/yaml_configuration.html&quot;&gt;here&lt;/a&gt;. Create
a file in
&lt;code&gt;~/.stack/config.yaml&lt;/code&gt;. Mine has:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;templates:
  params:
    author-email: &quot;franklinchen@franklinchen.com&quot;
    author-name: &quot;Franklin Chen&quot;
    category: test
    copyright: &quot;2015&quot;
    github-username: &quot;FranklinChen&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Other bells and whistles&lt;/h3&gt;
&lt;p&gt;I try to use &lt;a href=&quot;https://travis-ci.org/&quot;&gt;Travis CI&lt;/a&gt; for any public
code I put up, so my template generates a &lt;code&gt;.travis.yml&lt;/code&gt; file that uses
Stack. I&apos;ve started to migrate my former Travis setups based on
&lt;a href=&quot;https://github.com/hvr/multi-ghc-travis&quot;&gt;&lt;code&gt;multi-ghc-travis&lt;/code&gt;&lt;/a&gt; to use
Stack instead.&lt;/p&gt;
&lt;h2&gt;Creating a custom Stack project template&lt;/h2&gt;
&lt;p&gt;It was surprising to me that how to create a custom template is not
covered in the main Stack documentation. Instead, I found it at the
&lt;a href=&quot;https://github.com/commercialhaskell/stack-templates&quot;&gt;&lt;code&gt;stack-templates&lt;/code&gt;&lt;/a&gt;
site.&lt;/p&gt;
&lt;p&gt;The method of creating a custom template is kind of clumsy, involving
creating a single file with embedded directives to indicate generated
file name and directory structure, but it&apos;s a start.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For day 1 of my &quot;24 days of Hackage, 2015&quot;, I&apos;ve briefly introduced
how to use Stack, the Haskell tool that I&apos;m using to build and run all
the sample code for this article series.&lt;/p&gt;
&lt;p&gt;Next up: some real code!&lt;/p&gt;
</content:encoded></item><item><title>Clever chess tactics that were not what they seemed</title><link>https://franklinchen.com/blog/2015/11/30/clever-chess-tactics-that-were-not-what-they-seemed/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/11/30/clever-chess-tactics-that-were-not-what-they-seemed/</guid><pubDate>Mon, 30 Nov 2015 07:25:52 GMT</pubDate><content:encoded>&lt;p&gt;In round 3 of the current 6-round Pittsburgh Chess Club Tuesday night
tournament, I played a very tense game that led to an unusual position
with beautiful tactical possibilities. My opponent, Melih, is a strong
player who is a winner of the 2015 Pittsburgh Chess Club Championship earlier
this year, and had won the last two tournament games we have played,
so I came into this game anxious and also thirsty for revenge.&lt;/p&gt;
&lt;p&gt;The game proved to be very challenging for both of us. I achieved a
better position out of the opening as Black but was too cautious to
press more aggressively. After more than 3 hours (!) of play, we ended
up in a simplified late middlegame in which I had only a small but
clear advantage. We were both clearly physically and mentally
exhausted, and starting to run out of time (these tournament games
have a time control of 2 hours per person with a 5-second delay per
move). It was up to me to try to find a way to win by inducing errors
in his play.&lt;/p&gt;
&lt;h2&gt;Get ready to be quizzed!&lt;/h2&gt;
&lt;p&gt;What ended up happening was in retrospect both remarkable and
comic. To maximize your entertainment as well as challenge your
tactical skills, I recommend pausing at each diagrammed position below
in order to ask yourself what move you would play, and why, before
gradually uncovering the whole story.&lt;/p&gt;
&lt;p&gt;Note: an interactive chess board with all variations is provided at
the end of this article.&lt;/p&gt;
&lt;h2&gt;First, assess a quiet-looking starting position&lt;/h2&gt;
&lt;p&gt;For context, here is the position after 21 moves, after Black played
21...Qc6.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/22w.png&quot; alt=&quot;21...Qc6; White to move&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;What opening do you think this middlegame came from?&lt;/li&gt;
&lt;li&gt;Who stands better and why?&lt;/li&gt;
&lt;li&gt;What is White&apos;s best plan, and what is Black&apos;s best plan?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Answers&lt;/h3&gt;
&lt;p&gt;Congratulations if you guessed this was a
&lt;a href=&quot;https://en.wikipedia.org/wiki/French_Defence#Advance_Variation:_3.e5&quot;&gt;French Defense, Advance Variation&lt;/a&gt;,
gone totally wrong for White!&lt;/p&gt;
&lt;p&gt;Black stands better and has a simple plan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;attack White&apos;s backward Pawn on c3 on the half-open file, and
perhaps also the e5 Pawn as well; and the a2 Pawn and b4 Pawn are
also potential targets&lt;/li&gt;
&lt;li&gt;use the half-open c-file for the Rooks, and the dark-squared Bishop
against White&apos;s Pawns, and get the Queen involved as well&lt;/li&gt;
&lt;li&gt;using these attacks, overload White&apos;s defenses somehow in order to
win at least one of those Pawns to enter a probably winning endgame&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;White&apos;s only possible counter-plan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;defend the weak Queen side Pawns&lt;/li&gt;
&lt;li&gt;maybe plant the Knight on a good outpost such as d4&lt;/li&gt;
&lt;li&gt;defend the Pawn on e5 with maybe an f4 advance, and hope to attack
Black&apos;s King side with perhaps an f5 break&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Progress after seven moves?&lt;/h2&gt;
&lt;p&gt;Black has just played 28...Rc4.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/29w.png&quot; alt=&quot;28...Rc4; White to move&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Who has made more progress in the last seven moves: White or Black?&lt;/li&gt;
&lt;li&gt;What is the nature of the progress made?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Answers&lt;/h3&gt;
&lt;p&gt;White has played to wait to see what Black is up to; meanwhile, Black
has made some progress on the Queen side by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;doubling Rooks on the half-open c-file&lt;/li&gt;
&lt;li&gt;using the Queen to bear down on White&apos;s a-Pawn, which White has
(mistakenly) advanced to a3.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;White played a surprising move&lt;/h2&gt;
&lt;p&gt;White has just played 29 Rac2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/29b.png&quot; alt=&quot;29 Rac2; Black to move&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;p&gt;On the 29th move, White moved the Rook from a2 to c2, leaving the
defense of the a3 Pawn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the meaning of this strange move?!&lt;/li&gt;
&lt;li&gt;Can Black just take the Pawn with the Queen?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Answers&lt;/h3&gt;
&lt;p&gt;You may be thinking &quot;White is provocatively setting a trap for Black
to fall into&quot;. You get credit if you can see the trap.&lt;/p&gt;
&lt;h2&gt;Black fell into a trap?&lt;/h2&gt;
&lt;p&gt;I played 29...Qxa3.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/30w.png&quot; alt=&quot;29...Qxa3; White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But wait, I took the Pawn! Did I fall into a trap?&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;What is the trap you saw earlier, if you saw it?&lt;/li&gt;
&lt;li&gt;Is it really a trap?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;White closed the trap?&lt;/h2&gt;
&lt;p&gt;White has played 30 Ra2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/30b.png&quot; alt=&quot;30 Ra2; Black to move&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Answers&lt;/h3&gt;
&lt;p&gt;So the Rook moved back to a2, apparently trapping Black&apos;s Queen. But
again, was it really a trap?&lt;/p&gt;
&lt;h2&gt;Black refuted the trap?&lt;/h2&gt;
&lt;p&gt;Black played 30...Rxd4.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/31w.png&quot; alt=&quot;30...Rxd4; White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You get credit if you saw this move taking White&apos;s Knight on d4, and
saw that White&apos;s Queen is overloaded such that retaking the Rook in
either one of two ways leads to losing back the Rook on c1 and
therefore losing a piece overall and the game.&lt;/p&gt;
&lt;p&gt;I was very proud of seeing this tactic. (If you saw a different move
for Black, we&apos;ll discuss that further down below.)&lt;/p&gt;
&lt;h2&gt;White refuted the refutation?&lt;/h2&gt;
&lt;p&gt;White played 31 Qc2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/31b.png&quot; alt=&quot;31 Qc2; Black to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When Melih moved his Queen to c2, I was in shock and disgust at
myself: in my fatigue near the end of this game, and overexcitement at
believing I had &quot;refuted&quot; a &quot;trap&quot;, I had completely failed to take
into account that White was not actually required to take my Rook on d4!&lt;/p&gt;
&lt;p&gt;Amusingly, it turns out that Melih, after playing 29 Rac2 setting the
&quot;trap&quot;, saw to his horror the resource 30...Rxd4, and thought he was
lost, but then saw 31 Qc2. So neither of us had originally seen this
saving resource for White.&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Is Black&apos;s Queen trapped for real now?&lt;/li&gt;
&lt;li&gt;What should Black do? Is Black lost? Or is Black still winning? Or
should Black start looking for a draw?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Black panicked, trying to draw&lt;/h2&gt;
&lt;p&gt;Yes, Black&apos;s Queen is trapped for real. You get credit if you saw
that Black&apos;s flashy 30...Rxd4 had this flaw.&lt;/p&gt;
&lt;p&gt;The only question for me was how best to give up my Queen.&lt;/p&gt;
&lt;p&gt;I chose poorly. In a daze, I could not think straight. I chose to give
back a Rook with 31...Qxc3, in order to force a trade Queens on c3 and
go into an endgame an exchange down for two Pawns, and hope for a draw.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/36w.png&quot; alt=&quot;31...Qxc3; White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was correct that the resulting position was objectively equal and
drawable, but in a time scramble, it&apos;s obviously easier to play White,
and for the rest of the game, both sides made major errors (with White
botching up winning positions and Black botching up drawn positions)
until a simplified position was reached (Rook and two Pawns for each
side) with only seconds left on the clock, and a draw agreed. I
consider myself lucky to have drawn. The final position was:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/draw.png&quot; alt=&quot;Agreed drawn&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;But Black could have played to win&lt;/h2&gt;
&lt;p&gt;You get credit if you chose instead to sacrifice the Queen with
31...Qxc1+ to get the Rook and Bishop and Pawns against White&apos;s Queen,
with advantage and a good chance of winning. After 32 Qxc1 Bxb4, Black
is about to win White&apos;s c3 Pawn:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/33rooksw.png&quot; alt=&quot;32...Bxb4; White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In fact, if you saw all this when thinking about whether to take the
Pawn on a3 in the first place, then you get bonus points for seeing a
way to an advantage through the sequence of tactical blows. Neither
Melih nor I saw any of this up front, unfortunately.&lt;/p&gt;
&lt;p&gt;I chickened out and did not take this continuation because after being
shocked that my Queen was disappearing, I experienced a visceral fear
that I needed to bring down White&apos;s Queen also, else it with White&apos;s
Rook might be dangerous to my King.&lt;/p&gt;
&lt;p&gt;It turns out that my fear was objectively unwarranted, as Black&apos;s
defenses are sufficient because of the power of the dark-squared
Bishop to hit White&apos;s e5 Pawn and even the f2 Pawn, but I was not
thinking straight any more as time was running out for the four-hour
game and it was already around 11 PM at night on a weekday.&lt;/p&gt;
&lt;h3&gt;One possible position&lt;/h3&gt;
&lt;p&gt;Here is a position that might have arisen if I had gone into this
variation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/35rooksw.png&quot; alt=&quot;White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The thing is, even though the computer says Black has an advantage, it
could be scary playing against White&apos;s Queen.&lt;/p&gt;
&lt;h3&gt;Another possible position&lt;/h3&gt;
&lt;p&gt;But analysis also shows that White has to be very careful. For
example, if White is greedy and wastes time taking Black&apos;s a7 Pawn
above, Black quickly gets a winning attack:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/37rooksw.png&quot; alt=&quot;White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In time pressure, anything can happen, and I think it would have been
very likely that White would have grabbed the a7 Pawn, after which
Black&apos;s position play itself.&lt;/p&gt;
&lt;h2&gt;Finally: Black&apos;s real refutation!&lt;/h2&gt;
&lt;p&gt;I said you get extra credit for seeing everything to the point of
sacrificing Black&apos;s Queen for an advantage. But you only get full
credit if you saw the real refutation of White&apos;s &quot;trap&quot; earlier in the
game! I kicked myself for not having seen it.&lt;/p&gt;
&lt;h3&gt;Questions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Was there a point at which Black could have deviated and won the
game outright?&lt;/li&gt;
&lt;li&gt;Hint: which of Black&apos;s pieces have we not focused on in the
variations covered so far?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Answers&lt;/h3&gt;
&lt;p&gt;Black could, after White &quot;trapped&quot; the Queen with 30 Ra2, used a
different and better deflection of White&apos;s overloaded Queen than
30...Rxd4, which was OK but not best.&lt;/p&gt;
&lt;p&gt;We haven&apos;t looked at Black&apos;s Bishop enough. I only saw this upon
recovering from the draw and analyzing the game later at home: the
winning shot is 30...Bg5!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2015-11-17/31varw.png&quot; alt=&quot;White to move&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If White blocks the threat to the Queen with 31 f4,
then Black just lops off the Pawn with 31...Bxf4 and now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;if White takes the Bishop or otherwise moves the Queen, Black will
win either the Rook on a2 or the Rook on c1&lt;/li&gt;
&lt;li&gt;if White takes Black&apos;s Queen, then Black takes White&apos;s Queen on d2
with tempo and will eventually win all three of White&apos;s weak
Pawns on dark squares (c3 followed by e5 and b4)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Either way, the endgame is an easy win for Black.&lt;/p&gt;
&lt;p&gt;Neither Melih nor I saw this winning resource for Black during the
game. We just weren&apos;t looking at that quiet Bishop because it hadn&apos;t
participated in anything up till that point.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Chess never ceases to surprise me. Tactical possibilities are
everywhere, and in this game, both Melih and I missed various
possible continuations, playing moves thinking we knew what had to
follow. I hope you enjoyed this story of missed opportunities and
incomplete calculations.&lt;/p&gt;
&lt;p&gt;My thanks to Melih for a challenging and fascinating game, and sharing
his thoughts with me afterwards.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/23445261516/in/datetaken/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/589/23445261516_25ee07e170_b.jpg&quot; alt=&quot;Franklin and Melih at the Pittsburgh Chess Club&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Appendix: interactive playable board&lt;/h2&gt;
&lt;p&gt;&amp;lt;script is:inline type=&quot;text/javascript&quot;
src=&quot;https://chesstempo.com/js/pgnyui.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script is:inline type=&quot;text/javascript&quot;
src=&quot;https://chesstempo.com/js/pgnviewer.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;link
type=&quot;text/css&quot;
rel=&quot;stylesheet&quot;
href=&quot;https://chesstempo.com/css/board-min.css&quot;&amp;gt;
&amp;lt;/link&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;script is:inline&amp;gt;
new PgnViewer(
{ boardName: &quot;demo&quot;,
pgnFile: &apos;/chess/ozbek-chen-2015-11-17/ozbek-chen.pgn&apos;,
pieceSet: &apos;merida&apos;,
pieceSize: 46
}
);
&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style is:inline&amp;gt;
#demo-stuff {
display: flex;
}&lt;/p&gt;
&lt;p&gt;#demo-moves {
overflow-y: auto;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div id=&quot;demo-stuff&quot;&amp;gt;
&amp;lt;div id=&quot;demo-container&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;demo-moves&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my talk &quot;A gentle conceptual introduction to functional programming&quot;</title><link>https://franklinchen.com/blog/2015/10/07/report-on-my-talk-a-gentle-conceptual-introduction-to-functional-programming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/10/07/report-on-my-talk-a-gentle-conceptual-introduction-to-functional-programming/</guid><pubDate>Thu, 08 Oct 2015 03:25:12 GMT</pubDate><content:encoded>&lt;p&gt;On behalf of the relatively new
&lt;a href=&quot;https://www.meetup.com/Pittsburgh-Functional-Programming-Meetup/&quot;&gt;Pittsburgh Functional Programming&lt;/a&gt;,
I gave an introductory talk held at Google Pittsburgh that I called
&lt;a href=&quot;https://www.meetup.com/Pittsburgh-Functional-Programming-Meetup/events/224593883/&quot;&gt;&quot;A gentle conceptual introduction to functional programming&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This presentation is part of an experiment, a big shift in how I&apos;m
trying to talk about not only &quot;functional programming&quot;, but any kind
of programming and more generally any topic at all (whether it&apos;s
cooking or music) for a wide audience. As I&apos;ve been doing more
teaching and collaboration in many areas of my life, I&apos;ve been trying
to figure out ways to better reach people. In particular, when
presenting something new, it&apos;s useful to motivate it and somehow
connect it to something they already know, even if it&apos;s different.&lt;/p&gt;
&lt;p&gt;I&apos;ll write more later about what I did differently in this talk than
I&apos;ve done in the past, and why. For now, I&apos;ll just say that one big
addition I made was that I prepared feedback forms to be filled out,
both to help me understand what I can do better and also to help
Pittsburgh Functional Programming plan further events and topics that
people want to see. So I will summarize the feedback I got (fifteen
participants filled out feedback forms).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Slides&lt;/h2&gt;
&lt;p&gt;For those who are curious about an outline of my talk, there are
&lt;a href=&quot;https://github.com/FranklinChen/gentle-conceptual-intro-to-fp-for-humans/raw/master/presentation.pdf&quot;&gt;slides&lt;/a&gt;,
with the caveat that much of what I said or did are not on the
slides. In fact, one of the most commented-on helpful aspects of the
presentation was not on the slides at all: my use of a whiteboard. I
was happy I specifically requested that the venue provide me with a
whiteboard. I knew it was going to make a difference.&lt;/p&gt;
&lt;h2&gt;Comments and suggestions&lt;/h2&gt;
&lt;h3&gt;Logistics&lt;/h3&gt;
&lt;p&gt;Some mentioned that I should have used a microphone. Point taken. This
is not the first time I&apos;ve forgotten to ask for a microphone. When
there&apos;s a large room and thirty people, even though I think I&apos;m
speaking loudly, it may not be loud enough.&lt;/p&gt;
&lt;h3&gt;Presentation&lt;/h3&gt;
&lt;p&gt;I was happy that commenters felt I did a good job providing an
introduction that was not too elementary (I knew that there would be a
wide range of experience among those who attended). They also
appreciated my use of concrete &lt;strong&gt;examples&lt;/strong&gt; and metaphors (such as the
pizza order).&lt;/p&gt;
&lt;p&gt;My use of a &lt;strong&gt;whiteboard&lt;/strong&gt; to draw pictures of immutable data structures
and step through the structural sharing that happens when you update
them was particularly well-received. I&apos;m convinced even more than ever
that helping with &lt;strong&gt;visualization&lt;/strong&gt; and &lt;strong&gt;process&lt;/strong&gt; is key.&lt;/p&gt;
&lt;p&gt;My giving &lt;strong&gt;concrete&lt;/strong&gt; pointers to libraries and other resources for
using FP in various languages (such as Python and JavaScript) was
noted. Just saying &quot;people are doing this, search for it&quot; is not
helpful.&lt;/p&gt;
&lt;p&gt;A few quotes that made me feel I succeeded in my objectives, which
were to give an introduction that would open a world and inspire
further exploration:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I much better understand now the paradigm behind FP. So now I have a
reason to explore it.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Thinking about immutable data in new way.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
It provided the foundation I was hoping for. I liked the data visualization.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
While I have encountered most of these topics before, the speaker did
an excellent job of giving a wide view of functional programming and
details beyond just the theory.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;Some things people are interested in learning and using&lt;/h3&gt;
&lt;p&gt;On the feedback form I requested suggestions for talk topics, hands-on
workshops, and study groups.&lt;/p&gt;
&lt;p&gt;Here are some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to use FP in a traditionally OO language&lt;/li&gt;
&lt;li&gt;FP for practical tasks such as command-line and Web&lt;/li&gt;
&lt;li&gt;FP design patterns&lt;/li&gt;
&lt;li&gt;Concurrency in FP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Languages people were interested in learning and using for FP (I list
those with at least two people writing them in):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Haskell (4 responses)&lt;/li&gt;
&lt;li&gt;Clojure (3 responses)&lt;/li&gt;
&lt;li&gt;Elm (2 responses)&lt;/li&gt;
&lt;li&gt;Scala (2 responses)&lt;/li&gt;
&lt;li&gt;Python (2 responses)&lt;/li&gt;
&lt;li&gt;JavaScript (2 responses)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I should note that in the discussions, where not everyone submitted a
written feedback form, I gathered there was a lot of curiosity about
Elm.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This wasn&apos;t much of a report on the presentation, and I&apos;ll need to
write up details on our session, but I haven&apos;t been writing much at
all, so I thought this brief summary of the feedback is better than
nothing, in order to continue to move forward.&lt;/p&gt;
&lt;p&gt;I&apos;m very grateful for the hosting at Google Pittsburgh and all who
came out to attend my presentation and gave me such detailed feedback
in person or on paper.&lt;/p&gt;
</content:encoded></item><item><title>Thoughts on learning that I have eaten English muffins wrong all my life</title><link>https://franklinchen.com/blog/2015/06/28/thoughts-on-learning-that-i-have-eaten-english-muffins-wrong-all-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/28/thoughts-on-learning-that-i-have-eaten-english-muffins-wrong-all-my-life/</guid><pubDate>Sun, 28 Jun 2015 22:25:34 GMT</pubDate><content:encoded>&lt;p&gt;Today, I found out I had been eating
&lt;a href=&quot;https://en.wikipedia.org/wiki/English_muffin&quot;&gt;English muffins&lt;/a&gt;
&lt;em&gt;wrong&lt;/em&gt; my whole life.&lt;/p&gt;
&lt;h2&gt;The story&lt;/h2&gt;
&lt;p&gt;This morning, while at breakfast in a hotel before Abby and I were
checking out before returning home, I suddenly decided I might as well
change things up and eat my egg and sausage patties inside the halves
of an English muffin (yesterday I had eaten them alone, and an
uninspiring crappy plain bagel on the side).&lt;/p&gt;
&lt;p&gt;As I was about to bite into my sandwich, Abby interrupted me and said,
&quot;You need to toast the English muffin.&quot; I said, &quot;I&apos;ve never toasted an
English muffin.&quot; She made a face of disgust and said, &quot;Eww, that&apos;s
&lt;em&gt;wrong&lt;/em&gt;, English muffins are designed to be eaten toasted! They are
disgusting raw.&quot;&lt;/p&gt;
&lt;p&gt;I disputed that there was a &quot;right&quot; way to eat English muffins, but
allowed her to toast the muffin halves for me.&lt;/p&gt;
&lt;p&gt;The resulting sandwich tasted pretty good. I then realized that I had
been eating English muffins wrong my entire life. How could this be?&lt;/p&gt;
&lt;h2&gt;My breakfast growing up in America&lt;/h2&gt;
&lt;p&gt;You have to understand that I spent the first couple of years of my
remembered childhood, as the first child of immigrant parents to
America, eating a breakfast that often consisted of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Congee&quot;&gt;congee&lt;/a&gt; (rice porridge) with
toppings (I particularly liked pickled cucumbers and
&lt;a href=&quot;https://en.wikipedia.org/wiki/Rousong&quot;&gt;rousong&lt;/a&gt;, a dried pork product).&lt;/p&gt;
&lt;p&gt;Bread was not part of my usual diet until I went to Kindergarten in
New York City, where I ate free lunches and was introduced to such
bizarre concepts as the grilled
&lt;a href=&quot;https://en.wikipedia.org/wiki/Cheese_sandwich&quot;&gt;cheese sandwich&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I did increasingly eat &quot;American&quot; foods as I grew up, but still, I was
never introduced to the full variety of breakfast foods for a long
time. It wasn&apos;t until I was over ten years old, for example, that I
took the initiative and convinced my mother that we should try out
pancakes and waffles and cinnamon toast. Jellies, jams, syrup, butter
really came into my life then.&lt;/p&gt;
&lt;p&gt;But English muffins were somehow left out. My mother bought them but
apparently &lt;em&gt;we ate them wrong&lt;/em&gt;. We didn&apos;t toast them. And because &lt;em&gt;they
didn&apos;t taste so good&lt;/em&gt; to me, I never really ate them again. For the
next decades of my life, given a choice, I never took an English
muffin if I could instead eat a donut, cupcake, bagel, or ordinary
sliced bread. I had come to associate English muffins with &quot;not
tasty&quot;.&lt;/p&gt;
&lt;h2&gt;Lessons learned from my conversion today&lt;/h2&gt;
&lt;p&gt;Well, this morning I learned that toasted English muffins are actually
pretty good. They have a particular texture, form factor, aroma,
crispness when toasted. Although I currently try to limit my intake of
bread in general, in the future if I am confronted with the usual free
hotel breakfast, I will definitely choose English muffins!&lt;/p&gt;
&lt;p&gt;After we returned home, I actually looked online to find out the
&quot;truth&quot; about English muffins. Well, it turns out that a lot of people
online do note that raw English muffins don&apos;t taste so good.&lt;/p&gt;
&lt;p&gt;What broader lessons have I learned?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is possible for an immigrant to live in a country for decades and
yet not fully understand what a native does, simply because of early
choices or misleading experiences in some aspect of life.&lt;/li&gt;
&lt;li&gt;Just because something tastes bad in one form doesn&apos;t mean it has to
taste bad in &lt;em&gt;all&lt;/em&gt; its possible forms (I am always learning this; I only
recently learned to &lt;a href=&quot;/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult&quot;&gt;enjoy Brussels sprouts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Although there is no such thing, objectively, as preparing or eating
something the &quot;wrong&quot; way, you might find some ways (including
generally accepted traditional practices) to have merit.&lt;/li&gt;
&lt;li&gt;People don&apos;t always tell you when you&apos;re doing something
&quot;wrong&quot;. Some might just be polite and remain silent. Others might
let the oddity slip because they think you are just being weird and
truly enjoy raw English muffins. Don&apos;t make the assumption that
people are doing what they really like; they could just be operating
out of habit and not knowing or having explored an alternative.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed learning that English muffins are actually edible after
all. I don&apos;t really expect to ever eat a raw English muffin again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Has anyone ever pointed out something to you that you weren&apos;t aware
of even though maybe you &quot;should&quot; have known? Did you feel
embarrassed or argue, or did you try out the new suggestion? When
you see someone doing something weird, do you ever step in and offer
a suggestion, or do you prefer to be polite and not be nosy?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;This evening when discussing the breakfast incident with Abby, somehow
the subject of bagels came up and she said something about toasting
bagels, and I recoiled in horror, because I was pretty sure that
&lt;em&gt;bagels are not supposed to be toasted&lt;/em&gt;. Again, I had to consult the
Internet to find out the &quot;truth&quot;.&lt;/p&gt;
&lt;p&gt;As you might expect, the truth is that I grew up with bagels living in
New York City and the East Coast in general, before moving to the
Midwest. &lt;a href=&quot;https://www.thedailymeal.com/real-new-yorkers-dont-toast-their-bagels&quot;&gt;&quot;Real New Yorkers don&apos;t toast their bagels&quot;&lt;/a&gt;.
If you have access to a fresh, good bagel, it&apos;s pretty wrong to toast
it, right? Well, as the article points out, there are differing
opinions, admittedly, and nobody argues that a crappy stale bagel or a
frozen one shouldn&apos;t be toasted. Still, out of sheer habit, I have
never toasted a bagel, even if it might deserve toasting. Interesting,
huh? It&apos;s just a habit. I see the logic of reviving a bagel as
needed. So I will consider toasting crappy bagels in the future if
they need that treatment.&lt;/p&gt;
</content:encoded></item><item><title>The importance of stalemate in chess: how chess is completely different from life</title><link>https://franklinchen.com/blog/2015/06/16/the-importance-of-stalemate-in-chess-how-chess-is-completely-different-from-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/16/the-importance-of-stalemate-in-chess-how-chess-is-completely-different-from-life/</guid><pubDate>Wed, 17 Jun 2015 02:16:19 GMT</pubDate><content:encoded>&lt;p&gt;I just saw a cute end to a top-level chess game that ended in a forced
draw because the would-be losing side &lt;a href=&quot;https://dejanbojkov.blogspot.com/2015/06/jakovenko-and-stalemate.html&quot;&gt;managed a swindle&lt;/a&gt; by giving away
all his pieces by force in order to create a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Stalemate&quot;&gt;stalemate&lt;/a&gt;. If you don&apos;t
play chess, a stalemate is what happens when it&apos;s your turn to move
and you have no legal moves. You can claim a draw when you are &lt;em&gt;totally
trapped&lt;/em&gt; in this way. So one way of saving an otherwise losing game,
when you are outnumbered and about to be checkmated (losing when your
King comes under attack and it&apos;s your move and you cannot stop the
check), is to find a brilliant way to be &lt;em&gt;unable to move&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/stalemate.png&quot; alt=&quot;Black forced a draw through being stalemated!&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Is this a totally bizarre concept or what? Why was this rule of chess
invented anyway? Wouldn&apos;t it make more sense if being trapped meant
&lt;em&gt;losing&lt;/em&gt;, like it does in real life conflicts?&lt;/p&gt;
&lt;h2&gt;History of stalemate&lt;/h2&gt;
&lt;p&gt;Stalemate was apparently
&lt;a href=&quot;https://en.wikipedia.org/wiki/Stalemate#History_of_the_stalemate_rule&quot;&gt;standardized to be a draw in the 19th century&lt;/a&gt;. Before
that, conventions differed on what the outcome of the game was
supposed to be.&lt;/p&gt;
&lt;p&gt;Now and then, notable chess players have called for the abolishment of
his rule, to replace the stalemate with a win for the side that
trapped the other side, because this is &quot;logical&quot; and corresponds to
what you would expect in war or in some other &quot;real life&quot; situation in
which you have pressed hard for a long time, accumulated a lot of
force, and can cause your opponent to not be able to move at all.&lt;/p&gt;
&lt;h2&gt;I like that stalemate is illogical&lt;/h2&gt;
&lt;p&gt;I&apos;m going to be blunt: I like that stalemate is &quot;illogical&quot;! It
creates tremendous difficulty for the side with more material to win
in endgames. I like that it gives the underdog a chance to avoid
losing by being clever. If stalemate were not a draw, then it would be
trivial to win many games in which one side has made a mistake and
lost a Pawn, because then all that has to be done is trade everything
off until all that remains is a King and Pawn versus King, and declare
victory. Stalemate means that the side with the extra Pawn has to work
super hard to avoid trading everything off, to avoid just mechanically
fighting battles with equal losses on both sides until one Pawn is
left.&lt;/p&gt;
&lt;p&gt;I like stalemate because in real life, often it is too easy for one
side to win just because of an early error by the loser. &lt;em&gt;Chess is not
real life&lt;/em&gt;, and I like it that way. Stalemate and other rules of chess
add bizarre whimsy and creativity to the game, just as the rule of
checkmate at all is counter to real life. In real life, you can kill
the general of an army and still lose the war. In chess, it&apos;s always
like in the movies, on the other hand: you can have a lone hero defy
all odds to get at the enemy King and sacrifice everything else for
this objective, and have a happy ending. There is something &lt;em&gt;romantic&lt;/em&gt;
about chess that is part of its appeal to me. Chess is a game of logic
but according to weird heroic rules, where sheer &lt;em&gt;material wealth&lt;/em&gt; is
not enough to guarantee a win.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It is unfortunate that many top-level chess games end in a draw, but
to abolish stalemate would change the capricious character of the
game in a way that ruins its appeal to me (on a lower level of play).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you are not a chess player, what do you think of the stalemate
rule? If you are a chess player, what do you think of it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Aegis and Cook: what happens when an open source developer dies?</title><link>https://franklinchen.com/blog/2015/06/16/aegis-and-cook-what-happens-when-an-open-source-developer-dies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/16/aegis-and-cook-what-happens-when-an-open-source-developer-dies/</guid><pubDate>Wed, 17 Jun 2015 01:37:39 GMT</pubDate><content:encoded>&lt;p&gt;By sheer accident, while I was looking for something else online, I
came across a Web site for &lt;a href=&quot;http://aegis.sourceforge.net/&quot;&gt;Aegis&lt;/a&gt;, a
distributed version control system I used at work back in 1995-1997. I
was surprised this software was still alive after twenty years. A lot
of software has a very short life span, and since I had not heard
anything about Aegis all this time, I would have guessed that it had
died.&lt;/p&gt;
&lt;p&gt;I remembered that we had used this software along with another tool
the author developed, called
&lt;a href=&quot;https://ftp.gnu.org/non-gnu/cook.README&quot;&gt;Cook&lt;/a&gt;, which was a
replacement for
&lt;a href=&quot;https://en.wikipedia.org/wiki/Make_%28software%29&quot;&gt;Make&lt;/a&gt;. I was
unsuccessful in locating any official Web site for Cook, so I assume
it is more or less dead.&lt;/p&gt;
&lt;p&gt;Meanwhile, I found by coincidence that actually, the author,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Peter_Miller_%28software_engineer%29&quot;&gt;Peter Miller&lt;/a&gt;,
died less than a year ago (July 2014). There was enough memory of him
that someone wrote that Wikipedia page on his contributions to open
source software. However, his Web site &lt;code&gt;http://www.canb.auug.org.au/~millerp/ &lt;/code&gt;, sadly, has died with him, and with that, the site he had on Cook.&lt;/p&gt;
&lt;p&gt;But we know that the Web is &quot;forever&quot;, right? Let&apos;s see.&lt;/p&gt;
&lt;p&gt;I found this old photo, for example.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20090111230031/http://miller.emu.id.au/pmiller/pmiller-1993-128.png&quot; alt=&quot;Peter Miller, 1993&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Wayback Machine&lt;/h2&gt;
&lt;p&gt;Basically, I checked the Wayback Machine, and it has some snapshots of
&lt;a href=&quot;https://web.archive.org/web/*/http://www.canb.auug.org.au/~millerp/&quot;&gt;his site&lt;/a&gt;. The
last working snapshot was
&lt;a href=&quot;https://web.archive.org/web/20090111230031/http://miller.emu.id.au/pmiller/&quot;&gt;from 2009&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is his old
&lt;a href=&quot;https://web.archive.org/web/20090327074944/http://miller.emu.id.au/pmiller/software/&quot;&gt;software page&lt;/a&gt;. Yes,
it includes a link to a Cook site, but it leads to a nonexistent
snapshot.&lt;/p&gt;
&lt;p&gt;I stopped because I am not that interested in reliving the early
history of Cook. I never met the guy, although I believe I exchanged
email with him when it was just his personal project and he was &quot;tech
support&quot;.&lt;/p&gt;
&lt;p&gt;I wonder how historians fifty years from now will be working. So much
is no longer on paper, but stored in random archives on hard drives
somewhere.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Software dies, people die. It was just weird for me to accidentally do
a bit of sleuthing to find more information about someone whose
software I once used a lot.&lt;/p&gt;
&lt;p&gt;I haven&apos;t made a &quot;will&quot; for my code. I suppose I should have a plan in
place for whatever I value.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you have a plan for your Web site or code or writings? Or do you
expect them to disappear? How do you feel about leaving something
behind?&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2015-06-29)&lt;/h3&gt;
&lt;p&gt;By accident, while reading an old blog post by Graydon Hoare about
&lt;a href=&quot;https://github.com/graydon/bors&quot;&gt;bors&lt;/a&gt;, which is used for continuous
integration for the Rust project, I noticed his
&lt;a href=&quot;http://graydon2.dreamwidth.org/1597.html&quot;&gt;shoutout to Peter Miller for Aegis&lt;/a&gt;. It&apos;s
great that Peter Miller&apos;s work inspired others to build systems that
are used today. One random person&apos;s ideas and software made a lasting
difference in the world!&lt;/p&gt;
</content:encoded></item><item><title>How learning about the Magna Carta in high school changed my life</title><link>https://franklinchen.com/blog/2015/06/13/how-learning-about-the-magna-carta-in-high-school-changed-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/13/how-learning-about-the-magna-carta-in-high-school-changed-my-life/</guid><pubDate>Sat, 13 Jun 2015 19:35:30 GMT</pubDate><content:encoded>&lt;p&gt;I couldn&apos;t help noticing the headlines in the news lately about the
800th anniversary of the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Magna_Carta&quot;&gt;Magna Carta&lt;/a&gt;, that
historical document from 1215 in England. As I write, apparently there
is a
&lt;a href=&quot;https://www.bbc.com/news/uk-england-33116579&quot;&gt;celebration being held on the River Thames&lt;/a&gt;,
even. And I just found a Web site devoted entirely to this
&lt;a href=&quot;https://magnacarta800th.com/&quot;&gt;800th anniversary&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Magna Carta has not been on my mind for over thirty years since I
first learned about it in a social studies class in the ninth grade high
school in the early 1980s. But when I think about it, the surprising
truth is that learning about the Magna Carta was a &lt;em&gt;turning point&lt;/em&gt; in
my life as a new teenager (age twelve or thirteen), and the lessons I
learned have informed me throughout my life.&lt;/p&gt;
&lt;h2&gt;What is the Magna Carta associated with?&lt;/h2&gt;
&lt;p&gt;The Magna Carta in popular imagination is associated with &quot;liberty&quot;,
with &quot;the people&quot; rising up in revolt against arbitrary monarchy and
making King John sign a document guaranteeing basic rights, such as
the right to a fair trail and no taxation without representation; and
&quot;equality&quot;, putting the king himself under the scope of law.&lt;/p&gt;
&lt;p&gt;The Magna Carta is thought of as an inspiration for
subsequent milestones in history such as the United States Declaration
of Independence and the &lt;a href=&quot;/categories/constitution/&quot;&gt;Constitution&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The truth as I learned it&lt;/h2&gt;
&lt;p&gt;I took a required &quot;social studies&quot; class in the ninth grade in high
school. It was one of the most interesting and life-changing classes I
ever took. I remember more from that class than probably any other in
all of high school. I loved the class because it was a small honors
class, didn&apos;t follow a standard textbook, the teacher had us engage in
discussions, and we did many interesting activities such as watch
films and play games and do simulations. She used a kind of &quot;Socratic
method&quot; to direct us and get us thinking and offering our opinions
with reasons. &lt;em&gt;This was the one of the first (and few) times in school
in which I felt I was being treated as an independent adult-to-be, not
as a child.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is what I learned in ninth grade social studies class from the
coverage of the Magna Carta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/John,_King_of_England&quot;&gt;King John&lt;/a&gt; was
just one of a line of random kings in history who gained their power
from accident of birth rather than anything else.&lt;/li&gt;
&lt;li&gt;Our teacher made fun of an artist&apos;s fictional depiction of King
John&apos;s &quot;signing&quot; the Magna Carta, arguing that since King John was
illiterate, he could not have signed it, and usual practice was to
press his seal on documents. (Amusingly, there is still
&lt;a href=&quot;https://www.bbc.com/news/blogs-magazine-monitor-30879124&quot;&gt;online discussion of this detail&lt;/a&gt;
decades after my class.)&lt;/li&gt;
&lt;li&gt;The whole Magna Carta thing came out of a civil war. It wasn&apos;t like
one side was really right and the king was particularly evil as far
as kings went back in the day.&lt;/li&gt;
&lt;li&gt;A bunch of &lt;a href=&quot;https://en.wikipedia.org/wiki/Landed_gentry&quot;&gt;landed nobility&lt;/a&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Collusion&quot;&gt;colluded&lt;/a&gt; to protect their
&lt;a href=&quot;https://en.wikipedia.org/wiki/Collective_bargaining&quot;&gt;collective interests&lt;/a&gt;.
Basically, they tried to form the first &quot;union&quot; against royal
interests.&lt;/li&gt;
&lt;li&gt;This document did not have anything to do with &quot;the people&quot; as such
(who in those days lived in abject misery whether under the nobility
or the king). The Magna Carta was not for the &quot;little people&quot;. Its
clauses were specific about whom they applied to, i.e., &quot;free men&quot;.&lt;/li&gt;
&lt;li&gt;The Magna Carta was the product of a power struggle among those who
already had power. It was about power and money. A bunch of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Rent-seeking&quot;&gt;rent-seeking&lt;/a&gt; nobility
didn&apos;t like that the king was arbitrarily cutting in on them.&lt;/li&gt;
&lt;li&gt;The Magna Carta was originally a flop: civil war continued, King
John ignored its rules. But it proved useful later symbolically when
conditions changed, proved to be something to rally around and
reinterpret for a new age.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;No untarnished heroes&lt;/h2&gt;
&lt;p&gt;The biggest question that arose in discussion was, should we be
cynical about the Magna Carta because of what it was originally for,
as opposed to what it later became to stand for or how it inspired
more far-reaching change? I think we can ask that of anything,
especially, for those of us in the United States, of our own
perception of our Founding Fathers and the nature of the American
Revolution, which all occurred five hundred years after the Magna
Carta.&lt;/p&gt;
&lt;p&gt;I learned from the study of history (which I enjoyed so much I
took two non-required world history courses in the tenth grade before
the required American history sequence in the eleventh grade) that
there are no easy answers, and that it is important to be skeptical of
mythologizing the past. I have remembered these lessons long after not
thinking about the Magna Carta again after that class in the ninth
grade.&lt;/p&gt;
&lt;p&gt;The noblemen who came up with the Magna Carta may have been thinking
only of themselves, but might have unwittingly paved the way for
others. Intention is one thing, but the final result is another
thing. (And history shows that there never is a final result either.)&lt;/p&gt;
&lt;h2&gt;Some interesting resources on the Magna Carta&lt;/h2&gt;
&lt;p&gt;Here&apos;s a &lt;a href=&quot;https://the-orb.net/textbooks/muhlberger/magna_carta.html&quot;&gt;medieval studies textbook section on the Magna Carta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I did not touch upon the religion aspect of the power struggles in the
medieval era (such as King John&apos;s fights with the Pope; three hundred
years after King John, the whole
&lt;a href=&quot;https://en.wikipedia.org/wiki/Church_of_England&quot;&gt;Church of England&lt;/a&gt;
finally split off from Catholicism when King Henry VIII wanted to
annul a marriage but the Pope wouldn&apos;t let him), but here is a
&lt;a href=&quot;https://www.newadvent.org/cathen/09531a.htm&quot;&gt;Catholic encyclopedia article about the Magna Carta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s an article about a Magna Carta skeptic, a British judge who
calls it an insignificant, &lt;a href=&quot;https://web.archive.org/web/20250824162214/https://www.telegraph.co.uk/news/uknews/law-and-order/11670716/Magna-Carta-Turgid-document-was-eclipsed-by-the-French-says-top-judge.html&quot;&gt;&quot;turgid document&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can search online for a whole lot more commentary, given the
hugeness of this 800th anniversary.&lt;/p&gt;
&lt;h2&gt;Here&apos;s that fictional depiction&lt;/h2&gt;
&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://commons.wikimedia.org/wiki/File:A_Chronicle_of_England_-&lt;em&gt;Page_226&lt;/em&gt;-&lt;em&gt;John_Signs_the_Great_Charter.jpg#/media/File:A_Chronicle_of_England&lt;/em&gt;-&lt;em&gt;Page_226&lt;/em&gt;-&lt;em&gt;John_Signs_the_Great_Charter.jpg&quot;&amp;gt;&amp;lt;img alt=&quot;A Chronicle of England - Page 226 - John Signs the Great Charter.jpg&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/d/d6/A_Chronicle_of_England&lt;/em&gt;-&lt;em&gt;Page_226&lt;/em&gt;-&lt;em&gt;John_Signs_the_Great_Charter.jpg&quot; height=&quot;480&quot; width=&quot;598&quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&quot;&amp;lt;a href=&quot;https://commons.wikimedia.org/wiki/File:A_Chronicle_of_England&lt;/em&gt;-&lt;em&gt;Page_226&lt;/em&gt;-&lt;em&gt;John_Signs_the_Great_Charter.jpg#/media/File:A_Chronicle_of_England&lt;/em&gt;-&lt;em&gt;Page_226&lt;/em&gt;-_John_Signs_the_Great_Charter.jpg&quot;&amp;gt;A Chronicle of England - Page 226 - John Signs the Great Charter&amp;lt;/a&amp;gt;&quot; by &amp;lt;a href=&quot;//en.wikipedia.org/wiki/James_William_Edmund_Doyle&quot; class=&quot;extiw&quot; title=&quot;en:James William Edmund Doyle&quot;&amp;gt;James William Edmund Doyle&amp;lt;/a&amp;gt; - &amp;lt;a href=&quot;//en.wikipedia.org/wiki/James_William_Edmund_Doyle&quot; class=&quot;extiw&quot; title=&quot;w:James William Edmund Doyle&quot;&amp;gt;Doyle, James William Edmund&amp;lt;/a&amp;gt; (&amp;lt;span style=&quot;white-space:nowrap&quot;&amp;gt;1864&amp;lt;/span&amp;gt;) &quot;&amp;lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://books.google.com.sg/books?id=YcM_AAAAYAAJ&amp;amp;pg=PA226&quot;&amp;gt;John&amp;lt;/a&amp;gt;&quot; in &amp;lt;a rel=&quot;nofollow&quot; class=&quot;external text&quot; href=&quot;https://books.google.com.sg/books?id=YcM_AAAAYAAJ&quot;&amp;gt;A Chronicle of England: B.C. 55 – A.D. 1485&amp;lt;/a&amp;gt;, &amp;lt;a href=&quot;//en.wikipedia.org/wiki/London&quot; class=&quot;extiw&quot; title=&quot;en:London&quot;&amp;gt;London&amp;lt;/a&amp;gt;: Longman, Green, Longman, Roberts &amp;amp; Green, pp. p. 226 Retrieved on &amp;lt;span style=&quot;white-space:nowrap&quot;&amp;gt;12 November 2010&amp;lt;/span&amp;gt;.. Licensed under Public Domain via &amp;lt;a href=&quot;//commons.wikimedia.org/wiki/&quot;&amp;gt;Wikimedia Commons&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;Extrapolations&lt;/h2&gt;
&lt;p&gt;Today, all around us we see fights that are supposedly about principle
but are really power struggles. Instead of landed nobility, we have
powerful lobbying groups, multinational corporations, you name
it. When any of these interests collude to win a battle over some
other one, they might not be in the game for you and me, but for
themselves. The purported idea of &quot;democracy&quot; is in fact under siege
today on many fronts. In future blog posts, I will begin exploring
what some of these are; they mostly involve technology-based power.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-06-14)&lt;/h3&gt;
&lt;p&gt;In the local paper, I just read this really interesting article by
University of Pittsburgh law professor Bernard Hibbits on the
&lt;a href=&quot;https://www.post-gazette.com/news/world/2015/06/14/How-Magna-Carta-helped-make-America/stories/201506150001&quot;&gt;opportunistic use of the Magna Carta by Americans&lt;/a&gt; throughout history.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-06-16)&lt;/h3&gt;
&lt;p&gt;A random
&lt;a href=&quot;https://www.bbc.com/news/uk-33126723&quot;&gt;news article about the celebrations&lt;/a&gt;
feature nothing but photos or descriptions of an Archbishop, the
Queen, various Dukes, a Prince, a Princess, a Lord, a &lt;a href=&quot;https://www.therichest.com/celebnetworth/politician/minister/david-cameron-net-worth/&quot;&gt;Prime Minister&lt;/a&gt;
who
&lt;a href=&quot;https://en.wikipedia.org/wiki/David_Cameron#Inheritance_and_family_wealth&quot;&gt;inherited much wealth (a lot hidden in tax shelters)&lt;/a&gt;,
and had no photos of &quot;regular people&quot;, or quotes from them asking what
they thought of the lavish occasion.&lt;/p&gt;
&lt;p&gt;Yeah, same old, same old, 800 years later.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Learning about the Magna Carta as a twelve-year-old was an important
part of my growing up in life. I learned that people are human and
selfish and have different motivations, but sometimes can work toward
agreements at least among themselves as equals, and some other party
as well. But I also learned the lesson that there are always those
who are left out at the bargaining table, and that the nobility are
always looking out for themselves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When did you learn about the Magna Carta in school? Did you learn it
in the same gritty way that I did, or in a more romanticized way?
Are there things you learned in history classes in school that
changed your life, changed what you believe and how you act (as a
voter or activist)?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>How Ornette Coleman changed my life</title><link>https://franklinchen.com/blog/2015/06/12/how-ornette-coleman-changed-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/12/how-ornette-coleman-changed-my-life/</guid><pubDate>Sat, 13 Jun 2015 03:59:40 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;The legendary jazz musician
&lt;a href=&quot;https://en.wikipedia.org/wiki/Ornette_Coleman&quot;&gt;Ornette Coleman&lt;/a&gt;
recently died at age 85. He had not been on my radar for a long
time. In fact, I never actually listened to much of his music at all.&lt;/p&gt;
&lt;p&gt;Yet, my immediate first thought on hearing this news was, &lt;strong&gt;Ornette
Coleman permanently changed the course of my life&lt;/strong&gt;. How can this be?&lt;/p&gt;
&lt;h2&gt;First reactions to Ornette Coleman&apos;s music&lt;/h2&gt;
&lt;p&gt;In 2000, during a huge transition in my life that turned everything
upside down, I began experimenting with listening to a lot of kinds of
music I had never experienced before. I was exploring Cuban,
Brazilian, Argentinian music. I was exploring Western classical music
of the 20th century (I had a fairly narrow taste up till then focused
primarily on the Classical 18th century and Romantic 19th century,
with little before or after this range). In jazz, I was expanding
beyond the swing, bebop, hard bop eras of jazz. I frequently reached
areas that made me confused or disgusted. For example, in jazz I got
&lt;a href=&quot;/blog/2012/09/23/celebrating-the-birthday-of-john-coltrane/&quot;&gt;as far as I could with John Coltrane&lt;/a&gt;
as Coltrane ventured into &quot;free jazz&quot;.&lt;/p&gt;
&lt;p&gt;I decided to try out Ornette Coleman for another approach to &quot;free
jazz&quot;, and checked out the album
&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Shape_of_Jazz_to_Come&quot;&gt;&quot;The Shape of Jazz to Come&quot; (1959)&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;&quot;Lonely Woman&quot;&lt;/h3&gt;
&lt;p&gt;Immediately, I was struck by the track
&lt;a href=&quot;https://en.wikipedia.org/wiki/Lonely_Woman_%28composition%29&quot;&gt;&quot;Lonely Woman&quot;&lt;/a&gt;. Conventional
concerns such as being strictly &quot;in tune&quot; were out the window, in
favor of extremely flexibility of pitch and raw, wailing emotional
expression. It showcased Coleman&apos;s lyrical side and was easy to
love. OK, not too weird.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;DNbD1JIH344&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Other tracks&lt;/h3&gt;
&lt;p&gt;But bam, that was just a warmup. For example, check out
&quot;Eventually&quot;. It&apos;s very free indeed, a lot of notes, an expression of
hyperactive motion, conventional tonality unimportant. Still, not too
harsh, and not totally random.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;WoC69lxnS_Y&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Overall, what I really understood from his music was that he was doing
what came naturally to him. It did not feel forced, it was not to
prove a point. He was enjoying what he was doing. This sense of
&lt;em&gt;freedom&lt;/em&gt; really impressed me. It wasn&apos;t reaction, it wasn&apos;t
rebellion. I respected that.&lt;/p&gt;
&lt;h2&gt;&quot;Free Jazz: A Collective Improvisation&quot;&lt;/h2&gt;
&lt;p&gt;The next album I checked out was
&lt;a href=&quot;https://en.wikipedia.org/wiki/Free_Jazz:_A_Collective_Improvisation&quot;&gt;&quot;Free Jazz: A Collective Improvisation&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This was a step beyond, and confusing to me because of the
simultaneous playing that often seemed chaotic. I confess to taking no
huge pleasure in attempting to listen to it all at once (note that
apart from lack of conventional structure, it also keeps going on and
on at length). I found it more enjoyable to listen to only a couple of
random minutes, trying to absorb some stretch of order.&lt;/p&gt;
&lt;p&gt;However, although this was not really my thing, it opened up my mind
to &quot;why not?&quot; Maybe this particular experiment didn&apos;t work, but I
could imagine a simpler setting, say, with fewer instruments, in which
collective improvisation could work out better.&lt;/p&gt;
&lt;p&gt;Check it out yourself:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;xbZIiom9rDA&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;&quot;Something Else!!!!&quot;&lt;/h2&gt;
&lt;p&gt;Finally, I checked out
&lt;a href=&quot;https://en.wikipedia.org/wiki/Something_Else!!!!&quot;&gt;&quot;Something Else!!!!&quot;&lt;/a&gt;,
which actually was his first album and closer to bebop and so forth.&lt;/p&gt;
&lt;p&gt;I don&apos;t have much to say about it, but it&apos;s not too confusing to
enjoy, because of still audible ties to some traditional forms and
styles.&lt;/p&gt;
&lt;h2&gt;Freedom&lt;/h2&gt;
&lt;p&gt;In the end, I didn&apos;t continue exploring Coleman&apos;s music.&lt;/p&gt;
&lt;p&gt;But the sense of &lt;em&gt;freedom&lt;/em&gt;, of &lt;em&gt;permission&lt;/em&gt; to ignore boundaries and
go wherever, musically, really affected me. Was what he was doing
&quot;jazz&quot;? Listening to him, I made up my mind that I was never again
going to get involved in debates about what jazz &quot;really is&quot; or what
classical music &quot;really is&quot; or even what music &quot;really is&quot;. These
labels stopped being meaningful to me.&lt;/p&gt;
&lt;p&gt;That was what I really learned from him and his life. By coincidence,
I just read this Rolling Stone article,
&lt;a href=&quot;https://www.rollingstone.com/music/news/vernon-reid-on-ornette-coleman-he-set-a-lot-of-people-free-20150612&quot;&gt;&quot;Vernon Reid on Ornette Coleman: &apos;He set a lot of people free&apos;&quot;&lt;/a&gt;,
that echoes exactly what I felt I learned fifteen years ago from my
brief exposure to him.&lt;/p&gt;
&lt;p&gt;In the past year or so, there have been times when, alone and not
likely to bother anyone, I pull out my bass recorder (ha, my lowest
instrument) and just go wild, play some melodic shapes, make up
rhythms, go multiphonic, whatever, for the sheer joy of it. And I&apos;m
not embarrassed, because I remember Ornette Coleman and he gave us all
permission to express our unconscious in whatever honest way it comes
out. And he gave us permission to accept and encourage each other to
do that, whether or not we personally like or understand everything
that comes out of tapping the unconscious.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hadn&apos;t expected to think so much upon hearing of Ornette Coleman&apos;s
death. But he set an example that I respected deeply, forever changing
not only my perceptions of music but of what musicians can and should
be allowed to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are you an Ornette Coleman fan or detractor? Did he change your
life? If so, how exactly?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>What unexpected life lessons have you learned from your father?</title><link>https://franklinchen.com/blog/2015/06/11/what-unexpected-life-lessons-have-you-learned-from-your-father/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/11/what-unexpected-life-lessons-have-you-learned-from-your-father/</guid><pubDate>Fri, 12 Jun 2015 02:15:56 GMT</pubDate><content:encoded>&lt;p&gt;I came across a great story by a guy who wrote an article,
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.bbc.com/news/magazine-32961309&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.bbc.com/news/magazine-32961309&quot;&amp;gt;&quot;How my father gave me a terrifying lesson at 10&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Please read the whole thing before reading further below, where I&apos;ll
share some stories about my own father.&lt;/p&gt;
&lt;h2&gt;The misunderstood lesson&lt;/h2&gt;
&lt;p&gt;(Warning: this is a spoiler if you haven&apos;t already read
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.bbc.com/news/magazine-32961309&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.bbc.com/news/magazine-32961309&quot;&amp;gt;the story&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you guess what the lesson was going to be before reaching the
end of the story? At what point did you get the idea that the author
of the story did not grasp for twenty years?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I saw it coming as soon as terrifying accidents started happening down
in the coal mine.&lt;/p&gt;
&lt;p&gt;Basically, the father was trying to terrify his son out of becoming a
coal miner like him. It was an act of manipulation but also of
compassion. And it worked, but not without his son bearing resentment
for the apparently mean and senseless prank for twenty years.&lt;/p&gt;
&lt;h2&gt;My stories&lt;/h2&gt;
&lt;p&gt;I was reminded of some less drastic manipulation that I faced in my
childhood that had unexpected benefits that I didn&apos;t understand at the
time.&lt;/p&gt;
&lt;p&gt;Like the author, I was about ten years old when these incidents
occurred: old enough to feel embarrassment, shame, self-consciousness.&lt;/p&gt;
&lt;h3&gt;The cigar&lt;/h3&gt;
&lt;p&gt;One day my father came home from work with a box of cigars. I guess it
was some kind of present. Neither he nor my mother smoked at all, so I
was surprised that he lit one up and handed it to me to try out.&lt;/p&gt;
&lt;p&gt;Note that this was around 1980, when I had lived ten years in the
1970s when I still saw a lot of smoking in old TV show and movies, and
I saw the Marlboro Man everywhere in print (he just
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://thinkprogress.org/health/2014/01/27/3207091/marlboro-man-dies-smoking/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://thinkprogress.org/health/2014/01/27/3207091/marlboro-man-dies-smoking/&quot;&amp;gt;died last year from chronic obstructive pulmonary disease &amp;lt;/span&amp;gt;. Today&apos;s
anti-smoking culture in America did not exist yet then. I knew lots of
people who smoked: my relatives, doctors, you name it. In fact, in the
blue-collar neighborhood where we lived, half the teachers smoked,
probably half my schoolmates smoked by the time they got to around age
12, our next door neighbors and their children all smoked. The local
chess club my father took me to, located in the basement of the
community center, was always filled with smoke.&lt;/p&gt;
&lt;p&gt;Anyway, I had not yet reached an age when I might have started running
around with a smoking crowd and gotten into it myself. I had a little
bit of curiosity, but not much. Still, enough that I was excited that
my father was going to share something &quot;grownup&quot; with me.&lt;/p&gt;
&lt;p&gt;I had no idea what I was doing, took a puff, and coughed with total
disgust. I didn&apos;t know at the time that there were proper ways to
handle a cigar; I guess it was a good thing I didn&apos;t know that. All I
knew was that I was in agony, the special treat from my father was
bullshit, that I never wanted anything to do with a cigar, or by
extension a cigarette, again in my life. I was &lt;em&gt;angry&lt;/em&gt; that he did
this thing to me. We never talked about this incident again.&lt;/p&gt;
&lt;p&gt;And therefore, I have never smoked in my life. The memory of that
experience was just too painful, and also by middle school, I started
hearing preaching by some other adults (and some crusading classmates
as well) about the health dangers of smoking. I was so traumatized
that this information alone put me off permanently, overriding any
natural curiosity I had about how pleasurable smoking had to be that
people would take risks and pay money to engage in it.&lt;/p&gt;
&lt;h3&gt;The beer&lt;/h3&gt;
&lt;p&gt;Something similar happened with alcohol. One day my father had some
cans of beer around, probably left over after some office party. We
never had alcohol around. My parents did not drink. At least, so I
thought.&lt;/p&gt;
&lt;p&gt;Anyway, to my surprise, he opened a can and said to take a sip and try
it out. I knew this was a &quot;grownup&quot; thing to do that I wasn&apos;t supposed
to, so I eagerly tried it out. The taste was revolting. Meanwhile, he
drank the whole thing. Then he quickly got very red and acted funny. I
learned a couple of lessons immediately from this: he shouldn&apos;t be
drinking, I hate beer, and I don&apos;t want to get all red and funny.&lt;/p&gt;
&lt;p&gt;Therefore, I was completely immune, all the way through high school,
to any peer pressure to drink. Never mind that eventually I learned
that you may have to get used to the taste, or that there were entire
other worlds of alcohol, such as wine, that tasted different. For a
long time, I just didn&apos;t feel like experimenting.&lt;/p&gt;
&lt;p&gt;The first time I drank alcohol again was right before college, some
champagne at an awards ceremony for a science competition that took
place the summer after I graduated from high school. I don&apos;t know if I
got red, but I was told that I was acting funny, and so I went to my
room and fell asleep.&lt;/p&gt;
&lt;p&gt;I went to a party the first week of college and there was beer, and
now under the influence of many new friends, I drank some. But I still
didn&apos;t like it, didn&apos;t like how everyone ended up behaving funny,
wasn&apos;t too happy that we were all underage, and so I never drank again
in college.&lt;/p&gt;
&lt;p&gt;Since college, I have now and then partaken of beer and wine, and
acquired more of an appreciation, but because I get very dizzy and
sleepy quickly, currently I almost completely avoid drinking. It&apos;s
just for the best.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Lecturing one&apos;s children not to do something doesn&apos;t always work, but
sometimes trickery apparently works. I&apos;m not praising it or condemning
it, because I&apos;ve endured other forms of trickery from my parents that
backfired. I&apos;m just surprised by how strongly I reacted and how
susceptible I was to first negative experiences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you have happy or sad examples of this kind of parental
manipulation? Did they work on you or not, and was this to your
long-term benefit or not? If you are a parent, are you above this
trickery, or do you deliberately and cleverly use it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Revisiting Bach&apos;s Air on G String, from a singing and dancing viewpoint</title><link>https://franklinchen.com/blog/2015/06/10/revisiting-bachs-air-on-g-string-from-a-singing-and-dancing-viewpoint/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/10/revisiting-bachs-air-on-g-string-from-a-singing-and-dancing-viewpoint/</guid><pubDate>Thu, 11 Jun 2015 03:46:26 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Three years ago, &lt;a href=&quot;/blog/2012/09/14/passion-of-bachs-air-on-the-g-string-three-different-interpretations/&quot;&gt;I wrote a post comparing three very different
performance styles&lt;/a&gt;
for Johann Sebastian Bach&apos;s famous music,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Air_on_the_G_String&quot;&gt;Air on G String&lt;/a&gt;
and indicating which I preferred.&lt;/p&gt;
&lt;p&gt;I have received an unexpected number comments over the years, and
thought it was time to write an update of my thoughts in response.&lt;/p&gt;
&lt;p&gt;Primarily, I am responding to those who (correctly) criticized the
unfortunately chosen exemplar of the style that I preferred. I tried
to find better versions that might illustrate my perceptions. I also
integrated some thoughts based on how I perceive music as a singer and
as a dancer.&lt;/p&gt;
&lt;h2&gt;Better than the rushed Croatian Baroque Ensemble&apos;s performance?&lt;/h2&gt;
&lt;p&gt;I agreed quickly with the first commenters that the Croatian
ensemble&apos;s performance was too perfunctory, even downright brutal and
unpleasant in various ways. I wish I had
chosen a better example of what I actually &lt;em&gt;like&lt;/em&gt; rather than &lt;em&gt;prefer
to the other two versions&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I searched YouTube for period-style performances that are
closer to what I envision than either the Croatian ensemble&apos;s or
Koopman&apos;s. It proved impossible for me to find a perfect performance.&lt;/p&gt;
&lt;h2&gt;A period performance I like more: Christopher Hogwood&lt;/h2&gt;
&lt;p&gt;I like this version by the late &lt;a href=&quot;https://en.wikipedia.org/wiki/Christopher_Hogwood&quot;&gt;Christopher Hogwood&lt;/a&gt;&apos;s Academy of
Ancient Music:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;nrtdhH8_47k&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;There is a sweetness and &lt;em&gt;bouncy lightness&lt;/em&gt; to this version that I
like, but it is also somewhat anemic. Personally, I would play up more
contrast and fullness of sound and passion, but the overall tempo and
breathing to this version seems right to me.&lt;/p&gt;
&lt;h2&gt;&quot;Voices of Music&quot;: richer sound&lt;/h2&gt;
&lt;p&gt;&quot;Voices of Music&quot; here in a good performance:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;pzlw6fUux4o&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I like the richness of sound in this performance. I miss the lighter,
more bouncy feeling that Hogwood brought out though. This performance
is a bit too legato for me.&lt;/p&gt;
&lt;h2&gt;I care about singing&lt;/h2&gt;
&lt;p&gt;I approach this music from the viewpoint of singing.&lt;/p&gt;
&lt;p&gt;The bouncy lightness is very important to me, along with the rhythmic
characterization. I feel this music as a song (it is an &quot;air&quot;, after
all), and I cannot help singing along when I hear it. Therefore, when
it&apos;s taken too slow for me to sing and make it to natural breathing
points in phrases, that considerably lessens my pleasure.&lt;/p&gt;
&lt;h3&gt;Yehudi Menuhin, solo violin&lt;/h3&gt;
&lt;p&gt;Here&apos;s an interesting old black and white video of a performance by a young Yehudi Menuhin on violin with
accompaniment. It&apos;s not a period performance, but moves along at a
decent &quot;singing&quot; tempo, as befits violin, that singing instrument.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;08bDiKXW0gg&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I confess that I rather like this performance for its virtues,
although it distorts Bach&apos;s music by so emphasizing just the musical
line, at the expense of the balance of the other voices and the
essential character of the dissonances among the voices.&lt;/p&gt;
&lt;h3&gt;More Menuhin, but as conductor&lt;/h3&gt;
&lt;p&gt;Here&apos;s Yehudi Menuhin not as violin soloist but as conductor of the
Bath Festival Orchestra in 1960. Again, not a period performance, but
he takes the music briskly, and has the violins create sufficient
phrase delineations that I feel the music alertly as though it sings.&lt;/p&gt;
&lt;p&gt;It&apos;s direct and clear, maybe not the most subtle and warm,
but I like it.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;kaBAE4stNIo&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Dancing is possible too&lt;/h2&gt;
&lt;p&gt;I also like to dance to expressive music. A pioneer of modern dance,
Doris Humphrey, famously choreographed a dance to a slowish
performance of this music:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;NjwJyaSIRqY&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;This is not how I would dance to it, because I feel the music
differently. Surprisingly, I could find few examples on YouTube of
dancing to this music. I may consider choreographing a dance myself as
a project to express my own personal vision.&lt;/p&gt;
&lt;p&gt;One thing I would like to mention is that I feel that the &lt;em&gt;walking bass&lt;/em&gt;
is very important in this music and gives it the impetus. When played
too slow, the walking bass no longer feels like it&apos;s walking.&lt;/p&gt;
&lt;p&gt;I feel this music in my legs, not just in my lungs. Yes, I have
actually hummed it to myself while walking in time to the bass
leisurely in the local park. There is a limit to how &quot;leisurely&quot; I can
walk without feeling frustrated.&lt;/p&gt;
&lt;h3&gt;Ice dancing&lt;/h3&gt;
&lt;p&gt;I found this somewhat frenetic but nevertheless beautiful ice dancing
performance from the 1992 World Figure Skating Championships:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;1JjbwtM_E3g&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Recorder quartet&lt;/h2&gt;
&lt;p&gt;A final performance to enjoy: the Japanese &quot;Sekishi Recorder Quartet&quot;
playing their hearts out in 2009. I think it&apos;s lovely: impeccable
phrasing, transparency,
and rich ensemble balance and tone. (As a twist, the melody line performer adds
his own ornamentations.)&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;pRRRK0UClNs&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was inspired by the accumulated comments on my previous post on
Bach&apos;s &quot;Air on G String&quot; that I decided to flesh out my thoughts by
using more example performances, as well as relate the orchestral
music to singing and dancing. I hope you have enjoyed these
explorations. There is no single &quot;right&quot; way to experience music, but
I wanted to share how I experience it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you&apos;ve read my previous post, does this one help clarify where
I&apos;m coming from with my musical values? Do you dance
or sing? Does this affect how you perceive this piece of music and
like to perform it or hear it performed?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I have never considered using a treadmill desk</title><link>https://franklinchen.com/blog/2015/06/10/why-i-have-never-considered-using-a-treadmill-desk/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/10/why-i-have-never-considered-using-a-treadmill-desk/</guid><pubDate>Thu, 11 Jun 2015 01:34:04 GMT</pubDate><content:encoded>&lt;p&gt;Ten years ago, in 2005, a friend of mine sent me an article about a
trend among some people to use a treadmill desk in order to squeeze in
some exercise while working. He seemed to think it sounded like a cool
idea that wouldn&apos;t interfere much with work.&lt;/p&gt;
&lt;p&gt;I have never considered using a treadmill desk. Because of a recent
article that seems to confirm my thoughts from a decade ago, I&apos;m
posting my reaction here, along with a link to the article.&lt;/p&gt;
&lt;h2&gt;My response in January 2005&lt;/h2&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;
At one point years ago I was thinking about stuff like that, but a few
experiments showed how pointless and soulless it is, for me.  My
enjoyment of exercise is completely ruined if extraneous stuff is
brought in, like reading or listening to music.  I learned that the
whole profound pleasure and meaning of physical activity comes from
being completely engaged in it, with nothing else on the mind.  So the
former fantasies of multitasking are now completely antithetical to my
current life values.&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;
It&apos;s not the quantity [of treadmill movement] that&apos;s the issue.
That&apos;s still one foot per second of continuous movement, requiring
irrelevant constant muscular pulses.  Note that I cannot read a simple
newspaper in a car or a bus or a plane.&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;
I fidget all the time, especially when playing chess, but the
movements are not arbitrary and disembodied, but are connected with
feelings of comfort or with emotional states relevant to my mental
processes.  It&apos;s not like a treadmill commanding me to go a foot every
second.  It&apos;s my personal choice when to shake my leg or shift my foot
or whatever, and for how long.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;Philosophy and practice&lt;/h3&gt;
&lt;p&gt;You may be wondering, from how I phrased my reasons, whether I have a
primarily theoretical, ideological opposition to a treadmill desk, or
simply a pragmatic one.&lt;/p&gt;
&lt;p&gt;I don&apos;t really make a distinction: I take what works and doesn&apos;t work
and make my observations a basis for a possibly more general
philosophy, rather than adopt an ideology and make my practice fit it.&lt;/p&gt;
&lt;p&gt;Basically, I actually have &lt;em&gt;tried&lt;/em&gt; multitasking in various ways for
the purpose of &quot;saving time&quot; and it just doesn&apos;t work for
me. Furthermore, sometimes I multitask &lt;em&gt;despite knowing it doesn&apos;t
work&lt;/em&gt;, and I pay the price. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have tripped or fallen on runs or hikes when I &quot;zoned out&quot; and
wasn&apos;t paying attention to the terrain but was thinking of something!&lt;/li&gt;
&lt;li&gt;I have listened to music while reading a news article and failed to
follow the music at all.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s not saving time if I try to do two things and end up not even
doing one of them well.&lt;/p&gt;
&lt;h2&gt;The research&lt;/h2&gt;
&lt;p&gt;The article I just read was a news article,
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://well.blogs.nytimes.com/2015/06/10/the-downside-of-treadmill-desks/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://well.blogs.nytimes.com/2015/06/10/the-downside-of-treadmill-desks/&quot;&amp;gt;&quot;The downside of treadmill desks&quot;&amp;lt;/span&amp;gt;. I
was pretty shocked and amused to read, &quot;... surprisingly little
research had examined whether treadmill desks affect someone’s ability
to get work done.&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;
The results, when the researchers compared the treadmill walkers with the people sitting at their desks, substantially favored sitting. The people who had walked during the testing performed worse on almost all aspects of thinking, including the ability to concentrate and remember, compared with those who had been seated.&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;
And they were much worse at typing, being substantially slower and
more error prone than the sitting group.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;The irony is that the researcher interviewed still wants to believe in
benefits:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
But even with that caveat, he said, he believes that the health
benefits of a treadmill desk should outweigh any declines in
productivity and, in fact, he plans to buy one for himself.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;Alternatives?&lt;/h2&gt;
&lt;p&gt;My alternative to sitting all day, which indeed is by now known to be
terrible for health, is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get up now and then and take a break from my task and walk around.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But doesn&apos;t this take time and stop the flow of work? Actually,
no. There&apos;s only so much focus I can have while working on something
continuously without a break anyway. So forcing myself to take a walk
is actually a win-win situation, not even just a mere tradeoff.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Treadmill desks do not appeal to me at all, and I believe I have sound
scientific reasons based on what psychology has learned about the
working of the human mind. However, I understand that different
people&apos;s minds may work differently from mine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you used a treadmill desk? Why or why not? Do you believe in
your ability to multitask without a performance hit?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The many faces of &quot;Stella by Starlight&quot;</title><link>https://franklinchen.com/blog/2015/06/01/the-many-faces-of-stella-by-starlight/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/06/01/the-many-faces-of-stella-by-starlight/</guid><pubDate>Mon, 01 Jun 2015 05:08:23 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Recently I got obsessed with the classic 1944 jazz standard
&lt;a href=&quot;https://en.wikipedia.org/wiki/Stella_by_Starlight&quot;&gt;&quot;Stella by Starlight&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I thought I&apos;d share some very different interpretations of this music.&lt;/p&gt;
&lt;h2&gt;Harry James, 1947&lt;/h2&gt;
&lt;p&gt;Here&apos;s the original version, not jazz, but slow, sentimental, lush: a
sentimental serenade perfect for dancing foxtrot to. Pretty good, if
you like &quot;oldies&quot;. And if you don&apos;t like oldies, you need to hear this
anyway, to understand why the piece was so interesting: there is
inherently beautiful harmonic movement and color that would attract
jazz musicians to adopt this tune and transform it, and they still
continue to do that.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;TjRMLqb6Sgs&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Miles Davis quintet, 1964&lt;/h2&gt;
&lt;p&gt;A really quirky version that starts with a slow intro before everyone
starts swinging, and then it goes fragmented again, and then the cycle
continues with all kinds of different ideas. Ten minutes long.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;Riok08Y_ri4&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Tito Puente, around 1983?&lt;/h2&gt;
&lt;p&gt;Tito Puente and his Latin jazz band,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Michel_Camilo&quot;&gt;Michel Camilo&lt;/a&gt; on
piano. Puente himself starts off soloing on vibraphone: beautiful,
haunting rhythmic playing. Later, there is an electric guitar
solo. But mostly, this whole performance is melodic, and with its
steady and standard Afro-Cuban rhythmic drive, utterly danceable for
salsa. Something different!&lt;/p&gt;
&lt;p&gt;This is the performance that inspired me to write this blog post,
because I&apos;d never encountered this version before, but it was so
enchanting. From foxtrot original to salsa... who would have thought?&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;xJF5BRuRtVo&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Chet Baker quartet, 1987&lt;/h2&gt;
&lt;p&gt;Live video footage from Tokyo. Baker is near the end of his tragic
life. He starts off with a fragmentary approach, and makes use of
long-held but gently played notes that creates soft but extended
dissonances against what&apos;s going on.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;qq8oHYWHji8&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Learn Jazz Standards&lt;/h2&gt;
&lt;p&gt;A wonderful backing track from &quot;Learn Jazz Standards&quot;, not for
listening to but playing against:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;XR6KDWrn2ew&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;One day I&apos;ll take up the challenge of improvising an own performance
of &quot;Stella by Starlight&quot;, but I have to confess that right now it
seems too hard for me.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I love &quot;Stella by Starlight&quot;. It will endure forever as a jazz
standard, I&apos;m sure. I hope you like it too.&lt;/p&gt;
</content:encoded></item><item><title>Yes, I want my writing to be dated!</title><link>https://franklinchen.com/blog/2015/05/31/yes-i-want-my-writing-to-be-dated/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/05/31/yes-i-want-my-writing-to-be-dated/</guid><pubDate>Mon, 01 Jun 2015 02:55:05 GMT</pubDate><content:encoded>&lt;p&gt;I just finished
&lt;a href=&quot;/blog/2015/05/31/first-hugo-post/&quot;&gt;migrating both this blog and my programming blog from Octopress 2 to Hugo&lt;/a&gt;. During
this process, I made sure to preserve my old URLs as well as Disqus,
because nothing is as distressing to me, as a reader, as moved or
broken links when I&apos;m looking for old blog posts.&lt;/p&gt;
&lt;p&gt;That said, there&apos;s always the possibility of changing the &quot;real&quot; URLs and
just using an alias with a URL redirect for the sake of old URL
schemes. One possibility was to remove dates from my URLs, e.g.,
change something like
&lt;code&gt;/blog/2015/05/31/first-hugo-post/&lt;/code&gt;
to
&lt;code&gt;/blog/why-i-switched-from-octopress-2-to-hugo/&lt;/code&gt;. Matt
Gemmell, among many others, has argued for &lt;a href=&quot;https://mattgemmell.com/permalinks/&quot;&gt;permalinks that do not
include the clutter of embedded dates&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, I made the decision years ago, when I had the choice, to keep
the embedded dates, and I still stand by my decision today. Here&apos;s why.&lt;/p&gt;
&lt;h2&gt;Are embedded dates actually bad user-interface design?&lt;/h2&gt;
&lt;p&gt;I&apos;m not sure long date-embedded permalinks are really so bad
visually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nobody goes around having to manually type in these links anyway.&lt;/li&gt;
&lt;li&gt;I believe that in the long run, people actually do care about the
date, and having it in the URL makes it that much easier to know the
date.&lt;/li&gt;
&lt;li&gt;Redundancy can be a good thing, if it exposes useful information
that in theory one could determine more indirectly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The bigger philosophical issues&lt;/h2&gt;
&lt;p&gt;However, the main reason I deliberately choose to expose the date of a
post is that I disagree with Matt Gemmell&apos;s statement that one should
prefer to boost one&apos;s article&apos;s &quot;standing&quot; by giving the impression
that one is making a &quot;definitive goddamned opinion&quot; on a topic, some
kind of timeless statement.&lt;/p&gt;
&lt;h3&gt;Relevance?&lt;/h3&gt;
&lt;p&gt;I understand that there are people who would be swayed by this
psychological trick, and I totally confess that sometimes when I do a
Web search and up pops a link to a four-year-old post, I wonder
whether to read something else instead that might be more &quot;relevant&quot;.&lt;/p&gt;
&lt;p&gt;But as a reader who seeks genuinely useful information, no matter how
recent or old, I overcome my initial twinge at encountering an &quot;old&quot;
article, and check it out for its own merits. And often, I find that
it is just fine. For example, there are some fantastic Haskell blogs
filled with information still useful today. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any of Dan Piponi&apos;s articles are great, e.g., a random 2009 article
on
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.sigfpe.com/2009/01/haskell-monoids-and-their-uses.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.sigfpe.com/2009/01/haskell-monoids-and-their-uses.html&quot;&amp;gt;monoids and their uses&amp;lt;/span&amp;gt;,
with an ungainly URL of
&lt;code&gt;https://blog.sigfpe.com/2009/01/haskell-monoids-and-their-uses.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Any of Gabriel Gonzalez&apos;s articles are great, e.g., a 2012 article
on
&lt;a href=&quot;https://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html&quot;&gt;free monads&lt;/a&gt;
with the URL
&lt;code&gt;https://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore, the dating is actually useful because once you see
another article by the same author with a different date, you know
which one came first and can retrace the &lt;em&gt;history&lt;/em&gt; of the author&apos;s
thinking just throw the URL. In fact, I track my own history through
the fact that on my file system, my posts are in alphabetical order
according to date.&lt;/p&gt;
&lt;h3&gt;The reality and humanity of transience&lt;/h3&gt;
&lt;p&gt;Finally, the main fact I want to emphasize when I write is precisely
that I am not giving my definitive opinion about anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I have no &quot;forever&quot; opinions about any topic!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I change my mind as I continue to grow and learn, and I want my
writing to reflect that, and in a way such that a reader can easily
track what changed and when. I do not write to give an illusion that I
am writing eternal truths. I do not write in order to be an authority
on a topic, but to share a snapshot of what I understand at a
particular moment in my life. When I change my mind, I do often go
back and add a dated update section linking to a new article.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have retained dated permalinks for my migrated blogs, despite some
voices that argue otherwise, because of the extra information they
provide.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you agree that dated permalinks are worth the ugliness or not? Is
this your opinion as an author, a reader, a critic, or a search
engine user?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I switched from Octopress 2 to Hugo</title><link>https://franklinchen.com/blog/2015/05/31/first-hugo-post/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/05/31/first-hugo-post/</guid><pubDate>Sun, 31 May 2015 16:26:32 GMT</pubDate><content:encoded>&lt;p&gt;Until now, I haven&apos;t been publishing anything on any of my three blogs
for half a year now. There are many reasons, but one of them was that
I wanted to migrate away from
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://octopress.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://octopress.org/&quot;&amp;gt;Octopress&amp;lt;/span&amp;gt; 2. Octopress 2 is ancient and slow
and unmaintained, and I&apos;d been waiting for
&lt;a href=&quot;https://github.com/octopress/octopress&quot;&gt;Octopress 3&lt;/a&gt; for over three
years
&lt;a href=&quot;https://web.archive.org/web/20260319172706/https://octopress.org/2015/01/15/octopress-3.0-is-coming/&quot;&gt;to arrive&lt;/a&gt;,
so when I heard that Octopress 3 was finally going to be officially
announced at &lt;a href=&quot;http://jekyllconf.com/&quot;&gt;JekyllConf&lt;/a&gt;, I decided it was
time to migrate my blogs, to Octopress 3 or
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jekyllrb.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jekyllrb.com/&quot;&amp;gt;Jekyll&amp;lt;/span&amp;gt;, or something else entirely.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Factors to consider when choosing a static site generator&lt;/h2&gt;
&lt;p&gt;Some factors I kept in mind while evaluating a new static site
generator:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Speed of full generation&lt;/li&gt;
&lt;li&gt;Speed of incremental generation&lt;/li&gt;
&lt;li&gt;Active progress in bug fixes, improvements, new features&lt;/li&gt;
&lt;li&gt;Availability of themes&lt;/li&gt;
&lt;li&gt;Community sharing, support&lt;/li&gt;
&lt;li&gt;Languages used for using and writing own templates and plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Speed is critical for me&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt; was a huge consideration for me when I evaluated alternative
static site generators, so I was particularly interested in evaluating&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://gohugo.io/&quot;&gt;Hugo&lt;/a&gt; (written in Go)&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jaspervdj.be/hakyll/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jaspervdj.be/hakyll/&quot;&amp;gt;Hakyll&amp;lt;/span&amp;gt; (written in Haskell)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The advantages of these two are that they are implemented in
statically typed languages that compile to native
executables.&lt;/p&gt;
&lt;p&gt;Furthermore, Hakyll is a library, such that your configuration is
actually merely a Haskell program using the library, without the
indirection of configuration languages and interpreters of the
languages, and you can compile your site into a specialized native
executable. (For example, Hakyll uses Pandoc as a library for Markdown processing.)&lt;/p&gt;
&lt;h2&gt;Advantages of going to Jekyll?&lt;/h2&gt;
&lt;p&gt;Jekyll is the most popular static site generator, so I had to evaluate
it despite knowing up front that it was not going to be a speed
winner. It might well be fast &lt;em&gt;enough&lt;/em&gt;. The benefits of using a
platform with a large and passionate community are &lt;em&gt;tremendous&lt;/em&gt;: bugs
get fixed, cool features get added, people step in to help you out if
you have questions, incremental improvements keep happening, themes
abound that you can just take and use. I never evaluate using a
technology based only on one consideration (such as speed).&lt;/p&gt;
&lt;p&gt;Note that Octopress 3 is basically a really cool interface over an
underlying Jekyll setup, so I will only refer to Jekyll below, with
the understanding that all performance matters that apply to Jekyll
apply to Octopress 3 as well.&lt;/p&gt;
&lt;h2&gt;Speed comparisons: Octopress 2, Jekyll, Hugo, Hakyll&lt;/h2&gt;
&lt;h3&gt;Full generation from scratch&lt;/h3&gt;
&lt;p&gt;My &lt;a href=&quot;https://franklinchen.com/&quot;&gt;personal blog&lt;/a&gt; has 585 posts. Here are
the from-scratch full generation times, based on migrations away from
Octopress 2 that I performed using a bunch of Perl scripts. Note that
the sites are not completely equivalent, because I only wanted to get
a rough idea, not compare total equivalence:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Octopress 2: 5:39.28&lt;/li&gt;
&lt;li&gt;Jekyll: 15.90&lt;/li&gt;
&lt;li&gt;Hakyll: 14.51&lt;/li&gt;
&lt;li&gt;Hugo: 4.90&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jekyll and Hakyll don&apos;t do too badly, but Hugo was by far the fastest.&lt;/p&gt;
&lt;p&gt;Although I suspect that as more features
get added to Hugo, it may slow down some, I also trust that since the
author and the Go community in general are &lt;em&gt;obsessed&lt;/em&gt; with speed, Hugo
is a safe bet for anyone concerned about speed.&lt;/p&gt;
&lt;h3&gt;Full generation but not from scratch&lt;/h3&gt;
&lt;p&gt;Hakyll stores a lot of information in a cache directory. If you&apos;ve
done a full generation and change nothing and do a full generation
again (&lt;code&gt;my-compiled-site-builder build&lt;/code&gt;), it comes back almost
instantaneously. If you&apos;ve modified a file (as in the incremental,
server mode generation), my result was slightly slower than in server
mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hakyll: 2.23&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Incremental generation&lt;/h3&gt;
&lt;p&gt;I brought each generator up in &quot;server&quot; &quot;watching&quot; mode, to see what
would happen if I changed a single file, resulting in regeneration of
everything affected. For example, I changed the most recent blog post,
which affects its generation as well as potentially the main
page, RSS, sitemap, archive, tags and categories.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jekyll: 9.95&lt;/li&gt;
&lt;li&gt;Hugo: 4.11&lt;/li&gt;
&lt;li&gt;Hakyll: 1.50&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s interesting that Hugo&apos;s live &quot;watch&quot; functionality does not really
improve over regenerating the site from scratch.&lt;/p&gt;
&lt;p&gt;For Hakyll, there is tremendous improvement. I believe this may be
because of the use of a cache directory but also because a
Hakyll-compiled generator incurs no &lt;em&gt;interpreter&lt;/em&gt; overhead once you
have it running in server mode watching for changes.&lt;/p&gt;
&lt;p&gt;9.95 seconds is still kind of slow for me, for making a quick change
to a file in progress and wanting to see how it displays in the
browser, so Jekyll is not optimal for me. But Hugo&apos;s 4.11 seconds is acceptable.&lt;/p&gt;
&lt;h2&gt;So why not Hakyll?&lt;/h2&gt;
&lt;p&gt;So, given that Hakyll looks so promising, and I would far prefer
writing and debugging Haskell code, to hacking in some mixture of Go
templating and other configuration languages, why did I not migrate to
Hakyll?&lt;/p&gt;
&lt;p&gt;There are many considerations that go into what I choose as a
technology to solve a specific problem. For example, there&apos;s a reason
I wrote all my one-shot little blog migration scripts in Perl, even
though I no longer write Perl for any other purpose (although Perl was
one of my main languages I used for nontrivial programs from
1999-2010).&lt;/p&gt;
&lt;p&gt;Hakyll has a small community. I&apos;m not sure I would even call it a
community. It&apos;s basically one guy&apos;s project. It is completely
unopinionated, such that to create any reasonable site you have to
write your own code or copy and paste from someone else&apos;s. There is no
formal concept of &quot;theme&quot; or an official theme sharing site.&lt;/p&gt;
&lt;p&gt;Hakyll is pretty confusing to build if you don&apos;t use a Cabal sandbox,
and even then, there have perpetually been build problems of some kind
or another, for years. Last year, &lt;a href=&quot;https://github.com/jaspervdj/hakyll/issues/302&quot;&gt;I could not get it to build at all&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, the &lt;a href=&quot;https://travis-ci.org/jaspervdj/hakyll&quot;&gt;Travis build&lt;/a&gt;
is perpetually broken and doesn&apos;t even test multiple versions of GHC
and Cabal. A call to
&lt;a href=&quot;https://github.com/jaspervdj/hakyll/issues/299&quot;&gt;get Hakyll into Stackage&lt;/a&gt;
is still open.&lt;/p&gt;
&lt;p&gt;I ran into a
&lt;a href=&quot;https://github.com/jaspervdj/hakyll/issues/225&quot;&gt;serious YAML-handling bug that still has not been addressed after over a year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In other words, just because Hakyll seems to perform well on a
simplistic toy migration of my personal blog (after all the
workarounds for the bugs mentioned above) doesn&apos;t mean that I can
trust it to work if I do more complicated things, or that bug reports
will get addressed.&lt;/p&gt;
&lt;p&gt;I&apos;m writing this not to criticize the author of Hakyll, who by the way
writes a lot of quite high-quality
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jaspervdj.be/posts.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jaspervdj.be/posts.html&quot;&amp;gt;blog posts on Haskell&amp;lt;/span&amp;gt; and has a day
job developing in Haskell. Open source projects are labors of love
that just cannot be sustained by one person who has many things to do
in life.&lt;/p&gt;
&lt;h2&gt;Winner: Hugo&lt;/h2&gt;
&lt;p&gt;It would be nice if there were a larger Hakyll community, but the
reality is that there isn&apos;t, and therefore as someone who also has
many things to do and prefers to write for my blogs rather than
implement features for the blog engine, I chose Hugo as the clear
winner for my current needs.&lt;/p&gt;
&lt;p&gt;Hugo not only has an entire official
&lt;a href=&quot;http://discuss.gohugo.io/&quot;&gt;discussion site&lt;/a&gt; but also an active
&lt;a href=&quot;https://gitter.im/spf13/hugo&quot;&gt;Gitter room&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The official documentation is pretty good and continues to be updated.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Choosing a static site generator is like choosing any other software
to perform a task: you have to evaluate many different factors and
tradeoffs among the different choices available. For me, speed is very
important, but also a thriving, growing community of maintainers,
contributors, and users.&lt;/p&gt;
&lt;p&gt;In the end, I chose Hugo, because it is fast, actively maintained, and
has a sizable community revolving around it.&lt;/p&gt;
</content:encoded></item><item><title>When did the United States stop being violently anti-Catholic?</title><link>https://franklinchen.com/blog/2015/05/24/when-did-the-united-states-stop-being-violently-anti-catholic/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/05/24/when-did-the-united-states-stop-being-violently-anti-catholic/</guid><pubDate>Mon, 25 May 2015 03:10:50 GMT</pubDate><content:encoded>&lt;p&gt;I read a great article
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://aeon.co/magazine/society/is-it-ok-to-be-american-and-catholic/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://aeon.co/magazine/society/is-it-ok-to-be-american-and-catholic/&quot;&amp;gt;&quot;The war on Rome&quot;&amp;lt;/span&amp;gt;
on the history of anti-Catholicism in the United States. This led me
immediately to remember some odd experiences of mine growing up.&lt;/p&gt;
&lt;h2&gt;My personal experience&lt;/h2&gt;
&lt;p&gt;Growing up in America in the 1970s, I thought Catholics were strange
people. My classmates in school got to leave early sometimes to go to
&quot;catechism&quot;. I didn&apos;t ask what that meant, but that it was weird.&lt;/p&gt;
&lt;p&gt;It didn&apos;t help that my mother (an immigrant from Taiwan) explained to
me that Catholics worship Mary instead of Jesus, whom &quot;Christians&quot;
(as opposed to &quot;Catholics&quot;) worshipped.&lt;/p&gt;
&lt;p&gt;Also, it didn&apos;t help that there were evangelical Protestant kids at
school who openly made fun of Catholic classmates in various ways, and
even claimed the pope and Catholic Church were the friend of the
&quot;Antichrist&quot; and the &quot;Beast&quot;. Never mind the complications added by
the fact that I also had classmates who were openly Jewish (because
they couldn&apos;t celebrate Christmas like &quot;everyone else&quot;).&lt;/p&gt;
&lt;p&gt;The social dynamics in elementary school were pretty confusing to me,
a child of Asian immigrants, with no professed religion or religious
instruction at home (at least one evangelical Protestant kid called me
&quot;heathen&quot;). The Jewish kids and teachers treated me least weirdly;
most of the others treated me as &quot;foreign&quot; in some way (note that I
spent most of my childhood among non-Asians).&lt;/p&gt;
&lt;p&gt;But things changed over time.&lt;/p&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;By the time I was in high school, the landscape had already changed
for me: being Asian was no longer quite as exotic, I didn&apos;t see the
same level of Protestant vs. Catholic stuff going on in school.&lt;/p&gt;
&lt;p&gt;I just got to thinking that when I was growing up in the 1970s, it
wasn&apos;t all that long after John F. Kennedy became the first Catholic
president of the US. So maybe I was born just early enough to catch
the tail end of attitudes passed down to my classmates from their
parents? (Or for that matter, any misinformation my parents received
before or after they came to the US. I informed my mother by the time
I made a Catholic friend later in elementary school that Catholics
were a kind of Christian and worship Jesus.)&lt;/p&gt;
&lt;h2&gt;Freedom?&lt;/h2&gt;
&lt;p&gt;From the article: &quot;For most of US history, voters, ministers and
lawmakers believed that there was something fundamentally un-American
about Roman Catholics.&quot;  And this sentiment had to do with a
perception of what &quot;freedom&quot; meant: not being subject somehow to a
pope.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The question implicitly raised at the end of the article was, will
Islam eventually become accepted as OK in the US? Is Islam in America
in a position similar to that of Catholicism once upon a time? I guess
we&apos;ll see. I&apos;m old enough to have seen many things change in this
country... slowly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you think? Is Islam too &quot;foreign&quot; to ever be accepted as being
compatible with being &quot;American&quot;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For that matter, &lt;strong&gt;Do you think it is more likely for an atheist to become president or a Muslim?&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2016-01-09)&lt;/h3&gt;
&lt;p&gt;Meanwhile, Protestantism is fracturing in interesting ways, and the
effects are felt &lt;a href=&quot;https://www.post-gazette.com/news/world/2016/01/09/Summit-could-determine-fate-of-Anglican-Church/stories/201601090046&quot;&gt;right here in the Pittsburgh area&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Anglican Church, which historically included the American
Episcopal, has been undergoing upheaval over cultural changes
regarding the acceptability of homosexuality (changes that again, I am
old enough to have seen firsthand over the past decades).&lt;/p&gt;
&lt;p&gt;&quot;Bishops of both dioceses of Pittsburgh — Dorsey McConnell of the
Episcopal Church and Robert Duncan of the Anglican Church in North
America, who preceded Archbishop Beach as its founding leader — agree
that the stakes are huge.&quot;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will there ever be an openly gay president of the United States?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>What happens when you donate your used clothing?</title><link>https://franklinchen.com/blog/2015/05/22/what-happens-when-you-donate-your-used-clothing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/05/22/what-happens-when-you-donate-your-used-clothing/</guid><pubDate>Sat, 23 May 2015 02:39:14 GMT</pubDate><content:encoded>&lt;p&gt;I hate throwing stuff away, and that includes clothing I have that I
no longer wear. Abby participates in clothing exchanges with &lt;em&gt;local&lt;/em&gt;
women in order to avoid wastage, and she takes my clothing also, to
give away somewhere when possible.&lt;/p&gt;
&lt;p&gt;I was interested to read an
&lt;a href=&quot;https://conversableeconomist.blogspot.com/2015/05/quandaries-of-global-trade-in.html&quot;&gt;economics blog post&lt;/a&gt;
about possible unintended consequences, however, of clothing donations
that go to low-income countries.&lt;/p&gt;
&lt;p&gt;Apparently, what happens is that this flow of used clothing thanks to
&lt;em&gt;globalization&lt;/em&gt; competes with &lt;em&gt;local&lt;/em&gt; textile and clothing
industries. The used clothing ends up being resold rather than
donated. Interesting, huh?&lt;/p&gt;
</content:encoded></item><item><title>Discovering the Eolina, a beautiful musical instrument</title><link>https://franklinchen.com/blog/2015/02/18/discovering-the-eolina-a-beautiful-musical-instrument/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/02/18/discovering-the-eolina-a-beautiful-musical-instrument/</guid><pubDate>Thu, 19 Feb 2015 00:56:18 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;I just discovered a musical instrument that was new to me, the
&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.melodicaworld.com/post_reviews/ballone-burini-eolina-45/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.melodicaworld.com/post_reviews/ballone-burini-eolina-45/&quot;&amp;gt;Eolina&amp;lt;/span&amp;gt;,
which has a surprisingly beautiful sound, given that it is a form of
melodica, which although a perfectly fine instrument I enjoy playing,
does not have the loveliest, most refined sound.&lt;/p&gt;
&lt;p&gt;I encountered the Eolina through my following the
&lt;a href=&quot;https://www.youtube.com/user/GerardvanR&quot;&gt;YouTube channel&lt;/a&gt; of Gerard
van Reenen, who is just some random musician I found on YouTube at some
point in the past couple of years through some music search that I
have now completely forgotten.&lt;/p&gt;
&lt;p&gt;His specialty is playing duets with himself, by playing a wind
instrument with one hand while accompanying himself on a
keyboard instrument. Remarkably, he often makes this work quite well.&lt;/p&gt;
&lt;p&gt;So what exactly is an Eolina, and what does it sound like?&lt;/p&gt;
&lt;h2&gt;Example: a Handel sonata performed on Eolina and organ&lt;/h2&gt;
&lt;p&gt;Check out Gerard van Reenen&apos;s self-duet on Eolina and organ of George
Frideric Handel&apos;s sonata in B-flat major, HWV 377. I really like this
performance, showcasing his musicality on both instruments, and the
expressiveness of the Eolina, which is an upscale melodica made of
wood rather than plastic and therefore has more subtlety and
smoothness.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;zNvV5WXRP1Q&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Another example&lt;/h2&gt;
&lt;p&gt;I was so curious about the Eolina that I tried to find other uses of
it on YouTube.&lt;/p&gt;
&lt;p&gt;Here are some musicians performing Piazzolla&apos;s tango &quot;Oblivion&quot;, with
one of them playing an Eolina:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;U0h39B6blVE&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;(Over two years ago,
&lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;I had attempted to play &quot;Oblivion&quot; on my cheap melodica&lt;/a&gt;. I&apos;d
love to have access to an Eolina sometime!)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I always enjoy discovering a new musical instrument, and the Eolina
counts as one, even if it is just a wooden melodica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Had you heard of or heard an Eolina before you read this blog post?
What do you think of the sound? What do you think of melodicas in
general? They are not so commonly used except as teaching
instruments for children, so does that affect your perception?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>How I forgot to meditate after sixty days in a row of remembering and what that means</title><link>https://franklinchen.com/blog/2015/01/24/how-i-forgot-to-meditate-after-sixty-days-in-a-row-of-remembering-and-what-that-means/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/01/24/how-i-forgot-to-meditate-after-sixty-days-in-a-row-of-remembering-and-what-that-means/</guid><pubDate>Sat, 24 Jan 2015 13:58:29 GMT</pubDate><content:encoded>&lt;p&gt;I woke up this morning feeling very tired. I also suddenly realized that yesterday, I forgot to set aside time for the daily meditation practice (just ten minutes a day) that I had successfully done for &lt;em&gt;sixty days in a row&lt;/em&gt;, having deliberately started it &lt;a href=&quot;/blog/2014/11/24/report-on-my-first-day-of-stoic-week-2014/&quot;&gt;shortly before Thanksgiving&lt;/a&gt;. I was pretty angry at myself. But I also thought about how it was possible that I slipped after sixty days, and what that means.&lt;/p&gt;
&lt;h2&gt;What&apos;s my meditation schedule?&lt;/h2&gt;
&lt;p&gt;The optimal way to maintain any habit is to make it as rigid and automatic as possible. Several years ago, when I went months at a time without missing a single day, my system was to meditate first thing in the morning, before eating or exercising or anything else.&lt;/p&gt;
&lt;p&gt;I confess that I still don&apos;t have that kind of rigid schedule yet. Much of the time, I do meditate first thing. Other times, I feel pressed for time and want to get some work done. Or I&apos;m feeling very hungry and decide to eat breakfast first. But usually I do complete meditation in the morning. Occasionally I &quot;forget&quot; but then remember well before bedtime, and get it in before sleeping.&lt;/p&gt;
&lt;h2&gt;What my forgetting yesterday says about my life&lt;/h2&gt;
&lt;p&gt;First of all, I was feeling tired when I woke, because of a week of accumulated fatigue from doing many things, including going out last night with Abby for the second week of blues dance class at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.tartanswing.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.tartanswing.com/&quot;&amp;gt;Tartan Swing&amp;lt;/span&amp;gt; at CMU. Adding an extra evening out every week is requiring some changes in how much other stuff I can get done in evenings, and apparently I have not scaled back enough to make up for that additional commitment; it is always a struggle for me to &lt;a href=&quot;/blog/2014/12/15/thoughts-on-giving-up-an-old-project-to-make-room-for-the-new/&quot;&gt;give up something to make room for something else&lt;/a&gt;, but especially on short notice, since we had not originally planned, in December, to start checking out Tartan Swing this January!&lt;/p&gt;
&lt;p&gt;Also, yesterday was Friday, and I tend to feel I have many things to try to get done on Friday. I ate breakfast immediately, did work stuff, then since I was scheduled to go for a run, I did that. I&apos;ve been ramping up on my run distances, and I ran my second longest distance so far this month: the length was the sum of the length of my Monday and Wednesday runs this week! So that took more energy than I am used to yet.&lt;/p&gt;
&lt;p&gt;When I came home from work, I was extremely tired and hungry, to the point that I decided I wanted to eat a whole lot of food and do something different, so Abby and I went out for dinner. I came home totally stuffed. In any case, going out was an unscheduled, spontaneous decision, and by the time we came home, none of the whole day had gone according to my usual pattern. And so I somehow forgot to get in meditation before going to bed.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;The first lesson is that just because I missed one day of meditation after sixty in a row, that doesn&apos;t mean I&apos;ve lost everything. I meditated today, and will continue my practice. It&apos;s important to recover as quickly as possible, to avoid what has happened to me before, which is to feel ashamed, start identifying (after too many days in a row missed) as a &quot;non-meditator&quot;, and give up the practice.&lt;/p&gt;
&lt;p&gt;The other is that I&apos;m definitely overbooked and need to make sure I get rest, and get back on schedule for what I can manage to do. A busy week is coming up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you do when you find out that you&apos;ve missed a day of meditation, exercise, or some other daily practice? Do you feel bad about yourself? Do you make excuses? Do you examine what is really important? Do you set up a system to prevent having to rely on will power? What is your latest experience of slipping, and how did you deal with it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>For Martin Luther King, Jr. Day: some black American voices that spoke to me recently</title><link>https://franklinchen.com/blog/2015/01/19/for-martin-luther-king-jr-day-some-black-american-voices-that-spoke-to-me-recently/</link><guid isPermaLink="true">https://franklinchen.com/blog/2015/01/19/for-martin-luther-king-jr-day-some-black-american-voices-that-spoke-to-me-recently/</guid><pubDate>Mon, 19 Jan 2015 20:58:34 GMT</pubDate><content:encoded>&lt;p&gt;I believe today was the first time in my life I&apos;ve officially celebrated &lt;a href=&quot;https://en.wikipedia.org/wiki/Martin_Luther_King,_Jr._Day&quot;&gt;Martin Luther King, Jr. Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This means many things to me as an American (I am an Asian-American, son of immigrants).&lt;/p&gt;
&lt;h2&gt;MLK Day became an official holiday at work, finally&lt;/h2&gt;
&lt;p&gt;First of all, I didn&apos;t go to work today.&lt;/p&gt;
&lt;p&gt;This year, 2015, was the year that MLK Day finally became an &lt;a href=&quot;https://web.archive.org/web/20150906040826/http://www.cmu.edu/leadership/president-suresh/presidential-communications/2014/2014-08-21.html&quot;&gt;official university holiday at Carnegie Mellon University&lt;/a&gt;! Our new president, Subra Suresh, decided to finally end the weird CMU tradition of observing MLK Day only as a half-day holiday for students, and turning it into a full-day holiday for everyone (see &lt;a href=&quot;https://web.archive.org/web/20170103164633/http://www.cmu.edu:80/cipi/news-events/2014/140114_Frazer-2014-MLK-Keynote-Address.html&quot;&gt;2014&apos;s schedule of events&lt;/a&gt; for an example of how things used to be). I am proud of President Suresh for taking the step of turning MLK Day into a full holiday.&lt;/p&gt;
&lt;h2&gt;Some recent black American voices I heard&lt;/h2&gt;
&lt;p&gt;The media frenzy over the &lt;a href=&quot;https://en.wikipedia.org/wiki/Shooting_of_Michael_Brown&quot;&gt;shooting last year in Ferguson&lt;/a&gt; may have ended, but I have not forgotten &lt;a href=&quot;/blog/2014/11/27/report-on-my-fourth-day-of-stoic-week-2014/&quot;&gt;my vow last year to begin engaging more publicly in discussions about race in America&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I&apos;m starting off small, by linking to eloquent, heartfelt writings I&apos;ve read and saved in the past year (independent of Ferguson, just part of what comes my way online) by black Americans who shared their various life experiences so that those of us who are not black can better understand what they have dealt with in their lives in the US. I&apos;ve deliberately chosen articles by high achievers to highlight what still remains even after doing all the &quot;right&quot; things to try to live as normally as possible as a black American.&lt;/p&gt;
&lt;h3&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vqronline.org/essays-articles/2014/10/price-black-ambition&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vqronline.org/essays-articles/2014/10/price-black-ambition&quot;&amp;gt;&quot;The price of black ambition&quot;&amp;lt;/span&amp;gt;&lt;/h3&gt;
&lt;p&gt;This is an essay by a black female writer, Roxane Gay, daughter of Haitian immigrants, whose life was marked by great ambition and hard work. She kept hoping that it would be enough to overcome racism. She writes, &quot;I have come to realize how much I have, throughout my life, bought into the narrative of this alluring myth of personal responsibility and excellence.&quot;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://web.archive.org/web/20141106233443/https://medium.com/@ericajoy/the-other-side-of-diversity-1bb3de2f053e&quot;&gt;&quot;The other side of diversity&quot;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This poignant essay by a black woman discusses what it has been like to work in a predominantly white male tech community, thereby facing the dilemmas of minority status in two dimensions (race, gender). She has found it challenging to simply be who she wants to be, &quot;...a black woman who happens to work in the tech industry&quot;, rather than something additional seemingly expected of her.&lt;/p&gt;
&lt;h3&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/posteverything/wp/2014/11/06/i-taught-my-black-kids-that-their-elite-upbringing-would-protect-them-from-discrimination-i-was-wrong/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/posteverything/wp/2014/11/06/i-taught-my-black-kids-that-their-elite-upbringing-would-protect-them-from-discrimination-i-was-wrong/&quot;&amp;gt;&quot;I taught my black kids that their elite upbringing would protect them from discrimination. I was wrong.&quot;&amp;lt;/span&amp;gt;&lt;/h3&gt;
&lt;p&gt;This article by Lawrence Otis Graham talks about how he and his wife tried to shelter their children from racial discrimination by giving them an upper-middle-class upbringing. &quot;My wife and I, both African Americans, constitute one of those Type A couples with Ivy League undergraduate and graduate degrees who, for many years, believed that if we worked hard and maintained great jobs, we could insulate our children from the blatant manifestations of bigotry that we experienced as children in the 1960s and ’70s.&quot; Especially check out the detailed &quot;rules&quot; of behavior that they taught their children in hope that they would not be mistakenly targeted through racial profiling!&lt;/p&gt;
&lt;h2&gt;MLK&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot;&amp;gt;&quot;Letter from a Birmingham jail&quot;&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Finally, I want to simply quote MLK himself from his brilliant essay, &quot;Letter from a Birmingham jail&quot;. The key to his work, often forgotten or deliberately obscured, is this:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I must confess that over the past few years I have been gravely disappointed with the white moderate. I have almost reached the regrettable conclusion that the Negro&apos;s great stumbling block in his stride toward freedom is not the White Citizen&apos;s Counciler or the Ku Klux Klanner, but the white moderate, who is more devoted to &quot;order&quot; than to justice; who prefers a negative peace which is the absence of tension to a positive peace which is the presence of justice; who constantly says: &quot;I agree with you in the goal you seek, but I cannot agree with your methods of direct action&quot;; who paternalistically believes he can set the timetable for another man&apos;s freedom; who lives by a mythical concept of time and who constantly advises the Negro to wait for a &quot;more convenient season.&quot; Shallow understanding from people of good will is more frustrating than absolute misunderstanding from people of ill will. Lukewarm acceptance is much more bewildering than outright rejection.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Political &quot;moderation&quot; is often praised and held up as superior to &quot;extremism&quot;, but in fact, the &quot;moderate&quot; is often a large part of the problem when it comes to change and doing the right thing. I have more to say about this general topic, but not right now.&lt;/p&gt;
&lt;p&gt;Meanwhile, read the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.africa.upenn.edu/Articles_Gen/Letter_Birmingham.html&quot;&amp;gt;whole letter&amp;lt;/span&amp;gt;, one of the most brilliant examples of the art and science of that rhetoric I have ever seen.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I observed MLK Day today by reviewing writings by black Americans and rereading MLK&apos;s &quot;Letter from a Birmingham jail&quot;. In the US, we still have a long way to go in race relations, but we continue to make progress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How did you observe MLK Day today? What is on your mind today? Did you participate in a reading or a march? Do you oppose what MLK did and believe there should be no holiday in his honor? Or do you feel he didn&apos;t do enough, that nonviolence didn&apos;t work?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I stopped saying something is easy or something is hard</title><link>https://franklinchen.com/blog/2014/12/23/why-i-stopped-saying-something-is-easy-or-something-is-hard/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/23/why-i-stopped-saying-something-is-easy-or-something-is-hard/</guid><pubDate>Tue, 23 Dec 2014 22:19:38 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I decided to monitor how I talk about learning some subject or topic, because of observing both of myself and other people what our reactions can be if I say that something is &quot;easy&quot; or something is &quot;hard&quot;. I&apos;ve come to the conclusion that there are serious drawbacks to saying that something is &quot;easy&quot; or &quot;hard&quot;, and an entirely different vocabulary should be used in helping a learner. I haven&apos;t figured out exactly what that vocabulary is, but I&apos;ve seen too many times some really disastrous results from overusing labels such as &quot;easy&quot; or &quot;hard&quot;.&lt;/p&gt;
&lt;h2&gt;What&apos;s &quot;easy&quot; anyway?&lt;/h2&gt;
&lt;p&gt;I never learned to drive stick shift in my youth. Therefore, when in recent years Abby tried to teach me to, I had a lot of trouble. She became impatient with me and started using phrases like &quot;but it&apos;s easy, you just do this&quot;. These phrases were delivered in a way that sounded frustrated, and meanwhile, I &lt;em&gt;knew&lt;/em&gt; it wasn&apos;t &quot;easy&quot;, else I would be getting it. I finally gave up, giving the excuse that it wasn&apos;t worth the trouble to go through hell to get this skill working, since my own car is an automatic anyway and I would have very little opportunity or reason to drive stick shift. But the real point is that learning became very stressful for me as I had to fight not only my multitasking physical clumsiness, but also this idea that I wasn&apos;t able to do something &quot;easy&quot;. Part of me knew that &lt;em&gt;rationally&lt;/em&gt;, I shouldn&apos;t care about labels, but part of me also kept on saying silently, &quot;You have no idea how hard this is for me. This is how you started learning to drive. You have no idea what I&apos;m going through.&quot;&lt;/p&gt;
&lt;p&gt;I remember many other situations through my life where I was struggling with something supposedly &quot;easy&quot; and became very discouraged. In my youth, I may not have had quite as much metacognition to recognize that I shouldn&apos;t necessarily give up (and I didn&apos;t always give up), so it was particularly damaging when made fun of for not immediately grasping something &quot;easy&quot;, whether hitting a ball with a bat or racket, speaking English fluently, or using perfect grammar in my writing. In some cases, where I persevered, I not only &quot;caught up&quot; (there&apos;s always some sense of &quot;comparison&quot; when someone uses the word &quot;easy&quot;), but excelled. In other cases, I just gave up, for decades (basically, anything athletic, I gave up before I finished elementary school), the shame was so great at being crappy at something &quot;easy&quot;.&lt;/p&gt;
&lt;p&gt;There was even a perverse overreaction that sometimes kicked in. If I couldn&apos;t do something &quot;easy&quot; (like draw in art class), I did the &quot;sour grapes&quot; thing and declared the subject stupid and not worth my time. I turned around and used &quot;easy&quot; as an excuse to make fun of those who could do it. And that leads to the dual problem of saying something is &quot;hard&quot;.&lt;/p&gt;
&lt;h2&gt;What&apos;s &quot;hard&quot;?&lt;/h2&gt;
&lt;p&gt;A harmful effect of the &quot;easy&quot;/&quot;hard&quot; classification is that it encourages us to play stupid status games in which nobody wins and everyone is hurt.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example: it turned out that growing up, I found math &quot;easy&quot;. As a result, math became a convenient way for me to stay lazy about my perseverance and will to improve. I considered math, which was considered by many to be &quot;hard&quot;, as a way for me to impress and get approval (from those who thought math was &quot;hard&quot;). So I didn&apos;t work very hard at math. Meanwhile, I just &quot;gave up&quot; on art and gym classes. I didn&apos;t even try. All this because I got the idea that I was only punished for failing at stuff that was &quot;easy&quot; but rewarded for doing well at what was &quot;hard&quot;. I gravitated toward all kinds of &quot;hard&quot; academic subjects, for the sole purpose of boosting my self-esteem. This was a big mistake in the long run. Note that these subjects were not necessarily the ones that I was passionate about, or even truly talented at. They were they ones that somehow presented themselves as the &quot;biggest prizes&quot; and so I either secretly underworked at something I found easy or I put an inordinate amount of work into something &quot;hard&quot; for the wrong reasons.&lt;/p&gt;
&lt;p&gt;Meanwhile, I saw my peers give up on all kinds of pursuits when by middle school it became apparent that some subjects were getting &quot;harder&quot; than others for them. This was sad. Often there was no rhyme or reason to what seemed &quot;hard&quot; or not: bad luck with a single terrible teacher in some random subject, for example, had massive impacts on the life paths of many of us. Whether it was a music class or one particular favored sport or game, I saw discouragement and disillusionment everywhere among everyone.&lt;/p&gt;
&lt;p&gt;So marking something as &quot;hard&quot; not only discourages some people, but encourages others to play the game of racking up points solely by focusing on excelling at the &quot;hard&quot; for the sake of competition. This is such a waste.&lt;/p&gt;
&lt;h2&gt;Solution?&lt;/h2&gt;
&lt;p&gt;Years of experience in learning many things I once thought were too hard for me have convinced me that every learner is different, and needs different motivations, contexts, kinds of help in order to achieve personal goals. In particular, not everyone is &quot;ready&quot; at any given time for something yet. And learning may come in unexpected spurts, sometimes sudden insight that comes after having been given enough encouragement to persist for a while even while struggling.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying that learners cannot be irresponsible and lazy (I certainly sometimes am), but teachers should be aware that calling things &quot;easy&quot; or &quot;hard&quot; as a way to shame or encourage may well completely backfire, and there have to be better ways to concretely help learners make incremental progress at their own pace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about your own learning and teaching experiences. Do you remember particularly negative or positive ones? How many involved some kind of &quot;easy&quot;/&quot;hard&quot; talk that caused demotivation? Or are you one who thrives on such labels, using them as a challenge?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to think about Rust ownership versus C++ unique_ptr</title><link>https://franklinchen.com/blog/2014/12/21/how-to-think-about-rust-ownership-versus-c-plus-plus-unique-ptr/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/21/how-to-think-about-rust-ownership-versus-c-plus-plus-unique-ptr/</guid><pubDate>Sun, 21 Dec 2014 19:31:36 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; programming language, which is nearing its important version 1.0 release, but already seen a lot of use, has many interesting features, the most prominent of which is its &lt;a href=&quot;http://doc.rust-lang.org/guide.html#ownership,-borrowing,-and-lifetimes&quot;&gt;ownership&lt;/a&gt; static type system that prevents certain kinds of bugs common in many programs in C or C++.&lt;/p&gt;
&lt;p&gt;For example, it is common in most applications to create graphs of objects pointing to each other, in which it is not clear how many pointers point to a particular object, who is to free the object&apos;s memory when it is no longer needed, and what happens to all outstanding pointers to that block. Languages supporting precise &lt;a href=&quot;https://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29&quot;&gt;garbage collection&lt;/a&gt; use various algorithms to determine when memory can be freed, and have become particularly popular in the past twenty years, but there are still situations in which garbage collection is not ideal, hence the continued relevance of languages such as C++.&lt;/p&gt;
&lt;p&gt;When I was working as a software engineer in the 1990s developing desktop applications with user interfaces for the &lt;a href=&quot;https://en.wikipedia.org/wiki/X_Window_System&quot;&gt;X Window System&lt;/a&gt;, we used frameworks that included C++ &lt;a href=&quot;https://en.wikipedia.org/wiki/Smart_pointer&quot;&gt;smart pointers&lt;/a&gt; that used &lt;a href=&quot;https://en.wikipedia.org/wiki/Reference_counting&quot;&gt;reference counting&lt;/a&gt; to handle graphs of interconnected data. The C++ standard itself lagged behind in standardizing smart pointers; it started with the &lt;a href=&quot;http://www.informit.com/articles/article.aspx?p=30642&amp;amp;seqNum=9&quot;&gt;terribly flawed and unusable&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Auto_ptr&quot;&gt;&lt;code&gt;auto_ptr&lt;/code&gt;&lt;/a&gt; that finally got deprecated in C++11, then moved on finally to &lt;a href=&quot;https://en.wikipedia.org/wiki/Smart_pointer#unique_ptr&quot;&gt;&lt;code&gt;unique_ptr&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Smart_pointer#shared_ptr_and_weak_ptr&quot;&gt;&lt;code&gt;shared_ptr&lt;/code&gt; and &lt;code&gt;weak_ptr&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When talking with C++ programmers about Rust, I have found that often they have been puzzled about how Rust&apos;s ownership system does anything better than what C++ &lt;code&gt;unique_ptr&lt;/code&gt; already does. Here is an explanation (I will not be discussing analogues of &lt;code&gt;shared_ptr&lt;/code&gt; and &lt;code&gt;weak_ptr&lt;/code&gt; here).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Simplest example: compile-time type-checking vs. run-time segmentation fault&lt;/h2&gt;
&lt;p&gt;First, go read Steve Klabnik&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.steveklabnik.com/uniq_ptr_problem/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.steveklabnik.com/uniq_ptr_problem/&quot;&amp;gt;article about the simplest possible example illustrating what Rust offers over C++ unique_ptr&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Basically, in C++, &lt;code&gt;unique_ptr&lt;/code&gt; is supposed to be a way to indicate that a given pointer is the unique &quot;owner&quot; of a piece of data. If you want to transfer ownership from one &lt;code&gt;unique_ptr&lt;/code&gt; to another, you have to call &lt;code&gt;move&lt;/code&gt; on it. After that, it is an &lt;em&gt;run-time error&lt;/em&gt; to try to access the data using the original &lt;code&gt;unique_ptr&lt;/code&gt;. This is great, except for two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;By &quot;it&apos;s a run-time error&quot;, we mean that the original &lt;code&gt;unique_ptr&lt;/code&gt;&apos;s embedded pointer gets mutated to &lt;code&gt;nullptr&lt;/code&gt;, so that you have to perpetually check your &lt;code&gt;unique_ptr&lt;/code&gt; for &lt;code&gt;nullptr&lt;/code&gt;, otherwise get a segmentation fault.&lt;/li&gt;
&lt;li&gt;In many situations, we&apos;d prefer to have a &lt;em&gt;compile-time&lt;/em&gt; guarantee that we will never dereference &lt;code&gt;nullptr&lt;/code&gt;, so that we don&apos;t have hidden memory safety bugs lying around in our code that don&apos;t happen until well into a long-running program.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is Steve&apos;s example of an unintended segmentation fault from C++:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;memory&amp;gt;

using namespace std;

int main ()
{
    unique_ptr&amp;lt;int&amp;gt; orig(new int(5));

    cout &amp;lt;&amp;lt; *orig &amp;lt;&amp;lt; endl;

    auto stolen = move(orig);

    cout &amp;lt;&amp;lt; *orig &amp;lt;&amp;lt; endl;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Steve shows an &quot;equivalent&quot; Rust program in which code attempts to move ownership fails to compile because of a type error (I edited to correspond more closely with the C++):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fn main() {
    let orig = box 5i;

    println!(&quot;{}&quot;, *orig);

    let stolen = orig;

    println!(&quot;{}&quot;, *orig);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Understanding C++ behavior by modeling it in Rust, safely&lt;/h2&gt;
&lt;p&gt;But it is not quite accurate to call the Rust program &quot;equivalent&quot; to the original C++ program. It&apos;s really a &quot;cleaned up&quot; or &quot;restricted&quot; version of that program (and the argument for using a type-safe language like Rust is that we often like these restrictions, as a tradeoff for safety or efficiency).&lt;/p&gt;
&lt;p&gt;Here is a Rust program that more accurately models what the C++ &lt;code&gt;unique_ptr&lt;/code&gt; actually does, which happens &lt;em&gt;dynamically&lt;/em&gt; at run-time, not at compile time, hence the segmentation fault: the transfer of ownership by &lt;code&gt;move&lt;/code&gt; on a &lt;code&gt;unique_ptr&lt;/code&gt; is not type-checked at compile-time.&lt;/p&gt;
&lt;p&gt;For illustration&apos;s sake, we have modeled C++ directly in &lt;em&gt;safe&lt;/em&gt; Rust through indirection by treating a C++ pointer to &lt;code&gt;T&lt;/code&gt; (C++ pointers can always be &lt;code&gt;nullptr&lt;/code&gt;) as an &lt;code&gt;Option&amp;lt;Box&amp;lt;T&amp;gt;&amp;gt;&lt;/code&gt;, where &lt;code&gt;nullptr&lt;/code&gt; is modeled as &lt;code&gt;None&lt;/code&gt; and a non-null pointer is modeled as &lt;code&gt;Some(pointer_nonnull)&lt;/code&gt;. This Rust code type-checks, compiles, and simulates a segmentation fault.&lt;/p&gt;
&lt;p&gt;You can play with this code &lt;a href=&quot;http://is.gd/5kEQA8&quot;&gt;at this Rust playground link&lt;/a&gt;. (You may find it interesting to examine the assembly code generated.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Simulate a segmentation fault.
fn seg_fault() {
    panic!(&quot;segmentation fault&quot;);
}

fn main() {
    // Rough modeling in Rust of C++ unique_ptr&amp;lt;int&amp;gt;
    // because C++ pointers can always be null.
    let mut orig: Option&amp;lt;Box&amp;lt;int&amp;gt;&amp;gt; = Some(box 5i);

    match orig {
        // In C++, deferencing null seg faults.
        None =&amp;gt; seg_fault(),
        Some(orig_nonnull) =&amp;gt; {
            println!(&quot;{}&quot;, *orig_nonnull);

            // The equivalent of C++ unique_ptr move.
            let stolen = Some(orig_nonnull);
            orig = None;

            match orig {
                // We seg fault after the C++ style move.
                None =&amp;gt; seg_fault(),
                Some(orig_nonnull) =&amp;gt; println!(&quot;{}&quot;, *orig_nonnull)
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nobody would ever write this kind of code in Rust, but implicitly, all C++ programs are semantically basically doing this, except that for efficiency, the &lt;code&gt;nullptr&lt;/code&gt; checking is not done at the language level but just results in an actual segmentation fault at the operating system level.&lt;/p&gt;
&lt;h2&gt;An example of smart pointers inside a collection&lt;/h2&gt;
&lt;p&gt;The single most disturbing failure mode of the C++-based software product I worked on in 1995-1997 in C++ was segmentation faults resulting from mysteriously disappearing pointers. What I mean is, behavior like the following, where a container containing smart pointers to objects was meant to &lt;em&gt;own&lt;/em&gt; them, but there was no compile-time way to verify this fact, because of the nature of the object graph. If someone didn&apos;t play by the uncheckable rules and inadvertently took ownership of (instead of &quot;borrowing&quot; through a raw pointer) something embedded in the collection, then &lt;code&gt;nullptr&lt;/code&gt; appeared, and a segmentation fault happened.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;vector&amp;gt;
#include &amp;lt;memory&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

int main() {
    vector&amp;lt;unique_ptr&amp;lt;int&amp;gt;&amp;gt; v;
    v.push_back(make_unique&amp;lt;int&amp;gt;(5));

    cout &amp;lt;&amp;lt; *v[0] &amp;lt;&amp;lt; endl;

    // C++ happily allows this.
    auto pointer_to_5 = move(v[0]);
    cout &amp;lt;&amp;lt; *pointer_to_5 &amp;lt;&amp;lt; endl;

    // Seg fault.
    cout &amp;lt;&amp;lt; *v[0] &amp;lt;&amp;lt; endl;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can probably guess what some developers did to &quot;fix&quot; the segmentation fault. They started adding &lt;code&gt;nullptr&lt;/code&gt; checks everywhere to prevent crashing, but this only resulted in &lt;em&gt;corrupt user data and documents&lt;/em&gt;, because in fact, we lost data in those collections and smart pointers to the data should never have ended up &lt;code&gt;nullptr&lt;/code&gt;!!&lt;/p&gt;
&lt;p&gt;The complexity of the application and the deadline pressures made it impossible to fully figure out what was going wrong and where. I actually ended up writing an external &quot;validation&quot; utility program in &lt;a href=&quot;http://www.smlnj.org/&quot;&gt;Standard ML of New Jersey&lt;/a&gt; that parsed serialized object graphs and tried to fix them up in some fashion. This particularly helped the QA team a lot when dealing with old documents that were already corrupted.&lt;/p&gt;
&lt;h3&gt;The Rust version will not compile&lt;/h3&gt;
&lt;p&gt;The Rust type-checker rejects any attempt to move ownership out of a collection. (Try to compile it in &lt;a href=&quot;http://is.gd/Om7wfr&quot;&gt;this playground&lt;/a&gt;.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fn main() {
    let v = vec![box 5i];

    println!(&quot;{}&quot;, *v[0]);

    // Attempted move: type error at compile time.
    let pointer_to_5 = v[0];
    println!(&quot;{}&quot;, *pointer_to_5);

    println!(&quot;{}&quot;, *v[0]);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;illegal_move_out_of_vector.rs:7:24: 7:28 error: cannot move out of dereference (dereference is implicit, due to indexing)
illegal_move_out_of_vector.rs:7     let pointer_to_5 = v[0];
                                                       ^~~~
illegal_move_out_of_vector.rs:7:9: 7:21 note: attempting to move value to here
illegal_move_out_of_vector.rs:7     let pointer_to_5 = v[0];
                                        ^~~~~~~~~~~~
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Often, you do want to share&lt;/h3&gt;
&lt;p&gt;I have to be honest: at first, Rust&apos;s ownership type system seems like quite a restriction, and adhering to it strictly would require the restructuring of certain kinds of programs. Static type safety of any kind in any language is always a matter of tradeoffs.&lt;/p&gt;
&lt;p&gt;But note that Rust is flexible: you don&apos;t have to use Rust&apos;s default pointer type! You can use one of Rust&apos;s many other pointer types, such as &lt;a href=&quot;http://doc.rust-lang.org/guide.html#rc-and-arc&quot;&gt;&lt;code&gt;Rc&lt;/code&gt; or &lt;code&gt;Arc&lt;/code&gt;&lt;/a&gt;, that allow reference-counted shared ownership (like C++ &lt;code&gt;shared_ptr&lt;/code&gt;), if that&apos;s what you really want. (&lt;a href=&quot;http://is.gd/HNi7SR&quot;&gt;Playground here&lt;/a&gt;.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Reference-counted smart pointer.
use std::rc::Rc;

fn main() {
    let v = vec![Rc::new(5i)];

    println!(&quot;{}&quot;, *v[0]);

    let pointer_to_5 = v[0].clone();
    println!(&quot;{}&quot;, *pointer_to_5);

    println!(&quot;{}&quot;, *v[0]);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Unsafe&lt;/h2&gt;
&lt;p&gt;Finally, Rust does allow you to go all out and write &lt;a href=&quot;http://doc.rust-lang.org/guide.html#unsafe&quot;&gt;unsafe&lt;/a&gt; code, if you truly need to for raw C performance or FFI reasons. Most of the time you do not need to, because the whole point of Rust is to compile down to the same kind of assembly code you would get from C.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extern crate libc;

use libc::{size_t, malloc};
use std::mem;
use std::ptr;

fn main() {
    // How ugly it is to pretend Rust is unsafe C.
    unsafe {
        let mut orig: *mut int = malloc(mem::size_of::&amp;lt;int&amp;gt;() as size_t)
            as *mut int;
        ptr::write(&amp;amp;mut *orig, 5i);

        println!(&quot;{}&quot;, *orig);

        orig = ptr::null::&amp;lt;int&amp;gt;() as *mut int;

        // null pointer crash!
        println!(&quot;{}&quot;, *orig);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope this little article shows a little bit about what Rust&apos;s ownership type system can do to make pointer-heavy code memory safe, unlike C++, and also gives you a taste of how Rust&apos;s flexibility also allows you to use C++-style reference-counting if desired, and even raw unsafe code. Personally, I am excited about the upcoming 1.0 release of Rust, and although I have not done low-level systems programming for almost two decades, if I ever was to do it again, I would immediately reach out for Rust as a language of choice for the ultimate combination of safety, expressiveness, and performance (in use of time and space).&lt;/p&gt;
&lt;p&gt;All code for this article is available in a &lt;a href=&quot;https://github.com/FranklinChen/rust-vs-cpp-unique_ptr&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Remembering over 20 years of reading Dr. Dobb&apos;s Journal even till today</title><link>https://franklinchen.com/blog/2014/12/16/remembering-over-20-years-of-reading-dr-dobbs-journal-even-till-today/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/16/remembering-over-20-years-of-reading-dr-dobbs-journal-even-till-today/</guid><pubDate>Wed, 17 Dec 2014 03:23:42 GMT</pubDate><content:encoded>&lt;p&gt;It was with sadness, but not surprise, that I read today about the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.drdobbs.com/architecture-and-design/farewell-dr-dobbs/240169421&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.drdobbs.com/architecture-and-design/farewell-dr-dobbs/240169421&quot;&amp;gt;end of Dr. Dobb&apos;s Journal&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve been reading this magazine for &lt;em&gt;twenty-two years&lt;/em&gt;! I haven&apos;t read any other magazine on any topic for this long.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;RSS&lt;/h2&gt;
&lt;p&gt;Of course, it&apos;s been years since my last printed copy of &lt;a href=&quot;https://en.wikipedia.org/wiki/Dr._Dobb%27s_Journal&quot;&gt;Dr. Dobb&apos;s Journal&lt;/a&gt; (DDJ) entered my mailbox. At some point I was simply regularly reading content from its online &lt;a href=&quot;https://web.archive.org/web/20250203022408/https://drdobbs.com/rss/all&quot;&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was particularly sad when reading of the discontinuation of the publication because I had been following for quite some time Andrew Koenig&apos;s multi-part article on binary search. In fact, &lt;a href=&quot;https://web.archive.org/web/20241216064819/https://www.drdobbs.com/cpp/abstractions-for-binary-search-part-9-wh/240169416&quot;&gt;I had just read part 9 and was looking forward to the eventual conclusion of the series&lt;/a&gt;! I&apos;ve been waiting to see his punch line, since every article in this series has ended with a cliff-hanger. Here, he had closed with &quot;Next week, we shall continue building our tests.&quot; I wonder if he be able to post the conclusion?&lt;/p&gt;
&lt;h3&gt;(Update of 2014-12-22)&lt;/h3&gt;
&lt;p&gt;Andrew Koenig&apos;s article series did conclude, after all, &lt;a href=&quot;https://web.archive.org/web/20250304231925/https://www.drdobbs.com/cpp/abstractions-for-binary-search-part-10-p/240169437&quot;&gt;today&lt;/a&gt;. I&apos;ll comment on his concluded article series in a later blog post.&lt;/p&gt;
&lt;h2&gt;How I started reading DDJ&lt;/h2&gt;
&lt;p&gt;In 1992, I was unemployed, a physics grad school dropout, and needed a new career. I had studied some math and passed the first two actuarial exams but frankly, had no interest in doing math and insurance for a living. Friends told me computer programming was a good way to go, so although I had not written a single computer program since high school (where I wrote and ran only COBOL and Pascal programs), I decided to learn C and Unix and Lisp, because these were technologies my friends had learned in their first year in college.&lt;/p&gt;
&lt;p&gt;Meanwhile, this was all before the Web, so the way to get any new and exciting information was from Usenet or from printed magazines. I got some recommendations to check out two magazines in particular: Dr. Dobb&apos;s Journal and the &lt;a href=&quot;https://en.wikipedia.org/wiki/C/C%2B%2B_Users_Journal&quot;&gt;C Users Journal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yes, I did ask, &quot;Who the heck is or was Dr. Dobb?!&quot; It didn&apos;t matter. The magazine was great. It covered all kinds of topics, and had code listings you could type in or download (remember &lt;a href=&quot;https://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP&quot;&gt;anonymous FTP&lt;/a&gt; as the primary way to download stuff?).&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;http://upload.wikimedia.org/wikipedia/commons/d/d8/Macintosh_classic.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: http://upload.wikimedia.org/wikipedia/commons/d/d8/Macintosh_classic.jpg&quot;&amp;gt;[image: Macintosh Classic]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I got my first job as a software engineer in 1993, after much intense self-study, learning to programm in C on my younger sister&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Macintosh_Classic&quot;&gt;Macintosh Classic&lt;/a&gt; using &lt;a href=&quot;https://en.wikipedia.org/wiki/THINK_C&quot;&gt;THINK C&lt;/a&gt;. What can I say, DDJ was there for me as a useful resource.&lt;/p&gt;
&lt;h2&gt;Continuing to read DDJ; learning new languages&lt;/h2&gt;
&lt;p&gt;Today I was intrigued to read &lt;a href=&quot;https://twitter.com/bodil/status/545009243272003585&quot;&gt;Bodil Stokke&apos;s tweet&lt;/a&gt;, &quot;I read about both Haskell and Dylan in Dr Dobbs 1994-ish and was itching to learn both, but couldn&apos;t find Amiga impls for either.&quot;&lt;/p&gt;
&lt;p&gt;I did learn both Haskell and Dylan in 1994, but don&apos;t remember whether it was because of mention in DDJ or because of other sources! I do remember that I downloaded quite a bit of &quot;freeware&quot; and &quot;shareware&quot; through FTP or bought through CD-ROMs in 1992-1994, before the birth of the &lt;a href=&quot;https://en.wikipedia.org/wiki/World_Wide_Web&quot;&gt;World Wide Web&lt;/a&gt;, which I started using excitedly in 1995.&lt;/p&gt;
&lt;p&gt;1994 was a particularly important year for me, because I discovered and experimented with writing and running programs in a huge variety of programming languages that year.&lt;/p&gt;
&lt;h3&gt;Haskell&lt;/h3&gt;
&lt;p&gt;The most important new language I learned in 1994 was &lt;a href=&quot;http://caml.inria.fr/caml-light/&quot;&gt;Caml Light&lt;/a&gt;, which I came across and learned and used on my Mac SE/30 in 1994, at &lt;a href=&quot;http://caml.inria.fr/pub/old_caml_site/caml-list-ar/0136.html&quot;&gt;version 0.6&lt;/a&gt;. I still remember just finishing working through the &lt;a href=&quot;http://caml.inria.fr/pub/docs/fpcl/&quot;&gt;tutorial&lt;/a&gt; when version 0.7 came out and a lot of stuff changed, annoying me.  How Caml changed the course of my life is the subject of another article.&lt;/p&gt;
&lt;p&gt;I also discovered Haskell in 1994. That took longer for me to get a feel for. It was the dialect &lt;a href=&quot;https://en.wikipedia.org/wiki/Gofer_%28programming_language%29&quot;&gt;Gofer&lt;/a&gt; that I first downloaded and copied to a floppy disk, in the form of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://web.cecs.pdx.edu/~mpj/goferarc/macgofer/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://web.cecs.pdx.edu/~mpj/goferarc/macgofer/index.html&quot;&amp;gt;MacGofer&amp;lt;/span&amp;gt;. Later, in 1996, I used &lt;a href=&quot;https://www.haskell.org/ghc/&quot;&gt;GHC&lt;/a&gt; briefly for a small internal utility at work in 1996. I see that DDJ &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.drdobbs.com/programming-paradigms/184409831&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.drdobbs.com/programming-paradigms/184409831&quot;&amp;gt;mentioned Haskell in February 1996&amp;lt;/span&amp;gt;, but given that I learned it earlier, I don&apos;t know if there was any earlier DDJ mention (not Web-searchable currently) that could have influenced me to try Gofer in the first place. (More on the history of my Haskell usage is the subject of another article; Haskell is the only programming language I am still using active twenty years after first learning it.)&lt;/p&gt;
&lt;h3&gt;Dylan&lt;/h3&gt;
&lt;p&gt;I see that there was a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.drdobbs.com/tools/the-dylan-programming-language/184409404&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.drdobbs.com/tools/the-dylan-programming-language/184409404&quot;&amp;gt;DDJ article on Dylan in January 1994&amp;lt;/span&amp;gt;. &quot;Dylan, an object-oriented dynamic language developed by Apple Computer, is designed to replace existing static languages for the development of large software systems, yet remains small and efficient enough for the next generation of portable computers. Dylan was developed from the language Scheme, augmented with the Common-Lisp Object System (CLOS).&quot;&lt;/p&gt;
&lt;p&gt;I was very excited about &lt;a href=&quot;https://en.wikipedia.org/wiki/Dylan_%28programming_language%29&quot;&gt;Dylan&lt;/a&gt; when I learned about it, because of its ambitions to simultaneously&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;have all the nice features of Scheme&lt;/li&gt;
&lt;li&gt;remain dynamically typed, but offer optional typing as a standard part of the language&lt;/li&gt;
&lt;li&gt;provide an object system with multimethods (in 1994, I felt that conventional single-receiver OO was a dead end in the history of programming languages, as evidenced by the horrible &lt;a href=&quot;https://en.wikipedia.org/wiki/Visitor_pattern&quot;&gt;visitor pattern&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Up until I discovered Caml, my favorite language was Scheme, which I had learned in 1992 while working through (the first edition of) &lt;a href=&quot;https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs&quot;&gt;&quot;The Structure and Interpretation of Computer Programs&quot;&lt;/a&gt; (SICP), so I felt totally at home in Dylan. In fact, I remember this very article as convincing me to switch from Scheme to Dylan: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.drdobbs.com/tools/the-dylan-programming-language/184409404#0272_00e9&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.drdobbs.com/tools/the-dylan-programming-language/184409404#0272_00e9&quot;&amp;gt;Example 5&amp;lt;/span&amp;gt; in the article presented a code snippet from SICP translated into Dylan! Note that this was when Dylan was still using an S-expression syntax carried over from Scheme. Later, Dylan acquired an infix syntax, which I was a big fan of, actually, since I viscerally dislike the parentheses of Lisp languages. I played around with various implementations of Dylan before &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_Dylan&quot;&gt;Apple&apos;s project&lt;/a&gt; was &lt;a href=&quot;https://web.archive.org/web/20060101181134/http://apple.computerhistory.org/discuss/msgReader$186?mode=day&quot;&gt;killed in 1995&lt;/a&gt;. That was a shocker. The news got to me late. I had acquired the Apple Dylan implementation and manual, and it was all for nothing. It was one of the greatest disappointments of my life (topic of another article).&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve appreciated Dr. Dobb&apos;s Journal for over two decades because of the timely information it has brought on all kinds of topics involving software development, from C and assembly code listings to surveys of new languages, libraries, algorithms, etc. It was particularly exciting rediscovering an important article on Dylan that exposed me to a sadly short-lived language, Dylan (although some are trying to revive it as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://opendylan.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://opendylan.org/&quot;&amp;gt;Open Dylan&amp;lt;/span&amp;gt;).&lt;/p&gt;
&lt;p&gt;Some nostalgia and detective work have opened up memories and questions of &quot;what could have been&quot; that I&apos;ll explore in later articles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is your relationship to Dr. Dobb&apos;s Journal? Have you ever been a loyal reader of it? What did you get from it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thoughts on giving up an old project to make room for the new</title><link>https://franklinchen.com/blog/2014/12/15/thoughts-on-giving-up-an-old-project-to-make-room-for-the-new/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/15/thoughts-on-giving-up-an-old-project-to-make-room-for-the-new/</guid><pubDate>Mon, 15 Dec 2014 20:10:34 GMT</pubDate><content:encoded>&lt;p&gt;Today I made a difficult decision to give up doing something that I have enjoyed for well &lt;a href=&quot;/blog/2013/09/12/my-first-post-on-the-chess-improver-the-value-of-thematic-complete-games-against-a-weaker-opponent/&quot;&gt;over a year now&lt;/a&gt;: writing a &lt;a href=&quot;/writing/chess-improver/&quot;&gt;weekly chess column&lt;/a&gt; at &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Writing&lt;/h2&gt;
&lt;p&gt;It&apos;s been a major commitment coming up with something to write about every week for such a long time. There have been times when I was overflowing with ideas; there have been times when I struggled to come up with something to write about that I could stand behind. Sometimes I have published something I felt was particularly good; sometimes I felt uninspired; sometimes I just dashed something out of uneven quality. But through it all, I learned a lot from my attempt to convey &lt;em&gt;something specific and concrete&lt;/em&gt; that I hoped readers would enjoy and ideally even use to their practical advantage in their own chess play. The best way to verify whether you actually understand something is to write about it! I definitely had to do homework in many cases in order to make sure I really understood what I was talking about, in order to be as accurate and correct as I could.&lt;/p&gt;
&lt;p&gt;I even kept on writing about chess during very dry spells in my writing in general, when I wasn&apos;t writing anything for my other two blogs, this personal blog and my &lt;a href=&quot;https://ConscientiousProgrammer.com/&quot;&gt;programming blog&lt;/a&gt;. I admit to being rather embarrassed that during these dry spells, I kept on posting links to my chess blog from this blog. I will never again waste readers&apos; time by posting links from one blog to another except when relevant.&lt;/p&gt;
&lt;h2&gt;The law of conservation of time and energy&lt;/h2&gt;
&lt;p&gt;In our lives, we can&apos;t do it all. For 2015, recent circumstances have led me to commit to a bunch of personal projects that have nothing to do with chess, so I knew, as 2014 comes to a close, that I would have to give up something &lt;em&gt;old&lt;/em&gt; in order to free up time and energy for the &lt;em&gt;new&lt;/em&gt;. I&apos;m going to writing up a retrospective on 2014 before 2015 comes, in order to plan out how to go about 2015.&lt;/p&gt;
&lt;h2&gt;It&apos;s not really giving up&lt;/h2&gt;
&lt;p&gt;I lied in my title. I&apos;m not really &quot;giving up&quot; chess writing; I&apos;m just putting it aside. If a time comes when I feel it is worthwhile to do it again, I may well return. However, for now, I&apos;m shutting it down.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;All things come to an end, or at least, an adjournment. I look forward to tackling new challenges as I free myself from the responsibility of writing a weekly chess column.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you rearrange your life when you decide to start new demanding projects? Do you try to squeeze them in and cut out &quot;non-essentials&quot; or optimize your efficiency? Or do you decide that you have to cut out significant old projects? Or do you feel that you are already stretched to the limit with essentials (such as young children) and cannot possibly take on anything new?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thoughts on Cuba while watching Cuban musicians performing the 1947 bolero &quot;La gloria eres tú&quot;</title><link>https://franklinchen.com/blog/2014/12/13/thoughts-on-cuba-while-watching-cuban-musicians-performing-the-1947-bolero-la-gloria-eres-tu/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/13/thoughts-on-cuba-while-watching-cuban-musicians-performing-the-1947-bolero-la-gloria-eres-tu/</guid><pubDate>Sat, 13 Dec 2014 21:01:47 GMT</pubDate><content:encoded>&lt;p&gt;I didn&apos;t expect to be thinking so much about Cuba today. It all started with a random musical itch I was scratching.&lt;/p&gt;
&lt;h2&gt;&quot;La comparsa&quot; and the wooden flute headjoint&lt;/h2&gt;
&lt;p&gt;Today I was in a Latin music mood as I was playing my flute at home, and started looking up flute versions of music on YouTube for fun and inspiration. One piece that came to mind was the famous &quot;La comparsa&quot;, by Cuban composer &lt;a href=&quot;https://en.wikipedia.org/wiki/Ernesto_Lecuona&quot;&gt;Ernesto Lecuona&lt;/a&gt;. Last year when Bebo Valdés died, I wrote about being moved by the &lt;a href=&quot;/blog/2013/03/22/rip-bebo-valdes/&quot;&gt;reunion of Bebo with his son Chucho in a tearful duet performance of this piece on two pianos&lt;/a&gt;, and thinking about their separation as Bebo abandoned his family to flee Cuba for Sweden while his son stayed behind to become one of Cuba&apos;s great musicians.&lt;/p&gt;
&lt;p&gt;I found a really quirky Latin jazz performance of &quot;La comparsa&quot; on YouTube by &lt;a href=&quot;https://www.chipboaz.com/blog/2014/07/10/cuban-flautist-bobby-ramirez-releases-jazz-flute/&quot;&gt;Cuban-American&lt;/a&gt; jazz flutist &lt;a href=&quot;https://web.archive.org/web/20260211010903/http://www.bobbyramirez.com/&quot;&gt;Bobby Ramirez&lt;/a&gt; and Puerto Rican &lt;a href=&quot;https://www.negronistrio.com/&quot;&gt;Jose Negroni&lt;/a&gt; on keyboard:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/4Nro7myJ6Nw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Ramirez on flute was unfortunately out of tune with the keyboard, but what I noticed was his wooden headjoint. I&apos;ve never seen the old traditional Cuban wooden &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.descarga.com/cgi-bin/db/archives/Article15&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.descarga.com/cgi-bin/db/archives/Article15&quot;&amp;gt;Charanga flute&amp;lt;/span&amp;gt;, but do see flutists playing the modern Boehm flute with a wooden headjoint for a different sound. In fact, I love and prefer wooden flutes, but they are expensive and I own only one, a &lt;a href=&quot;/blog/2012/07/30/got-my-new-casey-burns-small-handed-irish-flute/&quot;&gt;Casey Burns Irish flute&lt;/a&gt;. So just for the fun of it (I can&apos;t really justify the investment right now), I decided to search the Web for makers of wooden headjoints.&lt;/p&gt;
&lt;h2&gt;Juan Novo wooden flute headjoints&lt;/h2&gt;
&lt;p&gt;One of the top Web hits was &lt;a href=&quot;https://jnovoheadjoints.com/&quot;&gt;Juan Novo&lt;/a&gt;. It had the benefit of having an embedded YouTube video with the caption &quot;This musician appreciated Mr. Novo’s craftsmanship so much, that this song was dedicated to him.&quot; So I checked out the video. Indeed, the young woman playing the flute said, &quot;Está para Juan Novo&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/kBzrwhpVvDE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;By the way, I noticed that Juan Novo&apos;s biography said he was sent from Cuba to the US all alone by his parents in 1962 to &lt;a href=&quot;https://jnovoheadjoints.com/about-juan-novo/&quot;&gt;&quot;escape the rampant communist indoctrination&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;&quot;La gloria eres tú&quot;&lt;/h2&gt;
&lt;p&gt;I was captivated not so much by the flute playing, but by the beautiful singing, of the young woman in this video of the classic bolero &lt;a href=&quot;https://www.cancioneros.com/nc/2806/0/la-gloria-eres-tu-jose-antonio-mendez&quot;&gt;&quot;La gloria eres tú&quot;&lt;/a&gt; written by Cuban composer &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.encaribe.org/es/article/jose-antonio-mendez-garcia/1296&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.encaribe.org/es/article/jose-antonio-mendez-garcia/1296&quot;&amp;gt;José Antonio Méndez&amp;lt;/span&amp;gt; in 1947. I was really touched by her clear, unexaggerated but free expression and style, especially in light of much more famous performances of the song in my memory:&lt;/p&gt;
&lt;p&gt;&quot;La gloria eres tú&quot; is one of my favorite boleros (&lt;a href=&quot;/blog/2013/08/10/rip-eydie/&quot;&gt;my favorite being &quot;Sabor a mî&quot;&lt;/a&gt;) of all time. For comparison:&lt;/p&gt;
&lt;h3&gt;Luis Miguel&lt;/h3&gt;
&lt;p&gt;My first exposure to &quot;La gloria eres tú&quot; was, like probably many others of my generation or younger worlwide, through the revival of the bolero by Mexican pop star &lt;a href=&quot;https://en.wikipedia.org/wiki/Luis_Miguel&quot;&gt;Luis Miguel&lt;/a&gt; in the 1990s and onwards. I have all his bolero albums, a result of taking up Latin ballroom dancing in 2000 and hearing him singing in much of the music we practiced, performed, and competed to, including my first discovery of &quot;Sabor a mî&quot;, which was also on the 1997 album &lt;a href=&quot;https://en.wikipedia.org/wiki/Romances_%28Luis_Miguel_album%29&quot;&gt;&quot;Romances&quot;&lt;/a&gt;. Luis Miguel is a great musician, I will continue to admit, but in time I drew away from his high-powered, slick performances.&lt;/p&gt;
&lt;p&gt;Here he is live, from his 2000 DVD &lt;a href=&quot;https://en.wikipedia.org/wiki/Vivo_%28Luis_Miguel_album%29&quot;&gt;&quot;Vivo&quot;&lt;/a&gt;, which was the last thing I bought by him before backing away from his work:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/GNldCVbD4b4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Olga Guillot&lt;/h3&gt;
&lt;p&gt;Of course, the gold standard for &quot;La gloria eres tú&quot; is the performance by Cuban &lt;a href=&quot;https://en.wikipedia.org/wiki/Olga_Guillot&quot;&gt;Olga Guillot&lt;/a&gt;, the &quot;queen of the bolero&quot;. (In 1961, she was yet another musician who fled Cuba.) I like how she alternates between different moods, starting out gently and almost like a prayer, but then gets more and more passionate. She very quickly changes the color of her voice and dynamics. For me it&apos;s still the greatest performance of this bolero:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/xEAOX2nxsEo&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Elena Burke&lt;/h3&gt;
&lt;p&gt;Another recording I have of the bolero is from an album by Cuban singer &lt;a href=&quot;https://en.wikipedia.org/wiki/Elena_Burke&quot;&gt;Elena Burke&lt;/a&gt;. She has her own style, with a low voice, and more staccato delivery:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/yuHpvIvukOg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Elena died in Havana in 2002. Her daughter &lt;a href=&quot;https://en.wikipedia.org/wiki/Malena_Burke&quot;&gt;Malena&lt;/a&gt; came to Miami in the US in 1995 with her family. Here is Malena Burke performing the bolero with Arturo Sandoval on piano:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2_LxxwXda8Y&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Malena Burke&apos;s oldest daughter &lt;a href=&quot;https://en.wikipedia.org/wiki/Lena_Burke&quot;&gt;Lena&lt;/a&gt; is also a musician, a pianist and singer, and has worked with Gloria Estefan and others.&lt;/p&gt;
&lt;p&gt;Here&apos;s Lena singing the famous 1929 bolero-son &lt;a href=&quot;https://es.wikipedia.org/wiki/L%C3%A1grimas_negras&quot;&gt;&quot;Lágrimas negras&quot;&lt;/a&gt; with Bebo Valdés and others. This is such a weird combo, with her being sixty years younger than Bebo and stylistically very &quot;American pop&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/x56VtBF6iGo&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Arturo Sandoval&lt;/h3&gt;
&lt;p&gt;Speaking of &lt;a href=&quot;https://en.wikipedia.org/wiki/Arturo_Sandoval&quot;&gt;Arturo Sandoval&lt;/a&gt;, he defected from Cuba to the US in 2000. I discovered him initially when his biographical film &lt;a href=&quot;https://en.wikipedia.org/wiki/For_Love_or_Country:_The_Arturo_Sandoval_Story&quot;&gt;&quot;For Love or Country&quot;&lt;/a&gt; about his life before defection came out, and I saw him perform in the Three Rivers Arts Festival in Pittsburgh in 2002.&lt;/p&gt;
&lt;p&gt;Here&apos;s a Latin jazz version by Arturo Sandoval on flugelhorn, from his 1994 album &quot;Tenderly&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/AZW15092fx4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Where is Blau Colonial Cayo Coco?&lt;/h2&gt;
&lt;p&gt;So there were many thoughts and questions already in my mind as a result of listening to this old Cuban bolero, as a result of my remembering past performances by musicians who had left Cuba. When I hear classic boleros, I think about old Cuba, the culture and society that produced this kind of music and musicians, the political upheaval, the consequences.&lt;/p&gt;
&lt;p&gt;But back to that little band Nucay, captured presumably on a phone outside on a windy day by a random tourist who posted the video on YouTube in 2010. What has life been like for the members of Nucay, and for the charming young flutist/singer?&lt;/p&gt;
&lt;p&gt;First, what and where is &quot;Blau Colonial Cayo Coco&quot;? Apparently it&apos;s a resort now named just &lt;a href=&quot;https://www.cayocococuba.net/hotel_colonialcayococo.html&quot;&gt;Colonial Cayo Coco&lt;/a&gt; on the island of &lt;a href=&quot;https://en.wikipedia.org/wiki/Cayo_Coco&quot;&gt;Cayo Coco&lt;/a&gt; that is part of Cuba. In particular, this place was designed to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cubahotelreservation.com/hotel.asp?hotel_code=sctblacolonial&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cubahotelreservation.com/hotel.asp?hotel_code=sctblacolonial&quot;&amp;gt;look like a village&amp;lt;/span&amp;gt;. This kind of thing makes me uncomfortable. I guess tourists fly in to pretend to have a nice &quot;village&quot; experience, while the hired musicians are probably paid to look and act the part.&lt;/p&gt;
&lt;h2&gt;Nucay&lt;/h2&gt;
&lt;p&gt;I looked up more performances on YouTube by this band Nucay.&lt;/p&gt;
&lt;h3&gt;&quot;Oye como va&quot;, cha-cha&lt;/h3&gt;
&lt;p&gt;The caption for this video reads, &quot;Ramon Almeida and daughter Arleytis [sic] lead this wonderful group of talented Cuban musicians.&quot; So now we have some names. I presume the leader with maracas is the father? (Later I determined his daughter&apos;s name is actually &quot;Arletis&quot;: read on.)&lt;/p&gt;
&lt;p&gt;This was a fine performance of the classic cha-cha &lt;a href=&quot;https://en.wikipedia.org/wiki/Oye_Como_Va&quot;&gt;&quot;Oye coma va&quot;&lt;/a&gt; written by &lt;a href=&quot;https://en.wikipedia.org/wiki/Tito_Puente&quot;&gt;Tito Puente&lt;/a&gt; in 1963. No, Puente was not Cuban; he was born in New York and was a big force in creating the mambo/salsa scene in the US in the 1950s. A great Latin jazz musician. I should have gone to see him perform live when he was in Pittsburgh in 2000 before he died. His music was great for listening to as well as dancing to; I still remember practicing my dancing to the first album of his I bought, &quot;Mambo Birdland&quot; (which has an &quot;Oye como va&quot; track).&lt;/p&gt;
&lt;p&gt;And I&apos;ll confess that hearing performances of this work over a decade ago inspired me to think about taking up flute again.&lt;/p&gt;
&lt;p&gt;Arletis did a fine job on flute here, jazzing things up:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/l4uWBPD7y70&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&quot;Ay Maria!&quot;, merengue&lt;/h3&gt;
&lt;p&gt;The musicians seem to be having fun; how could one not, given the catchy music and all of them singing? I really enjoyed flute action by Arletis in this upbeat classic.&lt;/p&gt;
&lt;p&gt;Note that &lt;a href=&quot;https://en.wikipedia.org/wiki/Merengue_music&quot;&gt;merengue&lt;/a&gt; is not Cuban, but comes from the Dominican Republic.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/tAgVVL_ZTmI&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&quot;Sabor a mî&quot;&lt;/h3&gt;
&lt;p&gt;My favorite bolero, performed well. The caption reads &quot;Cuban Music with the help of young percussionist from Quebec&quot;, but this is wrong: &lt;a href=&quot;https://es.wikipedia.org/wiki/Sabor_a_m%C3%AD_%28canci%C3%B3n%29&quot;&gt;&quot;Sabor a mî&quot;&lt;/a&gt; was composed in 1959 by a Mexican composer, &lt;a href=&quot;https://es.wikipedia.org/wiki/%C3%81lvaro_Carrillo&quot;&gt;Álvaro Carrillo&lt;/a&gt;. These distinctions matter to me: &quot;Latin&quot; music is not all the same, any more than the people or the distinct cultures are.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/RmOIKdY3LYw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Some salsa song&lt;/h3&gt;
&lt;p&gt;This is some salsa song; I&apos;m afraid I cannot identify it offhand, the way I did the other songs. I&apos;d have to try to transcribe the lyrics and hope that a Web search finds something, but have my doubts when it comes to salsa.&lt;/p&gt;
&lt;p&gt;I loved the father-daughter musical interplay here, with Ramón singing and Arletis on flute.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/sAMdEezxYJs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Summary of Nucay&lt;/h3&gt;
&lt;p&gt;OK, so Nucay is a pretty good band and plays a lot of classics to please the tourists. What else?&lt;/p&gt;
&lt;h2&gt;Arletis Almeida, &quot;Sentirse Asi&quot;&lt;/h2&gt;
&lt;p&gt;It turns out that a search for more Nucay material on YouTube reveals the following slick, professionally produced video uploaded by someone in 2012, promoting Arletis Almeida as a singer, with the caption &quot;Arletis Almeida, flutist of Grupo Nucay in Cayo Coco Cuba, with her original song Sentirse Asi written by her father and band member Ramon Almeida&quot;.&lt;/p&gt;
&lt;p&gt;Here, she is almost unrecognizable to me, very much made up and glamorous and placed in an urban nightlife setting, with shots of handsome men, alcohol, cigarettes. The contrast between this angsty, sensualized persona and the cheerful flutist playing at Colonial Cayo Coco with her father was quite jarring to me.&lt;/p&gt;
&lt;p&gt;The singing is beautiful, and the song actually breaks out into a standard bolero accompaniment. It&apos;s really something hearing bolero singing of this quality from a young person today. My overall feeling when hearing either this newly composed bolero or the classic music in the earlier videos is this: there&apos;s some kind of time bubble that can still happen in the world, for better or for worse (a subject bigger than this blog post), and Nucay and Arletis Almeida illustrate it. Here in the US, no young people sing in this way. The many influences from pop, hip hop, and much more result in much more &quot;fusion&quot;. You saw that above in Lena Burke&apos;s singing.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/P1PZhDtCmLM&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Thoughts on Cuba&lt;/h2&gt;
&lt;p&gt;After watching this video, I wonder what has become of Arletis Almeida. Does she still play flute? Has she embarked on some kind of lounge career? Who knows? She&apos;s in Cuba. Cuba is a world away. It took tourists to make her name even register on the Web, through the links to the YouTube videos.&lt;/p&gt;
&lt;p&gt;I&apos;ve waited for decades for an end to the senseless &lt;a href=&quot;https://en.wikipedia.org/wiki/United_States_embargo_against_Cuba&quot;&gt;embargo of Cuba&lt;/a&gt;. I&apos;ve already run out of space here to even begin talking about the politics of the Cold War, about the human cost of isolating Cuba. Cuba, a place with a complicated history, but once an advanced nation by any standard, filled with culture, music classical and popular, home of world chess champion &lt;a href=&quot;https://en.wikipedia.org/wiki/Jos%C3%A9_Ra%C3%BAl_Capablanca&quot;&gt;Capablanca&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;&quot;Con los años que me quedan&quot; and nostalgia&lt;/h3&gt;
&lt;p&gt;For some reason, I was reminded of &lt;a href=&quot;https://en.wikipedia.org/wiki/Gloria_Estefan&quot;&gt;Gloria Estefan&lt;/a&gt;&apos;s music video of the bolero &quot;Con los años que me quedan&quot; from her nostalgic 1993 album &lt;a href=&quot;https://en.wikipedia.org/wiki/Mi_Tierra&quot;&gt;&quot;Mi Tierra&quot;&lt;/a&gt;. It&apos;s an odd kind of nostalgia, given that her parents fled Cuba when she was young. She made this album to embrace her Cuban heritage. But what world is portrayed here? Something like the world the tourists at Cayo Cayo hope to see? And what is Arletis trying to do as she sings boleros today?&lt;/p&gt;
&lt;p&gt;Anyway, it&apos;s definitely a beautiful song, and Estefan sings it soulfully:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/l6LjNOYvhMk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-12-17)&lt;/h2&gt;
&lt;p&gt;Totally by coincidence, news has come of the apparent &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2014/12/18/world/americas/us-cuba-relations.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2014/12/18/world/americas/us-cuba-relations.html&quot;&amp;gt;plan by President Obama to normalize relations with Cuba&amp;lt;/span&amp;gt; after half a century. I cannot process this news right now.&lt;/p&gt;
&lt;p&gt;Life for Arletis and her father may well change one day in interesting ways.&lt;/p&gt;
</content:encoded></item><item><title>A Reminder About The Strengths And Limitations Of Chess Engines</title><link>https://franklinchen.com/blog/2014/12/11/chess-improver-a-reminder-about-the-strengths-and-limitations-of-chess-engines/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/11/chess-improver-a-reminder-about-the-strengths-and-limitations-of-chess-engines/</guid><pubDate>Thu, 11 Dec 2014 05:00:45 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20150203100519/https://chessimprover.com/a-reminder-about-the-strengths-and-limitations-of-chess-engines/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Last week, I wrote an article about &lt;a href=&quot;/blog/2014/12/04/chess-improver-methodically-building-an-endgame-fortress/&quot;&gt;methodically building an endgame fortress&lt;/a&gt;, given a fascinating position that arose in a student&apos;s game. One thing I did not focus on in the discussion was the fact that he has inquired about confusing evaluations by chess engines during endgames. Often, in positions that we know a correct and foolproof drawing technique, a chess engine will show a large evaluation score incorrectly suggesting that the superior side has such an advantage that it should win. He knows about &lt;a href=&quot;https://en.wikipedia.org/wiki/Endgame_tablebase&quot;&gt;tablebases&lt;/a&gt;, which are exactly computed evaluations of simplified endgame positions in which exhaustive search has proved the result is a win or draw, along with the full variations leading to the end result. So he asked me why the computer can be unreliable.&lt;/p&gt;
&lt;p&gt;The reason for this has been known for decades, but is worth periodically remembering given how this period of human history has shown a huge explosion in the successful use of computation to make progress in various domains, including chess, Web search, and shopping prediction. This success has led many to believe (either with excitement or worry) that computers are on the verge of becoming super-intelligent. I don&apos;t believe this is the case at all (but this general topic is outside the scope of this site).&lt;/p&gt;
&lt;p&gt;Here I just want to point out something very concrete: that endgame fortresses are still difficult for computer engines to &quot;understand&quot;. Coincidentally, GM Daniel Naroditsky recently wrote an article about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.chess.com/article/view/breaking-fortresses&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.chess.com/article/view/breaking-fortresses&quot;&amp;gt;breaking fortresses&amp;lt;/span&amp;gt;. I highly recommend studying it, and experimenting with &quot;throwing an engine&quot; at the positions he gives. You will get an idea of how a computer engine &quot;thinks&quot; as it tries to search forward for some kind of forcing variation.&lt;/p&gt;
&lt;p&gt;The main difficulty for chess engines is that they are largely programmed to search forward, whereas we human beings in the domain of chess are able to use meta-reasoning rather than just huge, long chains of &quot;if/then/else&quot; in order to generate ideas, plans, and test them out by working backward (instead of forward). Breaking a fortress involves taking in the biggest possible picture of what is happening on the board, eliminating what must not possibly work (usually, this means shuffling pieces around is not enough), and trying to see if something might work (usually, this means some kind of temporary &quot;weakening&quot; through Pawn advances in order to eventually create a Pawn break). We humans can with care determine what the &quot;critical&quot; positions must look like, in which everything has to be accurate else counterplay is achieved, and then zoom in to see if we can create a forcing line (usually based on some kind of Zugzwang or switch of attention from one side of the board to the other) that is tactically justified.&lt;/p&gt;
&lt;p&gt;Chess engines are tremendously useful for this kind of work, actually, despite what I&apos;ve said: on their own they may not be able to crack fortresses, but they can supply the assistance to a human who is &quot;directing&quot; the problem solving on the meta level and assigning specific calculations and verifications to the chess engine. The usefulness of computers as assistants is very exciting and real, but should never be confused with claims that they will achieve autonomous &quot;intelligence&quot;.&lt;/p&gt;
</content:encoded></item><item><title>Why we decided to compile our own family cookbook</title><link>https://franklinchen.com/blog/2014/12/07/why-we-decided-to-compile-our-own-family-cookbook/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/07/why-we-decided-to-compile-our-own-family-cookbook/</guid><pubDate>Sun, 07 Dec 2014 19:46:48 GMT</pubDate><content:encoded>&lt;p&gt;Cooking has been a significant part of my life since 1999 when, shortly before reaching age 30, my bachelor self decided to completely change his unhealthy diet and lifestyle, and that meant &lt;a href=&quot;/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/&quot;&gt;finally getting down and dirty with seriously cooking for myself&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After getting married to Abby ten years later, cooking responsibilities have rotated between us based on the situation; there have been long stretches of time during which I did all the cooking every day, and there have been long periods during which she did all the cooking. Currently, we roughly split the cooking between us.&lt;/p&gt;
&lt;h2&gt;Why compile our own cookbook?&lt;/h2&gt;
&lt;p&gt;I&apos;ve occasionally posted on this blog a recipe and/or photos of some food I&apos;ve cooked, but for the most part, cooking is just a mundane everyday activity that I don&apos;t keep track of, since the task of cooking is primarily utilitarian for us, not innovative or artistic. We simply need to eat every day, and prefer not to eat out often, for various reasons.&lt;/p&gt;
&lt;p&gt;Recently I decided that we should start compiling our own family cookbook, noting details of what we prepare and how, in order to better replicate good results and improve on bad results, and make planning and impromptu cooking more efficient. Without our own cookbook, we have to rely on our faulty memories, and things sometimes don&apos;t come out right (especially where the oven is concerned).&lt;/p&gt;
&lt;p&gt;Below is an example of the kind of cooking we do. This is not a cooking blog, so I don&apos;t expect to write much or often about our cooking, but I just felt like it tonight.&lt;/p&gt;
&lt;h2&gt;What I prepared tonight&lt;/h2&gt;
&lt;h3&gt;Raw veggie sticks&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15945039966&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7535/15945039966_f2273fbf1d_b.jpg&quot; alt=&quot;IMG_20141207_174932&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We like to regularly cut up raw veggie sticks to eat as daytime snacks at work, or sometimes also as crunchy variety during regular meals as part of salads. I chopped up some carrots and celery for this purpose tonight. We often use other ingredients also, but tonight I just stuck to the basics. A list of some random options we&apos;ve used (depending on season, availability in our &lt;a href=&quot;https://kretschmannfarm.com/&quot;&gt;Kretschmann Farm&lt;/a&gt; box subscription, and whim while out grocery shopping):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;carrots&lt;/li&gt;
&lt;li&gt;celery&lt;/li&gt;
&lt;li&gt;cucumbers&lt;/li&gt;
&lt;li&gt;peppers&lt;/li&gt;
&lt;li&gt;radishes&lt;/li&gt;
&lt;li&gt;parsnips&lt;/li&gt;
&lt;li&gt;beets&lt;/li&gt;
&lt;li&gt;turnips&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The trick is simply to slice stuff lengthwise into reasonable widths, then chop them across to create reasonable lengths. No need to be exact. Also, &lt;a href=&quot;https://groovygreenlivin.com/5-vegetables-that-you-don%E2%80%99t-need-to-peel/&quot;&gt;we don&apos;t bother to peel carrots&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Kale, boiled&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15970795205&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7560/15970795205_3e6492769a_b.jpg&quot; alt=&quot;IMG_20141207_174941&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We like kale. There are actually many different varieties with different colors and textures. Here&apos;s some ordinary kale. I find it easiest to just boil it while preparing other foods. I test it periodically to make sure it is no longer tough to eat but still has some bite also and is not soggy. We boil the kale either in water or in our own homemade chicken broth that we make with the bones and other parts of whole chickens after eating the muscle meat.&lt;/p&gt;
&lt;h3&gt;Turnips, sauteed&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15970797965&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8671/15970797965_64a385e5dd_b.jpg&quot; alt=&quot;IMG_20141207_174949&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OK, this is an example of something of an experiment that is going into the family cookbook.&lt;/p&gt;
&lt;p&gt;We have cooked turnips in many ways (including, of course, as raw veggie sticks). Possibly the most common way we cook them is in the oven along with beets, potatoes, or the like, either as chunks or in &quot;home fries&quot; shapes. I&apos;ve also prepared them as part of beef casserole dishes in the oven. Or as chicken stir fry with turnips. The possibilities are endless. You just have to be aware of how long they take to cook, and how thinly to slice for the purpose.&lt;/p&gt;
&lt;p&gt;Tonight, I decided to slice the turnips very thin, for the purpose of creating a nice topping for the main dish.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;extra virgin olive oil&lt;/li&gt;
&lt;li&gt;turnips, sliced very thin&lt;/li&gt;
&lt;li&gt;some onion bits&lt;/li&gt;
&lt;li&gt;fresh rosemary&lt;/li&gt;
&lt;li&gt;salt and pepper&lt;/li&gt;
&lt;li&gt;garlic, generous amount&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My habit these days when cooking in the skillet is to delay the introduction of the garlic, in order to give the result more kick.&lt;/p&gt;
&lt;h2&gt;Baked salmon&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15968891841&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7570/15968891841_7e3aa84a19_b.jpg&quot; alt=&quot;IMG_20141207_180014&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, some fish (salmon). I have to confess that I&apos;m not yet very happy about the results when I cook fish. Abby does a better job than me overall, so I usually let her cook fish. Still, both of us find it tricky to get fish just so: what&apos;s the perfect balance between undercooked and overcooked?&lt;/p&gt;
&lt;p&gt;I slightly overcooked the salmon tonight, for a couple of reasons: I forgot to get it out of the fridge earlier in the day to warm it up more before preparation, and I baked a bit too long as an attempt to make up for that.&lt;/p&gt;
&lt;p&gt;Using the oven is always tricky for me. Higher temperature means cooking faster, but also means drying things out. For this dish, I decided on a temperature of 400 F for 30 minutes. Next time, if I have the salmon fully defrosted, I believe 20 should do the trick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;extra virgin olive oil&lt;/li&gt;
&lt;li&gt;lemon slices&lt;/li&gt;
&lt;li&gt;salmon fillets, skin side down on top of the lemon slices&lt;/li&gt;
&lt;li&gt;salt and pepper&lt;/li&gt;
&lt;li&gt;fresh rosemary&lt;/li&gt;
&lt;li&gt;garlic, generous amount&lt;/li&gt;
&lt;li&gt;some onion bits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result came out a bit dry, but other than that tasted great to me.&lt;/p&gt;
&lt;p&gt;If you&apos;re wondering &quot;why rosemary in particular&quot;, the answer is &quot;our farm box from last week gave us a bunch and we need to use it&quot;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Cooking is a necessity but can be a pleasure or a frustration as well. There are times when I feel &quot;lazy&quot; and don&apos;t want to cook and feel it&apos;s a chore, but there are times when I feel slightly creative or experimental and want to make something I will find enjoyable to eat (and hopefully Abby will find enjoyable to eat also). Hopefully collecting our efforts into a cookbook will make it easier to whip up more variety when we are feeling &quot;lazy&quot; and don&apos;t want to think too much.&lt;/p&gt;
</content:encoded></item><item><title>Methodically Building An Endgame Fortress</title><link>https://franklinchen.com/blog/2014/12/04/chess-improver-methodically-building-an-endgame-fortress/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/12/04/chess-improver-methodically-building-an-endgame-fortress/</guid><pubDate>Thu, 04 Dec 2014 05:00:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20150203075537/https://chessimprover.com/methodically-building-an-endgame-fortress/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A student showed me a fascinating game of his in which he was fighting for a draw as White, being an exchange down (Rook down for a Knight) for a Pawn. The position looked precarious, but the more I looked at it, the more it looked like he missed a fortress draw (he blundered quickly instead). Upon analysis, the fortress idea appears to work, but just barely. Below I explore the construction of the fortress and a subtlety that shows how a single inaccuracy could cause White a lot of trouble.&lt;/p&gt;
&lt;h3&gt;Features of the position&lt;/h3&gt;
&lt;p&gt;The starting position has unusual features that give White a fighting chance to draw at all:&lt;/p&gt;
&lt;p&gt;White has a Queen side Pawn majority and a King side Pawn majority. This helps prevent Pawn breaks by Black, although Black may be able to try a minority attack on the King side.
Black&apos;s b6 and e6 Pawns are extremely weak. If White could win one of them, that would ensure a lot of counterplay, probably good enough for a draw.
White&apos;s Knight on d4 is a monster. Most critically, it prevents any Black King invasion via c6, b5, or f5, so Black can any possibility of winning only by using the Rooks and King side Pawns.
There is only one open file for any of the Rooks, the a-file. If White takes it, White should probably be able to draw by perpetual check and/or winning the b6 or e6 Pawn (especially the e6 Pawn, in which case White would have a passed e-Pawn ready to march to e6 and e7).
One of Black&apos;s Rooks happens to be very poorly placed. It will take time for this Rook to get to the a-file and join up with the other Rook to try to advantageously trade one Rook and then aim to knock off any weak White Pawns that cannot be protected by White&apos;s King or Knight.&lt;/p&gt;
&lt;h3&gt;Ideas of White&apos;s fortress&lt;/h3&gt;
&lt;p&gt;Making a list of the features of the positions gives many clues about how White could possibly draw this position, as well as how Black can try to win it. Of course, general considerations are not enough: very careful tactical calculation is required especially when White has the opportunity to go all out to abandon everything and try to get to Black&apos;s seventh rank with a Rook: if the attempt at a perpetual check (or other draw by repetition) and/or Queen promotion fails, White will obviously lose. In this article I don&apos;t focus on the variations in which Black allows such penetration, but on the fortress itself, under the assumption that Black does not allow the penetration.&lt;/p&gt;
&lt;p&gt;The first thing to do is to imagine that Black does trade off White&apos;s remaining Rook. Black can always force a Rook trade if desired, so we have to at least be able to hold the draw if White&apos;s Rook can no longer defend the whole range of White&apos;s position, from Queen side to King side.&lt;/p&gt;
&lt;p&gt;Black&apos;s King cannot make progress as long as White&apos;s Knight stays close to d4 and attacks the e6 Pawn.
If Black sacrifices the Rook for White&apos;s Knight, that should not achieve anything because Black&apos;s King is not close enough to do anything useful in the King and Pawn ending.
The c-Pawn must remain protected: this requires either the King on the b, c, or d files or the Knight on e2.
The e-Pawn must remain protected: this requires either Ne2 blocking a Rook on e1, or f4 creating a Pawn chain.
The f-Pawn must remain protected: if the g-Pawn has been forced to advance to g3, then f4 creates a Pawn chain; if the g-Pawn has been forced to advanced to g4, the f-Pawn is best protected at f3 by the Knight on d4.
The g-Pawn must remain protected: it has to go to g3 or g4, because otherwise it is too far away from White&apos;s King and Knight, which ideally remain no further than the e-file, in order to guard against possible loss of the c-Pawn or possible invastion by Black&apos;s King.
The h-Pawn must remain protected: at h3 it is in big trouble because we assume the g-Pawn has to be advanced; at h4 it might be OK, protected by a Pawn at g3; at h5 it might be OK, protected by a Pawn at g4.&lt;/p&gt;
&lt;h3&gt;How might Black breach the fortress?&lt;/h3&gt;
&lt;p&gt;The main thing to notice is that if Black can get a Pawn down to h3 safely, without trading any Rooks, White is surely lost, because Black can first tie up White&apos;s pieces on the Queen side, then trade a Rook just in time to get the other Rook attacking White&apos;s defenseless Pawn on h2. Therefore, Black has the plan of g5, h5, h4, h3.&lt;/p&gt;
&lt;p&gt;Also, if Black can force a Pawn trade of the g-Pawn and open a file on the King side (say by White being able to play f4 only after Black has already played g5), White is surely lost, because of the power of a Rook crashing through White&apos;s position through that file and winning one or more remaining weak White King side Pawns with the help of the other Rook.&lt;/p&gt;
&lt;p&gt;So the main variation below, which succeeds in setting up a defensive fortress, has White hurrying up to distract Black&apos;s Rook away from the King side to defend the a-file, then playing h4 to permanently prevent the h3 plan. Note that it involves saving time by not defending the attacked h2-Pawn at all.&lt;/p&gt;
&lt;p&gt;An interesting side variation, which may lose, involves White playing g3 to protect the h2-Pawn currently under threat, but permanently weakening the h-Pawn. Black can try the g5, h5, h4, h3 plan. If White just waits passively, the game is lost. There is a fiendishly complicated variation in which White abandons the fortress idea and tries to get counterplay at the cost of sacrificing the f-Pawn after redeploying the Knight to d6. This is scary-looking and I don&apos;t actually know if White can draw with computer-perfect play, but it is White&apos;s best try after starting the mistaken g3 idea.&lt;/p&gt;
&lt;h3&gt;Annotated&lt;/h3&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;8/4k1p1/1p2p2p/3pP3/1PrN4/2P1KP2/2R3PP/7r w - - 19 44&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kd3 $1 { Threatening Ra2.} ( 44. g3 $2 { Preparing to set up a fortress, but weakening the h3 square and giving Black chances.} 44... g5 45. Kd3 { Threatening Ra2.} 45... Ra1 { Stopping Ra2.} ( 45... Rd1+ $2 46. Rd2 Rxd2+ 47. Kxd2 h5 48. Kd3 Rc8 49. Kc2 Ra8 50. Kb2 { White&apos;s King prevents invasion by the Rook.} 50... h4 ( 50... g4 51. f4 h4 52. Kb1 hxg3 53. hxg3 Rh8 54. Kc2 Rh3 55. Ne2 Rh2 56. Kd3 ) 51. g4 ) 46. Nb3 ( 46. Rd2 { Waiting passively seems to lose.} 46... h5 { Planning h4 and h3.} 47. Rf2 { Still waiting.} ( 47. h3 Rc8 { Black should win, given White&apos;s very weak h3 Pawn.} ) 47... h4 $1 { With the unstoppable threat of h3.} 48. Rd2 { Just waiting.} ( 48. g4 $2 { Weakening.} 48... h3 $1 { Now Black will attempt to win the h2, c3, or f3 Pawn, and succeed.} 49. Rd2 Rc8 ) ( 48. gxh4 { This opens up White&apos;s King side.} 48... Rd1+ { Now it&apos;s time to force the Rook trade.} 49. Rd2 Rxd2+ 50. Kxd2 gxh4 51. Ne2 Rc8 { Black should be able to win by aiming at White&apos;s several weak Pawns (h2, f3, e5, c3).} ) 48... h3 $1 49. Re2 Rc8 50. Rd2 Rca8 { White is lost.} 51. f4 gxf4 52. gxf4 Rg8 ) 46... Ra3 47. Nd4 h5 48. Nb5 Ra1 49. Nd4 $2 { Just passively waiting.} ( 49. Nd6 $5 { A more active defense intending to deliberately open the f-file for the Rook to come down.} 49... Rc7 50. Rf2 Rd1+ 51. Rd2 Rf1 52. Ke2 Ra1 53. Kd3 Kd7 { Black still plans to get the Rook around if White just waits.} 54. f4 gxf4 55. Rf2 $1 { Deliberately sacrificing the f-Pawn in return for active counterplay. It looks very complicated, but I think White can draw.} ( 55. gxf4 $4 Rf1 { White will drop the f-Pawn and lose.} ) ) 49... Rc8 { Black has a simple plan of getting the Rook to a8 and a2 to attack White&apos;s h2 Pawn.} 50. f4 h4 $1 { Opening lines should win.} ) ( 44. h3 { Played in the game.} 44... Rg1 $2 ( 44... Ra1) 45. Kf2 Rd1 $4 46. Ne2 $4 ( 46. Ra2 $1 { Rook activity would have drawn.} 46... Rxc3 47. Ra7+ Ke8 48. Nxe6 { The combination of White&apos;s Rook, Knight, e-Pawn, and b-Pawn ensures a perpetual check one way or another.} ) 46... d4 { White resigned.} ) 44... Ra1 ( 44... Rd1+ $2 45. Rd2 Rxd2+ 46. Kxd2 { White has a fortress. Black cannot break through on the King side.} ) ( 44... Rxh2 $2 45. Ra2 { White has a draw because of the active Rook and Knight. Details for a later article.} ) 45. h4 $1 { Threatening h5 locking up the King side.} 45... g5 $2 ( 45... g6 46. g3 Rc8 47. f4 Rca8 48. Nf3 { White will always be able to protect the c3 and g3 Pawns with Nd4 and Ne2 if Black trades Rooks.} ) 46. hxg5 hxg5 47. g4 { Black is completely locked out.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Report on my final day of Stoic Week 2014: the view from above</title><link>https://franklinchen.com/blog/2014/11/30/report-on-my-final-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/30/report-on-my-final-day-of-stoic-week-2014/</guid><pubDate>Sun, 30 Nov 2014 22:16:07 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s the seventh and final day of Stoic Week 2014! I am very glad I participated in the daily readings and reflections. I&apos;ve made so many positive changes in my life already. Now it&apos;s time to stick to them.&lt;/p&gt;
&lt;h2&gt;Health&lt;/h2&gt;
&lt;p&gt;I&apos;ve been spending all of the Thanksgiving long holiday weekend catching up on sleep. I have a meditation habit now and today it was warm out and I went for a run and ended up doing five miles in Frick Park. This is the longest distance I&apos;ve run in months!&lt;/p&gt;
&lt;h2&gt;Nature, providence, the larger whole&lt;/h2&gt;
&lt;p&gt;It is fitting that today&apos;s theme is the Stoic view of humanity as being embedded in something bigger, call it &quot;nature&quot; or &quot;providence&quot;. Part of why I enjoy running in the trails of Frick Park is that in its own small way, the experience puts me in touch &lt;em&gt;directly&lt;/em&gt; with something bigger than us; I encounter dogs, chipmunks, trees, creeks, leaves, mud, and even deer (not today, but Abby and I saw one during our hike there yesterday).&lt;/p&gt;
&lt;p&gt;I honestly feel more whole and alive when I see more of nature, and not in some self-conscious sentimental way. It&apos;s more subtle than that. And there&apos;s nothing sentimental about those steep hills that make me gasp for air when I climb them. But I sure appreciate the cleaner air in the park than on the main urban roads of Pittsburgh! And I remember where air comes from and how fragile its quality and composition is. The big picture matters.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am grateful for the organizers of Stoic Week for putting it on again this year. Here is something I&apos;ve decided to do, to keep its spirit alive indefinitely: I will continue to explore various interpretations of Stoicism (note that I don&apos;t feel compelled to buy into any particular school or even call myself a Stoic at all), as well as other philosophy (for example, the Zen I had begun looking into years ago) on a daily basis, to keep my mind always focused on applying principles of practical living.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you hear about Stoic Week this year? If you did, why did you choose to participate in it, or more interestingly, choose not to?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my sixth day of Stoic Week 2014: preparing for adversity</title><link>https://franklinchen.com/blog/2014/11/29/report-on-my-sixth-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/29/report-on-my-sixth-day-of-stoic-week-2014/</guid><pubDate>Sat, 29 Nov 2014 18:37:25 GMT</pubDate><content:encoded>&lt;p&gt;I guess death is the ultimate adversity.&lt;/p&gt;
&lt;h2&gt;Whose death and how and what next?&lt;/h2&gt;
&lt;p&gt;I fear death. Not only for myself, but for Abby, for her parents, for my parents, for our friends. We knew older people who have died even this year.&lt;/p&gt;
&lt;p&gt;Today&apos;s Stoic theme, &quot;preparing for adversity&quot;, is particularly relevant to us because not only are our parents aging and already actively preparing for &quot;what next&quot; if they were to die or get sick and incapacitated, and trying to talk to us about such things, but also because being married, we need to have clear plans and instructions in case one of us suddenly goes. We are not invincible.&lt;/p&gt;
&lt;h2&gt;Decluttering&lt;/h2&gt;
&lt;p&gt;One thing that makes us anxious is that there&apos;s too much clutter in the house, and also clutter in the form of many random online accounts that we need to keep track of. We&apos;ve seen how deaths in our families have caused a lot of trouble to survivors because of unfinished business, stuff left behind.&lt;/p&gt;
&lt;p&gt;I feel that part of preparing &lt;em&gt;mentally&lt;/em&gt; for adversity is preparing &lt;em&gt;in reality&lt;/em&gt; for adversity. I would have much more peace of mind if I knew that everything would continue as smoothly as possible at home and at work if I suddenly died.&lt;/p&gt;
&lt;p&gt;So today I continued on a &lt;a href=&quot;/blog/2011/10/19/really-taking-up-the-challenge-of-minimalism/&quot;&gt;long-interrupted project&lt;/a&gt; of decluttering at home. I dug up old college course notes, exercise log books from a decade ago, and other stuff I just don&apos;t need. Dozens of books I no longer read. I filled boxes of stuff to recycle or have Abby donate to the library. I am committed to leaving nothing accidental behind if I die, only what is purposeful.&lt;/p&gt;
&lt;p&gt;Also, we don&apos;t have wills or the like yet. Time to get cracking on that.&lt;/p&gt;
&lt;h2&gt;Adversity, more generally&lt;/h2&gt;
&lt;p&gt;I feel that &quot;negative thinking&quot; is very useful and that I could do more of it. As a software developer, anticipating failure modes helps me write better and more confident code. Playing chess, I know firsthand that wishful thinking results in big crashes when things don&apos;t go your way. Teaching chess, I like to set up unpleasant situations and have the student struggle (in a safe, low stakes environment) to defend, as practice for real tournament chess when the strength to deal with the unexpected is a key to success in competition.&lt;/p&gt;
&lt;h2&gt;Daily habits&lt;/h2&gt;
&lt;p&gt;Yes, I did meditate and exercise (more dumbbell and body weight strength training) today. Recall that yesterday I had a setback. The advantage of having once had a successful exercise routine is that when I think clearly, I am prepared for adversity, having faced it before.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I appreciate the curious technique of envisioning and simulating future catastrophe in order to enable acting more calmly today. Figuring out death seems the ultimate challenge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel about the technique of deliberately imagining bad things? Does this seem perverse to you? Or useful?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my fifth day of Stoic Week 2014: action and the reserve clause</title><link>https://franklinchen.com/blog/2014/11/28/report-on-my-fifth-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/28/report-on-my-fifth-day-of-stoic-week-2014/</guid><pubDate>Fri, 28 Nov 2014 23:20:43 GMT</pubDate><content:encoded>&lt;p&gt;I had some setbacks today, the fifth day of Stoic Week, but dealt with them.&lt;/p&gt;
&lt;h2&gt;A coconut oil accident yesterday at Thanksgiving party&lt;/h2&gt;
&lt;p&gt;By the time we left &lt;a href=&quot;/blog/2014/11/27/report-on-my-fourth-day-of-stoic-week-2014/&quot;&gt;yesterday&apos;s Thanksgiving party&lt;/a&gt; in the evening, I wasn&apos;t feeling so well. I had blamed eating that one cookie and also drinking a bit of spicy warm cider, but as unpleasant symptoms developed (you don&apos;t need to know the details), I immediately knew what must have happened.&lt;/p&gt;
&lt;p&gt;A bit of history, years ago I experimented with &lt;a href=&quot;/blog/2012/01/26/improving-my-breakfast-and-other-meals/&quot;&gt;using coconut oil&lt;/a&gt; but found that I could tolerate only a little bit, and in fact quickly decided to just not use it any more in cooking, after some incidents in which I experienced very unpleasant symptoms after a meal and found out that Abby had used a good amount of coconut oil in cooking. We had her limit the use of coconut oil in cooking anything I was to eat.&lt;/p&gt;
&lt;p&gt;So it had been quite some time since I experienced those symptoms, but unfortunately, I suffered for over twelve hours with poor sleep overnight, and can only conclude that a large mount of coconut oil was used in Thanksgiving dinner!&lt;/p&gt;
&lt;h2&gt;My system temporarily wrecked, illustrating today&apos;s theme&lt;/h2&gt;
&lt;p&gt;So I not only woke up late in the morning today, but was also still suffering physically, was hungry nonetheless, and grouchy. Normally I try to start my day with meditation, but I just wanted to eat breakfast. Abby had gotten up hours before me and was annoyed I had gotten up late, and snapped at me while I was bleary-eyed and trying to start eating breakfast. I snapped back, and she got very upset and disappeared.&lt;/p&gt;
&lt;p&gt;While eating, I recognized that I had gone totally non-Stoic, and so after I finished eating and reading today&apos;s theme on &quot;action and the reserve clause&quot;, I immediately went to meditate for ten minutes before talking with her again, in a much calmer mood, explaining what had been happening.&lt;/p&gt;
&lt;p&gt;I went back to napping, and then before lunch time, after my final visit to the toilet, I finally felt like my coconut oil disaster was truly over and I could start my day.&lt;/p&gt;
&lt;p&gt;I felt I had &quot;failed&quot; in that, contrary to Stoic teaching, I had let my physical distress take over my mind and everything I was doing. I could have dealt better with my situation, acting the best I could despite my circumstance rather than giving into my foul mood.&lt;/p&gt;
&lt;p&gt;The &quot;reserve clause&quot; in Stoicism refers to how we &lt;em&gt;act&lt;/em&gt; even though we may not like what has happened or what might happen. I did not start the morning with this attitude.&lt;/p&gt;
&lt;h2&gt;Exercise&lt;/h2&gt;
&lt;p&gt;Abby and I eventually made up, but it really bothered me that I had started off the day so badly. I was also feeling like my muscles were trashed from yesterday&apos;s workout (and party play with the two sisters). Later in the afternoon, we went for a hike in Frick Park and both felt better. I considered that my &quot;exercise&quot; for the day, a lower-intensity day.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a setback in my practice of Stoicism but recovered, with even more appreciation for daily reading and study to get back on track.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you deal with setbacks? Do you have a system, a philosophical principle, to keep you on track?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my fourth day of Stoic Week 2014: virtue and relationships with others</title><link>https://franklinchen.com/blog/2014/11/27/report-on-my-fourth-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/27/report-on-my-fourth-day-of-stoic-week-2014/</guid><pubDate>Thu, 27 Nov 2014 21:47:45 GMT</pubDate><content:encoded>&lt;p&gt;Today was Thanksgiving in the US, a surprisingly appropriate day to be in the middle of observing Stoic Week.&lt;/p&gt;
&lt;h2&gt;Thanksgiving dinner&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2014/11/27/report-on-my-third-day-of-stoic-week-2014/&quot;&gt;I&apos;ve reported on yesterday&apos;s theme&lt;/a&gt; of self-discipline and simplicity. At Thanksgiving dinner this year, I decided for the very first time to limit what I ate. I&apos;ve always overeaten in the past, with poor results. It was just something I did.&lt;/p&gt;
&lt;p&gt;This year, I did not eat any of the cake or pumpkin pie that was offered. For dessert (after the turkey etc.), I limited myself to one scoop of pistachio gelato and one cookie. Actually, I ended up regretting that cookie, because it was more substantial and sugary than I expected, so I&apos;ve made a note to watch myself with the cookies. The gelato I may not have needed, but I enjoyed it all the more knowing it was the one main dessert I was allowing myself.&lt;/p&gt;
&lt;h2&gt;Fourth day of health habits&lt;/h2&gt;
&lt;p&gt;It&apos;s my fourth day now of daily meditation and exercise. Actually, I overdid it on the exercise today, but not intentionally.&lt;/p&gt;
&lt;p&gt;I&apos;ve been increasing the intensity of my short (seven-minute or so) daily workouts every day, lifting heavier weights and working more muscles. What I didn&apos;t expect was that at the Thanksgiving party, two young sisters (of ages around five and two) were bored and wanted to play, and I rather exerted myself. The older one was the ringleader. We played at scaring each other and I pretended to be sitting on the couch sleeping and suddenly spring up and boo or growl, and I accidentally pulled something in my right arm during one of these explosive, sudden movements. I also pulled my left shoulder when the two challenged me to lift them repeatedly, and the older one (tall for her age) was heavier than I expected and not so easy to repeatedly lift, given that I&apos;d already had a workout in the morning at home. All in good fun, but left me a bit overextended.&lt;/p&gt;
&lt;h2&gt;On today&apos;s theme&lt;/h2&gt;
&lt;p&gt;I find sensible the Stoic teaching of developing our &quot;natural affection&quot;, and expanding outward from ourselves. I feel I have been the beneficiary of much good from many people in my life and am grateful for this. The Thanksgiving dinner that Abby and I went to today is one we have attended for some years now. The hosts I met through Abby, who met them (and other dinner guests) through music and dance circles. I appreciate and deeply admire the generosity that they have shown us and to many others. I look up to them as role models for the kind of genuine affection that human beings can display and share, not only with immediate family or closest friends but outward to larger communities (such as local music communities) and beyond.&lt;/p&gt;
&lt;p&gt;The tragic shooting and death that happened this year in &lt;a href=&quot;https://en.wikipedia.org/wiki/Shooting_of_Michael_Brown&quot;&gt;Ferguson, Missouri&lt;/a&gt; has been in the news for some months now, and this week the &lt;a href=&quot;https://en.wikipedia.org/wiki/Shooting_of_Michael_Brown#Announcement_of_no_bill&quot;&gt;grand jury decided not to indict&lt;/a&gt;. I haven&apos;t commented in public or in private on any of these events, or on any of the commentary about them, but I do not dismiss what has happened as irrelevant to my life. In fact, I feel that what has happened has been so important, in the biggest possible picture of what has been going on in American history for a long time, that I cannot afford to lightly spew sound bites about it. I do ask myself, how can I best talk about what I am feeling? How can I make a positive difference, in the Stoic &quot;cosmopolitan&quot; &quot;love of all humanity&quot;? I don&apos;t know the answer yet, but I know what is not the answer: fanning the flames of passion. But simply being silent is also not the answer.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-01-19)&lt;/h3&gt;
&lt;p&gt;I wrote something in &lt;a href=&quot;/blog/2015/01/19/for-martin-luther-king-jr-day-some-black-american-voices-that-spoke-to-me-recently/&quot;&gt;observation of Martin Luther King, Jr. Day&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I take seriously the Stoic call that we are ethically responsible for more than just ourselves, that we are to develop ourselves outward (not just on inner virtues) and work to honestly consider all human beings our brothers and sisters. I see how I have been treated in such a way by others through my life and aspire to expand beyond myself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel about cosmopolitanism? Do you feel it is naive, that it is best to just look out after family and clan? If you have been following the Ferguson tragedy, do you easily choose a simple &quot;side&quot;, an &quot;us&quot; versus &quot;them&quot;?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my third day of Stoic Week 2014: self-discipline and Stoic simplicity</title><link>https://franklinchen.com/blog/2014/11/27/report-on-my-third-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/27/report-on-my-third-day-of-stoic-week-2014/</guid><pubDate>Thu, 27 Nov 2014 11:03:44 GMT</pubDate><content:encoded>&lt;p&gt;There is a reason I&apos;m a little late in reporting on my third day of Stoic Week 2014: the theme, self-discipline and simplicity, had me cut short my intended plan of writing and publishing my thoughts at the end of each day.&lt;/p&gt;
&lt;h2&gt;Health and self-control&lt;/h2&gt;
&lt;p&gt;Today&apos;s reading for Stoic Week 2014 had us reflect on the importance of physical health and self-control in our daily routine.&lt;/p&gt;
&lt;p&gt;For the third day in a row, I did a morning ten-minute sitting meditation, and noticed that my posture and breathing have improved. It took three days to notice this. It will take weeks to notice even more improvements; I know this because I&apos;m a backslider, rather than one completely new to meditation. I imagine it must be much harder for a newcomer to adopt a practice like this where patience is required in order to experience the benefits.&lt;/p&gt;
&lt;p&gt;I also kicked it up a notch with exercise. I mentioned in &lt;a href=&quot;/blog/2014/11/25/report-on-my-second-day-of-stoic-week-2014/&quot;&gt;yesterday&apos;s report&lt;/a&gt; that I need to do more weight training. I&apos;m on that now. I&apos;m making exercise a priority for the next several months in my life, at least.&lt;/p&gt;
&lt;p&gt;I&apos;ve still been pretty good about refraining from unhealthy snacks. On &lt;a href=&quot;/blog/2014/11/24/report-on-my-first-day-of-stoic-week-2014/&quot;&gt;day one&lt;/a&gt;, I noted that my work colleague brought back snacks from his first trip to Asia and I chose not to eat any of them. I opened up the bag of chips, but ate only a couple of them (in the past I have given into temptations, when confronted with a bag of chips, to eat the whole bag) and stashed the rest away. (By the way, the chips were unexceptional, tasting not much different than ordinary American potato chips, and the ingredients list was scary, with many weird chemicals included.)&lt;/p&gt;
&lt;h2&gt;Sleep&lt;/h2&gt;
&lt;p&gt;I haven&apos;t been good with my sleep habits. I tend to stay up too late on the computer, for example. Abby wants me to have a &quot;computer off plan&quot; for my daily routine, but I&apos;ve found this difficult because I like to work on personal projects (such as writing) on the computer and I find the time in the evening. I know the benefits of the &quot;natural&quot; life, and I&apos;m sure Stoics would promote being a morning person.&lt;/p&gt;
&lt;p&gt;But the point of this report isn&apos;t to talk about becoming a morning person, or even so much about sleep. It&apos;s about self-control. The reality is, yesterday when I came home from work, I was very tired. &quot;Sleep when sleepy&quot; is so logical and natural, yet I find that American culture does not value sleep. It seems countercultural to sleep.&lt;/p&gt;
&lt;p&gt;In any case, I decided to simplify the evening and choose to stay off the computer (hence not writing this article). Apart from Wednesday evening being designed &quot;us night&quot; for Abby and me anyway, I decided that before sleeping, I would read (physical books and paper printouts) instead of use the computer, until ready to sleep. I did end up sleeping earlier. I did miss having the use of the computer to look up stuff that would have been helpful in my reading, but for this evening, at least, it was a tradeoff in favor of simplicity rather than stimulation. I&apos;ll have to think about how to arrange my life differently if I want to continue to be more targeted in using the computer.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Self-discipline and simplicity are not popular in American culture, which prizes maximization and stimulation. I don&apos;t find it easy to maintain self-discipline, and am grateful to Stoic Week to remind me of its benefits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is your gut impression of Stoic teachings that they want to take the fun out of your life, or that they are a guide to the truly good life? What is the balance you purposefully adopt between self-indulgence and renunciation?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Blockading To Defend When Things Get Tough</title><link>https://franklinchen.com/blog/2014/11/27/chess-improver-blockading-to-defend-when-things-get-tough/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/27/chess-improver-blockading-to-defend-when-things-get-tough/</guid><pubDate>Thu, 27 Nov 2014 05:00:03 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20141206025001/https://chessimprover.com/blockading-to-defend-when-things-get-tough/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In a recent tournament game that I painfully lost, I had a terrible losing position, but my opponent suddenly changed the nature of the game by allowing me to set up a blockade that should have enabled me to draw. I played carelessly and threw away the draw. I thought it would be instructive to show how powerful the concept of &lt;em&gt;blockade&lt;/em&gt; is. In this game, the blockade was worth even more than the Pawn down and if I had been more careful, I could have maintained the blockade in the center and still had attacking chances of my own on the King side.&lt;/p&gt;
&lt;p&gt;In the position below, my opponent had a winning advantage largely due to doubled Rooks on an open e-file, but then initiated a trade of Knights in which he blocked his own open file by recapturing with a Pawn to e4. Granted, this had its points: creation of a passed Pawn with Rooks behind it can be very powerful given the threat of advancing the Pawn further. But in this particular position, I had enough time to place my Bishop on e3 setting up a blockade, and if I had just made sure to leave it there, I could have continued a decent King side attack as compensation. Note in particular that Black&apos;s extra Pawn, the d-Pawn is backward on a half-open file, and therefore if it can be prevented from advancing, the extra Pawn should not suffice to win in a simplified ending given enough piece activity. Here, tactics based on my good piece activity were enough that I could even have tried for more, if I had maneuvered my other Rook to the King side more efficiently.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;18th Robert P Smith Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.11.18&quot;]
[Round &quot;3&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Melih Ozbek&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;2054&quot;]
[ECO &quot;A45&quot;]
[EventDate &quot;2014.11.18&quot;]
[FEN &quot;4r2k/pq2r1bp/1p1p2p1/2nP1pP1/P1p2P1P/2P2QR1/1P1B1N2/R4K2 w - - 3 37&quot;]
[Setup &quot;1&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2165&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;h5 { Purely a bluff in a lost position.} 37... Ne4 $2 ( 37... Nb3 { A clean win would have been to gobble up White&apos;s Queen side, since there are not actually any real threats on the h-file.} 38. Rd1 Qa6 ) 38. Nxe4 fxe4 $2 { White should now blockade the position for a draw, by preventing the advance e3.} ( 38... Rxe4 { Keeps Black&apos;s Rooks dangerous on the e-file.} ) 39. Qh1 $5 { Stupidly deciding to try to win instead of defending the draw. The bad reason was that Black was down on time on the clock. Note to self: do not play the lock, but the board.} ( 39. Qe2 Qxd5 40. Be3 { The blockade should draw.} ) 39... gxh5 $2 ( 39... e3 $1 { Ignoring the King side &quot;threat&quot; was strongest.} 40. hxg6 Kg8 41. gxh7+ Kh8 42. Be1 Re4 { White is in bad shape.} ) 40. Qxh5 $2 ( 40. Be3 { The right move order was to blockade first.} ) 40... Qxd5 $2 { Returning the favor.} ( 40... e3) 41. Rh3 Qf5 42. Be3 { Blockade achieved. White even has some initiative on the King side despite being a Pawn down!} 42... Kg8 $201 43. Rd1 $6 ( 43. Kg2 { A stronger continuation, accelerating the Rook deployment to the h-file while getting the King out of danger.} 43... Bf8 44. Kg3 Rf7 45. Rah1 d5 46. g6 Qxh5 47. Rxh5 Rg7 48. Rxd5 Rxg6+ 49. Kf2 { White actually stands better despite being a Pawn down, because of active Rooks and Black&apos;s exposed King.} ) 43... Rd8 44. Rd2 d5 45. Rdh2 d4 46. cxd4 Bxd4 47. Qe2 $4 { Loses on the spot.} ( 47. Rd2 { The simple pin maintains the blockade to draw by perpetual check.} 47... Red7 48. Bxd4 Rxd4 49. Rxd4 Rxd4 50. Qe8+ Kg7 ( 50... Qf8 $2 51. Qe6+ Qf7 52. Qxf7+ Kxf7 53. Rxh7+ Kg6 54. Rh6+ Kf7 55. Ke2 { Black seems losing here, with White having connected passed Pawns on the King side.} ) 51. Qe7+ Kg8 52. Qe8+ ) 47... Bxe3 { The rest of the game is not worth noting, except that it continued because Black was down to 2 minutes.} 48. Qxc4+ Kh8 49. Qc3+ Bd4 50. Qg3 Kg8 51. g6 Qxg6 52. Qb3+ Kh8 53. Rh6 Qg1+ 54. Ke2 Qg4+ 55. Ke1 Qxf4 56. R6h3 Be5 57. Rc2 Rf7 58. Qc4 Qg4 59. Qxf7 Rd1+ 60. Kf2 Qg1+ { Black was down to something like 2 seconds before delivering checkmate.} 61. Ke2 Qe1# 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Report on my second day of Stoic Week 2014: mindfulness</title><link>https://franklinchen.com/blog/2014/11/25/report-on-my-second-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/25/report-on-my-second-day-of-stoic-week-2014/</guid><pubDate>Tue, 25 Nov 2014 23:50:38 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, I reported on my &lt;a href=&quot;/blog/2014/11/24/report-on-my-first-day-of-stoic-week-2014/&quot;&gt;first day of Stoic Week 2014&lt;/a&gt;. Today, the second day&apos;s theme was &quot;Stoic mindfulness&quot;. This is similar to the Buddhist teaching on mindfulness, and is basically a sound psychological observation that &quot;You are just an impression and not at all the thing you claim to represent&quot;: our thoughts and feelings are one thing but what we do about them is another.&lt;/p&gt;
&lt;p&gt;I found it particularly useful to remember this today, because Tuesdays present an interesting challenge for me.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;On Tuesday nights, I have been playing in the latest 6-round current Tuesday night &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; tournament, one round every Tuesday. Tonight was round 4. I had experienced an extremely painful loss last week in round 3 when I was &lt;em&gt;not mindful&lt;/em&gt; and &lt;a href=&quot;/blog/2014/11/27/chess-improver-blockading-to-defend-when-things-get-tough/&quot;&gt;got carried away by emotions&lt;/a&gt;: I had an overwhelming advantage during an attack on my opponent&apos;s King, but I allowed my excitement to cloud my judgment, make poor moves, and then worse, after I managed to recover and had the opportunity to survive with a draw, &lt;em&gt;and saw this&lt;/em&gt;, I passed it up out of wishful thinking that I could continue an attack, so I ended up losing. In chess, I face the stark reality that most losses at my level in local competition (where I am typically the top-rated player) are due to faulty psychology, rather than lack of sufficient understanding and skill. A loss of &lt;em&gt;objectivity&lt;/em&gt; (which all athletes and other performers under high pressure) is the reason we fail. Mindfulness directly addresses this all-too-human flaw.&lt;/p&gt;
&lt;h2&gt;Continuing habits from yesterday&lt;/h2&gt;
&lt;p&gt;Yesterday, I noted that I began meditating and exercising again, because it was in my power to do so. I have continued. It&apos;s been tricky to get going again, because my body is out of whack, but I remember to do what I can, no more, with faith that incremental progress will pay off. Instead of running, I did a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://well.blogs.nytimes.com/projects/workouts/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://well.blogs.nytimes.com/projects/workouts/&quot;&amp;gt;7-minute workout&amp;lt;/span&amp;gt;. I&apos;ve lost a lot of strength over the years and plan to regain it. I have dumbbells lying around the house from when I was using them a decade ago; it&apos;s time to get back to them.&lt;/p&gt;
&lt;h2&gt;Tonight&apos;s chess game&lt;/h2&gt;
&lt;p&gt;I won a decent game tonight at the chess tournament. It was the third last to finish, taking almost four hours. I&apos;ve played against my opponent many times before over the years, mostly winning, but the last time I played him, he held me to a draw, despite a 500-rating-point difference (which is huge). One thing that sometimes happens in tournament chess is overconfidence when facing someone who is on paper much weaker, or fear because of a past bad result. Mindfulness teaches us that although historical facts are facts, we should distance ourselves from distracting feelings about them.&lt;/p&gt;
&lt;p&gt;As in many hard-fought chess games, I experienced a range of emotions during the game. First of all, in the opening, although I was doing OK, I was frustrated that I allowed a certain kind of position I ordinarily do not allow, because of an oversight. Instead of kicking myself, I focused to do what I could with what I had, assessing that even though I did not want that position, it was actually still OK for me. (Actually, computer analysis afterwards showed that I was more than OK, so I was still more pessimistic than warranted during the game.) In the middlegame, I emerged with an advantage, but then faced a curious choice. My opponent gave me an opportunity to win some material (a Rook for a Bishop and Pawn) at the expense of destroying my Pawn structure and therefore creating good chances for a draw. At the time, I saw no better winning try, so I went for it, deciding that, unlike last week, I was going to settle for a draw if my opponent could prove he could defend; I simply made sure to play soundly and not recklessly. It turned out that he cracked eventually and I won. I was pleased that I remained psychologically strong in the game and was rewarded accordingly. (For those of you interested in the technical details of the game, I will be annotating it in an upcoming article I will write for &lt;a href=&quot;/writing/chess-improver/&quot;&gt;my weekly column in The Chess Improver&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Heavy traffic&lt;/h2&gt;
&lt;p&gt;Another thing: when driving home from work to eat dinner before the chess game, I noticed that the traffic was unusually bad. Mindfulness is always helpful when facing stressful situations like this. I was upset with myself for not anticipating apparent pre-Thanksgiving-holiday traffic and therefore being pressed for time to get home and eat dinner before playing chess. I decided to let go of my self-annoyance because it wasn&apos;t going to help me get home any sooner and would just sap my mental energy I needed for my game.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Mindfulness is something I&apos;ve had prior experience in trying to adopt well before I even read about Stoicism. But having a daily theme and reading during Stoic Week has been surprisingly helpful in keeping me aware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are you familiar with the concept of mindfulness and the scientific underpinnings of it? If so, do you deliberately practice it? Do you have misgivings about it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Report on my first day of Stoic Week 2014</title><link>https://franklinchen.com/blog/2014/11/24/report-on-my-first-day-of-stoic-week-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/24/report-on-my-first-day-of-stoic-week-2014/</guid><pubDate>Mon, 24 Nov 2014 22:30:51 GMT</pubDate><content:encoded>&lt;p&gt;Last year, I heard about the first Stoic Week, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blogs.exeter.ac.uk/stoicismtoday/stoic-week-2013/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blogs.exeter.ac.uk/stoicismtoday/stoic-week-2013/&quot;&amp;gt;Stoic Week 2013&amp;lt;/span&amp;gt;, but did not participate because I was distracted at the time and did not feel like focusing. This week, I decided it was time to sign up for &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://modernstoicism.com/course/view.php?id=5&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://modernstoicism.com/course/view.php?id=5&quot;&amp;gt;Stoic Week 2014&amp;lt;/span&amp;gt;, and I did.&lt;/p&gt;
&lt;h2&gt;Why my interest in Stoicism?&lt;/h2&gt;
&lt;p&gt;I&apos;ve mentioned Stoicism only briefly in my blog: once in 2012 when &lt;a href=&quot;/blog/2012/11/22/thanking-the-best-of-all-possible-worlds/&quot;&gt;thinking about Thanksgiving&lt;/a&gt; and once earlier this year after &lt;a href=&quot;/blog/2014/01/17/hiroo-onoda-and-the-six-million-dollar-man/&quot;&gt;rewatching an old TV episode&lt;/a&gt;. As I mentioned, it was in 2011, upon reading a book on Stoicism, that I made some major changes in my life.&lt;/p&gt;
&lt;p&gt;It turns out that a couple of weeks ago, I decided to make major changes in my life again, but not while thinking about Stoicism.&lt;/p&gt;
&lt;p&gt;Over a year ago, my meditation practice fell apart, and I never really regained it. As a result, my thoughts and habits have become disordered, I have felt. For example, I stopped writing regularly for my blog. I spent too much time on Facebook and Twitter instead, being distracted, annoyed, and worse, behaving in ways that I later came to feel counterproductive. I did &quot;quit&quot; Facebook in July, and also &quot;quit&quot; Twitter some weeks ago (part of the big life changes I set in motion), but still, I have felt ungrounded. I decided Stoic Week 2014 would be a good opportunity for me to return to the contemplative life that Buddhism and Stoicism in their different ways aspire to and that I had forgotten.&lt;/p&gt;
&lt;h2&gt;What I did the first day of Stoic Week 2014&lt;/h2&gt;
&lt;p&gt;Today, as I started the first day of Stoic Week 2014, I began by meditating ten minutes, Zen style. &lt;em&gt;This was my first meditation session in weeks&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Then I read the assigned text for today in the Stoic Week handbook, on &quot;What is in our power?&quot; A basic principle of Stoicism is that we should know what is under our control and what is not, and summarily refuse to dwell on or resent what is not under our control, and focus on making good decisions about what is under our control. A very simple but powerful concept, especially in a world in which it is easy to get annoyed or angry about many things we hear about in the news or encounter in our daily lives.&lt;/p&gt;
&lt;p&gt;My exercise habit has been very spotty for months now. Well, today I reflected that, what the hell, it is completely under my control whether I choose to exercise or not, so why am I wasting this precious freedom? Some people don&apos;t have this freedom. Others, including prisoners in jail, have little freedom but make use of what they have, and &lt;a href=&quot;/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/&quot;&gt;they exercise&lt;/a&gt;! It happened to be warm outside today, so I really had no excuse. I went for a run in Frick Park. It was short, less than three miles long, but I went. &lt;em&gt;This was my first run in weeks&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It was my turn to cook today at home, so I made a substantial beef casserole dish. Abby has (rightfully) complained in the past when I didn&apos;t completely clean up after cooking. Well, today I thought to myself that it is completely within my control whether I choose to attend to the details of cleanup as much as I attend to the details of using our skillets and baking pans. So I cleaned up as well as I could.&lt;/p&gt;
&lt;p&gt;I have not been feeling very well physically for weeks now since an incident involving emergency dental work that somehow resulted in complications. I am still in recovery. OK, so it is not under my control that I am not in good health right now. But what is under my control? After lunch I took a nap, because I felt like I needed it. I have been skimping on naps, but this is stupid, because I know that sleep is the best restorative practice when ill. It is under my control whether I choose to set aside time to sleep as needed.&lt;/p&gt;
&lt;p&gt;At work, a colleague just came back from his first trip in Asia. He gave me samples of some odd snacks: chips, cookies, and candy. In recent months, I would have opened them up and eaten them on the spot. Indeed, I have been having problems with eating too many snacks for no rational reason. Today, I decided that it is up to me whether I choose to give in to random cravings or temptations, and so I chose to put the snacks aside for later.&lt;/p&gt;
&lt;p&gt;After work, I went to a &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/210396972/&quot;&gt;Pittsburgh Code and Supply Build Night&lt;/a&gt;, where food was served. Apart from a Thanksgiving dinner (!), some kind of cake lurked around. I took one glance, and chose not to even look at it again until leaving (when it was already all eaten).&lt;/p&gt;
&lt;p&gt;Leaving Build Night, I found myself annoyed that it was taking forever for the pedestrian light to change, but caught myself and observed that, first of all, the cycle is as it is, beyond my control; and second, I had mistakenly assumed that someone had pressed the button, so it was my fault I had to wait so long. I pressed the button and eventually got to cross. Next, while driving home, I made the mistake of driving behind a bus, which kept stopping. I got annoyed, not by the bus, but by myself, for mistakenly driving on the wrong street rather than the other one that does not have this problem; I got annoyed that I was too lazy to make a U-turn on the street I was parked on in order to get to that other street. But I stopped myself when I realized that what was done was done, and I simply had to endure the rest of the drive home behind the bus because it was not going to save any more time if I detoured around it late in the game: the best I can do is to be more careful in the future when making choices while driving.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt I improved my life today by keeping in mind the fundamental Stoic principle of observing what is not under my control and what is under my control. I look forward to continuing to adopt this outlook for the rest of the week, and beyond that.&lt;/p&gt;
</content:encoded></item><item><title>An American English dialect quiz correctly guessed where I originally grew up in the US</title><link>https://franklinchen.com/blog/2014/11/21/an-american-english-dialect-quiz-correctly-guessed-where-i-originally-grew-up-in-the-us/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/21/an-american-english-dialect-quiz-correctly-guessed-where-i-originally-grew-up-in-the-us/</guid><pubDate>Fri, 21 Nov 2014 23:32:10 GMT</pubDate><content:encoded>&lt;p&gt;Take this &lt;a href=&quot;https://www.nytimes.com/interactive/2013/12/20/sunday-review/dialect-quiz-map.html&quot;&gt;interesting American English dialect quiz&lt;/a&gt; yourself.&lt;/p&gt;
&lt;p&gt;I took the quiz and wondered what it would analyze mine to be, given that I&apos;ve lived in various places in the US in my life. I had a strong suspicion.&lt;/p&gt;
&lt;h2&gt;Where I have lived in the US&lt;/h2&gt;
&lt;p&gt;In particular, I spent my first years in the US in Johnson City, New York, while my father was a graduate student at SUNY Binghamton, and therefore my initial English vocabulary and accent derived from that region, but then lived in New York City during ages 5-7, then moved to Parsippany, New Jersey for 7-9.&lt;/p&gt;
&lt;p&gt;Then, from age 9-27, I lived in Michigan (not including the time away in universities). I remember how &lt;em&gt;traumatic&lt;/em&gt; this move was for me. It was not only because I missed my school friends, hills, the Atlantic Ocean, and eating Chinese food, but also because all my new schoolmates thought I talked funny and used entire sets of words that I did not use! The quiz reminded me of this big transition of mine from the East Coast to the Midwest.&lt;/p&gt;
&lt;p&gt;Possibly, if we had moved when I was younger than 9, I would have chosen to adapt my speech to the new dialects around me. But I was stubborn. For the most part, I &lt;em&gt;deliberately&lt;/em&gt; chose to continue pronouncing vowels the &quot;New York&quot; way (because that seemed more &quot;logical&quot;), and I chose to use certain words despite of course coming to understand the regional synonyms in Michigan. I&apos;m not sure why I had to be so stubborn, but I did. Maybe I felt that my use of English was part of my &lt;em&gt;identity&lt;/em&gt; somehow, or maybe it&apos;s more that I did not expect my parents to change, so it was easiest to continue communicating with them saying things like &quot;soda&quot; rather than &quot;pop&quot;, for example.&lt;/p&gt;
&lt;p&gt;And so it was not a big surprise to me that after I took the quiz (my results are &lt;a href=&quot;https://www.nytimes.com/interactive/2013/12/20/sunday-review/dialect-quiz-map.html?r=02222491040010200j820000814000808j0j10800008080000&quot;&gt;here&lt;/a&gt;), the analysis was that my English is most similar to that in the regions of New York, Yonkers, and Newark/Paterson.&lt;/p&gt;
&lt;p&gt;Note that since 27, I have lived in Pittsburgh for 17 years now. No, I still do not say &quot;yinz&quot;, and again, although it was kind of a language shock for me moving from Michigan, I have adapted to understanding the local preferred pronunciation, grammar, and vocabulary of &lt;a href=&quot;https://pittsburghspeech.pitt.edu/&quot;&gt;Pittsburghese&lt;/a&gt;, but I do not always use it myself. I have been known to sometimes slip and say &quot;needs washed&quot;, but I think I&apos;m mostly set in my ways in my use of the English language.&lt;/p&gt;
&lt;h2&gt;Your turn&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;If you haved lived in the US, what is your quiz result? Does it surprise you? If you have moved around, either as an immigrant or within the US, have you been jolted by dialect differences? Have you ever deliberately changed the way to speak and write English? Why or why not?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Check out the unsanitized first edition of the Grimms&apos; fairy tales finally translated into English</title><link>https://franklinchen.com/blog/2014/11/20/check-out-the-unsanitized-first-edition-of-the-grimms-fairy-tales-finally-translated-into-english/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/20/check-out-the-unsanitized-first-edition-of-the-grimms-fairy-tales-finally-translated-into-english/</guid><pubDate>Thu, 20 Nov 2014 23:11:02 GMT</pubDate><content:encoded>&lt;p&gt;What do you think of when you think of fairy tales? Cutesy kiddie stuff suitable for cartoons and school skits and costumes? Or &lt;strong&gt;murder, rape, cannibalism, cruelty, torture&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;I&apos;ve perversely loved fairy tales since coming across a huge collection of Grimms&apos; and Hans Christian Andersen&apos;s fairy tales in a tattered album at a flea market when I was five and having my mother buy it for me. I spent four years reading this book (until all the pages fell out; the binding was horrible) as well as I could (since these were not actually children&apos;s editions but adult translations to English and my reading comprehension was limited), before deciding that I &quot;outgrew&quot; the genre and moving on. I spent many nights sleepless with terror, as well as many private moments crying with sadness while reading some of the stories: the one that affected me the most (since I have a younger sister) was &lt;a href=&quot;https://en.wikipedia.org/wiki/Brother_and_Sister&quot;&gt;&quot;Brother and Sister&quot;&lt;/a&gt; from the Grimms&apos; collection.&lt;/p&gt;
&lt;p&gt;I have always been so fascinated by fairy tales, mythology, Biblical and other ancient stories in general, that I even briefly considered a major in folklore and mythology in college (and took two literature courses in the subject). And it was early in college that a friend of mine alerted me to the fact that the brothers Grimm repeatedly &lt;em&gt;sanitized&lt;/em&gt; the stories that they had originally collected in the field: &lt;a href=&quot;https://web.archive.org/web/20210807095822/http://www.people.fas.harvard.edu/~tatar/Maria_Tatar/About_Me.html&quot;&gt;Maria Tatar&lt;/a&gt; had just published (this was 1987) her book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://scholar.harvard.edu/tatar/publications/hard-facts-grimms-fairy-tales&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://scholar.harvard.edu/tatar/publications/hard-facts-grimms-fairy-tales&quot;&amp;gt;&quot;The Hard Facts of the Grimms&apos; Fairy Tales&quot;&amp;lt;/span&amp;gt;, and I was excited to buy a copy (which I still have today). (A &lt;a href=&quot;https://press.princeton.edu/titles/2575.html&quot;&gt;second edition&lt;/a&gt; came out in 2003, but I have not looked at it.)&lt;/p&gt;
&lt;p&gt;A couple of years ago, after accidentally discovering Maria Tatar&apos;s 2002 &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://scholar.harvard.edu/tatar/publications/annotated-classic-fairy-tales&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://scholar.harvard.edu/tatar/publications/annotated-classic-fairy-tales&quot;&amp;gt;&quot;The Annotated Classic Fairy Tales&quot;&amp;lt;/span&amp;gt; while browsing a library &quot;new book&quot; shelf, I also learned that she was blogging, so I started following &lt;a href=&quot;https://blogs.law.harvard.edu/tatar/&quot;&gt;her blog, &quot;Breezes from Wonderland&quot;&lt;/a&gt;. It was from this blog that I just learned now that &lt;a href=&quot;https://press.princeton.edu/titles/10300.html&quot;&gt;Jack Zipes&lt;/a&gt; has finally &lt;a href=&quot;https://blogs.law.harvard.edu/tatar/2014/11/20/the-grimms-straight-up/&quot;&gt;translated the first edition of the Grimms&apos; fairy tales into English&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://press.princeton.edu/images/k10300.gif&quot; alt=&quot;Jack Zipes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I look forward to checking out Zipes&apos; new translation. It&apos;s been a decade since I last revisited the Grimms&apos; fairy tales, and I still perversely love a dark story.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What are your memories of fairy tales as a child? Have you ever read (or read about) the original unsanitized versions of well-known fairy tales? If you are a parent, do you tell your children fairy tales, thinking of them as harmless imaginative entertainment? Would you tell them unsanitized versions of the tales, as people used to do before modern Western sentimentalized views of what is appropriate for children? Or do you think it was wrong how parents used to terrify their children?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-12-23)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.newstatesman.com/culture/2014/12/rowan-williams-why-we-need-fairy-tales-now-more-ever&quot;&gt;A beautiful essay on the importance of fairy tales&lt;/a&gt;, by &lt;a href=&quot;https://en.wikipedia.org/wiki/Rowan_Williams&quot;&gt;Rowan Williams&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Danger Of A King Out Of Play In The Endgame</title><link>https://franklinchen.com/blog/2014/11/20/chess-improver-the-danger-of-a-king-out-of-play-in-the-endgame/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/20/chess-improver-the-danger-of-a-king-out-of-play-in-the-endgame/</guid><pubDate>Thu, 20 Nov 2014 05:00:31 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20141203191155/https://chessimprover.com/the-danger-of-a-king-out-of-play-in-the-endgame/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In a hard-fought game my student played that ended in a draw, when we were looking at it, I observed that his opponent missed a win at one single critical moment. This was a result of an accumulation of positionally questionable decisions that, although in themselves still led to defensible positions, led to a single blunder that could have been punished.&lt;/p&gt;
&lt;h2&gt;Three mistakes&lt;/h2&gt;
&lt;h3&gt;Allowing an outside passed Pawn&lt;/h3&gt;
&lt;p&gt;The first unnecessary concession was made in the late middlegame when Black captured a piece on a5 allowing a recapture with a Pawn bxa5 resulting in White getting an outside passed Pawn. Granted, this being a Rook Pawn made it not as useful, but still created unnecessary danger.&lt;/p&gt;
&lt;h3&gt;King out of play&lt;/h3&gt;
&lt;p&gt;The second unnecessary concession was moving the King from g8 to h7, &lt;em&gt;out of the main action&lt;/em&gt;. It was best to moving the King toward the center and toward the Queenside, with the goals of safeguarding the Pawn chain from c6 as well as, more critically, aiming toward White&apos;s a-Pawn, either to capture it or at least prevent it from Queening. Granted, Black had a plan to get the King to f4, but it is slow. In fact, it ended up working in the game, but only because White did not act more quickly and decisively to try to Queen the a-Pawn.&lt;/p&gt;
&lt;h3&gt;Creating another outside Pawn for the opponent&lt;/h3&gt;
&lt;p&gt;The final concession, which in this case was a big blunder, was to accept White&apos;s sneaky offer of a Queen trade, resulting in transforming White&apos;s c-Pawn into an &quot;outside&quot; b-Pawn that could have been used as a Pawn break to lead the way for White&apos;s King to invade the Queen side and successfully Queen the a-Pawn. A calculation shows that Black&apos;s attempt to also Queen a passed Pawn is too late, because White&apos;s active King can get to Black&apos;s King side Pawns in time to ensure that after White gives up the Rook in turn, the resulting King and Pawn ending is an easy win because Black&apos;s King ends up out of play and White can just push a passed Pawn to victory.&lt;/p&gt;
&lt;h2&gt;Lessons&lt;/h2&gt;
&lt;p&gt;The main lessons to learn are that even in a drawable position, it is wise to keep the draw simple by not giving a passed Pawn to the opponent, not giving a Pawn break to the opponent, and keeping one&apos;s King ready to prevent Queening of a passed Pawn if it does exist.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;r7/P4ppk/1qp4p/3p4/3Pp3/Q1P4P/5PP1/R3K3 w - - 10 38&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Qb4 $201 Qxb4 $4 ( 38... Qc7 { Should be a straightforward draw, as Black&apos;s Queen will go to h2 with counterplay.} ) 39. cxb4 Kg6 { The King is too far away!} 40. b5 cxb5 41. Kd2 { Aiming to pick off Black&apos;s b-Pawn and march to b7 and Queen the a-Pawn.} ( 41. Ra6+ $4 { Actually played in the game, led to a draw.} 41... Kf5 ( 41... Kg5 { An easier draw, creating a passed e-Pawn with f5, f4, e3.} ) 42. Kd2 Kf4 43. Kc3 e3 { Good active counterplay by Black.} 44. fxe3+ Kxe3 { Now White cannot make progress.} ) 41... Kf5 42. Kc3 e3 43. fxe3 Ke4 44. Kb4 Kxe3 45. Kxb5 Kxd4 46. Kc6 { In the race, White&apos;s King is too far ahead and will win Black&apos;s Rook, then be positioned to win Black&apos;s King side Pawns just in time.} 46... Ke4 47. Kb7 Rd8 48. a8=Q Rxa8 49. Rxa8 d4 50. Kc6 Ke3 51. Kd6 d3 52. Ke7 d2 53. Rd8 { Stopping the Queening.} 53... f5 { Desperation.} ( 53... Ke2 54. Kxf7 d1=Q 55. Rxd1 Kxd1 56. Kxg7 Ke2 57. Kxh6 { White will Queen the g-Pawn effortlessly.} ) 54. Kf7 g5 55. Kg6 g4 56. hxg4 fxg4 57. Kxh6 Ke2 58. Kg5 g3 59. Kf4 { And White is back in time to win the g-Pawn if Black Queens.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>World Toilet Day is not just another crappy holiday</title><link>https://franklinchen.com/blog/2014/11/19/world-toilet-day-is-not-just-another-crappy-holiday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/19/world-toilet-day-is-not-just-another-crappy-holiday/</guid><pubDate>Wed, 19 Nov 2014 23:41:34 GMT</pubDate><content:encoded>&lt;p&gt;From an excellent blog I follow, Timothy Taylor&apos;s &lt;a href=&quot;https://conversableeconomist.blogspot.com/&quot;&gt;Conversable Economist&lt;/a&gt;, I read his &lt;a href=&quot;https://conversableeconomist.blogspot.com/2014/11/world-toilet-day.html&quot;&gt;article&lt;/a&gt; about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://worldtoilet.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://worldtoilet.org/&quot;&amp;gt;World Toilet Day&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Yes, every day is some kind of observed day somewhere in the world promoted by someone, but World Toilet Day is not just another crappy commercial holiday. It&apos;s about a serious problem, which is that 15 percent of the world population still lives without proper sanitation. Open sanitation, especially in densely populated areas, is a cause of much serious illness (especially to children, who are especially vulnerable). So I&apos;m happy about the invention of World Toilet Day in 2001 by the World Toilet Organization global non-profit. It&apos;s curious that I hadn&apos;t heard about it for thirteen years, but I&apos;m grateful Timothy Taylor pointed it out in his blog. Because this is a serious issue.&lt;/p&gt;
&lt;p&gt;I, for one, am grateful to live in the industrialized US where toilets abound everywhere, and even in parks such as my local Frick Park in Pittsburgh, there are port-a-potties in various locations within the park. I used to make fun of my immigrant parents for being strangely fixated on and happy about functioning and clean toilets, but the reality is that their generation and their parents&apos; generation in rural Taiwan did not necessarily have this luxury. In fact, even today, apparently, &lt;a href=&quot;https://web.archive.org/web/20250816185851/https://ketagalanmedia.com/2014/09/03/dreaming-odor-free-bathroom-taiwan/&quot;&gt;the sewage system is not great in Taiwan&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>On re-experiencing VHS tapes again</title><link>https://franklinchen.com/blog/2014/11/16/on-re-experiencing-vhs-tapes-again/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/16/on-re-experiencing-vhs-tapes-again/</guid><pubDate>Sun, 16 Nov 2014 21:27:49 GMT</pubDate><content:encoded>&lt;p&gt;I stopped serious study of ballroom dance sometime around 2003, over ten years ago, because I was discouraged by not finding a maximally compatible dance partner. I ended up closing the chapter of my life that started in 2000 when ballroom dance consumed almost all of my time.&lt;/p&gt;
&lt;p&gt;Recently I brought up several boxes of ballroom dance instruction videos from those days, with the idea that even though I&apos;m not longer doing ballroom dancing with anyone any more (Abby is not very interested in ballroom dance), I might find it enjoyable to continue developing my dance skills and use the videos as part of exercise also. Almost all of these videos are VHS tapes. I have almost no dance videos on DVD, as I was very late in acquiring a DVD player: actually, one day, my mother bought me a DVD player because she was tired of visiting me and having no way to watching any DVDs she brought!&lt;/p&gt;
&lt;p&gt;I had mixed emotions and memories as I started going through these videos again.&lt;/p&gt;
&lt;h2&gt;Why was I late to CDs and DVDs?&lt;/h2&gt;
&lt;p&gt;Earlier in life, I was very late in getting a CD player also; I bought only &lt;a href=&quot;/blog/2013/09/12/rip-ray-dolby-yes/&quot;&gt;cassette tapes&lt;/a&gt; and LPs until late in college, around 1990, when I finally buckled to pressure and bought a CD player. I am generally not an early adopter of technology. I &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;bought my first smartphone in 2012&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why the resistance to technology? Partly it&apos;s just a matter of cost. But more fundamentally, I worried about the long-term durability of digital media. It turns out that I shouldn&apos;t have worried quite so much, because backing up has turned out to be quite feasible and inexpensive. But in the early days of CDs and DVDs, I was not going to be ripping them and storing them on super-expensive hard drives, so my worry was about the physical media of CDs and DVDs.&lt;/p&gt;
&lt;h2&gt;Was I was right about the disadvantages of digital media?&lt;/h2&gt;
&lt;p&gt;It turns out that I was partially right. Some of my old CDs and DVDs did become unplayable after a decade or two, but very few.&lt;/p&gt;
&lt;p&gt;The bigger problem is that Abby and I sometimes check out DVDs from the public library and find that they have enough scratches that when watching a film we often miss entire minutes and scenes because of damaged playback! This has happened so many times that I question the value of ever checking out a DVD from the library again that looks even a little scratched. What a waste!&lt;/p&gt;
&lt;p&gt;The advantage of analog media such as LPs and cassette tapes and VHS tapes is that in some ways they are more fault tolerant. I remember the old days of splicing tape, for example.&lt;/p&gt;
&lt;p&gt;But actually, analog media get corrupted easily enough by magnetism, mold, etc. I do have tapes that are unplayable.&lt;/p&gt;
&lt;p&gt;The killer feature of digital media was always indexing and random access. It&apos;s a real hassle not being able to skip from one dance lesson to the next, or get a table of contents, in these dance videos.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s far less efficient using VHS videos for instruction than indexed digital media. That said, I see why people stream video these days rather than buy or borrow DVDs; physical digital media are fragile. But what would libraries do if they stopped acquiring and serving CDs and DVDs?&lt;/p&gt;
</content:encoded></item><item><title>Ransoms, hypocrisy, and bourgeois virtues</title><link>https://franklinchen.com/blog/2014/11/14/ransoms-hypocrisy-and-bourgeois-virtues/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/14/ransoms-hypocrisy-and-bourgeois-virtues/</guid><pubDate>Fri, 14 Nov 2014 22:18:36 GMT</pubDate><content:encoded>&lt;p&gt;I saw a provocative article, &lt;a href=&quot;https://web.archive.org/web/20151130065523/http://www.nybooks.com:80/blogs/nyrblog/2014/nov/12/case-for-paying-ransoms/&quot;&gt;&quot;The Case for Paying Ransoms&quot;&lt;/a&gt;, that argued that noted that European hostages of terrorist groups, unlike American and British hostages, tend to be returned alive, thanks to European governments paying ransoms. The US and UK governments, however, have a public policy of not negotiating with terrorists.&lt;/p&gt;
&lt;p&gt;It appears that &quot;governments like the Spanish, the French, and the Italian, have simply found other, more clandestine and covert ways of making such payments, through sudden increases in aid budgets and the like. The next move these governments make is simply to &lt;em&gt;deny&lt;/em&gt; that such payments have been made.&quot;&lt;/p&gt;
&lt;p&gt;So this brings up a dilemma (which of course comes up in action films all the time):&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Is it better to (a) remain morally consistent, refuse negotiation and ransom payment to an allegedly evil organization, but watch your citizens get beheaded? Or (b) sign up to a principled agreement not to negotiate with &quot;terrorists,&quot; but then negotiate nonetheless, pay a large amount of money to release the citizens of your country, and simply deny the fact publicly?
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;In praise of hypocrisy?&lt;/h2&gt;
&lt;p&gt;The article argued for the second choice, which is to be hypocritical and deny negotiation while actually engaging it: &quot;The effectiveness of the strategy depends on the fact that it is not openly acknowledged, and indeed that it is repeatedly repudiated in official statements and in international agreements by the governments in question.&quot;&lt;/p&gt;
&lt;p&gt;When reading this, I was not particularly shocked, because hypocrisy is everywhere and is quite official. In fact, almost all American news and political discourse revolves around hypocrisy. This is apparent when it comes to sex scandals, corporate payola, NSA domestic surveillance, complaints about government spending, railing against privatization of education while sending one&apos;s own children to private schools, and so on. I get the impression that Americans give much more priority to the &lt;em&gt;appearance&lt;/em&gt; of &quot;moral outrage&quot; than other people in the world. Nobody wants to be pointed out as a hypocrite, it seems.&lt;/p&gt;
&lt;p&gt;The trouble is that hypocrisy is arguably the single most important bourgeois &quot;virtue&quot;, the collective decision to look the other way when confronted with something disturbing, to make a euphemism of it if it is seen at all. The &quot;liberal&quot;, tolerant society depends to a great deal on hypocrisy. This is how &quot;tolerance&quot; works: claiming to believe one thing while not acting entirely consistently with that claim. For example, religious tolerance was hard won: remember when &lt;a href=&quot;https://en.wikipedia.org/wiki/Know_Nothing&quot;&gt;Catholicism were considered anti-American by many&lt;/a&gt;? Was the solution really that Protestants decided Catholicism was OK after all? In part, perhaps, but also in part a result of hypocrisy. Remember when &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.today.com/id/4224452/ns/today-entertainment/t/mel-gibson-says-his-wife-could-be-going-hell/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.today.com/id/4224452/ns/today-entertainment/t/mel-gibson-says-his-wife-could-be-going-hell/&quot;&amp;gt;Mel Gibson said his (then) wife was doomed to go to hell&amp;lt;/span&amp;gt;?&lt;/p&gt;
&lt;p&gt;A certain level of hypocrisy seems necessary for a liberal society. Many people who claim to believe abortion is baby murder tend to still be OK eating at a restaurant owned by someone who believes otherwise. Many &quot;progressive&quot; programmers seem to have no problem with buying Apple products despite suspect sweatshop labor practices at Foxconn. And so forth: in fact, capitalism itself is reliant on hypocrisy to stay alive. If people bought and sold mostly with their supposed moral conscience rather than with their wallets, markets would fall apart. Overall, nobody cares whether the gas station owner is doing drugs, beating his wife, or hates their ethnicity.&lt;/p&gt;
&lt;p&gt;Is there an alternative to hypocrisy that doesn&apos;t just lead back to all-out wars among every possible faction believing in their principles so strongly that they are willing to die and kill for them? I don&apos;t know. I just know that on some uncomfortable level, &lt;em&gt;complaining about hypocrisy is the essence of hypocrisy itself&lt;/em&gt;. This may just be how human beings have to operate. But we&apos;re not supposed to openly admit that, are we? It would be like going to your dear friend&apos;s parents&apos; home for dinner and then screaming at them for being animal killers for serving meat if you&apos;re an ethical vegetarian. That would be such &lt;em&gt;bad manners&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel about hypocrisy? Do you acknowledge its social value? Do you admit to it yourself? Do you call out those you consider hypocrites?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-11-19)&lt;/h2&gt;
&lt;p&gt;Here is a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nybooks.com/blogs/nyrblog/2014/nov/19/ransoms-real-cost/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nybooks.com/blogs/nyrblog/2014/nov/19/ransoms-real-cost/&quot;&amp;gt;critique&amp;lt;/span&amp;gt; of the original article.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-12-05)&lt;/h2&gt;
&lt;p&gt;On a related topic, here is an interesting &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.theguardian.com/news/2014/dec/04/-sp-case-against-human-rights&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.theguardian.com/news/2014/dec/04/-sp-case-against-human-rights&quot;&amp;gt;critique of &quot;human rights&quot; by Eric Posner&amp;lt;/span&amp;gt;.&lt;/p&gt;
</content:encoded></item><item><title>Anticipating The Endgame As Part Of Understanding The Opening</title><link>https://franklinchen.com/blog/2014/11/13/chess-improver-anticipating-the-endgame-as-part-of-understanding-the-opening/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/13/chess-improver-anticipating-the-endgame-as-part-of-understanding-the-opening/</guid><pubDate>Thu, 13 Nov 2014 05:00:37 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20141130162453/https://chessimprover.com/anticipating-the-endgame-as-part-of-understanding-the-opening/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The 2014 World Chess Championship rematch between Carlsen and Anand kicked off with Carlsen playing the Grünfeld as Black, an interesting choice since he does not usually play this opening, and in fact Anand is the one who prepared the Grünfeld as Black in 2013. The game proceeded along a path in which Anand as White lost an opening initiative and got into some trouble but held an unpleasant endgame.&lt;/p&gt;
&lt;p&gt;Since detailed commentary from many strong players is already available and will continue to be provided as the match progresses, so why should I write out it here at The Chess Improver? My goal here is to describe the &lt;em&gt;big picture&lt;/em&gt; that players of many levels can relate to and hopefully apply to their own play.&lt;/p&gt;
&lt;h2&gt;The goal of the Grünfeld Defense opening&lt;/h2&gt;
&lt;p&gt;Black&apos;s goal in playing the Grünfeld Defense is to try to destroy White&apos;s center, by targeting White&apos;s Pawn on d4. The asymmetrical Pawn structure that arises when White&apos;s c-Pawn is exchanged with Black&apos;s d-Pawn gives Black possible chances to contain White&apos;s d-Pawn and counterattack with a Queen side Pawn majority.&lt;/p&gt;
&lt;p&gt;White has a choice of goals in return, and has to make a decision. (Take note if you are following the match, because we may see the Grünfeld pop up again with players making different decisions.) The three basic choices are to:&lt;/p&gt;
&lt;p&gt;Grab the big center with e4, advance with d5 eventually, possibly make a passed d-Pawn for the endgame.
Forget the endgame, go all out with an attack on Black&apos;s King based on h4, h5, etc.
Forget the big center, protect the d4 Pawn with e3, block in Black&apos;s Bishop on g7, and try to make headway on the Queenside.&lt;/p&gt;
&lt;h2&gt;What happened in this game&lt;/h2&gt;
&lt;p&gt;What actually happened was Anand played as though aiming for one of the first two, but was inconsistent in followup. He got the center and then played as though to attack Black&apos;s King: Qd2, allowing his Knight on f3 to be captured by Black&apos;s Bishop &lt;em&gt;permanently&lt;/em&gt; messing up White&apos;s Pawn structure (doubled f-Pawns, isolated h-Pawn), castling Queen side. But he never did attack Black&apos;s King after all, and the Pawn on d5 didn&apos;t get any further.&lt;/p&gt;
&lt;p&gt;So Black&apos;s defense, based on destroying White&apos;s Pawn structure and surviving any attack, with the &lt;em&gt;aim of reaching a superior endgame&lt;/em&gt;, worked out. Anand had to be careful to hold the draw in face of his isolated and weak f and h Pawns.&lt;/p&gt;
&lt;p&gt;The main thing I want to point out is that it was &lt;em&gt;not&lt;/em&gt; automatically bad for White to allow the weakened Pawn structure. Before the endgame, there is the middlegame. It is a valid, aggressive idea for White to decide not to try to win the endgame, but instead the middlegame. It just didn&apos;t work out in this particular game.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;WCh 2014&quot;]
[Site &quot;Sochi RUS&quot;]
[Date &quot;2014.11.08&quot;]
[Round &quot;1&quot;]
[White &quot;Anand, V.&quot;]
[Black &quot;Carlsen, M.&quot;]
[Result &quot;1/2-1/2&quot;]
[Annotator &quot;Ramirez Alvarez,Alejandro&quot;]
[BlackElo &quot;2863&quot;]
[ECO &quot;D85&quot;]
[EventDate &quot;2014.11.08&quot;]
[PlyCount &quot;95&quot;]
[WhiteElo &quot;2792&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. Bd2 Bg7 6. e4 Nxc3 7. Bxc3 O-O 8. Qd2 Nc6 9. Nf3 Bg4 10. d5 Bxf3 11. Bxg7 Kxg7 12. gxf3 Ne5 13. O-O-O c6 14. Qc3 f6 15. Bh3 cxd5 16. exd5 Nf7 17. f4 Qd6 18. Qd4 Rad8 19. Be6 Qb6 20. Qd2 Rd6 21. Rhe1 Nd8 22. f5 Nxe6 23. Rxe6 Qc7+ 24. Kb1 Rc8 25. Rde1 Rxe6 26. Rxe6 Rd8 27. Qe3 Rd7 28. d6 exd6 29. Qd4 Rf7 30. fxg6 hxg6 31. Rxd6 a6 32. a3 Qa5 33. f4 Qh5 34. Qd2 Qc5 35. Rd5 Qc4 36. Rd7 Qc6 37. Rd6 Qe4+ 38. Ka2 Re7 39. Qc1 a5 40. Qf1 a4 41. Rd1 Qc2 42. Rd4 Re2 43. Rb4 b5 44. Qh1 Re7 45. Qd5 Re1 46. Qd7+ Kh6 47. Qh3+ Kg7 48. Qd7+ 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>My predictions after Carlsen and Anand are tied after round 4 of the World Chess Championship</title><link>https://franklinchen.com/blog/2014/11/12/my-predictions-after-carlsen-and-anand-are-tied-after-round-4-of-the-world-chess-championship/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/12/my-predictions-after-carlsen-and-anand-are-tied-after-round-4-of-the-world-chess-championship/</guid><pubDate>Wed, 12 Nov 2014 23:01:25 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2014/11/06/my-predictions-and-hopes-for-the-2014-carlsen-anand-world-chess-championship-rematch/&quot;&gt;Last week I made some predictions&lt;/a&gt; about the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sochi2014.fide.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sochi2014.fide.com/&quot;&amp;gt;2014 Carlsen-Anand World Chess Championship&amp;lt;/span&amp;gt; match before it began. Now, four rounds later, there have been two draws and a win for each player. What next? Since I correctly predicted some things already, I thought I&apos;d speculate about the next couple of rounds.&lt;/p&gt;
&lt;h2&gt;Anand&lt;/h2&gt;
&lt;h3&gt;As White&lt;/h3&gt;
&lt;p&gt;As I expected, Anand opened with d4 with a view to aggressive, sharp lines based on home preparation. In round 1, he lost his nerve and lost his initiative, but in round 3, he won convincingly, first inviting a Queen&apos;s Indian (as I expected he would) but then defeating the Queen&apos;s Gambit Declined. I do not see why he would vary from d4 as White in the future unless he ends up ahead in the match and has psychological reasons to mix things up.&lt;/p&gt;
&lt;h3&gt;As Black&lt;/h3&gt;
&lt;p&gt;So far, Anand has only faced 1 e4 as Black. In round 2, Anand made what seems like a stupid decision to try to go into the Berlin Defense, and got punished by a loss. I see no reason for him to play the Berlin Defense again; playing 1...e5 just seems to be playing into Carlsen&apos;s strengths. In round 4, Anand went for the Sicilian, as I expected; he used an ...e6 move order to avoid the Moscow and Rossolimo, causing Carlsen to vary with a g3 anti-Sicilian, resulting in a draw. My suspicion is still that Anand might be aiming for a ...Nc6 Sicilian through transposition, perhaps a Taimanov. I expect him to try this again.&lt;/p&gt;
&lt;p&gt;I&apos;m most curious about how Anand would face the English. I think it would depend on his situation. 1...e5 would be an ambitious, unbalancing choice, while transposition to a Slav structure is also possible.&lt;/p&gt;
&lt;h2&gt;Carlsen&lt;/h2&gt;
&lt;h3&gt;As White&lt;/h3&gt;
&lt;p&gt;I made no specific prediction about how Carlsen would open as White. He has played 1 e4 twice, once with success but once leading to a draw. Psychologically, his inability or unwillingness to engage Anand in an Open Sicilian does not make continuing with 1 e4 right now seem plausible. I expect him to vary, possibly using the English. I certainly hope he doesn&apos;t try the Reti again as he did last year, even though it worked then; he is facing a different Anand this year.&lt;/p&gt;
&lt;h3&gt;As Black&lt;/h3&gt;
&lt;p&gt;The Grünfeld in round 1 was a surprise, but exactly true to my expectation that &quot;he will do whatever might confuse Anand&quot;. That he varied in round 3 with the Queen&apos;s Gambit Declined suggests that the Grünfeld may not appear again soon, but he lost with the Queen&apos;s Gambit Declined, so will he play it again? It is possible. Another possibility is to resort to the Queen&apos;s Indian, making sure to avoid sacrificial lines (which means possibly playing a traditional ...Bb7 instead of ...Ba6). Or he could play a Ragozin.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Right now I think Anand is actually in good shape in the match, having a certain momentum. It appears Carlsen is mainly winging it, in the last two rounds. I expect him to change things up.&lt;/p&gt;
</content:encoded></item><item><title>SorryWatch: good and bad apologies</title><link>https://franklinchen.com/blog/2014/11/12/sorrywatch-good-and-bad-apologies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/12/sorrywatch-good-and-bad-apologies/</guid><pubDate>Wed, 12 Nov 2014 22:27:53 GMT</pubDate><content:encoded>&lt;p&gt;I try to avoid reading news, but now and then I see an article about someone or other &quot;apologizing&quot; for something, and most of the time, the apology is pretty bad. Personally, I admire more someone who defiantly refuses to apologize. The stupidest, most transparent copout, of course, is &quot;I apologize &lt;em&gt;if&lt;/em&gt; (something bad resulted from what I said or did)&quot;, rather than the real apology &quot;I apologize &lt;em&gt;that&lt;/em&gt; ...&quot;&lt;/p&gt;
&lt;p&gt;My own preferences when it comes to apologies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Always&lt;/em&gt; apologize for something if you &lt;em&gt;do&lt;/em&gt; believe you did wrong.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Never&lt;/em&gt; &quot;apologize&quot; for something if you &lt;em&gt;don&apos;t&lt;/em&gt; believe you did wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&apos;t need to feel comforted and coddled by &lt;strong&gt;bullshit&lt;/strong&gt; fake apologies: but I do want to know the truth of where you stand and I&apos;ll respect that even if where you stand might be something like &quot;Yeah, I&apos;m a racist and proud of it!&quot; I want you to look me in the eye and spit at me and say that, and I will at least respect you for being &lt;em&gt;honest&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;By coincidence, I recently found a Web site devoted to analyzing different kinds of apologies, good or bad or bizarre. Have fun: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sorrywatch.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sorrywatch.com/&quot;&amp;gt;SorryWatch&amp;lt;/span&amp;gt;.&lt;/p&gt;
</content:encoded></item><item><title>Happy 10th birthday Firefox! Thoughts on using Firefox, abandoning it, and returning to it again</title><link>https://franklinchen.com/blog/2014/11/10/happy-10th-birthday-firefox/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/10/happy-10th-birthday-firefox/</guid><pubDate>Mon, 10 Nov 2014 20:09:02 GMT</pubDate><content:encoded>&lt;p&gt;Today &lt;a href=&quot;https://www.mozilla.org/&quot;&gt;Mozilla&lt;/a&gt; launched a 10th birthday celebration for its Firefox Web browser. Mozilla just released both a &lt;a href=&quot;https://arstechnica.com/information-technology/2014/11/developer-edition-and-privacy-are-firefoxs-10th-birthday-present-for-the-world/&quot;&gt;developer version of Firefox as well as a new feature in regular Firefox to help users control their privacy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check out their video &quot;Firefox: Choose independent&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/LtOGa5M8AuU&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;My use&lt;/h2&gt;
&lt;p&gt;I use Firefox daily on all my work and personal machines (including my Android phone), have it installed on Abby&apos;s, and on the computers of my parents as well as my parents-in-law! I love Firefox for its independence, adherence to open standards, high performance and reliability, syncing of my preferences and other data across multiple devices, and fantastic ecosystem of extensions.&lt;/p&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;I have used Firefox &lt;a href=&quot;https://en.wikipedia.org/wiki/History_of_Firefox&quot;&gt;since&lt;/a&gt; before it was called Firefox. I used it when it was Phoenix. I used it when it was Firebird. (For a long time, the user profile information was still stored in a directory named &quot;phoenix&quot;!)&lt;/p&gt;
&lt;p&gt;Before Firefox, I started using the Web twenty years ago through &lt;a href=&quot;https://en.wikipedia.org/wiki/Netscape_Navigator&quot;&gt;Netscape Navigator&lt;/a&gt;, the ancestor of Firefox. It was so exciting using the Web in 1994 when the Web was brand new; I would dial up through my modem hooked up to my Macintosh SE/30 and patiently wait for pages to load.&lt;/p&gt;
&lt;p&gt;I continued to use Netscape in the late 1990s (when I switched to Linux for my personal and work machines) until it started stagnating, and I switched to &lt;a href=&quot;https://en.wikipedia.org/wiki/Galeon&quot;&gt;Galeon&lt;/a&gt; around 2000. I switched to Phoenix in 2003 because Galeon was just too buggy, then lived through its short rename as Firebird before it became Firefox.&lt;/p&gt;
&lt;h2&gt;Confession about a brief abandonment&lt;/h2&gt;
&lt;p&gt;At some point in 2012, Firefox entered an unstable phase in which it was slow and buggy and became unusable to me. I was very sad. In fact, for the first time in my life then, I tried out Google Chrome. It worked great, and I ditched Firefox. I was very sad about my decision, because I want Firefox to succeed, it being a truly &lt;em&gt;independent&lt;/em&gt; browser, not owned by any for-profit corporation. Microsoft used Internet Explorer to damage the open Web, and I do not want a repeat of the same story. But the reality was, Firefox had become unusable to me, so I had to switch!&lt;/p&gt;
&lt;p&gt;Luckily, several months later, when I tried out Firefox again, it was usable again, and also kept improving as well, being no longer just adequate but very reliable for me, and I switched back happily.&lt;/p&gt;
&lt;p&gt;I am grateful that Firefox exists and continues to thrive. Thank you, Mozilla!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Which is your preferred Web browser? Why? Do you care about the implications of independence, or do you only care about the technical and user-end aspects of Web browser choice?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Understand and use motivation contagion: everyone matters</title><link>https://franklinchen.com/blog/2014/11/09/understand-and-use-motivation-contagion/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/09/understand-and-use-motivation-contagion/</guid><pubDate>Sun, 09 Nov 2014 20:35:39 GMT</pubDate><content:encoded>&lt;p&gt;When I was a child, my parents always concerned themselves with whether I was hanging out with the &quot;right&quot; schoolmates. I never agreed with their definition of &quot;right&quot;, but they were onto something. I only accepted this truth when I was already in my thirties and reflected on choices I made in my life and why, and was surprised by correlations between what I did and who I happened to be around at the time.&lt;/p&gt;
&lt;p&gt;An excellent &lt;a href=&quot;https://www.scienceofrunning.com/2014/10/why-every-person-matters-motivation.html&quot;&gt;article by running trainer and coach Steve Magness&lt;/a&gt; reminded me how important &lt;em&gt;motivation contagion&lt;/em&gt; is in our lives, whether we recognize this consciously or not.&lt;/p&gt;
&lt;h2&gt;Exercise habits and performance&lt;/h2&gt;
&lt;p&gt;The study he references tried to determine whether exercise habits or performance are &lt;em&gt;contagious&lt;/em&gt;. It turned out that your &lt;em&gt;least fit&lt;/em&gt; friends most influence &lt;em&gt;your own&lt;/em&gt; fitness.&lt;/p&gt;
&lt;h2&gt;Interpretation&lt;/h2&gt;
&lt;p&gt;OK, supposing you accept this, what is your reaction?&lt;/p&gt;
&lt;p&gt;Some people might think &quot;Oh, I should ditch my unfit friends&quot;. This is a somewhat cynical and heartless reaction, of course, and narrow as a criterion of who deserves friendship, and perhaps shortsighted in a similar way as explained in &lt;a href=&quot;/blog/2014/11/08/smart-versus-unpredictable-people/&quot;&gt;&quot;Don&apos;t surround yourself with smarter people&quot;&lt;/a&gt;. Physical fitness is not the only measure of the worth of a human being!&lt;/p&gt;
&lt;p&gt;Still, the reality seems that if you unapologetically value your own fitness, you might do best to be careful about your associations with the &lt;em&gt;least fit&lt;/em&gt;. I&apos;m going to be honest here: in the past several years, as my social circles have changed from being dominated by fitness freaks (dancers and runners) to more &quot;regular&quot; people, my own fitness has plummeted considerably. I chalk it up to having far less motivation to exercise the way I used to, not being involved in constant shared activities such as races and just working out together. I&apos;m determined to get back in shape, but it will be much harder than when I was actually one of the least fit of everyone around me.&lt;/p&gt;
&lt;p&gt;A more positive interpretation, by Magness, in the context of teams, is that &lt;em&gt;everyone matters&lt;/em&gt;. If you are less fit, then if you care about the group, what you do to improve yourself, personally, actually benefits a lot more people than you. So understanding motivation contagion can give you motivation to not only help yourself but those you love.&lt;/p&gt;
&lt;h2&gt;Other applications&lt;/h2&gt;
&lt;p&gt;Of course, this applies not only to fitness and sports, but to academics, work, and any other habits or activities.&lt;/p&gt;
&lt;h2&gt;A closing note&lt;/h2&gt;
&lt;p&gt;I was horribly unfit as a child. I only hung out with others who were very unfit, unfortunately, so that did not help motivate me. On the other hand, my parents made sure to always try to exclude &quot;bad students&quot; from my life, in order to boost my grades. It kind of worked. Unfortunately, I have to disagree with their narrow, lopsided priorities: I wish I had hung out with more athletes as a child and had much better health as a result. &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;I didn&apos;t start running until age 29&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you think about it, how does motivation contagion currently work for or against you in your life? What are the good influences that you absorb, and the bad influences? Do you actively try to change your environment in order to help yourself behave in a different way? What challenges do you face?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Smart versus unpredictable people: whom do you prefer?</title><link>https://franklinchen.com/blog/2014/11/08/smart-versus-unpredictable-people/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/08/smart-versus-unpredictable-people/</guid><pubDate>Sat, 08 Nov 2014 11:10:13 GMT</pubDate><content:encoded>&lt;p&gt;I saw an excellent &lt;a href=&quot;https://www.ribbonfarm.com/2014/11/05/dont-surround-yourself-with-smarter-people/&quot;&gt;Ribbonfarm blog post&lt;/a&gt;, &quot;Don&apos;t surround yourself with smarter people&quot;.&lt;/p&gt;
&lt;p&gt;You should read this post; in fact, you should follow the blog in general, as it is one of the deepest-thinking blogs out there. Furthermore, it is an &lt;em&gt;unpredictable&lt;/em&gt; blog. I never know what will be discussed there, but whatever it is, I always find that it is new to me, not something following a standard school of thought or template.&lt;/p&gt;
&lt;p&gt;In other words, I follow this blog precisely for the reasons the post advocates learning not only from &quot;smart&quot; people but specifically from unpredictable people:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I am only interested in people as long as they are unpredictable to me. If I can predict what you’ll do or say, I’ll lose interest in you rapidly. If you can keep regularly surprising me in some way, forcing me to actually think in unscripted ways in order to respond, I’ll stay interested.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;My experience&lt;/h2&gt;
&lt;p&gt;This is how I feel about whom I follow online through blogs (RSS) or through Twitter. I&apos;m always looking for something different. People have different reasons for reading what they read, or following whom they follow. Personally, my goal is to &lt;em&gt;better understand the world&lt;/em&gt;. Sometimes, this comes from following people who offer useful news and information that I wouldn&apos;t otherwise know. Other times, I learn from being offered a perspective that is completely contrary to or foreign to mine; in fact, I have changed my mind about a lot of things through deliberately following people who make me uncomfortable.&lt;/p&gt;
&lt;p&gt;If I can predict everything you might say, or you can predict everything I might say, then there seems not much point in communicating; we might as well just fire up computer programs to spit out &quot;virtual&quot; conversations that add no new information. So I like to hear about your weird ideas, or stuff that goes against the dominant scripts of your tribe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you value independence of mind or do you think it is overrated? Why? What sort of balance do you try to achieve?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>When a computer algebra program gives wrong answers</title><link>https://franklinchen.com/blog/2014/11/06/when-a-computer-algebra-program-gives-wrong-answers/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/06/when-a-computer-algebra-program-gives-wrong-answers/</guid><pubDate>Fri, 07 Nov 2014 01:20:32 GMT</pubDate><content:encoded>&lt;p&gt;I read an interesting and disturbing report, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.ams.org/notices/201410/rnoti-p1249.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.ams.org/notices/201410/rnoti-p1249.pdf&quot;&amp;gt;&quot;The Misfortunes of a Trio of Mathematicians Using Computer Algebra Systems. Can We Trust in Them?&quot;&amp;lt;/span&amp;gt; published in the Notices of the American Mathematical Society. I feel that all software developers should read this and reflect on the nature of our work, when people who are not programmers depend on it.&lt;/p&gt;
&lt;p&gt;This report was about mathematicians accidentally discovering a bug in a major computer algebra system, Mathematica.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;A note about scientists and mathematicians&lt;/h2&gt;
&lt;p&gt;Scientists and mathematicians increasingly depend on computer software for their work, to explore data, analyze it, verify hypotheses, etc. It&apos;s gotten to the point where we can no longer pretend, for example, that scientists are not writing substantial computer programs, whether or not they are trained programmers (in fact, &lt;a href=&quot;http://software-carpentry.org/&quot;&gt;Software Carpentry&lt;/a&gt; was created by a physicist to fulfill the need of training scientists in programming).&lt;/p&gt;
&lt;h2&gt;The discovery of the bug&lt;/h2&gt;
&lt;p&gt;A bunch of mathematicians used Mathematica to generate and test ideas they had about a mathematical hypothesis. They wanted to find counterexamples to their conjectures and found some with integer arithmetic calculations using Mathematica.&lt;/p&gt;
&lt;p&gt;One of them happened to also be using Maple, and the results differed, so Mathematica or Maple had to be wrong. They isolated the error by &lt;em&gt;generating random test cases&lt;/em&gt; and finding that Mathematica was in error.&lt;/p&gt;
&lt;p&gt;In fact, given the &lt;em&gt;same matrix&lt;/em&gt; and calling Mathematica&apos;s matrix determinant function, Mathematica would return different results!! This was a rather serious bug indeed. They found that Mathematica 7 did not have this bug, but 9 and 10 did.&lt;/p&gt;
&lt;h2&gt;Wolfram Research&apos;s lack of responsiveness to the problem&lt;/h2&gt;
&lt;p&gt;They reported the Mathematica bug to Wolfram Research but got no useful reply, and at the next release of Mathematica, the bug was still not fixed.&lt;/p&gt;
&lt;p&gt;There were other bugs they found as well.&lt;/p&gt;
&lt;p&gt;Wolfram Research never gave any feedback, and does not publish a list of known bugs.&lt;/p&gt;
&lt;h2&gt;Lessons to learn&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When there is a bug in proprietary, closed-source software, you are completely helpless. The bug may not even be acknowledged, much less fixed, and you could not fix it yourself even if you wanted to.&lt;/li&gt;
&lt;li&gt;There is value in having an alternative tool: without independent work using Maple, the bugs in Mathematica may never have been discovered. Diversity is good.&lt;/li&gt;
&lt;li&gt;All scientists should be aware that the tools they use can be buggy, and therefore computational results can only be &lt;em&gt;trusted&lt;/em&gt; as much as the specific versions of software they use can be trusted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Does any of this surprise you? For what you rely on, how do you work around the inevitable fact that software has bugs?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>My predictions and hopes for the 2014 Carlsen-Anand world chess championship rematch</title><link>https://franklinchen.com/blog/2014/11/06/my-predictions-and-hopes-for-the-2014-carlsen-anand-world-chess-championship-rematch/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/06/my-predictions-and-hopes-for-the-2014-carlsen-anand-world-chess-championship-rematch/</guid><pubDate>Thu, 06 Nov 2014 21:09:54 GMT</pubDate><content:encoded>&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sochi2014.fide.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sochi2014.fide.com/&quot;&amp;gt;2014 World Chess Championship&amp;lt;/span&amp;gt; is about to begin, featuring Anand and Carlsen again, this time with Anand as challenger and Carlsen as defending champion.&lt;/p&gt;
&lt;p&gt;Last year when I followed the World Chess Championship match, I wrote several blog posts looking at each game that was played. This year I&apos;m not planning to do the same, but instead, I would like to offer some predictions and hopes for the rematch.&lt;/p&gt;
&lt;p&gt;Recall that I made one prediction that was eerily correct last year:&lt;/p&gt;
&lt;h2&gt;My correct prediction last year&lt;/h2&gt;
&lt;p&gt;Before round 9 began, I &lt;a href=&quot;/blog/2013/11/21/world-chess-championship-2013-round-9-i-correctly-predicted-anands-aggressively-opening-choice-but-he-blundered-horribly-again-to-lose/&quot;&gt;predicted correctly&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
It came to me in a dream: Anand playing d4 in the next round, then going for an f3, e4 Pawn storm against Carlsen #FWCM2013
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;This was a critical game in the match, in which Anand blundered horribly to lose a game that he had very good chances of winning.&lt;/p&gt;
&lt;h2&gt;For this year&lt;/h2&gt;
&lt;h3&gt;Anand&lt;/h3&gt;
&lt;p&gt;Anand&apos;s play last year was very disappointing: he did not win a single game in the match, as he was psychologically unprepared to play aggressively enough when he had good positions against Carlsen.&lt;/p&gt;
&lt;p&gt;I expect that this year, being the challenger instead of the defending champion, he will play in a more forceful way, because he has no choice and nothing to lose. What does this mean?&lt;/p&gt;
&lt;p&gt;Last year I was surprised Anand played e4 as White inviting the Berlin Defense. This was a big mistake. I cannot imagine why he would play e4 again. He surely must play d4, or at least the English Opening with c4. What could he possibly have against the Nimzo-Indian, however, now that the f3 weapon is well-known? There&apos;s always the Rubinstein e3 variation but Carlsen, like Karpov of old, should be happy with Black there. The other option is to avoid the Nimzo-Indian and use one of the Pawn sacrifice lines in the Queen&apos;s Indian or Catalan. But Carlsen must be prepared against such. So there remains the option of trying for a tiny first-move advantage using the English. I guess we&apos;ll see.&lt;/p&gt;
&lt;p&gt;As Black, Anand could stick with the Grunfeld setup from last year, or return to a Slav setup. But what about against e4? There&apos;s always the Najdorf, but that allowed the Moscow last year, so maybe a Nc6 Sicilian? In any case, I hope we see fewer Berlin Defense games this year.&lt;/p&gt;
&lt;h3&gt;Carlsen&lt;/h3&gt;
&lt;p&gt;Carlsen is still the favorite to win this year, but is not invincible. He can either play like he did last year, or play differently. Because he is versatile, he can change his plans depending on what happens. I suspect that because he is champion now, he may want to prove his dominance, and play more sharply than last year, but he can always fall back on his wait-for-opponent-to-self-destruct style. Since Anand is simply not going to last forever, Carlsen needs to already start preparing to play against his younger rivals such as Caruana and might want to send a message to them in this match.&lt;/p&gt;
&lt;p&gt;I expect that his aim will be to psychologically destroy Anand one way or another, so he will do whatever might confuse Anand. I cannot really predict how he will play. I suspect his use of the Reti as White is over, however; there are plenty of ways to still control the situation as White while playing d4 or c4. Playing the English might be smart, actually, especially if Anand is also thinking of playing it. We could see one of those matches where both players decide to enter openings as both colors.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have no idea if any of my &quot;predictions&quot; will actually come true, but thought it would be fun to get them on record in case they do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are you going to follow this year&apos;s World Chess Championship? What do you expect to see in the 2014 match in Sochi?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Art Of Attacking A Slightly Weakened King Side</title><link>https://franklinchen.com/blog/2014/11/06/chess-improver-the-art-of-attacking-a-slightly-weakened-king-side/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/06/chess-improver-the-art-of-attacking-a-slightly-weakened-king-side/</guid><pubDate>Thu, 06 Nov 2014 05:00:43 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href=&quot;/writing/chess-improver/&quot;&gt;The Chess Improver&lt;/a&gt;, a chess instruction blog founded by GM Nigel Davies. The site is no longer active; this version is preserved from the &lt;a href=&quot;https://web.archive.org/web/20141113041739/https://chessimprover.com/the-art-of-attacking-a-slightly-weakened-king-side/&quot;&gt;Internet Archive&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In a recent tournament game, as White I ended up misplaying a Semi-Tarrasch type of early middlegame, allowing Black easy equality after committing to the e5 advance (giving up control of the d5 square) and not taking advantage of Black&apos;s lag in development. However, I managed to win by stubbornly trying to attack a slightly weakened King side, resulting from my forcing g6 to avoid mate on h7. Even after g6, however, Black&apos;s position was fine. But at least I had something to work with. This game is instructive because it shows how to try to make progress based on just a single possible weakness in the opponent&apos;s position.&lt;/p&gt;
&lt;h2&gt;The story&lt;/h2&gt;
&lt;p&gt;Black made the error of trading off the dark-squared Bishops, permanently weakening f6 and h6 and d6. Again, objectively Black&apos;s position was still solid and fine, because of his very strong Knight on d5 that guarded the f6 square anyway.&lt;/p&gt;
&lt;p&gt;But I did some maneuvering and waiting to allow my opponent to make one inaccuracy after another, resulting in Black voluntarily moving the Knight away from d5 to b6 and my own Knight getting to a d6 outpost, thanks to Black&apos;s missing dark Bishop.&lt;/p&gt;
&lt;p&gt;Finally, Black made a tactical inaccuracy that allowed me to win the a7 Pawn. Even after this, objectively the position should have been an easy draw, thanks to simplification and Black&apos;s total control over the d5 square. But Black gave up the light-squared Bishop for mine, resulting in a position in which I had still had a bind and remote chances to try for a King side attack.&lt;/p&gt;
&lt;p&gt;It turned out that Black maneuvered poorly, making his own Rooks passive and away from his King, and finally erring with moving his Queen also away from his King, to the Queen side. This allowed me to land my Knight on f6 just in time as the King side was undefended, and through some tactics win the f7 Pawn and the game.&lt;/p&gt;
&lt;p&gt;A long grind of a game, but I was happy that my patience was rewarded.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;18th Robert P Smith Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.11.04&quot;]
[Round &quot;1&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Vassil Prokhov&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;1801&quot;]
[ECO &quot;D38&quot;]
[EventDate &quot;2014.11.04&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2165&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 Nf6 2. c4 e6 3. Nc3 d5 4. d4 Bb4 5. cxd5 Nxd5 $6 { This gives up the center, transposing into a Semi-Tarrasch type of Pawn structure.} 6. Bd2 ( 6. Qc2 { Arguably stronger because the Bishop ended up poorly placed at d2.} ) 6... O-O 7. e4 Nxc3 8. bxc3 Be7 9. Bc4 c5 10. O-O cxd4 11. cxd4 Bf6 $6 { Provocative waste of time, but it achieved its objective of encouraging White to play e5.} 12. e5 { OK but very committal. The d5 square can easily fall to Black.} 12... Be7 13. Qe2 $6 { Much too slow. White&apos;s pieces are not so well placed.} 13... Bd7 { Of course Black wants to get to d5.} 14. Rfd1 $6 Ba4 15. Re1 $6 { The Rook is doing nothing here.} 15... Bc6 { And Black has fully equalized.} 16. Be3 Nd7 17. Bd3 Rc8 $6 { Pointlessly slow, allowing White to make a bit of progress.} 18. Nd2 Nb6 19. Qh5 g6 ( 19... h6 $4 { Loses to a thematic Bishop sacrifice.} 20. Bxh6 $1 gxh6 ( 20... Qxd4 21. Bxg7 $1 ) 21. Qxh6 f5 22. exf6 Rf7 23. Qg6+ Kf8 24. fxe7+ ) 20. Qg4 { The position is still dead equal but White has created a possible weakness, at least.} 20... Nd5 21. Bh6 Re8 22. a3 { Stopping ...Nb4.} 22... Bf8 $6 { A needless positional concession that gives White some chances. White wants the dark squares off, to weaken Black&apos;s f6 square and King side in general!} 23. Bxf8 Rxf8 24. Ne4 Bd7 $2 { An undeveloping move.} 25. Nd6 { White now has a well-placed Knight.} 25... Rc7 26. Bc4 Qe7 27. Qf3 $5 { Waiting for Black to start making errors.} ( 27. Bxd5 { Trading guaranteed some advantage but I didn&apos;t want to simplify.} 27... exd5 28. Qg3 ) 27... Nb6 28. Bb3 Bc6 29. Qg3 Bd5 $6 { Hangs a Pawn.} 30. Nb5 Rd7 31. Nxa7 { It should be very difficult for White to win, despite a Pawn up, but Black continues to go astray after losing a Pawn.} 31... Bxb3 $2 { Giving up the beautifully centralized Bishop.} 32. Qxb3 Nd5 33. Nb5 Rfd8 34. Qg3 $5 { Again, just waiting for Black to make an error.} 34... Rc8 $2 35. Rac1 { Black is not going to control the c-file.} 35... Rdd8 $2 36. Nd6 Ra8 $2 { Black&apos;s Rooks are getting more and more passive.} 37. Qb3 b6 38. a4 Qa7 $2 { Black is mistakenly abandoning the King side in hope of counterplay on the Queen side.} 39. Rc4 Qa5 40. Rec1 Rdb8 $2 { A passive square for the Rook.} 41. g3 { Taking away the f4 square from Black&apos;s Knight and preparing to keep the King safe while waiting for move developments.} 41... Kg7 $2 { Walking into possible tactics with check on f7.} 42. Kg2 Qd2 $4 { Now the Queen is too far away from protecting the King.} 43. Qf3 Ra7 44. Ne4 ( 44. h4 { Even stronger.} ) 44... Qb2 $4 45. Nf6 { It&apos;s game over for Black, because White will invade on the 7th rank.} 45... Rxa4 { Random try to mix things up.} ( 45... Nxf6 46. Qxf6+ Kh6 47. d5 $1 ) 46. Rxa4 { Good enough to win.} ( 46. Nxd5 { Was even stronger.} ) 46... Qxc1 47. Nxd5 exd5 ( 47... Qc6 48. Nc3 { White stays a Knight up.} ) 48. Ra7 Rf8 49. e6 { Black&apos;s f7 Pawn is falling.} 49... Qg5 ( 49... Kh6 50. Rxf7 { And mate in 8.} 50... Re8 51. Qf6 Qg5 52. Qg7+ Kh5 53. Qxh7+ Qh6 54. g4+ Kg5 55. f4+ Kxg4 56. Qxh6 ) 50. Rxf7+ Rxf7 51. Qxf7+ Kh6 52. e7 { A second Queen is coming, with mate in 5 coming.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The single greatest performance of Bach&apos;s Goldberg Variations: Pierre Hantaï with rhythmic drive and life</title><link>https://franklinchen.com/blog/2014/11/05/the-single-greatest-performance-of-bachs-goldberg-variations-pierre-hantai/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/05/the-single-greatest-performance-of-bachs-goldberg-variations-pierre-hantai/</guid><pubDate>Wed, 05 Nov 2014 22:32:07 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been listening to JS Bach&apos;s Goldberg Variations for a quarter of a century now. I haven&apos;t actually said much about this piece on this blog, although I did mention attending a &lt;a href=&quot;/blog/2013/11/19/chamber-music-concert-at-cmu-featured-bachs-goldberg-variations-arranged-for-string-trio/&quot;&gt;concert featuring a string trio arrangement of it a year ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a favorite recording, out of probably a dozen recordings I have heard since a college friend introduced me to the piece performed by Glenn Gould on piano . Several years ago I discovered my true favorite, upon encountering &lt;a href=&quot;https://en.wikipedia.org/wiki/Pierre_Hanta%C3%AF&quot;&gt;Pierre Hantaï&lt;/a&gt; on harpsichord in a CD recording.&lt;/p&gt;
&lt;h2&gt;Why Hantaï stands out for me&lt;/h2&gt;
&lt;p&gt;Given that there are plenty of other performances that I consider worthy, why is Hantaï&apos;s by far my favorite?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sustained intensity (many performances have me getting bored and sleepy)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;rhythmic&lt;/em&gt; drive is always there; the music never droops&lt;/li&gt;
&lt;li&gt;subtlety and shape to all phrasing and contrast&lt;/li&gt;
&lt;li&gt;no distractions of self-absorption (many performances have certain kinds of oddities that are magnified when spread out over an hour or more)&lt;/li&gt;
&lt;li&gt;nice harpsichord sound&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: I once didn&apos;t like harpsichord, and always preferred a piano when possible, but now I actually prefer Bach&apos;s music on harpsichord, because of the nature of articulation and decay and how dissonances are more delicious on this instrument.&lt;/p&gt;
&lt;p&gt;Here&apos;s a treat I just found by accident: a video of Hantaï performing the Goldberg Variations. Watch it if you care about the Goldberg Variations at all!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/9NYqiKm3gng&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;If you are already a fan of the Goldberg Variations, what is your favorite performance, and why? Also, does it matter to you whether piano or harpsichord is used?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Things look different from the perspective of the professional and the spectator</title><link>https://franklinchen.com/blog/2014/11/05/things-look-different-from-the-perspective-of-the-professional-and-the-spectator/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/05/things-look-different-from-the-perspective-of-the-professional-and-the-spectator/</guid><pubDate>Wed, 05 Nov 2014 22:10:35 GMT</pubDate><content:encoded>&lt;p&gt;I saw an interesting &lt;a href=&quot;https://www.uschess.org/content/view/12843/785/&quot;&gt;article by young American chess Grandmaster Sam Shankland on his recent successful tournament in Brazil&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;His goal was to qualify for the &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_World_Cup&quot;&gt;Chess World Cup&lt;/a&gt;, the tournament that feeds into the final candidates for the World Championship match.&lt;/p&gt;
&lt;p&gt;&quot;I knew before going that I’d be unlikely to face any of the top seeds
until the end of the tournament, and that it would largely be about
taking care of business against guys 100-200 points lower than
me. While normally I would avoid such a tournament, it all goes back
to that one goal: the World Cup. I did not care about playing good
chess, challenging myself, raising my rating, playing with strong
players -- all things I normally prioritize -- all I wanted was one of
the four coveted spots. As such, I played very differently than
normal.&quot;&lt;/p&gt;
&lt;h2&gt;Short draws&lt;/h2&gt;
&lt;p&gt;One thing about high level chess that often seems to confuse and frustrate spectators is the high percentage of short draws. Spectators find it easy to make fun of the elite competitors for being cowards or the like, not trying harder to win when it seems possible to do so in chess positions that are not yet dead.&lt;/p&gt;
&lt;p&gt;But if you put yourself in the professional&apos;s shoes, you should be able to understand the strategic decision-making that happens on the board and off the board. I&apos;m happy that players such as GM Sam Shankland are writing in a personal way about their choices.&lt;/p&gt;
&lt;p&gt;&quot;I made more short draws in this event than I have in all my other
tournaments combined in the past year and a half. I love chess and I
have a well deserved reputation for being a fighting player, which is
largely due to my priorities.&quot;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.samshankland.com/&quot;&gt;GM Sam Shankland&lt;/a&gt; is a fine American chess player and writer. I appreciate his candor in explaining not only his chess moves but also his approach to his games and tournaments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you perceive and judge professional behavior in the world that often seems at odds with the interests of other people than themselves: by chess players, teachers, politicians, physicians, musicians, writers, athletes, etc?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Some good science-based reading for Election Day, whether or not you voted</title><link>https://franklinchen.com/blog/2014/11/04/some-good-science-based-reading-for-election-day/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/04/some-good-science-based-reading-for-election-day/</guid><pubDate>Tue, 04 Nov 2014 15:41:25 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2014/11/01/how-i-avoid-demotivating-myself-away-from-voting/&quot;&gt;I voted&lt;/a&gt; today, on Election Day in the US.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15527007380&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7496/15527007380_abfb7f5691_b.jpg&quot; alt=&quot;IMG_20141104_153326&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That said, now is as good a time as any for some interesting articles about politics and voting. Here are some that came my way:&lt;/p&gt;
&lt;h2&gt;Motive attribution asymmetry&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.theguardian.com/commentisfree/oliver-burkeman-column/2014/nov/04/get-along-enemies-motive-attribution&quot;&gt;Oliver Burkeman&lt;/a&gt; discusses a study that shows that you argue that your side is motivated by &lt;em&gt;love&lt;/em&gt;, while the other side is motivated by &lt;em&gt;hate&lt;/em&gt;. But since the other side thinks the same, what is the &quot;truth&quot;?&lt;/p&gt;
&lt;p&gt;&quot;One of the reasons it’s so hard to accept the notion that our enemies might be motivated by love, I suspect, is because that conclusion seems to suggest that our enemies’ cause must therefore have merit.&quot;&lt;/p&gt;
&lt;p&gt;&quot;Actually, those two issues are completely unrelated.&quot;&lt;/p&gt;
&lt;p&gt;I agree with this: it is quite possible (I&apos;m not saying it&apos;s always the case) for someone you disagree with to have the most loving intentions, but simply be &lt;em&gt;mistaken&lt;/em&gt; rather than &lt;em&gt;evil&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Dangers of accurate statistical prediction by data journalism&lt;/h2&gt;
&lt;p&gt;A good article in the Berkeley Journal of Sociology about &lt;a href=&quot;https://berkeleyjournal.org/2014/11/what-should-the-fox-say/&quot;&gt;Nate Silver&apos;s statistical journalism&lt;/a&gt; argues that data journalism should focus on understanding rather than prediction.&lt;/p&gt;
&lt;p&gt;&quot;This extensive use of Big Data for election forecasting passively promotes our current sense of political fatalism.&quot;&lt;/p&gt;
&lt;p&gt;&quot;If our politicians can’t risk making public appearances or trying to appear human without navigating at least three levels of performative irony, then our political culture has entered a state of structural crisis.&quot;&lt;/p&gt;
&lt;h2&gt;Emotions of Election Day: asymmetric hedonic response&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://harvardmagazine.com/2014/11/emotions-of-elections-study-todd-rogers&quot;&gt;Harvard Kennedy School research result&lt;/a&gt; on asymmetric hedonic response: after an election, losing makes you far sadder than winning makes you happy.&lt;/p&gt;
&lt;p&gt;I confess to having been really bummed out fairly often in the past two decades of voting. I&apos;ve been trying to be more detached.&lt;/p&gt;
&lt;h2&gt;In praise of the occasional voter&lt;/h2&gt;
&lt;p&gt;Sometimes, some people make fun of people who do not vote (I never do this; there are often quite rational reasons to avoid voting). Here&apos;s an interesting article arguing that the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2014/11/02/upshot/the-vital-role-of-the-occasional-voter.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2014/11/02/upshot/the-vital-role-of-the-occasional-voter.html&quot;&amp;gt;&quot;occasional voter&quot; is actually quite valuable&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;From an economics point of view, &quot;voting is a classic example of a free-rider problem&quot; because the possible gain for each individual is so tiny, statistically, that it may not make sense to go out of one&apos;s way to vote.&lt;/p&gt;
&lt;p&gt;On the other hand, voting has an interesting cost to the voter: &quot;The very act of voting for a given candidate or party ties us mentally to that candidate and inadvertently costs us some measure of our neutrality.&quot; This is because we &lt;em&gt;rationalize&lt;/em&gt; what we do in order to resolve our &lt;em&gt;cognitive dissonance&lt;/em&gt; about the apparent pointlessness of voting. We try to fool ourselves into thinking we did something really important. &quot;We don’t just choose what we like; we like more and more what we choose.&quot;&lt;/p&gt;
&lt;p&gt;So the &quot;occasional voter&quot; can be an outsider not subject to cognitive dissonance as much as the regular and party-registered voter, countering partisanship.&lt;/p&gt;
&lt;p&gt;Of course, it could be argued that partisanship, and the resulting gridlock, is good. But is it? That&apos;s another topic entirely.&lt;/p&gt;
&lt;h2&gt;The strange sameness of political candidates in the face of competition&lt;/h2&gt;
&lt;p&gt;The Conversable Economist, Timothy Taylor, offered an explanation for &lt;a href=&quot;https://conversableeconomist.blogspot.com/2014/11/the-excessive-sameness-of-politics-and.html&quot;&gt;why politicians end up in the same squishy middle&lt;/a&gt;, based on &lt;a href=&quot;https://en.wikipedia.org/wiki/Harold_Hotelling&quot;&gt;Hotelling&lt;/a&gt;&apos;s famous 1929 mathematical model.&lt;/p&gt;
&lt;p&gt;&quot;Mainstream politicians thus face a continual dynamic where they seek to reassure their more ardent partisans that they are on their side, while shading and tacking as needed to pick up voters in the middle.&quot;&lt;/p&gt;
&lt;p&gt;By the way, if you are interested in more mathematical modeling, check out Scott Page&apos;s free MOOC on &quot;model thinking&quot;, which I &lt;a href=&quot;/blog/2012/06/16/review-of-coursera-course-model-thinking/&quot;&gt;reviewed here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Bloggers&apos; reactions to Election Day&lt;/h2&gt;
&lt;p&gt;Here&apos;s a blogger I follow, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ayjay.tumblr.com/post/101755797073/and-one-more-note-on-politics&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ayjay.tumblr.com/post/101755797073/and-one-more-note-on-politics&quot;&amp;gt;Alan Jacobs, on his options&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/blogs/the-fix/wp/2013/05/09/people-hate-congress-but-most-incumbents-get-re-elected-what-gives/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/blogs/the-fix/wp/2013/05/09/people-hate-congress-but-most-incumbents-get-re-elected-what-gives/&quot;&amp;gt;People hate Congress, but 90% of incumbents get re-elected&amp;lt;/span&amp;gt;. &quot;The message from voters to Congress? Throw the bums out. But not my bum.&quot;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope you enjoyed this taste of research results concerning psychology, sociology, and economics.&lt;/p&gt;
&lt;p&gt;I&apos;m not staying up to watch the returns from today&apos;s election. I did what I did, and it&apos;s over for me until next May.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did you learn anything surprising in the links I shared here? Is there anything that will change how you think or behave when it comes to politics?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Lessons to learn from pianist Dejan Lazić&apos;s attempt to remove a critic&apos;s bad review</title><link>https://franklinchen.com/blog/2014/11/02/lessons-to-learn-from-pianist-dejan-lazics-attempt-to-remove-a-critics-bad-review/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/02/lessons-to-learn-from-pianist-dejan-lazics-attempt-to-remove-a-critics-bad-review/</guid><pubDate>Sun, 02 Nov 2014 17:25:32 GMT</pubDate><content:encoded>&lt;p&gt;I never heard of the pianist Dejan Lazić until a news article about him started circulating: he was upset about a 2010 review of a concert of his, written by a Washington Post critic. Because a link to this review appeared high in Web searches of his name, he asked the Washington Post to remove the review under the EU&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Right_to_be_forgotten&quot;&gt;&quot;right to be forgotten&quot;&lt;/a&gt; law. The result: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/news/the-intersect/wp/2014/10/31/pianist-asks-the-washington-post-to-remove-a-concert-review-under-the-e-u-s-right-to-be-forgotten-ruling/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/news/the-intersect/wp/2014/10/31/pianist-asks-the-washington-post-to-remove-a-concert-review-under-the-e-u-s-right-to-be-forgotten-ruling/&quot;&amp;gt;this article in the Washington Post about the situation&amp;lt;/span&amp;gt; that came to my attention from music blogs I follow.&lt;/p&gt;
&lt;p&gt;I don&apos;t have much to add to the commentary about the important questions about politics or philosophy regarding the &quot;right to be forgotten&quot;; there are very complex questions there.&lt;/p&gt;
&lt;p&gt;In any case, Lazić claimed he has a right to control his public image, to make the Web reflect the &quot;truth&quot; about his concert performance.&lt;/p&gt;
&lt;p&gt;But what about unintended consequences?&lt;/p&gt;
&lt;h2&gt;Unintended consequences&lt;/h2&gt;
&lt;p&gt;Obviously, one could argue that the law has resulted in unintended consequences in people trying to use the law for more than what it was in spirit aimed to do, which was to protect people from defamation or a past that no longer reflects who they are.&lt;/p&gt;
&lt;p&gt;The main unintended consequence, however, as far as I&apos;m concerned, is what Alex Ross said without words, in his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.therestisnoise.com/2014/11/the-unfortunate-mr-lazi%C4%87.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.therestisnoise.com/2014/11/the-unfortunate-mr-lazi%C4%87.html&quot;&amp;gt;blog post here with a screen shot&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Basically, what Lazić did is to make himself a household name, with one of the top Web search hits now being exactly the article about him trying to remove an article. Talk about going meta! He has pretty much guaranteed that he will be known for possibly the rest of his career as &quot;the guy who was upset by a negative review and tried to have it taken down&quot;. I don&apos;t think he intended for that to happen. This article about his trying to remove a bad review is surely going to be the top hit for his name now!&lt;/p&gt;
&lt;p&gt;Many actions have unintended consequences, if you didn&apos;t think far enough ahead or have contingency plans. And even if you are powerful enough and arrogant enough to think you have everything figured out, and don&apos;t consider what &lt;em&gt;reaction&lt;/em&gt; you might get from your action, and entire chains of actions and reactions, then something further down the road can still wreck everything you tried to start; for example, the Iraq War and the entire &quot;War on Terror&quot; has destabilized Iraq and the entire Middle East, and has created more terrorists than existed before it.&lt;/p&gt;
&lt;p&gt;I don&apos;t think there was any realistic scenario under which a lone pianist looking for fame could have killed that bad review in a major newspaper. An obscure pianist could kill a bad review in an obscure blog, probably. But once you are big enough, anything you do is news in itself.&lt;/p&gt;
&lt;h2&gt;Ignore negative reviews&lt;/h2&gt;
&lt;p&gt;I would advise Dejan Lazić to focus on making good music, getting more positive reviews from many sources. It is definitely possible that critics can kill a career, and certainly in the past, vicious powerful critics have silenced musicians, but in today&apos;s world, people do know to look at more than one source of trusted information. I for one would not rely solely on one random Washington Post music critic&apos;s review of a musician to determine whether to give that musician&apos;s work a listen: actually, I would just go look for audio or video samples to &lt;em&gt;hear for myself&lt;/em&gt;. The world is different now than when the critics really did have more power than they have now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you are a musician, do you agree with what Lazić tried to do? If so, why?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you are a music fan, how seriously do you take the top negative hits when you search for an unfamiliar musician?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>How I avoid demotivating myself away from voting</title><link>https://franklinchen.com/blog/2014/11/01/how-i-avoid-demotivating-myself-away-from-voting/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/11/01/how-i-avoid-demotivating-myself-away-from-voting/</guid><pubDate>Sat, 01 Nov 2014 22:11:10 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s that time of year again: three days from today is Election Day. I&apos;ve written a few posts about voting over the past couple of years here already, and I&apos;ve clearly changed my attitude about it over time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/&quot;&gt;November 2011&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;April 2012: I was too apathetic to vote.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/11/06/i-decided-to-resign-myself-to-continue-voting/&quot;&gt;November 2012&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/05/21/voting-in-the-face-of-election-apathy/&quot;&gt;May 2013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;November 2013: I voted but wrote nothing about it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2014/05/20/why-i-voted-yet-again/&quot;&gt;May 2014&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is my first post &lt;em&gt;before&lt;/em&gt; an Election Day rather than &lt;em&gt;after&lt;/em&gt; having voted. Why the change this time?&lt;/p&gt;
&lt;h2&gt;Reflections on my past behavior and attitudes&lt;/h2&gt;
&lt;p&gt;I have always been frustrated by politics and voting. That showed in my posts in the last three years. I always got very &lt;em&gt;emotional&lt;/em&gt; and torn about the whole process. I finally settled on a habit of trying to &lt;em&gt;minimize&lt;/em&gt; my involvement, not paying attention to any races or &quot;debates&quot; or any political coverage in the news until the night before Election Day, but I was still unhappy.&lt;/p&gt;
&lt;h2&gt;The situation now&lt;/h2&gt;
&lt;p&gt;Today, it is still the case that I have not looked at any political coverage for Tuesday. In fact, I have no idea who&apos;s running for what, with one major exception: Governor of Pennsylvania. That&apos;s been in the news for a year now, and totally unavoidable if you live in PA at all, and especially if you bothered to vote in the primary in May, which I did.&lt;/p&gt;
&lt;p&gt;It turns out that I am accidentally less &lt;em&gt;angry&lt;/em&gt; now than I used to be, because unknown to me, Abby has intercepted all political flyers arriving in our mailbox or &lt;em&gt;on our doorknob&lt;/em&gt; (how dare they!) and recycled them, with one exception.&lt;/p&gt;
&lt;h3&gt;Negative emotions came back&lt;/h3&gt;
&lt;p&gt;Today I saw a flyer in a pile of mail. I tried not to see anything as I picked it up and recycled it, but it was impossible to see &lt;em&gt;something&lt;/em&gt;. I have to hand it to the designer: the name of the politician reached my eye somehow, even though I prided myself on not seeing a single word (at least consciously) of anything else on the flyer.&lt;/p&gt;
&lt;p&gt;A rush of disgust and anger came my way, as I reflected that actually, this is someone I already decided last May in the primary to vote for in the general election. As I&apos;ve mentioned in previous posts, flyers that are shouting, negative, fear-mongering, and deceptive &lt;em&gt;piss me off&lt;/em&gt; and make me want to &lt;em&gt;puke down the throats&lt;/em&gt; of these politicians, &lt;em&gt;especially those I expect to vote for&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;(Note that in order to minimize bias, I have never heard this guy talk, and barely recall what he looks like, although I think I saw some head shot back in May. Also, I have no idea what he&apos;s been doing or saying since May, or whether any truly major scandal has broken out, although I assume I would have heard by now if so. I will learn what I need to know on Monday night.)&lt;/p&gt;
&lt;h3&gt;Taking more control&lt;/h3&gt;
&lt;p&gt;But now, after having &lt;a href=&quot;/blog/2014/10/31/win-ugly-or-lose-pretty-do-you-agree/&quot;&gt;read that fascinating article yesterday about emotional manipulation&lt;/a&gt;, I have decided that these politicians are only doing the rational thing in their game, nothing personal. You might want to argue that this is a flaw in democracy, as many ancient and modern philosophers have, of course, but that would be another topic of discussion entirely.&lt;/p&gt;
&lt;p&gt;I was also annoyed by the robocall on the answering machine at home today, from the same guy.&lt;/p&gt;
&lt;h3&gt;Action to further minimize annoyance&lt;/h3&gt;
&lt;p&gt;We shut off the answering machine for our land line. We will not be answering any phone calls until after Election Day. Actually, we are not sure why we need any phones connected to our land line anyway, because in principle we could make sure all relevant accounts list our cell phones as our primary phone numbers (most already do but some old ones don&apos;t yet). We only need the land line for DSL purposes. The land line has been mostly nothing but trouble, a target for robocalls of all kinds.&lt;/p&gt;
&lt;p&gt;Also, I wish there were a way to stop getting junk mail in general. Not just the election season junk mail, but all junk mail.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There will be no Election Day blog post on Tuesday. I&apos;ve said all I need to say for this Election Day.&lt;/p&gt;
</content:encoded></item><item><title>Win ugly or lose pretty: do you agree?</title><link>https://franklinchen.com/blog/2014/10/31/win-ugly-or-lose-pretty-do-you-agree/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/31/win-ugly-or-lose-pretty-do-you-agree/</guid><pubDate>Fri, 31 Oct 2014 22:53:18 GMT</pubDate><content:encoded>&lt;p&gt;I read a juicy article &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2014/10/31/us/politics/pr-executives-western-energy-alliance-speech-taped.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2014/10/31/us/politics/pr-executives-western-energy-alliance-speech-taped.html&quot;&amp;gt;Hard-Nosed Advice From Veteran Lobbyist: &quot;Win Ugly or Lose Pretty&quot;&amp;lt;/span&amp;gt; that exposed a speech by a political consultant, Rick Berman, that remarkably, offended one of the participants enough to cause a leak to the public.&lt;/p&gt;
&lt;p&gt;The full transcript is &lt;a href=&quot;https://www.nytimes.com/interactive/2014/10/31/us/politics/31lobbyist-docs.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you love preserving your independence of mind, get angry when secretly manipulated, and want to learn a bunch of tricks of the trade, you&apos;ll want to read the whole thing!&lt;/p&gt;
&lt;p&gt;Here are some highlights I found worth making note of.&lt;/p&gt;
&lt;h2&gt;Public opinion versus public judgment&lt;/h2&gt;
&lt;p&gt;Berman makes a point of distinguishing between &lt;em&gt;public opinion&lt;/em&gt; and &lt;em&gt;public judgment&lt;/em&gt;. He focuses on how to influence public judgment when the war cannot be won on opinion. Opinion is good to influence when possible, of course, but judgment is what actually matters, because it is the act of deciding to vote for some &lt;em&gt;policy&lt;/em&gt; because of some &lt;em&gt;facts&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Offense versus defense&lt;/h2&gt;
&lt;p&gt;Berman advocates always being on the offense, not defense. Being on defense is &lt;em&gt;reacting&lt;/em&gt; to someone else. All students of psychology know that reacting is very poor tactics, because it leaves the &lt;a href=&quot;https://en.wikipedia.org/wiki/Framing_effect_%28psychology%29&quot;&gt;&lt;em&gt;framing&lt;/em&gt;&lt;/a&gt; of a situation up to the opponent, and therefore gives the opponent the advantage as far as natural human cognitive bias.&lt;/p&gt;
&lt;p&gt;For example: in order to &lt;em&gt;prevent change&lt;/em&gt;, throw around a lot of information and hypotheticals about what could happen upon change, in such a way as to confuse people and get them into a state of &lt;em&gt;&quot;I don&apos;t know who to believe&quot;&lt;/em&gt;. You want to make it sound like a possible &lt;em&gt;tie&lt;/em&gt; to be broken. Because then by default, the psychological tendency is to give up and not decide, because &quot;People are not prepared to get aggressive and in moving one way or another&quot;. Therefore, the status quo remains, and the status quo is a &lt;em&gt;win&lt;/em&gt; for the side that wants to prevent change.&lt;/p&gt;
&lt;p&gt;Also, apparently it&apos;s good to toss in &lt;em&gt;children&lt;/em&gt; and &lt;em&gt;animals&lt;/em&gt; to make one&apos;s opponents seem cartoonish and not to be taken seriously. Also, these kinds of images or videos are popular, helping the spread of such material.&lt;/p&gt;
&lt;p&gt;And &quot;I like to use humor to minimize or marginalize the people on the other side.&quot;&lt;/p&gt;
&lt;h2&gt;Common knowledge&lt;/h2&gt;
&lt;p&gt;Berman says that the goal is not to just send a message out there but to make it &quot;common knowledge&quot;, something that people just assume because they heard it somewhere enough (completely independently of its truth, of course). And not just somewhere, but &quot;enough times from enough different places&quot;. It&apos;s important to make it look like the message came from different sources, hence the &quot;different places&quot;. (Nobody will be fooled if they know exactly where the message came from and that it came from one mastermind.)&lt;/p&gt;
&lt;h2&gt;Jack Hubbard on diminishing moral authority&lt;/h2&gt;
&lt;p&gt;Diminishing moral authority of the opposition means winning through making the other side &lt;em&gt;lose&lt;/em&gt;. (Jack Hubbard took over from Rick Berman to speak at this point.)&lt;/p&gt;
&lt;p&gt;One obvious way is to go &lt;em&gt;personal&lt;/em&gt;. Rip apart the personal lives of people on the opposition. For example, the left-wing Congressman who is discovered to have a large investment in the energy industry: the public enjoys exposing &lt;em&gt;hypocrisy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&quot;We have a section on every single activist. Their rap sheets, their criminal records that they have. We&apos;re really making this personal.&quot;&lt;/p&gt;
&lt;p&gt;And &quot;engaging unique or third party messengers to get involved on this stuff.&quot;&lt;/p&gt;
&lt;p&gt;&quot;The public really does have a celebrity worship culture. But...there is nothing the public likes more than tearing down celebrities and playing up the hypocrisy angle.&quot;&lt;/p&gt;
&lt;h2&gt;Rick Berman on emotions and FLAGS&lt;/h2&gt;
&lt;p&gt;Berman reminded the audience that some did not want to go offensive in that nasty way, but you have to &quot;win ugly or lose pretty&quot;. &quot;I was convinced you could not get into people&apos;s heads and convince them to do something as easily as you could get into their hearts or into their gut to convince them to do something.&quot; It&apos;s all about &lt;em&gt;emotions&lt;/em&gt;. His acronym FLAGS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fear&lt;/li&gt;
&lt;li&gt;Love&lt;/li&gt;
&lt;li&gt;Anger&lt;/li&gt;
&lt;li&gt;Greed&lt;/li&gt;
&lt;li&gt;Sympathy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the particular campaign he was describing, he deliberately wanted to tap &lt;em&gt;fear&lt;/em&gt; and &lt;em&gt;anger&lt;/em&gt;. Because &quot;we&apos;re not going to get people to like the oil and gas industry over the next few months&quot;.&lt;/p&gt;
&lt;h2&gt;Endless war&lt;/h2&gt;
&lt;p&gt;Berman reminded his audience that &quot;this is an endless war&quot;. Winning one battle is not enough because the opposition will keep trying win; it does not think of any single loss as a loss for the cause, but just &quot;haven&apos;t won &lt;em&gt;yet&lt;/em&gt;&quot;.&lt;/p&gt;
&lt;p&gt;Berman used the metaphor &quot;natural enemy&quot;: the Sierra Club has no &quot;natural enemy&quot;. It is hard to fight against something that does not have a natural enemy.&lt;/p&gt;
&lt;h2&gt;How not to be found out&lt;/h2&gt;
&lt;p&gt;&quot;We run all of this stuff through nonprofit organizations that are insulated from having to disclose donors... we&apos;ve been doing this for 20 something years&quot;.&lt;/p&gt;
&lt;h2&gt;Study the other side&lt;/h2&gt;
&lt;p&gt;Good quote from Berman: &quot;I studied what the other side did to be successful and then translated it into how businesses can use those tactics&quot;.&lt;/p&gt;
&lt;h2&gt;Always aim for the middle&lt;/h2&gt;
&lt;p&gt;&quot;We&apos;re always aiming with our messages for the people in the middle. I don&apos;t try to appeal to the people who already believe in us. And I don&apos;t try to convince people who are never going to agree with me, so I&apos;m always playing the middle.&quot;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;People like Rick Berman are master psychologists. Whether you agree with his tactics or not, know them and know that they are effective. Now it&apos;s your turn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Do you or would you use these tactics yourself, for some cause that you deeply believe in? Why or why not?&quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Was there something you learned that surprised you?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is there some decision you made in the past that you now consider as having been triggered by a FLAGS emotional manipulation?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Disclaimer: Berman&apos;s messages have no effect on me; I am not his intended &quot;middle&quot; audience.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The common problem of following a pattern without understanding it</title><link>https://franklinchen.com/blog/2014/10/30/the-chess-improver-the-common-problem-of-following-a-pattern-without-understanding-it/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/30/the-chess-improver-the-common-problem-of-following-a-pattern-without-understanding-it/</guid><pubDate>Thu, 30 Oct 2014 20:14:40 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The common problem of following a pattern without understanding it&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Last week, I wrote about the importance of learning and teaching through &lt;a href=&quot;/blog/2014/10/23/the-chess-improver-learning-through-comparing-similar-but-different-situations/&quot;&gt;comparing similar but different situations&lt;/a&gt;. Again and again this theme pops up, and is easy to miss if one is not careful. It is easy to memorize a pattern without understanding its context and purpose, or more charitably, to have understood it once but getting it mixed up with another pattern during the heat of battle. What is the solution? Sometimes the solution is just to review concrete details. Sometimes the solution is to remember a higher-priority pattern that gives real force and justification to the pattern at hand.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example I recently saw, involving the elementary &lt;a href=&quot;https://en.wikipedia.org/wiki/Lucena_position&quot;&gt;Lucena position&lt;/a&gt; which is a win for the side with the Rook and Pawn versus Rook, if one understands the fundamental concept, which is &quot;building a bridge&quot; in order to block the opposing Rook&apos;s checks and therefore ensure Pawn promotion.&lt;/p&gt;
&lt;h2&gt;Lucena position&lt;/h2&gt;
&lt;p&gt;The standard easy win for White is to&lt;/p&gt;
&lt;p&gt;Chase Black&apos;s King further away from the Queening square by checking.
Lift the Rook to the 4th rank in preparation to &quot;build a bridge&quot;.&lt;/p&gt;
&lt;p&gt;However, White in eagerness to &quot;remember&quot; the key pattern, that of the Rook lift, failed to perform the first critical step, and the result was a draw by mistake! Building the bridge is &lt;em&gt;pointless&lt;/em&gt; if it only results in Black&apos;s King reaching the advanced Pawn and gobbling it up.&lt;/p&gt;
&lt;p&gt;The solution to this mistake is to remember that the primary goal in this position is &lt;em&gt;not&lt;/em&gt; to build the bridge. The real goal is to successfully Queen the Pawn, and getting Black&apos;s King far away is the most important part of that, not the bridge building. The bridge building is not the goal, but the &lt;em&gt;means&lt;/em&gt; to the larger goal. Without remember this, it is too easy to just vaguely remember one aspect of what the winning technique is, and use it outside of the larger context.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;3K4/3P1k2/8/8/8/8/2r5/4R3 w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Re4 $6 ( 1. Rf1+ { Standard easy win.} 1... Kg7 ( 1... Ke6 2. Ke8 ) 2. Rf4 Kg6 3. Ke7 Re2+ 4. Kd6 Rd2+ 5. Ke6 Re2+ 6. Kd5 Rd2+ 7. Rd4 { Bridge built!} ) 1... Rd2 2. Kc7 Rc2+ 3. Kd6 Rd2+ 4. Kc6 Rc2+ 5. Kd5 Rd2+ 6. Rd4 $4 ( 6. Kc6 { Ironically, White&apos;s best is to get back to the Lucena position and try again!} 6... Rc2+ 7. Kb6 Rb2+ 8. Kc7 Rc2+ 9. Kd8 ) 6... Rxd4+ 7. Kxd4 Ke7 { Oops, draw!!} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The Chess Improver: Learning through comparing similar but different situations</title><link>https://franklinchen.com/blog/2014/10/23/the-chess-improver-learning-through-comparing-similar-but-different-situations/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/23/the-chess-improver-learning-through-comparing-similar-but-different-situations/</guid><pubDate>Thu, 23 Oct 2014 07:13:51 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Learning through comparing similar but different situations&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The temptation is very great, for both a learner and a teacher, to try to go fast through a lot of material, when learning a subject such as chess, because there is so much that is known. This is not a problem specific to chess: in fact, it is a problem for students of cooking, running, law, computer science, medicine, you name it. We all feel the burden of the accumulated knowledge of all of human history. Educators everywhere face the challenge of somehow distilling more and more knowledge, wisdom, and practical technique into less and less time. Unfortunately, there is no shortcut for deep learning. Just flipping through a chess book or even working through a set of exercises is no guarantee that when you sit down across the chess board, you will remember or know how to apply what you learned.&lt;/p&gt;
&lt;p&gt;In my attempts to improve my own lifelong learning as well as my teaching, I have found that comparing similar but different situations is a technique that can be very useful in making learning more efficient, and even more interesting. Instead of trying to focus too much on &quot;this is how to do things&quot;, it is better to have worked through several similar ideas that do or don&apos;t work, and know why. It is like in martial arts where you must learn how to fall, in addition to how to strike.&lt;/p&gt;
&lt;p&gt;Fundamental endgames are a great place to notice both patterns and differences between them. Little things can make a big difference in endgames. It is a great mental exercise to understand fundamental endgames and learn to appreciate the importance of detail, and the unexpected beauty of peculiar features of chess positions. For example, consider the following Rook and Pawn endgame position, White to move. Can White win or is it a draw?&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;R7/P7/8/8/8/6K1/8/r5k1 w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kf3 Kf1 2. Ke3 Ke1 3. Kd3 ( 3. Kd4 { Also wins, in a completely different way.} ) 3... Kd1 4. Kc3 Kc1 5. Kb3 Kb1 6. Re8 { Threatening a back rank mate.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;One way to win&lt;/h2&gt;
&lt;p&gt;The answer is that it is a win for White. The key insight is that in order to Queen the a7-Pawn, White must reach a position in which&lt;/p&gt;
&lt;p&gt;Black cannot check White&apos;s King forever.
White has time to move the Rook with check in order to free up the a8 square for Queening without losing the a7-Pawn (if Black&apos;s Rook is on the a-file always threatening to take it).&lt;/p&gt;
&lt;p&gt;The tricky part of winning is finding out how to deal with all possibilities and obstacles while keeping in mind the key insight.&lt;/p&gt;
&lt;p&gt;One way to win is to move the King all the way to the left, perpetually uncovering Black&apos;s King and therefore threatening to check it. This forces Black&apos;s King to move in the &quot;shadow&quot; of White&apos;s King; if the King does not move but the Rook checks instead, then White can simply bring the King near the Rook eventually and stop all checks and then be in position to check Black&apos;s King and Queen the a7-Pawn.&lt;/p&gt;
&lt;p&gt;Once Black&apos;s King is pushed all the way to b1, and White&apos;s King at b3 prevents a Black Rook check, White has the tactical trick of moving the Rook to the right and &lt;em&gt;simultaneously&lt;/em&gt; threatening Queening and checkmate on the first rank!&lt;/p&gt;
&lt;h2&gt;Changing the problem&lt;/h2&gt;
&lt;p&gt;Unfortunately, teaching this way to win, although instructive in its own right, can cause a &lt;em&gt;failure to generalize&lt;/em&gt;. This is a special case kind of winning plan. To prove this, move the pair of Kings up one rank:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;R7/P7/8/8/6K1/8/6k1/r7 w - - 8 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kf4 Kf2 2. Ke4 Ke2 3. Kd4 Kd2 4. Kc5 $1 { Racing toward the a-Pawn by running the King on the diagonal.} ( 4. Kc4 Kc2 5. Kb4 Kb2 { A student might be confused here how to proceed.} ) 4... Kc3 ( 4... Rc1+ 5. Kb4 { Heading toward Black&apos;s Rook.} 5... Rb1+ 6. Kc4 Rc1+ 7. Kb3 Rb1+ 8. Ka2 { Black has no more checks.} ) 5. Rc8 $1 Rxa7 6. Kb6+ { Discovered check wins the Rook.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here, if White blindly follows the plan of trying to box Black&apos;s King down, then it becomes clear at the end of the King march that the original tactical idea no longer works: there is no back rank mate.&lt;/p&gt;
&lt;p&gt;I believe that it is extremely instructive to &lt;em&gt;allow the student to try a generalization that fails&lt;/em&gt;, to solidify the understanding of what is going on, rather than treat endgame knowledge as a mechanical memorization of particular move sequences. Then after trying out some possibilities, we can finally reveal a key idea: White has another tactical trick, based on reaching a position in which White can still move the Rook away and allow Black to capture the a7-Pawn, but in return, White can perform a discovered check that wins the Rook. So White&apos;s King should, at the first opportunity, start a diagonal march straight to the a7-Pawn.&lt;/p&gt;
&lt;p&gt;By presenting first the back rank trick, and then the discovered check trick, we allow the student the opportunity to learn a more general lesson than if the back rank trick had not been mastered first: that the goal is to be able to move the Rook with &lt;em&gt;an appropriate tactic in mind&lt;/em&gt;, not just checkmate or a discovered check.&lt;/p&gt;
&lt;h2&gt;A variation that still obeys the pattern&lt;/h2&gt;
&lt;p&gt;It&apos;s always useful to show how a pattern can in fact be applied to a slightly different position, without substantial change. Move the Kings up more: the discovered check still works.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;R7/P7/6K1/8/6k1/8/8/r7 w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kf6 Kf4 2. Ke6 Ke4 3. Kd6 Kd4 4. Kc6 Kc4 5. Rc8 $1 Rxa7 6. Kb6+ { White wins Black&apos;s Rook.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;A variation that does not work&lt;/h2&gt;
&lt;p&gt;And, of course, it is necessary to show a variation of the initial position in which White &lt;em&gt;cannot win&lt;/em&gt;, otherwise the student might get the wrong idea and again fall into mechanical memorization habits.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;R7/P5K1/8/6k1/8/8/8/r7 w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kf7 Kf5 2. Ke7 Ke5 3. Kd7 Kd5 4. Kc7 Kc5 5. Kb7 ( 5. Rc8 { This &quot;trick&quot; does not work here.} 5... Rxa7+ 6. Kb8+ Kb6 { Black gets out of check and protects the Rook just in time.} ) 5... Rb1+ { And White&apos;s King has no shelter.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here, the Kings are so far forward that Black has boxed in White&apos;s King so that it has no shelter and is far away from Black&apos;s Rook, so Black can keep on checking White for a draw. Note that a careless student might try to mechanically apply the discovered check tactic with Rc8 only to find that after losing the Pawn on a7, there is no win of the Rook, because Black&apos;s King is close enough to protect it! Again, allowing the student to fall into this trap is important, to prevent complacency and really nail down the nature of the discovered check tactic, which requires a nice combination of&lt;/p&gt;
&lt;p&gt;White&apos;s King being close enough to the a7-Pawn to get there in two moves, including one &quot;free&quot; discovered check move if necessary.
Black&apos;s King being far enough away from the a7-Pawn not to be able to cover the a7 square in one move.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Even elementary endgames provide quite a rich amount of material for setting up ways for a student to discover the reasons for what works and what doesn&apos;t work in a line of reasoning and a general plan.&lt;/p&gt;
</content:encoded></item><item><title>Climbing the Cathedral of Learning to get to the Harvard Classics</title><link>https://franklinchen.com/blog/2014/10/22/climbing-the-cathedral-of-learning-to-get-to-the-harvard-classics/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/22/climbing-the-cathedral-of-learning-to-get-to-the-harvard-classics/</guid><pubDate>Wed, 22 Oct 2014 23:12:24 GMT</pubDate><content:encoded>&lt;p&gt;I recently learned that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Harvard_Classics&quot;&gt;Harvard Classics&lt;/a&gt;, a 51-volume set of classic writings first published in 1909, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.openculture.com/2014/03/the-harvard-classics-download-all-51-volumes-as-free-ebooks.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.openculture.com/2014/03/the-harvard-classics-download-all-51-volumes-as-free-ebooks.html&quot;&amp;gt;are now available for free download as ebooks&amp;lt;/span&amp;gt;. This isn&apos;t really news, but was just something that appeared on my radar.&lt;/p&gt;
&lt;p&gt;What relevance such an ancient collection has today is an interesting question, especially in light of the fact that a century ago the concept of what was of interest in the history of the &quot;world&quot; was fairly narrow, but not something I&apos;m discussing right now.&lt;/p&gt;
&lt;p&gt;I had a hunch where I could find a physical copy of the Harvard Classics. I tested my hunch:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15415427937&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/5607/15415427937_62f9d10eae_b.jpg&quot; alt=&quot;IMG_20141022_113213&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Sightings&lt;/h2&gt;
&lt;p&gt;I have seen this type of material (including, of course sets of encyclopedias) in many places, including personal homes: dusty, hardly opened volumes handed down generation after generation, perhaps, or acquired at bargain prices from library or garage sales.&lt;/p&gt;
&lt;p&gt;But most interesting to me is seeing it in public places. In particularly, I suddenly had the suspicion (or unconscious memory) that the 36th floor of the Cathedral of Learning at Pitt, which has book shelves of many old books, might have the Harvard Classics.&lt;/p&gt;
&lt;h2&gt;Climbing the Cathedral&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15601416745&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3932/15601416745_5c49f2fbdf_b.jpg&quot; alt=&quot;IMG_20141022_114120&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I used my curiosity to stop by the Cathedral of Learning near lunch time and climb to the 36th floor, a curious form of exercise I hadn&apos;t engaged in for quite some time, maybe almost a year by now. I &lt;a href=&quot;/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/&quot;&gt;took off my shoes and socks&lt;/a&gt; and jacket, and stuffed them in my backpack before beginning the ascent. I am currently out of shape and started feeling nauseous probably around the 25th floor, but made it to the top:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15415427937&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/5607/15415427937_62f9d10eae_b.jpg&quot; alt=&quot;IMG_20141022_113213&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There they were, the Harvard Classics!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15601416115&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3944/15601416115_470d900851_b.jpg&quot; alt=&quot;IMG_20141022_113305&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Physically old books have a durability and charm to them. Here&apos;s &quot;The Pilgrim&apos;s Progress&quot;, a book I actually acquired &lt;a href=&quot;/blog/2013/12/22/a-favorite-poem-to-share-as-2013-comes-to-an-end&quot;&gt;by accident at age 9 along with many others&lt;/a&gt; but never really read (I tried but it was too confusing, despite the illustrations):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15598756521&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/5615/15598756521_c5fe055973_b.jpg&quot; alt=&quot;IMG_20141022_113328&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;A note on the &quot;elevator modernization project&quot;&lt;/h2&gt;
&lt;p&gt;After I climb to the top of the Cathedral of Learning, &lt;a href=&quot;/blog/2013/11/03/the-dilemma-of-how-to-descend-the-cathedral-of-learning-once-at-the-top/&quot;&gt;I have to choose whether to take an elevator down&lt;/a&gt;, and this time was no exception.&lt;/p&gt;
&lt;p&gt;It turned out that an elevator appeared quickly before I had to decide whether to just walk down 36 floors, so I hopped in with some other people.&lt;/p&gt;
&lt;p&gt;I heard a lot of complaints about elevator waits thanks to elevators being out of service. People talked about waiting &lt;em&gt;fifteen to twenty minutes&lt;/em&gt; before giving up sometimes.&lt;/p&gt;
&lt;p&gt;I kept my mouth shut about the fact that it only takes far less time to either ascend or descend the entire Cathedral on the stairs; this is not a nation of walkers, and everyone has personal reasons not to take the stairs. There are many good reasons to improve accessibility between all the floors of the Cathedral for all people, and I have found the elevators unreliable.&lt;/p&gt;
&lt;p&gt;Getting back to the bottom, I saw a sign that explained the situation: there is an &quot;elevator modernization project&quot; in progress to try to considerably improve the elevator situation:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15577746826&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3944/15577746826_4ee00263a0_b.jpg&quot; alt=&quot;IMG_20141022_113740&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I found the Harvard Classics where I expected to find them! I will continue to climb the Cathedral in the future to see what other oldies exist up there. I am particularly interested in encyclopedias and &quot;world history&quot; books, having seen some really old ones in the past that were fascinating in either their short-sighted parochial nature or in their far-sighted prophetic correctness. I will report on what I find that might be particularly noteworthy.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Basic endgames teach how to tie together mathematics and logic</title><link>https://franklinchen.com/blog/2014/10/16/the-chess-improver-basic-endgames-teach-how-to-tie-together-mathematics-and-logic/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/16/the-chess-improver-basic-endgames-teach-how-to-tie-together-mathematics-and-logic/</guid><pubDate>Thu, 16 Oct 2014 07:10:54 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Basic endgames teach how to tie together mathematics and logic&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the game of chess, each lowly Pawn has the potential to promote to a powerful Queen by advancing all the way to the 8th rank. Also, there&apos;s a remarkable rule that if one side cannot make any legal moves, the game is actually a draw, rather than a loss for the paralyzed side. These two facts create the phase of a chess game called the &lt;em&gt;endgame&lt;/em&gt;, where a player has the opportunity to out-think and out-trick the opponent.&lt;/p&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;p&gt;Chess has a well-deserved reputation for being a game of &lt;em&gt;logic&lt;/em&gt;. Indeed, fundamentally the game really is a matter of logic, in the sense that everything is about managing the fact that everything boils down to &quot;if I do this, then she can do that, but then I can do this other thing&quot;, and therefore a decision tree of immense breadth and depth. Nowhere is this more true than in the endgame, where being one move ahead of the other side may mean the difference between a win and a draw: and in fact, being one move ahead does not always win, but sometimes even loses (in situations called Zugzwang where getting somewhere first means the other side can make a waiting move and then pounce).&lt;/p&gt;
&lt;p&gt;For example, a basic endgame position everyone must learn is the following King and Pawn versus Pawn position. Black to move, there is only one move that draws; the other two moves lose.&lt;/p&gt;
&lt;p&gt;This is a perfect position to use to teach children how to think logically, even if they don&apos;t otherwise play chess. They don&apos;t even need to know how to checkmate with a Queen against King. You can just teach them how the King and Pawn work, and set the goal for White as being to get the Pawn to the 8th rank without its being captured. In fact, I think &lt;em&gt;chess would be much more useful in teaching logic if play was arranged starting from simplified positions in endgames&lt;/em&gt;, skipping the much more complex phases of the opening and middlegame.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;8/4k3/4P3/4K3/8/8/8/8 b - - 1 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;p&gt;1... Ke8 { The only move that draws.} ( 1... Kf8 $4 { Loses.} 2. Kf6 Ke8 3. e7 Kd7 4. Kf7 { And White Queens.} ) ( 1... Kd8 $4 { Loses.} ) 2. Kf6 Kf8 3. e7+ Ke8 4. Ke6 { Stalemate.} *`} /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Meta-reasoning&lt;/h3&gt;
&lt;p&gt;Once a chess player begins applying logical reasoning, an observant player will observe that she is &lt;em&gt;reusing&lt;/em&gt; certain &lt;em&gt;patterns&lt;/em&gt; in reasoning again and again. This is where &lt;em&gt;reasoning about reasoning&lt;/em&gt;, or meta-reasoning, comes in. The concept of &quot;taking the opposition&quot; in chess is one of the simplest examples. In the position above, Black draws by arranging it so that if White&apos;s King advances, Black&apos;s King is in position to &quot;take the opposition&quot; and prevent further progress. So the principle of opposition is &lt;em&gt;not&lt;/em&gt; a part of the game of chess, but part of how we can reasoning about the game of chess. A chess player could in theory just apply the &quot;rule&quot; of opposition to play chess well, but without actually &lt;em&gt;understanding&lt;/em&gt; why it works, would be missing a huge part of what chess is about: discovering patterns, proving facts about them (this is the &quot;meta-reasoning&quot;), and applying the patterns as building blocks.&lt;/p&gt;
&lt;h2&gt;Mathematics&lt;/h2&gt;
&lt;p&gt;This leads to the topic of mathematics in chess. I take the point of view that certain ways of effectively making decisions in chess amount to doing mathematics, going beyond just logic: arithmetic, algebra, geometry. There are many connections to be made here that, when made explicit, can greatly aid in transferring skills out of chess itself.&lt;/p&gt;
&lt;p&gt;For today, I&apos;ll just mention a connection with arithmetic and geometry. In the position below, White to move can win, but only by very precise play. The aim is to prevent Black from taking the opposition, and then for White to take the opposition and &lt;em&gt;reduce the problem to the previously mentioned position&lt;/em&gt;. The concept of reducing to a previously proved fact is fundamental to logical reasoning, of course. So where does the mathematics come in?&lt;/p&gt;
&lt;p&gt;First of all, it must be understood that there is a race between the two Kings to get to one of the &lt;em&gt;critical squares&lt;/em&gt; in front of White&apos;s Pawn that will determine whether White can win: White must get the King to d6, e6, or f6. So there may be some kind of counting implicit in whatever logical reasoning is used.&lt;/p&gt;
&lt;p&gt;From a geometrical point of view, what is important to understand is that because Kings have to move either horizontally, vertically, or diagonally, &quot;distance&quot; on the chess board is not the same as the &quot;bird&apos;s eye view&quot; visual spatial distance: chess operates on a more abstract geometrical space where, for example, all things being equal, diagonal moves can get a King somewhere much faster than just horizontal or vertical moves.&lt;/p&gt;
&lt;p&gt;Arithmetic comes in to tie in this geometric insight with the logic-based goal-setting and reduction: the simple way to determine whether this position is a win for White is to &lt;em&gt;count&lt;/em&gt; how many moves it takes to reach a desired square, and to count whether Black can stop this. Arithmetic is basically a meta-reasoning shortcut for otherwise engaging in low-level &quot;if this, then that&quot; logical reasoning. Here, we see that White can, in 3 moves, reach d5 unimpeded, because in 2 moves, Black can at most reach f6. Then we tie up the reasoning with one bit of logic/geometry: after White&apos;s King is on d5 and Black&apos;s King on f6, Black&apos;s King must go to e7 to prevent White from getting to d6. But then this allows White to get to e5, taking the opposition and winning the game.&lt;/p&gt;
&lt;p&gt;I believe that this endgame position is very instructive for showing how to apply multiple levels and styles of logical and mathematical understanding to be able to guarantee a desired result. Any student who can master (as tested by playing out as either side to the optimal result) and be able to explain the evaluation of each position in which the Pawn is on e4 and the other Kings are on any other squares on the board will have demonstrated a real understanding of logical reasoning.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[FEN &quot;7k/8/8/8/4P3/8/5K2/8 w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ke3 { The only move that wins.} ( 1. Kf3 $4 Kg7 2. Kf4 Kf6 { Black draws.} ) 1... Kg7 2. Kd4 { The only move that wins.} 2... Kf6 3. Kd5 { The only move that wins.} 3... Ke7 4. Ke5 { The only move that wins.} 4... Kd7 5. Kf6 Ke8 6. e5 { We reach a position known to be a win from before.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The Chess Improver: The temptation to play safe can prevent improvement</title><link>https://franklinchen.com/blog/2014/10/09/the-chess-improver-the-temptation-to-play-safe-can-prevent-improvement/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/09/the-chess-improver-the-temptation-to-play-safe-can-prevent-improvement/</guid><pubDate>Thu, 09 Oct 2014 07:02:49 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The temptation to play safe can prevent improvement&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A student of mine lost a game almost straight out of the opening as a result of facing Alekhine&apos;s Defense as White and &lt;em&gt;overextending&lt;/em&gt; and losing the advanced e5 Pawn; there may have been drawing chances later in the game, but losing the e5 Pawn at move 13 was not fun:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Pittsburgh Chess League&quot;]
[Date &quot;2014.09.14&quot;]
[Round &quot;1&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;B03&quot;]
[EventDate &quot;2014.09.14&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 c5 7. Nf3 $2 Bg4 $2 8. d5 e6 9. Bg5 $2 Bxf3 $6 10. Bxd8 Bxd1 11. Bxb6 axb6 12. Kxd1 Nd7 { White loses the e5 Pawn.} 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Avoid overreacting to the loss&lt;/h2&gt;
&lt;p&gt;This kind of thing happens to all of us: we can play too aggressively or carelessly, and end up losing. That&apos;s natural. But how we respond to our failure can determine whether we improve or simply get demoralized. In his disappointment, he suggested that maybe he should meet Alekhine&apos;s Defense with the &lt;em&gt;cautious&lt;/em&gt; d3, protecting the e4 Pawn and refusing to play into Black&apos;s provocative idea of causing White to advance with e5.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. e4 Nf6 2. d3 $6 e5 ( 2... d5) *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;p&gt;OK, d3 is objectively not horrible, so why not play this? There are a couple of reasons:&lt;/p&gt;
&lt;p&gt;If Black plays …e5, then you as White are playing a Philidor reversed with an extra move. Now, if you already play the Philidor as Black, this might well be just fine for you.&lt;/p&gt;
&lt;p&gt;But if you don&apos;t play the Philidor as Black because you don&apos;t like the cramped positions, then why would you want to play it in reverse as White? From a &lt;em&gt;psychological&lt;/em&gt; point of view, it makes no sense to open the game with e4 if you don&apos;t have a clear plan on taking on the Alekhine.
If you do not play e5, you are passing up a great opportunity to learn how to try to use a &lt;em&gt;space advantage&lt;/em&gt; in chess. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://chessimprover.com/space-point-count/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://chessimprover.com/space-point-count/&quot;&amp;gt;This is an important skill to work on&amp;lt;/span&amp;gt;. In less &quot;unusual&quot; openings the the Alekhine, White has to fight hard to get an undisputed space advantage, so it is a shame not to take up the challenge immediately when it is presented on move 2.&lt;/p&gt;
&lt;h2&gt;Take a middle path&lt;/h2&gt;
&lt;p&gt;In the game, White played the ambitious Four Pawns Attack against the Alekhine, trying to support the e5 Pawn with the f-Pawn, etc. Another wrong lesson to learn would be that White should not play the Four Pawns Attack. It is quite playable, if one is tactically precise. So I could advise studying all the various tricky lines Black has against the Four Pawns Attack.&lt;/p&gt;
&lt;p&gt;But for an improver, I advise taking a middle path. Instead of either cowering in fear with d3 or going all out with the Four Pawns Attack, there are two other possible variations for White that are positionally quite sound and should ensure White a pleasant game with a space advantage, and completely avoid the problem of a possibly overextended e5 Pawn.&lt;/p&gt;
&lt;p&gt;The Modern Variation with 4 Nf3 is quite sound, intending to recapture on e5 with the Knight if necessary. The Exchange Variation with 4 exd6 is also sound, dissolving the e5 Pawn entirely. So I advise learning the ideas behind one of these variations before embarking on other possible variations against the Alekhine.&lt;/p&gt;
&lt;p&gt;The advantages of taking a middle path:&lt;/p&gt;
&lt;p&gt;The solid positional approach is always useful to learn and understand, even if later on one chooses the sharper approach.
If is not yet prepared for tactical trickery, it is quite justifiable for an improver to step back from it and save exploration of sharp lines for later.
It can sometimes be useful to build up confidence after an annoying loss by avoiding an awkward line in any case.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 {Modern Variation} (4. exd6 {Exchange Variation}) *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Code and Supply: Making music with Overtone in Clojure; Conveying information through sound</title><link>https://franklinchen.com/blog/2014/10/07/pittsburgh-code-and-supply-making-music-with-overtone-in-clojure-conveying-information-through-sound/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/07/pittsburgh-code-and-supply-making-music-with-overtone-in-clojure-conveying-information-through-sound/</guid><pubDate>Wed, 08 Oct 2014 01:10:18 GMT</pubDate><content:encoded>&lt;p&gt;I attended &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/202086812&quot;&gt;a fine meeting&lt;/a&gt; of &lt;a href=&quot;http://www.codeandsupply.co/&quot;&gt;Pittsburgh Code and Supply&lt;/a&gt; dedicated to two related topics: &lt;em&gt;music&lt;/em&gt; and &lt;em&gt;sonification&lt;/em&gt;. I thought it was a great idea to have presentations on both topics in the same session, thereby giving a broad view of what can be done with &lt;em&gt;sound&lt;/em&gt; through computation.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Erik Swanson on Overtone in Clojure&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://overtone.github.io/&quot;&gt;Overtone&lt;/a&gt; is a very interesting environment for programmable music written in Clojure that I&apos;d heard of years ago but never gotten around to playing with, simply because my primary interest in music is &lt;a href=&quot;https://franklinchen.com/categories/music/&quot;&gt;playing music on traditional physical instruments with my own hands, the old-fashioned way&lt;/a&gt;. However, I am definitely open to the idea of doing interesting new things with computer aid; it just has not been a priority to explore.&lt;/p&gt;
&lt;p&gt;As preparation for the presentation (I don&apos;t like feeling completely lost during live demos; I usually do!), I actually finally set up an Overtone project with Leiningen and walked through a tutorial that simply used the Clojure CIDER mode in Emacs to operate in a REPL. I didn&apos;t do any real live-coding, however. I just wanted to get a taste.&lt;/p&gt;
&lt;p&gt;Erik Swanson gave a great presentation in which he described what he was doing as he live-coded some music with Emacs, incrementally creating instruments and generating pitches. Because of his presentation, I feel more comfortable about the prospect of really digging into Overtone if I ever want to.&lt;/p&gt;
&lt;p&gt;Here&apos;s a video of his presentation:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/w7ARayiKBrE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://twitter.com/keithcallenberg&quot;&gt;Keith Callenberg&lt;/a&gt; on conveying information through sound&lt;/h2&gt;
&lt;p&gt;I learned a new word today: &lt;a href=&quot;https://en.wikipedia.org/wiki/Sonification&quot;&gt;&quot;sonification&quot;&lt;/a&gt;, the use of non-speech audio to convey information.&lt;/p&gt;
&lt;p&gt;I may have vaguely encountered sonification before, but never while fully attentive to it. That changed when Keith Callenberg, a computational scientist, gave a fine presentation in which he gave numerous striking examples of sonification. He made the important distinction between music and sonification: music is sound for an aesthetic purpose, but sonification is for information transfer.&lt;/p&gt;
&lt;p&gt;He convincingly showed why sonification is useful for data analysis, and also noted that our culture is strangely dominated by the &lt;em&gt;visual&lt;/em&gt;, so there remain many opportunities to use sound to understand data. (Also, sonification is used to help the visually impaired.)&lt;/p&gt;
&lt;p&gt;One local example he gave was a particulate monitoring study done at CMU.&lt;/p&gt;
&lt;h2&gt;David Souther on Web Audio in JavaScript&lt;/h2&gt;
&lt;p&gt;I thought we were done for the evening, but David Souther hopped up with an unscheduled lightning talk on using Web Audio in JavaScript.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed the presentations on music and sound, and got some ideas for stuff I might want to do myself. Another excellent session for Pittsburgh Code and Supply!&lt;/p&gt;
</content:encoded></item><item><title>A pretty exploratory fall hike in Frick Park and Duck Hollow</title><link>https://franklinchen.com/blog/2014/10/05/a-pretty-exploratory-fall-hike-in-frick-park-and-duck-hollow/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/05/a-pretty-exploratory-fall-hike-in-frick-park-and-duck-hollow/</guid><pubDate>Sun, 05 Oct 2014 20:25:28 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I hadn&apos;t gone hiking for a while, because of schedules, but decided on a free Sunday afternoon to simply go for an exploratory hike in our local Frick Park, as we&apos;ve done many times before. There&apos;s never any shortage of ways to try something new. Lately, this has meant exploring narrow and hilly trails that mountain bikers use. We have to be careful on these to avoid a bike coming down out of nowhere!&lt;/p&gt;
&lt;p&gt;We hiked about eight miles, starting with familiar territory but then entering the very strange!&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;I took a few &lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/sets/72157648426944075/&quot;&gt;photos&lt;/a&gt; along the way that you can check out.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15264950369/in/set-72157648426944075/player/&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Frick Park&lt;/h2&gt;
&lt;p&gt;We started by walking to and then entering Frick Park at the Blue Slide Playground at Beechwood and Nicholson, then taking Riverview Trail and then the Firelane Trail Extension down into Fern Hollow onto the Firelane Trail, meeting up with the Deer Creek Trail.&lt;/p&gt;
&lt;p&gt;After crossing Commercial St, leaving Frick Park, we headed onto Nine Mile Run Trail. We noticed that the construction site that had been there for something like two years had finally been cleared away. It was about time!&lt;/p&gt;
&lt;p&gt;It was peaceful and relaxing on Nine Mile Run.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15451702525/in/set-72157648426944075/player/&quot; width=&quot;375&quot; height=&quot;500&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Slag heap&lt;/h2&gt;
&lt;p&gt;Continuing on Nine Mile Run Trail, we reached the bridge and I was originally planning to continue on Nine Mile Run Trail, but happened to notice an intriguing steep trail up on a slag heap area right at the bridge. What the heck, why not explore it? We wished we had brought hiking poles, but fashioned some sticks from tree branches lying around, and proceeded up.&lt;/p&gt;
&lt;p&gt;In theory I could have tried to figure out where we were, since I had my phone on me, but I like randomly exploring without having any idea where we are going; there was no way to get hopelessly lost anyway.&lt;/p&gt;
&lt;p&gt;There were a whole bunch of switchbacks leading upward and we followed them for some time until reaching a particularly roller-coaster section going into a valley, and decided we had enough, especially since we spotted a mountain biker further up somewhere.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15428655696/in/set-72157648426944075/player/&quot; width=&quot;375&quot; height=&quot;500&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;We turned off and took a trail heading just downhill, hoping to emerge somewhere in &quot;civilization&quot; eventually, maybe rejoin Nine Mile Run Trail that we had abandoned at the bridge. Meanwhile, we had clear views of the Waterfront across the Monongahela River. I figured we were in Duck Hollow somewhere.&lt;/p&gt;
&lt;h2&gt;Railroad tracks&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15265131148/in/set-72157648426944075/player/&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Indeed, we emerged by the railroad tracks along the Mon. We walked along the railroad tracks for a bit and reached familiar territory, McFarren St. We got back onto the Nine Mile Run Trail to start heading home.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15428681816/in/set-72157648426944075/player/&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15265195427/in/set-72157648426944075/player/&quot; width=&quot;375&quot; height=&quot;500&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.flickr.com/photos/franklinmingchen/15448608681/in/set-72157648426944075/player/&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Back into Frick Park and home&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Many trails lead to home.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Instead of returning the way we came, we took the very windy Iron Grate Trail instead, and eventually made it back to the Blue Slide Playground (taking Jay&apos;s Short Cut) and back onto the streets of Squirrel Hill.&lt;/p&gt;
&lt;h2&gt;What were those slag heap trails anyway?&lt;/h2&gt;
&lt;p&gt;I went online and looked for information on those slag heap trails and that whole area. As far as I can tell, the following are useful information from mountain bike community descriptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mtbproject.com/trail/5492893/slag-heap-switchbacks-to-plateau&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mtbproject.com/trail/5492893/slag-heap-switchbacks-to-plateau&quot;&amp;gt;Slag heap switchbacks to plateau&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mtbproject.com/trail/4676264/crater-trail&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mtbproject.com/trail/4676264/crater-trail&quot;&amp;gt;Crater trail&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Abby and I had fun time on a great fall afternoon exploring trails we&apos;d never been on before. We definitely plan to go back and explore more, with hiking poles, ha!&lt;/p&gt;
&lt;p&gt;I&apos;m amazed by and grateful for what we can experience outdoors in nature even while embedded in the city of Pittsburgh.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Your Pawn is threatened: do you defend, advance, or trade?</title><link>https://franklinchen.com/blog/2014/10/02/the-chess-improver-your-pawn-is-threatened-do-you-defend/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/10/02/the-chess-improver-your-pawn-is-threatened-do-you-defend/</guid><pubDate>Thu, 02 Oct 2014 07:02:40 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Your Pawn is threatened: do you defend, advance, or trade?&quot;&quot;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In a chess game, both sides start out with a complete front line of Pawns, which means that to make progress, you have to break through that front line somehow. The only way to break through is to advance your own Pawns and bring out your pieces to attack your opponent&apos;s front line. At some point, a head-to-head clash occurs in which one side&apos;s Pawn is attacked by a Pawn from the other side. The question then is always:&lt;/p&gt;
&lt;p&gt;Do I advance my Pawn past the attacking Pawn (if not otherwise blocked)?
Do I capture my opponent&apos;s Pawn with mine (usually meaning a trade, unless it was a deflecting gambit)?
Do I defend my Pawn (or overprotected it, if it was already defended)?&lt;/p&gt;
&lt;p&gt;This question pops up early in the opening in particularly interesting fashion in the King&apos;s Indian Defense, in which Black challenges White&apos;s d4 Pawn with a Pawn to e5 that &quot;threatens&quot; the d4 Pawn.&lt;/p&gt;
&lt;p&gt;At club level, I see players respond in each of the different ways, and sometimes I get asked &quot;what is best?&quot; The truth is, despite the particular popularity of certain responses at elite level, all three are definitely valid reactions at club level; in fact, I see White winning many games playing each way. The important thing is to know &lt;em&gt;the reason behind each valid choice&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Even if you don&apos;t play the King&apos;s Indian Defense for either color, the strategic ideas are extremely interesting and worth studying, and can pop up in many openings.&lt;/p&gt;
&lt;p&gt;Here is a typical decision point (I have chosen the &quot;old main line&quot; rather than the modern main line because it illustrates the themes more clearly). I want to discuss the fundamental &lt;em&gt;ideas&lt;/em&gt;, not go into detailed opening variations: for that, you can consult an appropriate opening manual.&lt;/p&gt;
&lt;h2&gt;Closing the center&lt;/h2&gt;
&lt;p&gt;At club level, it is very common to see White immediately close the center by advancing d5, avoiding a trade of the d4 Pawn. Why would you want to do that?&lt;/p&gt;
&lt;h3&gt;Pros&lt;/h3&gt;
&lt;p&gt;Forever avoid any threats against the d4 Pawn, especially in light of Black&apos;s fianchettoed Bishop on g7.
Forever avoid having an e4 Pawn exposed on a half-open e-file (if Black chose to capture with …exd4).
Gain space on the Queen side.&lt;/p&gt;
&lt;h3&gt;Cons&lt;/h3&gt;
&lt;p&gt;Black&apos;s Knight gets a great outpost at c5, which is now a hole no longer covered by White&apos;s d4 Pawn.
Black can plan to maneuver to get in an …f5 Pawn break attacking White&apos;s e4 Pawn and gaining space on the King side.&lt;/p&gt;
&lt;p&gt;If you play this as White, you have committed to trying to win on the Queen side, by somehow advancing b4 to dislodge the Black Knight and somehow getting the c5 Pawn break in or taking control of the a-file or something. You are not going to win on the King side.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 { White has choices here.} 8. d5 { Closing the center.} ( 8. dxe5) ( 8. Be3) ( 8. Qc2) ( 8. Re1) 8... Nc5 9. Qc2 a5 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Exchanging Pawns&lt;/h2&gt;
&lt;p&gt;Also popular at club level is immediately exchanging Pawns.&lt;/p&gt;
&lt;h3&gt;Pros&lt;/h3&gt;
&lt;p&gt;As with closing the center, you no longer have to worry about the d4 Pawn.&lt;/p&gt;
&lt;p&gt;As with closing the center, your e4 Pawn is safe and Black&apos;s fianchettoed Bishop is blocked in.
You retain a space advantage because of the c4 Pawn controlling d5 and possibly having plans to get to c5.&lt;/p&gt;
&lt;h3&gt;Cons&lt;/h3&gt;
&lt;p&gt;Giving up control of the c5 square.
The resulting Pawn structure leaves White with no immediate Pawn break but Black may have plans to maneuver to enable …f5.&lt;/p&gt;
&lt;p&gt;If you play this as White, you have committed to trying to win on the Queen side, by somehow advancing b4, c5, b5, something like that. You are not going to win on the King side.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 8. dxe5 { White exchanges Pawns.} 8... dxe5 9. Qc2 c6 10. Rd1 Qe7 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Holding the center&lt;/h2&gt;
&lt;p&gt;Finally, the most interesting option for White is to hold the center. I think it&apos;s useful to gain experience with the first two approaches above in order to appreciate why it might be beneficial but also risky to hold the center.&lt;/p&gt;
&lt;h3&gt;Pros&lt;/h3&gt;
&lt;p&gt;White continues to develop.
Black is denied the c5 square.
Black remains cramped, because the Knight on d7 has no place to go.
White keeps the option of advancing or trading &lt;em&gt;any time in the future&lt;/em&gt; as desired, if Black does not capture first. In the case of Be3, White has a possible plan of preparing d5 followed immediately by Nd2 to protect the e4 Pawn.&lt;/p&gt;
&lt;h3&gt;Cons&lt;/h3&gt;
&lt;p&gt;Black may capture on d4, freeing up c5 for the Knight, opening the dark diagonal, and half-opening the e-file.&lt;/p&gt;
&lt;p&gt;Be3 is one of three common ways to continue developing while &quot;waiting&quot; for Black to do something, and the most subtle. It protects the d4 Pawn more, in &lt;em&gt;anticipation&lt;/em&gt; of Black capturing it.&lt;/p&gt;
&lt;p&gt;Now Black is the one with a choice: take up the challenge or put pressure on White&apos;s e4 Pawn to force White to make a decision about advancing or trading. Many variations are possible, and I&apos;m not discussing them here, but the point is that both sides are subtly fighting over what to do and what to encourage the other side to do. Note that if Black plays the waiting move …c6, White&apos;s d5 suddenly has a lot more effect than when Black&apos;s Pawn was on c7. Also, if Black plays …Re8, again, White can play d5 making Black&apos;s Rook look funny on the closed e-file. Finally, after …Ng4, White can argue that this does nothing other than misplace the Knight.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 8. Be3 { White holds the center. Now Black has a choice.} 8... exd4 ( 8... Re8 9. d5 Nh5 ) ( 8... c6 9. d5 ) ( 8... Ng4 9. Bg5 ) 9. Nxd4 Nc5 10. f3 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Another way to hold the center&lt;/h2&gt;
&lt;p&gt;Qc2 is another way to hold the center, with a double purpose:&lt;/p&gt;
&lt;p&gt;Overprotect the e4 Pawn.
Prepare to play Rd1 protecting the d4 Pawn and also threatening to capture on e5 with a discovered pin.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 8. Qc2 { White holds the center.} *&lt;/code&gt;} /&amp;gt;
A third way to hold the center&lt;/p&gt;
&lt;p&gt;Finally, Re1 is also another way to hold the center. It may look mysterious, but the point is to play Bf1 to &quot;discover&quot; overprotection of the e4 Pawn.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 8. Re1 { White holds the center.} *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Accept the sacrifice if the alternative is to lose anyway</title><link>https://franklinchen.com/blog/2014/09/18/the-chess-improver-accept-the-sacrifice-if-the-alternative-is-to-lose-anyway/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/09/18/the-chess-improver-accept-the-sacrifice-if-the-alternative-is-to-lose-anyway/</guid><pubDate>Thu, 18 Sep 2014 07:03:23 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The Chess Improver: Accept the sacrifice if the alternative is to lose anyway&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;When I was in my final year of high school, I played in the last tournament of my life before I returned to chess two decades later: I played in the 1987 Michigan High School Team Championship. I ended up winning the first board prize with a perfect score of 5 points, but I always felt funny about how I achieved that, because in one of my games I played a sacrifice that I felt guilty about for two decades. Also, that was the only tournament in my life that I ended up losing my score sheets for, so I do not even have the full score of that game. But I do remember vividly the moves leading up to the critical position, and my mindset.&lt;/p&gt;
&lt;h2&gt;Seeing the possibility of a Greek gift sacrifice&lt;/h2&gt;
&lt;p&gt;On move 10 out of the opening, I suddenly spent a huge amount of time deciding whether to play the &lt;a href=&quot;https://en.wikipedia.org/wiki/Greek_gift_sacrifice&quot;&gt;&quot;Greek gift&quot; sacrifice&lt;/a&gt; against my opponent&apos;s King, sacrificing my Bishop on h7 with check.&lt;/p&gt;
&lt;p&gt;But in my attempt to calculate a win, I &lt;em&gt;could not find a forced win&lt;/em&gt;. I saw defensive resources, so I was reluctant to play an unsound sacrifice. But the idea of playing the sacrifice really appealed to me. You have to understand that &lt;em&gt;I had never played the Greek gift sacrifice before&lt;/em&gt;, only read about it in books, and also I knew this might be the last chess tournament of my life, as I was going off to college in the fall, and I had actually &quot;retired&quot; from chess in my sophomore year of high school, and came out to play in the Michigan High School State Championship only because I had started up a chess club in my high school in the fall in hope of boosting my college application (I brought four teammates who had never played in a tournament before). I outrated my opponent by over 500 USCF rating points, so there was no need for me to play recklessly to win, so my motivation was just to finish my chess-playing days in style.&lt;/p&gt;
&lt;p&gt;I did see that I would get compensation for the sacrifice, and therefore should not lose if I played the sacrifice, but that was all I could see. Even after I went home to analyze the game, because I did not have access to good computational power in the 1980s, I did not believe I had the full truth of the position until the 2000s, on my return to chess, when chess engines by then had become very strong.&lt;/p&gt;
&lt;h2&gt;Sacrifice declined!&lt;/h2&gt;
&lt;p&gt;I was simultaneously ashamed and relieved when my opponent thought only briefly and declined the sacrifice, and therefore easily lost, being a Pawn down without compensation, and having a weakened King side also.&lt;/p&gt;
&lt;p&gt;My opponent must have concluded that my deep thought meant I had figured everything out, but in fact, my deep thought came from &lt;em&gt;not&lt;/em&gt; having figured it out! Granted, I was much higher-rated than my opponent, but &lt;em&gt;higher-rated players can make terrible moves too&lt;/em&gt;, and sometimes even deliberately as a &lt;em&gt;swindle&lt;/em&gt;, so you should think for yourself for a bit, and not always assume your higher-rated opponent has everything figured out. Granted, psychologically it was clearly a shocker to him that I thought mysteriously for such a long time moves before the sacrifice.&lt;/p&gt;
&lt;p&gt;In club play, I often see &lt;em&gt;fear of accepting sacrifices&lt;/em&gt;, and painful losses resulting from declining. The loss is usually painful because a sacrifice significantly disrupts a position, so if your position is disrupted anyway, and there is no visible immediate mate, maybe you might as well grab some material for your trouble; if the attack goes wrong, then you may have a good chance of consolidating and winning as a successful defender. Part of chess is choosing to defend.&lt;/p&gt;
&lt;p&gt;So I&apos;m saying, &lt;em&gt;accept the sacrifice&lt;/em&gt; if you honestly do not see anything wrong with doing so. You might be making a mistake, but at least make the mistake and lose rather than choosing the path of sure loss, losing material against a much higher-rated player.&lt;/p&gt;
&lt;h2&gt;How sound was the sacrifice?&lt;/h2&gt;
&lt;p&gt;The fact that White is missing the dark-squared Bishop and only has a Queen and two Knights really restricts White from having a win in this position. The only possible things White can do are try to push h4, maybe castle Queen side, and use the two Rooks somehow. Meanwhile, Black can defend the King and develop. Note that if White tries to win back an exchange, the result is an unfavorable balance of material in which White gets a Rook and a Pawn or two for two minor pieces, so it is no use for White to regain material.&lt;/p&gt;
&lt;p&gt;I&apos;ve inserted some variations into my annotations below.&lt;/p&gt;
&lt;h2&gt;Irony: there could have been an alternative Greek gift sacrifice!&lt;/h2&gt;
&lt;p&gt;The irony is that if I had played Nc3 instead of Bd2, and &quot;normal&quot; development had continued, with Black &quot;castling into it&quot;, then the Greek gift sacrifice would have been obviously sound and winning. The huge difference is that with White&apos;s dark-squared Bishop still on the board, and guarding the Knight on g5, White does not have to support the Knight with the Queen, but can calmly play h4, followed by Qg4, with a deadly barrage of discovered checks to follow: a check with the Queen or with the Bishop on c1 if the King goes to h6.&lt;/p&gt;
&lt;p&gt;Note that it is important to play h4 first, to avoid Black&apos;s tempo-gaining …f5 against the Queen on g4, because with the Pawn on h4 first, then h5+ can be played at any time, and optimally when Black&apos;s King on g6 cannot escape to f5. Check it out with a computer engine if you want to verify that it&apos;s a quick win for White.&lt;/p&gt;
&lt;p&gt;Why did I play Bd2 anyway? I had some vague idea that getting rid of Black&apos;s &quot;good&quot; Bishop for my &quot;bad&quot; one was advantageous. Also, note that I recaptured &quot;wrong&quot; with Nbxd2; I just recently wrote an article about &lt;a href=&quot;/blog/2014/09/11/the-chess-improver-the-difference-between-a-knight-developed-at-c3-and-at-d2/&quot;&gt;why Qxd2 is usually best&lt;/a&gt;. But in 1987, my positional understanding was not so good.&lt;/p&gt;
&lt;h2&gt;Some resources on the Greek gift sacrifice&lt;/h2&gt;
&lt;p&gt;A &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.chess.com/article/view/the-greek-gift-sacrifice-lives-on&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.chess.com/article/view/the-greek-gift-sacrifice-lives-on&quot;&amp;gt;well-written overview&amp;lt;/span&amp;gt; by GM Daniel Naroditsky.&lt;/p&gt;
&lt;p&gt;A previous &lt;a href=&quot;http://chessimprover.com/the-greek-gift/&quot;&gt;Chess Improver article&lt;/a&gt; by Ashvin Chauhan.&lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;https://franklinchen.com/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;2012 game of mine&lt;/a&gt; in which I played a correct Greek gift sacrifice.&lt;/p&gt;
&lt;h2&gt;The game (up to the point of the sacrifice)&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan High School Team Championship&quot;]
[Site &quot;Lapeer, MI&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;&quot;]
[Result &quot;1-0&quot;]
[ECO &quot;C02&quot;]
[EventDate &quot;1987.02.28&quot;]
[WhiteElo &quot;2050&quot;]
[WhiteTeam &quot;Ann Arbor Huron High School&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 cxd4 6. cxd4 Bb4+ $2 7. Bd2 $2 ( 7. Nc3 { Obvious and good.} 7... Nge7 8. Bd3 O-O $4 { This time the Greek gift sacrifice wins.} 9. Bxh7+ Kxh7 10. Ng5+ Kg6 11. h4 $201 ) 7... Bxd2+ 8. Nbxd2 $6 ( 8. Qxd2 { The correct recapture.} ) 8... Nge7 ( 8... Qb6 { Putting pressure on the d4 Pawn was good.} ) 9. Bd3 $6 O-O $201 ( 9... Qb6) 10. Bxh7+ $5 Kh8 $2 { In the game, my opponent declined the sacrifice, and easily lost as a result.} ( 10... Kxh7 { The critical test is to accept the sacrifice.} 11. Ng5+ Kg6 12. Qg4 f5 $201 13. Qf4 ( 13. Qg3 $2 f4 $1 { Gaining time and freeing up the f5 square.} 14. Qg4 Qe8 $1 { Not fearing any discovered check.} 15. Nxe6+ Kf7 16. Nf3 Bxe6 17. Ng5+ Kg8 18. Qxe6+ Rf7 { White&apos;s attack is over. White will end up with a Rook and two Pawns for two Knights, with nothing better than equality at best.} ) ( 13. exf6 $2 Kxf6 { Black will consolidate soon by bringing the King to safety with ...g6 and ...Kg7} 14. Nh7+ Kf7 15. Nxf8 Qxf8 { White has a Rook and Pawn for a Bishop and Knight, and Black has a clear advantage, will consolidate with ...Kg8 and ...e5.} ) 13... Rh8 { White doesn&apos;t have anough material to come up with an immediate win but has some pressure.} ) 11. Bd3 { I won after some number of unmemorable moves.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Observing Constitution Day with &quot;The Supreme Court and Privacy: The Fourth Amendment in the Digital Age&quot;</title><link>https://franklinchen.com/blog/2014/09/17/observing-constitution-day-with-the-supreme-court-and-privacy-the-fourth-amendment-in-the-digital-age/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/09/17/observing-constitution-day-with-the-supreme-court-and-privacy-the-fourth-amendment-in-the-digital-age/</guid><pubDate>Wed, 17 Sep 2014 21:54:01 GMT</pubDate><content:encoded>&lt;p&gt;I have a habit of observing Constitution Day every year by attending a presentation at CMU and thinking about issues relating to the Constitution.&lt;/p&gt;
&lt;p&gt;Last year (2013), &lt;a href=&quot;/blog/2013/09/17/on-not-celebrating-constitution-day-this-year&quot;&gt;I was too disheartened to observe Constitution Day but wrote a little bit about why&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year, I returned because the topic for discussion sounded interesting: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://thebridge.cmu.edu/organization/SLO/calendar/details/466499&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://thebridge.cmu.edu/organization/SLO/calendar/details/466499&quot;&amp;gt;Mary Jo Miller gave a talk &quot;The Supreme Court and Privacy: The Fourth Amendment in the Digital Age&quot;&amp;lt;/span&amp;gt; in the Posner Center. (Miller is a Staff Attorney for the Pennsylvania State Education Association and an adjunct professor in Carnegie Mellon&apos;s Social and Decision Sciences Department.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15274305882&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3836/15274305882_f0eaf5d8fb_b.jpg&quot; alt=&quot;IMG_20140917_163751&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Fourth_Amendment_to_the_United_States_Constitution&quot;&gt;fourth amendment&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
The right of the people to be secure in their persons, houses, papers, and effects, against unreasonable searches and seizures, shall not be violated, and no warrants shall issue, but upon probable cause, supported by oath or affirmation, and particularly describing the place to be searched, and the persons or things to be seized.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Mary Jo Miller gave an entertaining and instructive talk in which she discussed various rulings by the Supreme Court involving interpretations of the fourth amendment in various circumstances.&lt;/p&gt;
&lt;p&gt;First, she reminded us that the fourth amendment came about because of the colonialists&apos; bad experiences with England when arbitrary searches of people&apos;s home happened.&lt;/p&gt;
&lt;p&gt;Then she argued that although it is popularly held that there is a &quot;conservative&quot; (&quot;originalist&quot;) wing of the Supreme Court (typified currently by Scalia) and a &quot;liberal&quot; (&quot;living Constitution&quot;) wing (typified in the past by Stevens), on fourth amendment issues, they are not always split. In fact, she gave examples of where the Court was unanimous.&lt;/p&gt;
&lt;p&gt;The primary concern by the Court has been to respect (in the absence of probable cause) the doctrine that &quot;each man&apos;s home is his castle&quot;. Miller gave examples involving surveillance of a marijuana grower&apos;s home through a heat detector, as well as examining the contents of a drug dealer&apos;s cell phone, as being judged a violation of fourth amendment rights because of what can be considered one&apos;s &quot;home&quot;: a cell phone is actually a computer containing much of one&apos;s possession, so it is in fact one&apos;s &quot;home&quot; and requires a proper warrant in order to search it!&lt;/p&gt;
&lt;p&gt;That&apos;s about the &quot;exclusionary rule&quot; and &quot;fruits of the poison tree&quot;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/15271576131&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/5596/15271576131_6c4a8f4d5f_b.jpg&quot; alt=&quot;IMG_20140917_164820&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;What about the NSA?&lt;/h2&gt;
&lt;p&gt;After almost an hour, I had to leave, and therefore did not stay for questions and answers. I would have asked about what the current thinking is by the Court about NSA surveillance. When is information far enough removed that it is no longer considered one&apos;s &quot;home&quot;?&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I did enjoy this year&apos;s Constitution Day observance at CMU. Mary Jo Miller gave an excellent talk discussing various Supreme Court rulings and different aspects of the fourth amendment.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The difference between a Knight developed at c3 and at d2</title><link>https://franklinchen.com/blog/2014/09/11/the-chess-improver-the-difference-between-a-knight-developed-at-c3-and-at-d2/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/09/11/the-chess-improver-the-difference-between-a-knight-developed-at-c3-and-at-d2/</guid><pubDate>Thu, 11 Sep 2014 11:10:29 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The difference between a Knight developed at c3 and at d2&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;There is a well-known trap in the Bogo-Indian Defense that raises an interesting question whenever I show it to someone. The trap is as follows and involves a question of how White should recapture after a trade of Bishops by Black:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Qe7 5. g3 Nc6 6. Bg2 Bxd2+ { Now is the time to trade.} 7. Qxd2 $2 { An easy trap to fall into.} 7... Ne4 8. Qc2 Qb4+ 9. Nc3 ( 9. Nbd2 $2 { Loses the c4 Pawn.} 9... Nxd2 10. Qxd2 Qxc4 ) ( 9. Kf1 { White has forfeited castling.} ) 9... Nxc3 10. Qxc3 Qxc3+ 11. bxc3 { White has doubled Pawns and no advantage. } *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;p&gt;The question after this trap is always, &quot;Well, why would White ever want to play Qxd2 anyway, exposing the Queen to an attack by …Ne4? Isn&apos;t it obviously better to recapture with Nbxd2, simultaneously developing the Queen Knight?&quot; This is an excellent question. It is best answered by examining some long-term issues in the middlegame arising from this opening.&lt;/p&gt;
&lt;h2&gt;Comparing Knight developed at c3 and Knight at d2&lt;/h2&gt;
&lt;h3&gt;Knight at c3&lt;/h3&gt;
&lt;p&gt;First, we look at what can happen if Black mistakenly allows White to recapture the Bishop with Qxd2 instead of Nbxd2, by not taking White&apos;s Bishop early enough for the &quot;trap&quot;.&lt;/p&gt;
&lt;p&gt;Black&apos;s plan in this variation of the Bogo-Indian is to play …d6 and …e5, attacking White&apos;s Pawn on d4 and encouraging White to close the center with d5. After the center is closed, all attention must be directed toward &lt;em&gt;Pawn breaks&lt;/em&gt; by either side.&lt;/p&gt;
&lt;p&gt;White is acknowledged by theory to have some advantage in this opening, having more space and a lead in development, and can think about attacking either on the Queen side (with plans such as a3, b4, c5) or on the King side (with plans such as e4, Ne1, Nd3, f4). But Black has a solid position, and can aim for counterplay with …a5 with …Na6 or …Nbd7 aiming for …Nc5, and/or …c6, to prevent White from gaining too much ground on the Queen side, and perhaps preparing slowly for …f5 to further attack White&apos;s e4 Pawn chain base.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Qe7 5. g3 Nc6 6. Bg2 O-O $6 7. O-O Bxd2 8. Qxd2 d6 9. Nc3 { White&apos;s Queen Knight is better placed at c3 than at d2.} 9... e5 10. d5 Nb8 11. e4 a5 12. Ne1 Nbd7 13. Nd3 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Knight at d2&lt;/h3&gt;
&lt;p&gt;By contrast, let&apos;s see what happens when Black correctly &lt;em&gt;forces&lt;/em&gt; White to recapture the Bishop with Nbxd2.&lt;/p&gt;
&lt;p&gt;below is a sample continuation, in which at move 13, probably White&apos;s best move is the paradoxical undeveloping move Nb1! The Knight at d2 is not doing much, being blocked by White&apos;s own c4 and e4 Pawns. More important, it is not controlling the important a4 square (that Black can possibly aim to occupy with …a4), and it is not controlling the b5 square that could also be important (in a later attack against Black&apos;s c7 and d6).&lt;/p&gt;
&lt;p&gt;But this retreat wastes two moves (the original Nbxd2 and the Nb1) before getting to c3. However, in the Qxd2 situation, White wasted a move with the Queen, which is not so well-placed on d2: White&apos;s Queen is actually better placed on d1, where it controls a4, than on d2. But White&apos;s Rooks are not connected, so White will eventually want to develop the Queen anyway, perhaps to c2. So overall, White has &lt;em&gt;lost one move&lt;/em&gt;, net, and, and this does make some difference in White advantage, even in a closed position, because the extra White move in the Nc3 variation makes it that much harder for Black to catch up in development and begin counterplay.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Qe7 5. g3 Nc6 6. Bg2 Bxd2+ { Now is the time to trade.} 7. Nbxd2 d6 8. O-O e5 9. d5 Nb8 10. e4 a5 11. Ne1 O-O 12. Nd3 Nbd7 13. Nb1 $1 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The summary of the situation is that paradoxically, since White wants the Knight on c3 anyway eventually, &quot;saving&quot; time by recapturing with development by playing Nbxd2 actually ends up wasting a move because the Knight will have to spend two more moves to get back to c3. Knights are funny pieces because any time a Knight has a choice to go to one of two different squares, if it chooses to go to one of them, it will always require two more moves to get to the alternate square. This is something to think about when planning Knight maneuvers: it is efficient, when possible, to plan to get to a desired square with the smallest number of moves possible (given the tactical constraints).&lt;/p&gt;
&lt;p&gt;The other point to remember is that &quot;wasting&quot; moves to get a Knight to a good square may be justified. &quot;Backwards&quot; Knight moves are very important in chess, because a Knight on a good square can be so powerful that it is worth spending the time to get the Knight there. Look at how White thematically &quot;undevelops&quot; the Knight on f3, where it is doing nothing, to e1 and then to d3, to control the c5 square and b4 square (in case of a Pawn advance to b4 in the future) and also regain pressure on Black&apos;s e5 Pawn and help support an f4 advance.&lt;/p&gt;
&lt;p&gt;Study of typical middlegame positions in the Bogo-Indian can pay off with better understanding of the roles of both of White&apos;s Knights and both of Black&apos;s Knights (Black&apos;s King Knight was not discussed here, but it has plans too).&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Fianchettoing your King&apos;s Bishop may weaken your c4-Pawn</title><link>https://franklinchen.com/blog/2014/09/04/the-chess-improver-fianchettoing-your-kings-bishop-may-weaken-your-c4-pawn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/09/04/the-chess-improver-fianchettoing-your-kings-bishop-may-weaken-your-c4-pawn/</guid><pubDate>Thu, 04 Sep 2014 11:11:17 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Fianchettoing your King&apos;s Bishop may weaken your c4-Pawn&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I saw a curious position recently in which strangely, White was in a position to &lt;em&gt;lose a c-Pawn placed on c4&lt;/em&gt;. I then remembered that it is actually not uncommon for this Pawn on c4 to be undefended when White has fianchettoed the Bishop to g2, because unlike classical development of the Bishop, where the Bishop is on e2 or d3 and therefore protects the Pawn on c4, the Bishop on g2 does nothing to protect the light squares from f1 to a6. Check out this position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Bb4+ 6. Bd2 Qe7 7. O-O Bxd2 8. Qxd2 O-O 9. Nc3 Nc6 10. e4 Na5 { Attacking White&apos;s undefended c4-Pawn.} 11. Qe2 $2 ( 11. Qd3 { White keeps a comfortable space advantage.} ) 11... Qb4 { White cannot play the desired b3.} 12. Nd2 Qxb2 13. Rfc1 Qb4 { Black&apos;s Queen escapes.} *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;A standard theme for Black counterplay&lt;/h2&gt;
&lt;p&gt;Many middlegame plans by Black in these kinds of opening development setups in fact target White&apos;s c4 Pawn and the light squares on the Queen side in general, while White tries to make something long-term out of increased central control of e5 and d5 (over classical development of the Bishop) and of course the long diagonal from h1 to a8. These positions can be very subtle for both sides to play. In this article I&apos;m not discussing any of these subtleties, but simply pointing out a common theme for Black.&lt;/p&gt;
&lt;p&gt;A variation of the King&apos;s Indian Defense:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 g6 3. g3 Bg7 4. Bg2 O-O 5. Nc3 d6 6. Nf3 Nc6 7. O-O a6 8. d5 Na5 9. Nd2 c5 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;p&gt;A variation of the English Opening:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. c4 c5 2. Nf3 Nf6 3. Nc3 Nc6 4. d4 cxd4 5. Nxd4 e6 6. g3 Qb6 7. Nb3 Ne5 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;p&gt;And of course, the concept behind a popular approach to the Queen&apos;s Indian Defense:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Ba6 *&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>I just saw and heard the most amazing performance of Schumann&apos;s Fantasy for piano by Alexandre Moutouzkine</title><link>https://franklinchen.com/blog/2014/08/28/i-just-saw-and-heard-the-most-amazing-performance-of-schumanns-fantasy-for-piano-by-alexandre-moutouzkine/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/28/i-just-saw-and-heard-the-most-amazing-performance-of-schumanns-fantasy-for-piano-by-alexandre-moutouzkine/</guid><pubDate>Fri, 29 Aug 2014 03:42:37 GMT</pubDate><content:encoded>&lt;p&gt;My single favorite work of music by Robert Schumann is his &lt;a href=&quot;https://en.wikipedia.org/wiki/Fantasie_in_C_%28Schumann%29&quot;&gt;Fantasie in C for piano&lt;/a&gt;, Op. 17. I was introduced to this piece in a &lt;a href=&quot;/blog/2013/05/07/happy-birthday-johannes-brahms/&quot;&gt;course for non-musicians I took first semester of freshman year in college&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to confess that in the past two decades since discovering that piece, I never found a perfect performance of it, although Sviatoslav Richter&apos;s came close, and I remember rushing to buy it when it was reissued on CD (back when one had to wait to transition from LPs). But I always felt something was missing.&lt;/p&gt;
&lt;p&gt;I just accidentally discovered the performance of a lifetime, captured in &lt;em&gt;video&lt;/em&gt; on YouTube. Why did I like this one so much?&lt;/p&gt;
&lt;h2&gt;YouTube accidental find&lt;/h2&gt;
&lt;p&gt;Just last week I had a YouTube accidental find, of &lt;a href=&quot;/blog/2014/08/21/discovering-the-beautiful-keyboard-playing-of-robert-hill-by-accident-on-youtube-changed-my-life/&quot;&gt;Robert Hill&lt;/a&gt;. I had another find now, while not even searching for Schumann. Somehow my YouTube sidebar popped up a suggestion to check out a performance of Schumann&apos;s Fantasie in C for piano by some random dude named Alexandre Moutouzkine.&lt;/p&gt;
&lt;p&gt;The YouTube video appeared to be highly rated, and was recorded live at a piano competition in 2011. &lt;em&gt;I&apos;m a sucker for live performances with actual video&lt;/em&gt;, so I checked it out.&lt;/p&gt;
&lt;h2&gt;Alexandre Moutouzkine&lt;/h2&gt;
&lt;p&gt;First impressions are important. Well, I was hooked after just twenty seconds, because he was playing it the way I hear it in my mind! The lyrical flow and phrasing and drama got me hooked. Not square, but freely emotional, yet under control. My experience was also much enhanced by seeing him in action, as he moved his body completely in sync with the music, as though his entire being was part of the instrument. I&apos;m not a fan of musicians who move a lot but don&apos;t actually add to the musical expression, but it seemed like this guy was the real deal.&lt;/p&gt;
&lt;p&gt;Before a minute was up, I was already totally entranced by his fluidity of tempo and dynamic contrast. He was maxing out on emotional expression in just the way that I&apos;ve always wanted to hear and see this piece performed. Schumann wrote this in a dark period of life when it was not clear he would ever get to marry Clara Wieck (which he eventually did).&lt;/p&gt;
&lt;p&gt;I&apos;ll stop with the blow-by-blow, but just say that I was sitting on the edge of my seat at home for half an hour while he performed the entirety of this piece. I was not disappointed. It was like the spirit of Schumann had entered him and he was showing how Schumann felt. The final movement, the slow movement, was particularly lovely.&lt;/p&gt;
&lt;p&gt;A bit of nitpicking: of course there were some botched notes, but it would be stupid to focus on that; more seriously, the second movement (fiendishly difficult to play, admittedly) was not as solid as it could have been. But I loved the first and third movements.&lt;/p&gt;
&lt;h2&gt;Video vs. just audio?&lt;/h2&gt;
&lt;p&gt;My experience does leave me with some questions. Is it possible that I am actually &lt;em&gt;deceived&lt;/em&gt; about the quality of interpretation because there was video and I saw the performer up close? What if there were video of Richter available? Would it change my mind about him either positively or negatively? Some naysayers would argue we should do some kind of blind comparison. But I don&apos;t think that. Because I perform music now as an amateur, and prefer attending live performances of music, I understand now (as I did not when I merely collected audio recordings and listened) that the &quot;music&quot; does not just exist on paper or as audio, but as the full performance context, and seeing video helps a lot in filling in that context.&lt;/p&gt;
&lt;p&gt;This issue has come up this year &lt;a href=&quot;https://www.henle.de/blog/en/2014/03/31/listeners-are-also-only-human/&quot;&gt;in the news&lt;/a&gt;, and I may write more about it in the future.&lt;/p&gt;
&lt;p&gt;Some naysayers in the YouTube comments decry the physical emoting by Alexandre Moutouzkine, but I do not.&lt;/p&gt;
&lt;p&gt;I am ready to admit that at least part of what was missing for me in listening to Sviatoslav Richter was that I did not &lt;em&gt;see&lt;/em&gt; him, but only heard him.&lt;/p&gt;
&lt;h2&gt;Listen for yourself&lt;/h2&gt;
&lt;p&gt;Here&apos;s the video.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/mGgya_-xvdo&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;More about Alexandre Moutouzkine&lt;/h2&gt;
&lt;p&gt;Only after watching the video did I do a Web search on this young guy. He&apos;s 34 now and here&apos;s a &lt;a href=&quot;https://en.wikipedia.org/wiki/Alexandre_Moutouzkine&quot;&gt;Wikipedia page about him&lt;/a&gt;. Definitely someone to keep an eye on.&lt;/p&gt;
&lt;h2&gt;Performances by Sviatoslav Richter&lt;/h2&gt;
&lt;p&gt;If you want to compare (but only audio, no video), here is Sviatoslav&apos;s classic 1961 studio recording (the one I&apos;ve treasured for decades):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CEjhA3QVdJA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;There&apos;s also a 1959 Prague live recording, which I was not aware of till looking Richter up on YouTube just now; it does have more of a sense of freedom than the studio recording:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/FzmTmOUb9Sw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Video footage of Richter in action&lt;/h3&gt;
&lt;p&gt;There is video footage of Richter in action in other music. I particularly like this video of Richter playing Brahms&apos; intermezzo in E minor, Op. 116, No. 5. You can see Richter rocking rhythmically to the music as he plays it:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/wSsobHfa37A&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was very pleased to have discovered Alexandre Moutouzkine&apos;s live performance of Schumann&apos;s Fantasie in C for piano. Time will tell whether I will always consider it as amazing as I do now, but it really touched my heart.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you consider it important to experience music live and/or visually? Or do you think that is just a distraction and the best way to experience music is privately through pure audio?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: What not to do if you have the isolated Pawn</title><link>https://franklinchen.com/blog/2014/08/28/the-chess-improver-what-not-to-do-if-you-have-the-isolated-pawn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/28/the-chess-improver-what-not-to-do-if-you-have-the-isolated-pawn/</guid><pubDate>Thu, 28 Aug 2014 11:11:37 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;What not to do if you have the isolated Pawn&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A typical introduction to positional principles in chess covers the advantages and disadvantages of having an &lt;em&gt;isolated Pawn&lt;/em&gt;, a Pawn that has no Pawns on the files adjacent to it and therefore cannot be protected by another Pawn. (In particular, the most common isolated Pawn is the isolated d-Pawn.) Since it is easiest to understand why an isolated Pawn might be a long-term static disadvantage, many players reflexively go out of their way to avoid ending up with one. The situation is not helped by the use of illustrative games in which one side has an isolated Pawn and suffers quite a bit before losing the Pawn and the game.&lt;/p&gt;
&lt;p&gt;But as a student of mine pointed out while studying such games, the situation is not actually that simple. Yes, it can be frustrating defending a position in which you have an isolated Pawn without any of the benefits (not discussed here) of having one, but that does not mean the position is actually lost. Whether your opponent can actually make any &lt;em&gt;progress&lt;/em&gt; is another matter. It is instructive to know how to &lt;em&gt;play for a draw&lt;/em&gt; in an unpleasant defensive position. Much chess instruction focuses on how to win, but ignores questions of how to avoid losing.&lt;/p&gt;
&lt;p&gt;Here&apos;s a classic isolated-Pawn game that ended poorly for the defender.&lt;/p&gt;
&lt;h2&gt;Korchnoi-Karpov, World Championship in Merano, 1981&lt;/h2&gt;
&lt;h3&gt;Sliding from an advantage to equality&lt;/h3&gt;
&lt;p&gt;In the opening, Korchnoi as White accepted an isolated d-Pawn position. Karpov responded with a &quot;Knight on the rim&quot; move 11…Nh5 to trade off dark-squared Bishops. This wasn&apos;t actually very good. It potentially gave White precious time to create a thematic good position: White could have played Re1, Ne5 with pressure against Black&apos;s f7 and e6 Pawns, then begun a thematic attack on Black&apos;s King side (especially with the h6 advance weakening the King side already), either through a Qd3/Bc2 lineup and/or a Rook lift with Re3/Rg3, something like that. (Full discussion of how to attack if you have an isolated d-Pawn is outside the scope of this article.)&lt;/p&gt;
&lt;p&gt;White dawdled with 13 Bb3 and then 15 Qe2, which did nothing to create threats against Black&apos;s position. And then White played 16 Ne4? which resulted in a simplification that left White fighting for a draw.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Simplifying trades are what you do if you are playing for a draw&lt;/em&gt; with an isolated Pawn, to reduce the other side&apos;s attacking possibilities.&lt;/p&gt;
&lt;h3&gt;Refusing to accept that the goal should be to defend a draw&lt;/h3&gt;
&lt;p&gt;On move 19, White had the opportunity to trade Rooks and practically guarantee a draw. The fewer the pieces, especially powerful long-ranging major pieces, Rooks and Queens, the fewer opportunities for the opposing side to win the Pawn and still have a middlegame initiative to win the game. So White should have &lt;em&gt;simplified&lt;/em&gt; here. The task of drawing would still have been slightly tricky, but doable, requiring keeping track of Black&apos;s Queen, Rook, and Knight activity.&lt;/p&gt;
&lt;p&gt;On move 22, White made another mistake and played the backward-moving 22 Qe1? It was best to simply &lt;em&gt;wait around and do nothing&lt;/em&gt;, after having everything well-defended: White&apos;s Queen was centralized at e4, protecting the d4 Pawn and exerting pressure on the d5 square.&lt;/p&gt;
&lt;p&gt;Often, in a defensive position, the best thing to do is to &lt;em&gt;wait for the draw to happen&lt;/em&gt;. Trying a funny plan when there is nothing really going for you can backfire badly. White has no winning chances in this position.&lt;/p&gt;
&lt;h3&gt;Unnecessary passivity&lt;/h3&gt;
&lt;p&gt;On move 23, White played 23 Rcd3? which just turned a fine Rook (on the open c-file) into a purely defensive piece. OK, the idea may have been to dissolve the isolated Pawn by playing d5, but this was easily parried by 23…Rd6.&lt;/p&gt;
&lt;h3&gt;Final simplification&lt;/h3&gt;
&lt;p&gt;On move 27, White traded the Bishop for the Knight on d5. Objectively this is OK, actually, if the goal is to draw. But the followup shows that was apparently not the goal. So the real problem is a mismatch between an idea and what is consistent with that idea.&lt;/p&gt;
&lt;h3&gt;Own pieces in disarray&lt;/h3&gt;
&lt;p&gt;28 Rb3? was a terrible move that took a defensive Rook and removed it from its defensive function, and also exposed the White Queen to a pin of the d-Pawn, in case Black ever got in …e5. 29 Qc3? compounded the problem by leaving the Rook on d1 completely undefended.&lt;/p&gt;
&lt;p&gt;33 Qa3? removed the Queen from the action in the center and King side after White had already weakened his King&apos;s position with the necessary 30 f4 earlier.&lt;/p&gt;
&lt;p&gt;Now all that was needed for Black to win was to tactically take advantage of White&apos;s uncoordinated pieces and unprotected King, and Karpov did that precisely.&lt;/p&gt;
&lt;h3&gt;An important note about how to draw&lt;/h3&gt;
&lt;p&gt;Sometimes the easiest way to draw is to just give up the weak isolated Pawn without a fight, in exchange for activity and simplification. Instead of risking King unsafety with 30 f4, White could have decided to just lose the d-Pawn but keep King safety intact and Rooks and Queen active, say with 30 Qf3. I will confess that I have been held to a draw a couple of times in games in which I expended effort to win an isolated Pawn but at the cost of massive simplification and could not win the ending.&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;To answer my student&apos;s question about this game: yes, there were multiple turning points in the game at which White could have held still and played for a draw. Especially in the case of an isolated Pawn and much piece simplification, there is often no way to win the Pawn or force some other concession somewhere else, if one just puts pieces on good defensive squares and then just waits. The only way for the other side to win is to break through by distracting the defensive pieces and taking advantage of pins and the single possible Pawn break (…e5 here) to create threats elsewhere on the board (such as on an exposed King). Note that the game was not lost because of losing the isolated Pawn: the game was lost by trying too hard to hang on to it.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;World Championship&quot;]
[Site &quot;Merano&quot;]
[Date &quot;1981&quot;]
[Round &quot;?&quot;]
[White &quot;Korchnoi&quot;]
[Black &quot;Karpov&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;D53&quot;]
[PlyCount &quot;86&quot;]
[TimeControl &quot;40/7200:20/3600:1800&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;c4 e6 2. Nc3 d5 3. d4 Be7 4. Nf3 Nf6 5. Bg5 h6 6. Bh4 O-O 7. Rc1 $5 dxc4 8. e3 c5 9. Bxc4 cxd4 10. exd4 $5 ( 10. Nxd4 { Safe, avoiding the isolated Pawn.} ) 10... Nc6 11. O-O Nh5 $6 ( 11... b6 { Normal and good.} ) 12. Bxe7 Nxe7 13. Bb3 $6 { I don&apos;t like this committal move before completing development.} ( 13. Re1 { Natural and good. In particular, White has potential thematic sacrifice ideas against f7 and e6 if Black is not careful.} 13... Nf6 14. Ne5 { I love White&apos;s position here.} ) 13... Nf6 14. Ne5 Bd7 15. Qe2 $2 { The standard plan of putting the Queen on d3 and Bishop on c2.} ( 15. Re1 Rc8 16. Qd3 ) 15... Rc8 ( 15... Bc6) 16. Ne4 $2 { Makes little sense. White can only play for a draw after simplifying like this.} 16... Nxe4 17. Qxe4 Bc6 18. Nxc6 Rxc6 $201 { White has no winning chances and should think about securing the draw.} 19. Rc3 $2 ( 19. Rxc6 bxc6 20. Rd1 { Simplifying makes it harder for Black to make progress. Black can win the d4 Pawn only by piling up the Queen Rook and Knight on it, but White can just keep everything defended and chase the Knight away as needed. Black&apos;s isolated Queen side Pawns prevent a successful Pawn break there.} ) 19... Qd6 20. g3 Rd8 21. Rd1 Rb6 $1 { Keeping the Rook on the board and active.} 22. Qe1 $2 { Just undefending the d4 Pawn and going passive.} ( 22. Kg2 { White could just sit around and wait.} ) 22... Qd7 23. Rcd3 $2 { Useless, since Black is not going to allow d5.} 23... Rd6 { Black has effectively immobilized White. The game should still be a draw, because Black cannot win the d4 Pawn and does not have a useful Pawn break.} 24. Qe4 Qc6 25. Qf4 Nd5 26. Qd2 Qb6 27. Bxd5 Rxd5 $201 { Only Queens and Rooks and Pawns are left. White does have to watch for a possible ...e5 Pawn break.} 28. Rb3 $2 { Terrible, making the d4 Pawn pinned because of the Queen on d2.} ( 28. Qc3 { Keeping everything protected should hold the draw with ease.} ) 28... Qc6 29. Qc3 $2 Qd7 { Now Black can play for ...e5 to win the d4 Pawn.} 30. f4 { Now White has weakened the King and the Rook on b3 is out of play.} ( 30. Qf3 $5 { White could have played to draw a one-Pawn down ending.} ) 30... b6 ( 30... f6 { Immediate aggression was possible.} ) 31. Rb4 b5 32. a4 bxa4 33. Qa3 $2 { Now the Queen is totally out of the action, far away from the center and from the defense of the King.} 33... a5 34. Rxa4 Qb5 { White&apos;s Rook on a4 is immobilized and White&apos;s Queen is stuck defending it.} 35. Rd2 e5 36. fxe5 Rxe5 { Black already has a won position. Black will invade White&apos;s back rank soon.} 37. Qa1 $2 Qe8 { Threatening to win White&apos;s Queen on the back rank.} 38. dxe5 ( 38. Rd1 Re2 { And White will be mated shortly as the Queen invades.} ) 38... Rxd2 39. Rxa5 Qc6 { Threatening mate on g2.} 40. Ra8+ Kh7 41. Qb1+ g6 42. Qf1 Qc5+ 43. Kh1 Qd5+ { White loses the Rook on a8.} 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Discovering the beautiful keyboard playing of Robert Hill by accident on YouTube changed my life</title><link>https://franklinchen.com/blog/2014/08/21/discovering-the-beautiful-keyboard-playing-of-robert-hill-by-accident-on-youtube-changed-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/21/discovering-the-beautiful-keyboard-playing-of-robert-hill-by-accident-on-youtube-changed-my-life/</guid><pubDate>Fri, 22 Aug 2014 02:14:23 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.mh-freiburg.de/typo3temp/&lt;em&gt;processed&lt;/em&gt;/csm_prof.-dr.-robert-hill_c7981b16bc.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.mh-freiburg.de/typo3temp/&lt;em&gt;processed&lt;/em&gt;/csm_prof.-dr.-robert-hill_c7981b16bc.jpg&quot;&amp;gt;[image: Robert Hill]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Recently, I completely accidentally discovered a fascinating musician, &lt;a href=&quot;https://en.wikipedia.org/wiki/Robert_Hill_%28musician%29&quot;&gt;Robert Hill&lt;/a&gt;, on &lt;a href=&quot;https://www.youtube.com/user/earlymus&quot;&gt;YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The story is as you might expect: I heard a piece of music, and wanted to find some performance of it by somebody, anybody on YouTube as long as it had a decent user rating (yes, I find ratings actually useful when checking out unfamiliar music), and I happened to come across some random guy&apos;s performance, and it was so fascinating that I looked at other uploads of his, subscribed to &lt;a href=&quot;https://www.youtube.com/user/earlymus&quot;&gt;his YouTube channel&lt;/a&gt;, and looked him up on the Web to find out who he was!&lt;/p&gt;
&lt;p&gt;It&apos;s especially great that he regularly uploads new videos to his YouTube channel.&lt;/p&gt;
&lt;p&gt;So who is Robert Hill, and why do I like his performances so much that I&apos;m recommending that you check them out?&lt;/p&gt;
&lt;h2&gt;How I found Robert Hill&lt;/h2&gt;
&lt;p&gt;The short story is that I just heard someone playing, on piano, Johann Sebastian Bach&apos;s Allemande from the &lt;a href=&quot;https://en.wikipedia.org/wiki/French_Suites_%28Bach%29&quot;&gt;French Suite&lt;/a&gt; no. 4 in E-flat, BWV 815.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note that I actually have had very little interest in much of Bach&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Works_for_keyboard_by_J.S._Bach&quot;&gt;keyboard music&lt;/a&gt; and have almost completely ignored them for decades&lt;/em&gt;; there are only two exceptions: the Goldberg Variations and some of the Well-Tempered Clavier.  In particular, I have not listened to the &lt;a href=&quot;https://en.wikipedia.org/wiki/French_Suites_%28Bach%29&quot;&gt;French Suites&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/English_Suites_%28Bach%29&quot;&gt;English Suites&lt;/a&gt;, or &lt;a href=&quot;https://en.wikipedia.org/wiki/Partitas_for_keyboard_%28Bach%29&quot;&gt;Partitas&lt;/a&gt; at all!&lt;/p&gt;
&lt;p&gt;But because I just accidentally heard this Allemande played live, and liked it, I wanted to hear it again when I got home, and so I went to YouTube to find it.&lt;/p&gt;
&lt;p&gt;I found a lot of performances online, of course, but I&apos;m a sucker for the unusual, so I was particularly interested when I saw in the search results a link to some guy, Robert Hill, performing it on an unusual instrument I had never heard of in my life, a &quot;lute-harpsichord&quot;. And it got well over a hundred thumb-up ratings and only one thumb-down, so of course I was going to check it out!&lt;/p&gt;
&lt;p&gt;I watched the video, and was &lt;em&gt;totally blown away&lt;/em&gt; by the beauty of the performance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The instrument has a gorgeous sound.&lt;/li&gt;
&lt;li&gt;Robert Hill played very expressively, with the full freedom and emotion that treasure.&lt;/li&gt;
&lt;li&gt;Structurally, I could hear the different voices and phrases with total clarity because of how he plays.&lt;/li&gt;
&lt;li&gt;This single performance made me think that I needed to give old Bach another shot and check out more of his keyboard music.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Listen for yourself (it&apos;s less than two minutes long):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/woh8UHdjl1M&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Who is Robert Hill?&lt;/h2&gt;
&lt;p&gt;I did a Web search on Robert Hill and found &lt;a href=&quot;https://en.wikipedia.org/wiki/Robert_Hill_%28musician%29&quot;&gt;information about him&lt;/a&gt;. He is an American keyboard instrument performer (especially early keyboard instruments such as harpsichord, clavichord, lute-harpsichord, fortepiano) and musicologist.&lt;/p&gt;
&lt;p&gt;I had to search hard to find an actual Web site of his own, and it&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://robert-hill.tripod.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://robert-hill.tripod.com/&quot;&amp;gt;here&amp;lt;/span&amp;gt;. It basically looks like it hasn&apos;t been updated since around 2001, which is also his last recording time period on his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://robert-hill.tripod.com/id11.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://robert-hill.tripod.com/id11.html&quot;&amp;gt;discography&amp;lt;/span&amp;gt;. At some point he must have decided to just share his music through YouTube. He is a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mh-freiburg.de/lehrende/person/details/hill/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mh-freiburg.de/lehrende/person/details/hill/&quot;&amp;gt;music professor in Freiburg&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;As I just mentioned, my fascination with the performances of Robert Hill comes from his &lt;em&gt;expressiveness&lt;/em&gt;, which comes about from adjustments of tempo, rhetorical gestures, ornamentation, rhythmic sense. He plays a lot more expressively than many keyboard musicians do today, and I like that. I now believe that I was turned off by much of Bach&apos;s keyboard music not because of Bach, but because of the relatively bland performances his music has received, especially from modern pianists. Bach was an emotional man living in an emotional age (the Baroque era of &lt;a href=&quot;https://en.wikipedia.org/wiki/Doctrine_of_the_affections&quot;&gt;affect&lt;/a&gt;), and I feel blessed that musicians like Robert Hill are taking this seriously. There are others, of course, besides him, but I think his performances have a particular edge to them.&lt;/p&gt;
&lt;h2&gt;Regular harpsichord&lt;/h2&gt;
&lt;p&gt;Here is an example of Robert Hill playing regular harpsichord.&lt;/p&gt;
&lt;h3&gt;Bach&apos;s Allemande from the Partita in D major, BWV 828&lt;/h3&gt;
&lt;p&gt;I discovered this beautiful, haunting work of music by Bach for the first time, by sheer accident, when browsing Hill&apos;s YouTube channel (live performance from 1997):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/oEoqPSFklkE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I cannot believe I went four decades without ever having heard this piece in my life. Now I can&apos;t get it out of my head.&lt;/p&gt;
&lt;p&gt;Hill did some extreme things in this performance (tempo modifications and hesitations) that are not to my taste, but I applaud him for having the courage to play from the heart, because much of what he did spoke to mine! He lives dangerously. Maybe that&apos;s why he only posts live recording clips to YouTube now rather than make CDs?&lt;/p&gt;
&lt;h2&gt;Fortepiano&lt;/h2&gt;
&lt;p&gt;He also plays fortepiano, which is a fascinating instrument I love. I have mentioned my first experience with a fortepiano in college in a blog post earlier this year celebrating the &lt;a href=&quot;/blog/2014/03/08/happy-300th-birthday-carl-philipp-emanuel-bach/&quot;&gt;300th birthday of Johann Sebastian&apos;s son Carl Philipp Emanuel&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;CPE Bach&apos;s Fantasie in F-sharp minor&lt;/h3&gt;
&lt;p&gt;Heck, I had to check out Hill&apos;s performance of my favorite CPE Bach keyboard work. In my earlier blog post, I had praised Andreas Staier&apos;s performance I discovered in college, but now having heard Hill&apos;s, I have another favorite (live from April 2014). This totally plays up Hill&apos;s maximally emotive expressive style:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/LOT_nUPvE98&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;JS Bach: Well-Tempered Clavier selections&lt;/h3&gt;
&lt;p&gt;It was fascinating to find Hill performing JS Bach on fortepiano; I had never heard anyone playing JS Bach on fortepiano before. I love that he experiments with different styles.&lt;/p&gt;
&lt;p&gt;The famous WTC I, Prelude in C major, in a fluid, beautiful Romantic-style (vs. Baroque-style) performance he just uploaded a couple of days ago:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/jiBQD0vV5qI&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;A totally gorgeous Romantic-style interpretation of the slow Bach WTC I, Prelude in C# minor:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/9iGj4U7nqqY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I love how he makes full use of the expressive possibilities of the fortepiano (power and dynamics and sustain).&lt;/p&gt;
&lt;h3&gt;Beethoven&apos;s &quot;Moonlight&quot; sonata&lt;/h3&gt;
&lt;p&gt;Yes, he plays Beethoven too, on fortepiano.&lt;/p&gt;
&lt;p&gt;Note that Beethoven did call it &quot;sonata quasi fantasia&quot; so it should be played freely &quot;like a fantasy&quot;, freely, and he does this. If you&apos;ve only heard it played more &quot;squarely&quot;, check this out. In this case, I prefer a more subtle freedom than the exaggerated gestures Hill provides, because I feel he disrupts the rhythmic flow too much, so I consider his experiment not a full success, but still, I respect his willingness to go all out:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/6gpmZsqOzZs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Pianoforte!&lt;/h2&gt;
&lt;p&gt;Yes, of course Robert Hill plays the modern piano too. And I love what he does with it.&lt;/p&gt;
&lt;h3&gt;Brahms&lt;/h3&gt;
&lt;p&gt;Hill brings out the different voices very well, the counterpoint through the thick textures of Brahms. These are truly beautiful performances of some of &lt;a href=&quot;/blog/2013/05/07/happy-birthday-johannes-brahms/&quot;&gt;my favorite piano music of all time, Brahms&apos; intermezzi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A passionate performance of Op. 117, No. 2 in B-flat minor:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/U_rlk4H-DQ0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;And Op. 119, No. 1 in B minor (some favorite performances of which I discussed in &lt;a href=&quot;/blog/2013/05/07/happy-birthday-johannes-brahms/&quot;&gt;my blog post last year&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/NOpe_KvXQzA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;This is one of the most emotionally raw performances I have ever heard of this intermezzo. Hill makes the most of the suspensions, silences, dissonances, and clashing lines.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Discovering the musical performances of Robert Hill on keyboard instruments has been one of the happy surprises of my life this year. Not only has he provided me listening pleasure, but also has sharpened my conception of what the music he plays is about and how to express it. He has forever changed my expectation from myself of how I should play music. I expect that from now on, I will never again hold back from &quot;weird&quot; interpretations that I feel come from my heart and mind. I don&apos;t expect that all my experiments will succeed, but seeing someone else try, and publicly, how can I not do likewise?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you recently discovered a musician who has changed your hearing and/or your own playing? Who was it and what did you learn?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: For the love of doubled Pawns</title><link>https://franklinchen.com/blog/2014/08/21/the-chess-improver-for-the-love-of-doubled-pawns/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/21/the-chess-improver-for-the-love-of-doubled-pawns/</guid><pubDate>Thu, 21 Aug 2014 11:09:57 GMT</pubDate><content:encoded>&lt;p&gt;I wrote &quot;For the love of doubled Pawns&quot; for The Chess Improver blog.&lt;/p&gt;
&lt;p&gt;Unfortunately, the original article at &lt;code&gt;https://chessimprover.com/for-the-love-of-doubled-pawns/&lt;/code&gt; could not be recovered from the Wayback Machine or any other archive. We apologize that this content has been lost.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Beware of trying to win poisoned Pawns</title><link>https://franklinchen.com/blog/2014/08/14/the-chess-improver-beware-of-trying-to-win-poisoned-pawns/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/14/the-chess-improver-beware-of-trying-to-win-poisoned-pawns/</guid><pubDate>Thu, 14 Aug 2014 11:15:31 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Beware of trying to win poisoned Pawns&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;An important and advanced theme in chess openings is that of the &quot;poisoned&quot; Pawn belonging to one&apos;s opponent, a Pawn that is unprotected and may be attacked with hope of winning it. I like to call &quot;poisoned&quot; the specific Pawn on one of four squares, directly diagonal to the opponent&apos;s Rook in the initial position, that is often tempting to try to win using one&apos;s Queen when the protecting Bishop is away:&lt;/p&gt;
&lt;p&gt;White&apos;s Pawn on b2 (which Black can try to win with a move like …Qb6)
Black&apos;s Pawn on b7 (which White can try to win with a move like Qb3)
White&apos;s Pawn on g2 (which Black can try to win with a move like …Qg5)
Black&apos;s Pawn on g7 (which White can try to win with a move like Qg4)&lt;/p&gt;
&lt;h2&gt;A paradox in pedagogy&lt;/h2&gt;
&lt;p&gt;An important part of one&apos;s chess education is understanding the value of &lt;em&gt;material&lt;/em&gt;, of trying to keep one&apos;s Pawns and pieces protected and finding opportunities to &lt;em&gt;win material&lt;/em&gt; by capturing the opponent&apos;s Pawns and pieces, either for free or for an advantageous trade according to a heuristic formula of worth (such as taking a Rook, worth 5 points, in return for giving up one&apos;s Knight, worth 3 points).&lt;/p&gt;
&lt;p&gt;The paradox is that once one has absorbed this lesson, at some point one must learn to balance the hard-earned attention to material with more nuanced attention to other factors in a game. On general principles, as the next step after internalizing the value of material, I advise against club players trying to play opening variations involving winning a poisoned Pawn, because the effort to win it usually requires wasting &lt;em&gt;three&lt;/em&gt; moves:&lt;/p&gt;
&lt;p&gt;Moving the Queen to attack the Pawn.
Capturing the Pawn.
Retreating the Queen to avoid getting captured or trapped.&lt;/p&gt;
&lt;p&gt;Three moves is quite a lot of time to lose for the sake of winning a Pawn in the opening, when development and one&apos;s own King safety are critical and can be compromised. Granted, there are some very popular opening variations that involve taking the risk and winning such a Pawn, but they require absolute precision to even be able to defend a draw against a fierce attack coming from falling so behind in development.&lt;/p&gt;
&lt;p&gt;At some point after one&apos;s tactical and defensive strength has improved enough, it may be worth trying these risky ideas, but I have seen too many instances of a club player moving a Queen out early in the game to win material and then failing to consolidate well. This is a habit that, although it sometimes works against weak competition, results in postponing one&apos;s development as a more principled middle game player.&lt;/p&gt;
&lt;h2&gt;Some concrete examples of disaster&lt;/h2&gt;
&lt;h3&gt;Quick one&lt;/h3&gt;
&lt;p&gt;Here is a brutal example of punishing an early Queen excursion.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;1-0&quot;]
[ECO &quot;C23&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Bc4 Qg5 $2 3. Nf3 ( 3. g3 $6 { Even passive defense gives White an advantage.} ) 3... Qxg2 $4 4. Rg1 Qh3 5. Bxf7+ $1 Kd8 ( 5... Kxf7 $4 6. Ng5+ { White wins the Queen.} ) 6. d4 exd4 $4 7. Rg3 { Black&apos;s Queen is trapped.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;More subtle one&lt;/h3&gt;
&lt;p&gt;The following is a more subtle win in which Black, a world-class defender, won 2 Pawns at the expense of a whopping 9 Queen moves in the opening and middle game, and finally lost after hardly developing any pieces.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;Wijk aan Zee&quot;]
[Date &quot;2003&quot;]
[Round &quot;&quot;]
[White &quot;Shirov, Alexei&quot;]
[Black &quot;Bareev, Evgeny&quot;]
[Result &quot;1-0&quot;]
[ECO &quot;C11&quot;]
[PlyCount &quot;75&quot;]
[TimeControl &quot;40/7200:20/3600:1800&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. Nf3 Nc6 7. Be3 cxd4 8. Nxd4 Bc5 9. Qd2 Bxd4 $6 { With a concrete idea of going after White&apos;s b-Pawn.} 10. Bxd4 Nxd4 11. Qxd4 Qb6 { Black&apos;s idea was to &quot;force&quot; an exchange of Queens.} 12. Qd2 { Offering a poisoned Pawn instead.} 12... Qxb2 13. Rb1 Qa3 14. Nb5 Qxa2 { White sacrifices a second Pawn.} 15. Nd6+ Kf8 $2 ( 15... Ke7 { Better, allowing the King to try to escape to the Queen side.} ) 16. Rd1 Qb2 17. Be2 Qb6 { Black has wasted 5 moves to win 2 Pawns.} 18. c4 d4 19. Bf3 a5 20. O-O d3+ 21. Kh1 $1 Qd4 22. Nb5 $1 { Giving up a third Pawn. White already has a winning position!} 22... Qc5 { Trying to keep the c file blocked, at least.} ( 22... Qxc4 $4 23. Nd6 { Black is dead because White will come down on the c and d files.} ) 23. Qxd3 g6 24. Nd6 { Threatening to win the Knight on d7.} 24... Nb6 25. Rb1 Kg7 26. Rb5 Qc7 27. Qd4 { Now attacking the Knight on b6.} 27... Nd7 ( 27... Ra6 28. Rfb1 ) 28. f5 $1 gxf5 29. Nxf5+ { Breaking through to the King.} 29... exf5 30. e6+ Ne5 31. Rxe5 f6 32. Rxf5 Rf8 33. Bd5 { Slow but good enough.} ( 33. Rg5+ Kh8 34. Bxb7 { A more forcing win.} ) 33... Qe7 34. Rh5 Kh8 $2 ( 34... Bxe6 35. Re1 ) 35. Be4 Bxe6 36. Rxh7+ Qxh7 37. Bxh7 Kxh7 38. Qe4+ 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Understanding Clojure transducers through types</title><link>https://franklinchen.com/blog/2014/08/07/understanding-cloure-transducers-through-types/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/07/understanding-cloure-transducers-through-types/</guid><pubDate>Fri, 08 Aug 2014 02:58:16 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, Rich Hickey published a blog post, &lt;a href=&quot;https://web.archive.org/web/20200218074821/http://blog.cognitect.com:80/blog/2014/8/6/transducers-are-coming&quot;&gt;&quot;Transducers are Coming&quot;&lt;/a&gt;, which attracted a lot of attention.&lt;/p&gt;
&lt;p&gt;I have a confession to make, which I have made before: I find it very difficult to understand ideas or code not presented with &lt;em&gt;types&lt;/em&gt;. So I decided that the only way I could possibly understand what &quot;transducers&quot; are would be to actually implement them in a typed language. I ended up doing so and am sharing my findings here.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Vague types in the original blog post&lt;/h2&gt;
&lt;p&gt;Rich informally gave some type signatures in his blog post:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;;reducing function signature
whatever, input -&amp;gt; whatever

;;transducer signature
(whatever, input -&amp;gt; whatever) -&amp;gt; (whatever, input -&amp;gt; whatever)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This was, unfortunately, not very helpful. It is hard to make sense of this pseudo-notation for types. What is quantified over what? And what is bound to what? I&apos;ll explain later what I mean by these questions.&lt;/p&gt;
&lt;h2&gt;First discussion thread I saw&lt;/h2&gt;
&lt;p&gt;There was much tweeting online about transducers after Rich Hickey&apos;s initial announcement; the tweets did not help me, except for links posted to discussion elsewhere.&lt;/p&gt;
&lt;p&gt;One of them was &lt;a href=&quot;https://web.archive.org/web/20241119073826/https://news.ycombinator.com/item?id=8143905&quot;&gt;on Hacker News&lt;/a&gt;. I browsed through it but found it mostly not useful. The problem was that although a lot of interesting Haskell code was thrown around, it tended to be &lt;em&gt;related&lt;/em&gt; to transducers but not an &lt;em&gt;exact&lt;/em&gt; translation of the concept. I already had my own intuitions about transducers being related to well-known types such as &lt;a href=&quot;https://web.archive.org/web/20150103104231/https://www.haskell.org/haskellwiki/Foldable_and_Traversable&quot;&gt;foldables&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Iteratee&quot;&gt;iteratees&lt;/a&gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://lens.github.io/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://lens.github.io/&quot;&amp;gt;lenses&amp;lt;/span&amp;gt;, etc. That &quot;ordinary function composition&quot; was involved immediately suggested the connections, because function composition is huge in these existing Haskell libraries.&lt;/p&gt;
&lt;p&gt;But what I wanted was to understand transducers &lt;em&gt;as they are&lt;/em&gt;, before even thinking about generalizations and comparisons.&lt;/p&gt;
&lt;h3&gt;What are the types?&lt;/h3&gt;
&lt;p&gt;Rich Hickey &lt;a href=&quot;https://web.archive.org/web/20220503211407/https://news.ycombinator.com/item?id=8144385&quot;&gt;informally offered some types&lt;/a&gt; (which he said were &quot;a la Haskell&quot;) to try to help out:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ;;reducing fn
    x-&amp;gt;a-&amp;gt;x

    ;;transducer fn
    (x-&amp;gt;a-&amp;gt;x)-&amp;gt;(x-&amp;gt;b-&amp;gt;x)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK, by using type variables &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, and &lt;code&gt;x&lt;/code&gt;, that indicates what is bound to what. The blog post should have used this notation rather than&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;;transducer signature
(whatever, input -&amp;gt; whatever) -&amp;gt; (whatever, input -&amp;gt; whatever)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Sample Clojure code&lt;/h3&gt;
&lt;p&gt;He also posted some sample Clojure code:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/b5aefa622180681e1c81&quot;&gt;View Gist on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Second discussion thread I saw&lt;/h2&gt;
&lt;p&gt;Then today, I saw a discussion thread on Reddit, titled &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/&quot;&amp;gt;&quot;Clojure&apos;s Transducers are Perverse Lenses&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Actual runnable Haskell code&lt;/h3&gt;
&lt;p&gt;Rich finally posted some actual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/&quot;&amp;gt;type-checked, runnable Haskell code&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Transducers in Haskell

mapping :: (a -&amp;gt; b) -&amp;gt; (r -&amp;gt; b -&amp;gt; r) -&amp;gt; (r -&amp;gt; a -&amp;gt; r)
-- Original was (b -&amp;gt; a) -&amp;gt; (r -&amp;gt; a -&amp;gt; r) -&amp;gt; (r -&amp;gt; b -&amp;gt; r)
-- but Michael O&apos;Keefe in comment pointed out this is misleading
mapping f xf r a = xf r (f a)

filtering :: (a -&amp;gt; Bool) -&amp;gt; (r -&amp;gt; a -&amp;gt; r) -&amp;gt; (r -&amp;gt; a -&amp;gt; r)
filtering p xf r a = if p a then xf r a else r

flatmapping :: (a -&amp;gt; [b]) -&amp;gt; (r -&amp;gt; b -&amp;gt; r) -&amp;gt; (r -&amp;gt; a -&amp;gt; r)
flatmapping f xf r a = foldl xf r (f a)

-- for exposition only, yes, conj is gross for lazy lists
-- in Clojure conj and left folds dominate
conj xs x = xs ++ [x]
xlist xf = foldl (xf conj) []

-- build any old list function with its transducer, all the same way
xmap :: (a -&amp;gt; b) -&amp;gt; [a] -&amp;gt; [b]
xmap f = xlist $ mapping f

xfilter :: (a -&amp;gt; Bool) -&amp;gt; [a] -&amp;gt; [a]
xfilter p = xlist $ filtering p

xflatmap :: (a -&amp;gt; [b]) -&amp;gt; [a] -&amp;gt; [b]
xflatmap f = xlist $ flatmapping f

-- again, not interesting for lists, but the same transform
-- can be put to use wherever there&apos;s a step fn

xform :: (r -&amp;gt; Integer -&amp;gt; r) -&amp;gt; (r -&amp;gt; Integer -&amp;gt; r)
xform = mapping (+ 1) . filtering even . flatmapping (\x -&amp;gt; [0 .. x])


print $ xlist xform [1..5]
-- [0,1,2,0,1,2,3,4,0,1,2,3,4,5,6]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After this post, I knew it would not take me long to figure out transducers.&lt;/p&gt;
&lt;h2&gt;Refactoring his Haskell code&lt;/h2&gt;
&lt;p&gt;Two things to notice about the original code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has long, low-level function types rather than types that actually &lt;em&gt;name&lt;/em&gt; the concepts being discussed (&lt;em&gt;reducers&lt;/em&gt; and &lt;em&gt;transducers&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;It uses hardcoded list types &lt;code&gt;[a]&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Type synonyms and higher-rank types&lt;/h3&gt;
&lt;p&gt;Defining lots and lots of types (whether synonyms or &lt;a href=&quot;https://web.archive.org/web/20150103100905/https://www.haskell.org/haskellwiki/Newtype&quot;&gt;newtypes&lt;/a&gt; is standard practice when programming in a modern typed language. OK, so I defined a type synonym&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Left reduce
type Reducer a r = r -&amp;gt; a -&amp;gt; r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But what about transducer? This is trickier.&lt;/p&gt;
&lt;p&gt;An &lt;em&gt;invalid&lt;/em&gt; attempt at a type would be&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Illegal!
type Transducer a b = Reducer a r -&amp;gt; Reducer b r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;because the type variable &lt;code&gt;r&lt;/code&gt; is not bound in the type definition. And it would be incorrect to just randomly add &lt;code&gt;r&lt;/code&gt; on the left hand side as an extra parameter to the &lt;code&gt;Transducer&lt;/code&gt; type, because in fact it is &lt;em&gt;critical&lt;/em&gt; that a transducer &lt;em&gt;does not care&lt;/em&gt; about the underlying reducer&apos;s return type &lt;code&gt;r&lt;/code&gt;. How do we write the desired type?&lt;/p&gt;
&lt;p&gt;It turns out you need &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.haskell.org/haskellwiki/Rank-N_types&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.haskell.org/haskellwiki/Rank-N_types&quot;&amp;gt;higher-rank types&amp;lt;/span&amp;gt;. Rank-1 types are not sufficient; we need a rank-2 type to quantify &lt;code&gt;r&lt;/code&gt;, to say that a transducer from &lt;code&gt;a&lt;/code&gt; to &lt;code&gt;b&lt;/code&gt; is a transformation that takes a reducer to a specific &lt;code&gt;r&lt;/code&gt; and returns another reducer to the &lt;em&gt;same&lt;/em&gt; &lt;code&gt;r&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Here&apos;s where the rank-2 type is needed
type Transducer a b = forall r . Reducer a r -&amp;gt; Reducer b r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we can see more clearly some &lt;em&gt;completely generic&lt;/em&gt; ways to create a transducer:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mapping :: (a -&amp;gt; b) -&amp;gt; Transducer b a
mapping f xf r a = xf r (f a)

filtering :: (a -&amp;gt; Bool) -&amp;gt; Transducer a a
filtering p xf r a = if p a then xf r a else r
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;A bit of history&lt;/h4&gt;
&lt;p&gt;Higher-rank types are a powerful technique for expressing &quot;hiding&quot; of unnecessary details about types going on somewhere. My first recollection of the real world use of rank-2 types is from 1994 (the year I started using Haskell, although I did not actually use it in my work as a software engineer until 1995), when I was excited to read a paper by John Launchbury and Simon Peyton Jones that solved, using a rank-2 type, a specific, important, practical problem, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.3299&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.3299&quot;&amp;gt;&quot;Lazy Functional State Threads&quot;&amp;lt;/span&amp;gt;; twenty years later, their &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hackage.haskell.org/package/base-4.7.0.1/docs/Control-Monad-ST.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hackage.haskell.org/package/base-4.7.0.1/docs/Control-Monad-ST.html&quot;&amp;gt;ST monad&amp;lt;/span&amp;gt; is still part of the standard library!&lt;/p&gt;
&lt;h3&gt;Introducing type classes&lt;/h3&gt;
&lt;p&gt;Clojure uses &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://clojure.org/protocols&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://clojure.org/protocols&quot;&amp;gt;protocols&amp;lt;/span&amp;gt; as an abstraction mechanism, and the &quot;magic&quot; of transducers uses protocols. In Haskell, type classes are the major abstraction mechanism (this is true of Scala also).&lt;/p&gt;
&lt;p&gt;So I abstracted away from the hardcoded list-oriented functions and values in Rich Hickey&apos;s Haskell code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;foldl&lt;/code&gt; abstracted to a &lt;code&gt;class Foldable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;conj&lt;/code&gt; and empty list &lt;code&gt;[]&lt;/code&gt; abstracted to a &lt;code&gt;class Conjable&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;-- Left fold
class Foldable f where
  fold :: Transducer a (f a)

class Conjable f where
  empty :: f a
  conj :: Reducer a (f a)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note our reliance on transducing and reducing from one type &lt;code&gt;a&lt;/code&gt; to another, &lt;code&gt;f a&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;code&gt;Foldable&lt;/code&gt; constraint&lt;/h4&gt;
&lt;p&gt;Unlike &lt;code&gt;mapping&lt;/code&gt; and &lt;code&gt;filtering&lt;/code&gt;, &lt;code&gt;flatmapping&lt;/code&gt; is &lt;em&gt;not completely generic&lt;/em&gt;, because it depends on something being &lt;code&gt;Foldable&lt;/code&gt; (implementing a &lt;code&gt;fold&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flatmapping :: Foldable f =&amp;gt; (a -&amp;gt; f b) -&amp;gt; Transducer b a
flatmapping f xf r a = fold xf r (f a)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;code&gt;Conjable&lt;/code&gt; constraint&lt;/h4&gt;
&lt;p&gt;Finally, here&apos;s the originally list-specific code that now depends only on &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Conjable&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- I changed Rich Hickey&apos;s code to be more general than just list
-- but accept anything Conjable
xlist :: (Foldable f, Conjable f) =&amp;gt; Transducer b a -&amp;gt; f a -&amp;gt; f b
xlist xf = fold (xf conj) empty

-- build any old Foldable function with its transducer, all the same way
xmap :: (Foldable f, Conjable f) =&amp;gt; (a -&amp;gt; b) -&amp;gt; f a -&amp;gt; f b
xmap f = xlist $ mapping f

xfilter :: (Foldable f, Conjable f) =&amp;gt; (a -&amp;gt; Bool) -&amp;gt; f a -&amp;gt; f a
xfilter p = xlist $ filtering p

xflatmap :: (Foldable f, Conjable f) =&amp;gt; (a -&amp;gt; f b) -&amp;gt; f a -&amp;gt; f b
xflatmap f = xlist $ flatmapping f
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;List-specific stuff&lt;/h3&gt;
&lt;p&gt;Here is the list-specific code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- Stuff specialized to lists.
-- To use another type, just make it a Foldable and Conjable.
instance Foldable [] where
  fold = foldl

-- for exposition only, yes, conj is gross for lazy lists
-- in Clojure conj and left folds dominate
instance Conjable [] where
  empty = []
  conj xs x = xs ++ [x]

-- Note: the type does not say anything about Foldable or Conjable,
-- even though the implementation just happens to use a list!
xform :: Transducer Integer Integer
xform = mapping (+ 1) . filtering even . flatmapping (\x -&amp;gt; [0 .. x])

-- Again, this can munge anything Foldable and Conjable, not just a list.
munge :: (Foldable f, Conjable f) =&amp;gt; f Integer -&amp;gt; f Integer
munge = xlist xform
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice some very important properties of this code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;xform&lt;/code&gt; has a type that does not mention lists at all, even though it is implemented using a list and cannot compile without the list &lt;code&gt;instance&lt;/code&gt; implementations.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;munge&lt;/code&gt; also does not mention lists, and can transform anything that is &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Conjable&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- munge a list
-- [0,1,2,0,1,2,3,4,0,1,2,3,4,5,6]
example1 :: [Integer]
example1 = munge [1..5]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Implementing another type to illustrate the genericity of transducers&lt;/h3&gt;
&lt;p&gt;To illustrate Rich Hickey&apos;s main point, I implemented instances of &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Conjable&lt;/code&gt; for a standard Haskell &lt;code&gt;Vector&lt;/code&gt; library as an alternate &quot;collection-like&quot; type.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- For example using Vector instead of list
import qualified Data.Vector as V

-- Implement Foldable, Conjable type classes for Vector
instance Foldable V.Vector where
  fold = V.foldl

instance Conjable V.Vector where
  empty = V.empty
  conj = V.snoc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And we can run &lt;code&gt;munge&lt;/code&gt; directly on a vector instead of a list, &lt;em&gt;without making any changes&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- return a vector rather than a list; note the fact that munge actually
-- internally uses a list
example2 :: V.Vector Integer
example2 = munge $ V.enumFromN 1 5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is &lt;em&gt;code reuse&lt;/em&gt; at its best.&lt;/p&gt;
&lt;p&gt;Note that there is nothing that ties transducers to any concrete &quot;collection&quot; type. We could write instances of &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Conjable&lt;/code&gt; for some kind of &quot;channel&quot; abstraction, for example, and instantaneously be able to munge data coming from it and to another. In fact, this is already what is done in the real world, where Haskell and Scala are used in production at places like Facebook and Twitter to efficiently handle large amounts of data.&lt;/p&gt;
&lt;h2&gt;My code repository&lt;/h2&gt;
&lt;p&gt;My complete code is available &lt;a href=&quot;https://github.com/FranklinChen/clojure-transducers-in-haskell&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was pretty exciting to see the announcement of the transducers library for Clojure, because it represents a level of abstraction that I think has not been expressed much in the world of dynamically typed languages, although the techniques are two decades old in the Haskell community in a statically typed setting. And I hope that I was able to convey the sheer elegance of Haskell as a way to express interesting types with practical ramifications for abstraction and pluggability.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: When weaknesses didn&apos;t matter (and when they did)</title><link>https://franklinchen.com/blog/2014/08/07/the-chess-improver-when-weaknesses-didnt-matter-and-when-they-did/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/07/the-chess-improver-when-weaknesses-didnt-matter-and-when-they-did/</guid><pubDate>Thu, 07 Aug 2014 11:09:42 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;When weaknesses didn&apos;t matter (and when they did)&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;When one first begins learning about &quot;positional chess&quot;, one quickly learns concepts such as &quot;weaknesses&quot;, such as&lt;/p&gt;
&lt;p&gt;weak square in your territory (a square you don&apos;t have much control over, especially if you cannot protect it with one of your own Pawns)
backward Pawn (a Pawn that is behind its neighbor Pawn(s) and therefore cannot be protected by another Pawn)
weakness on a half-open file (such that the opponent can multiply attack your Pawns and pieces by means of a battery of Rooks and a Queen)&lt;/p&gt;
&lt;p&gt;These are very important concepts, and one is taught to recognize these patterns and avoid weaknesses. One is often also shown instructive games in which one side had these weaknesses and eventually lost. This is all well and good, and an important step in chess improvement is to understand these structural weaknesses and to try to avoid them for one&apos;s own setup as well as try to induce them and exploit them in one&apos;s opponent&apos;s setup.&lt;/p&gt;
&lt;p&gt;However, time and again, when I work with chess players to help them improve, I get asked some very good questions:&lt;/p&gt;
&lt;p&gt;&quot;The position looks bad, but is it really that bad?&quot;
&quot;What do I do if I end up in one of these positions with weaknesses?&quot;&lt;/p&gt;
&lt;p&gt;In other words, many chess books geared at improvement present a biased view of the game, showing &quot;how to plan an attack&quot; and &quot;how to punish weaknesses&quot;, rather than &quot;how to defend&quot; and &quot;how to deal with having weaknesses&quot;. They present exciting games where somebody wins. Well, today I present a &quot;boring&quot; game where nobody wins, despite Black having all three of the example weaknesses I mentioned at the beginning of this article! And in fact, nobody was really ever in danger of losing. I think boring, &quot;correct&quot; games have much to teach as well as the exciting, flawed ones.&lt;/p&gt;
&lt;h2&gt;Summary of the game Baramidze-Leko, Dortmund 2014&lt;/h2&gt;
&lt;p&gt;I saw this game while following the Dortmund 2014 tournament earlier. Nobody annotated it, because it was so boring. But I thought it would be a great illustration of when &quot;weaknesses&quot; don&apos;t matter, and why.&lt;/p&gt;
&lt;p&gt;At move 12 in an Open Catalan, a characteristic Pawn structure arose, in which Black can be considered to have certain weaknesses: the backward c-Pawn on c7 cannot advance to c5, because of White&apos;s bind with the Pawns on b4 and d4 controlling c5, and White has the half-open c-file. Also, White has the extra center Pawn (d-Pawn) vs. Black&apos;s c-Pawn. So it could be considered that Black might be in trouble.&lt;/p&gt;
&lt;p&gt;But a &quot;weakness&quot; is a problem only if it can be exploited. In this kind of position, White usually tries some combination of these ideas (see the game Kramnik-Carlsen, Dortmund 2007 at the end of this article, for example):&lt;/p&gt;
&lt;p&gt;plant a Knight on c5 or a5
plant a piece on c6 to constrict Black
double Rooks on the half-open c-file
win Black&apos;s c-Pawn
advance e4 to get the big Pawn center&lt;/p&gt;
&lt;p&gt;However, Black in this game basically thwarted all of these ideas:&lt;/p&gt;
&lt;p&gt;Move 13: maneuvered the Queen to a8, controlling not only c6 but the long diagonal and prevented e4
Move 15: advanced with c6 after the light-squared Bishops were traded off, so even though the c-Pawn is still backward, it is defensible; also, this prepared for a5 counterplay
Move 16: White, under danger of a5 counterplay against the b-Pawn, decided to trade Knights to allow the dark-squared Bishop to protect b4.
Move 17: maneuvered a Knight to b6, noting that White&apos;s attempt to bind the c5 square had the side effect of creating a White weak square at c4
Move 19: a5 created counterplay against White&apos;s b-Pawn and ensured that White would end up with an isolated Queen side Pawn
Move 20: Nc4 put the Knight on a great outpost in White&apos;s weak c4 square
Move 23: White could not bear to leave Black&apos;s Knight on c4 and forced a trade&lt;/p&gt;
&lt;p&gt;After the final simplification on move 23, the game could have been called a draw already. Each side had a Queen, two Rooks, and a dark-squared Bishop.&lt;/p&gt;
&lt;p&gt;White still had a bind on c5, but so what? In the rest of the game, he tried putting a Bishop there, then a Queen, then a Rook, but to no avail. That &quot;outpost&quot; did not help with any further penetration. If White had a Knight to put on c5, the story could have been very different, but note how in the game, Black virtually forced two Knight trades. Every trade brought Black closer to a comfortable position, because Knights are the best pieces to use against weaknesses, since if they can reach a good outpost, they can attack effectively from there.&lt;/p&gt;
&lt;p&gt;All of Black&apos;s most important Pawns (b5, c6, e6) were on light squares, which meant they were immune from attack by White&apos;s only remaining minor piece, the dark-squared Bishop. Meanwhile, White had an isolated a-Pawn on a dark square to attend to on a3. Given this situation, and no Pawn breaks on the King side, the inevitable conclusion to the game was a draw, and it was agreed so after almost thirty more moves of shuffling around.&lt;/p&gt;
&lt;p&gt;What conclusions can we draw from this game? One is that it is quite feasible to attempt to defend a position with weaknesses, if you play actively and force simplification in your favor so that your weaknesses do not matter. Another conclusion, unfortunately, might be that this main line opening variation of the Catalan, in which Black willingly plays dxc4 and then goes for counterplay with b5, allowing White to create a bind on c5, is drawish for both sides when each plays correctly.&lt;/p&gt;
&lt;p&gt;However, there was once a time when this plan by White was very powerful, in the hands of Vladimir Kramnik, against those who did not adopt the right defensive plan as Black. In fact, 7 years ago at Dortmund 2007, Kramnik beat Magnus Carlsen with the Catalan. I have attached this game below so that you can see what it looks like when White&apos;s idea works perfectly! Make note of every mistake that Carlsen made as Black, allowing White to execute his plan cleanly.&lt;/p&gt;
&lt;h2&gt;The complete game Baramidze-Leko, Dortmund 2014&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Sparkassen-Chess-Meeting 2014&quot;]
[Site &quot;Dortmund&quot;]
[Date &quot;2014.07.16&quot;]
[Round &quot;4&quot;]
[White &quot;Baramidze, David&quot;]
[Black &quot;Leko, Peter&quot;]
[Result &quot;1/2-1/2&quot;]
[BlackElo &quot;2737&quot;]
[ECO &quot;E05&quot;]
[EventCountry &quot;GER&quot;]
[EventDate &quot;2014.??.??&quot;]
[PlyCount &quot;103&quot;]
[WhiteElo &quot;2616&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O dxc4 7. Qa4 a6 8. Qxc4 b5 9. Qc2 Bb7 10. Bd2 Bd6 11. a3 Nbd7 12. b4 { White has established a bind on the c5 square, and hopes to create pressure on the half-open c-file against Black&apos;s backward c-Pawn.} 12... Ra7 13. Nc3 Qa8 14. Nh4 Bxg2 15. Nxg2 c6 { Black correctly places the c-Pawn on a light-colored square out of reach of successful White attack and fortifies the b-Pawn in preparation for counterplay with the a-Pawn.} 16. Ne4 Nxe4 17. Qxe4 Nb6 { White has a weakness on c4.} 18. Rfc1 Rc8 19. Ra2 a5 20. bxa5 Nc4 21. Bb4 Bc7 22. Ne3 Nxe3 23. Qxe3 Bxa5 { The players could safely have agreed to a draw here. Neither side should be able to make progress.} 24. Bc5 Ra6 25. Rac2 h6 26. Qe4 Qb7 27. e3 Qd7 28. Bb4 Bd8 29. Rc3 Bf6 30. h4 Bd8 31. R1c2 Bf6 32. Rc1 Bd8 33. R1c2 Bf6 34. Kg2 Bd8 35. Qe5 Bf6 36. Qc5 Rd8 37. Qh5 Rc8 38. Qc5 Rd8 39. Qh5 Rc8 40. Kh2 Rd8 41. Qf3 Rc8 42. Qh1 Qc7 43. Qe4 Qd7 44. Qh1 Qc7 45. Qe4 Qd7 46. h5 Bd8 47. Qh1 Bf6 48. Qc1 Rb6 49. Rc5 Be7 50. R5c3 Bf6 51. Rc5 Be7 52. R5c3 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Kramnik-Carlsen, Dortmund 2007&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Dortmund&quot;]
[Site &quot;Dortmund, Germany&quot;]
[Date &quot;2007.06.27&quot;]
[Round &quot;4&quot;]
[White &quot;Vladimir Kramnik&quot;]
[Black &quot;Magnus Carlsen&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2698&quot;]
[ECO &quot;E05&quot;]
[EventDate &quot;2007.06.22&quot;]
[PlyCount &quot;59&quot;]
[WhiteElo &quot;2811&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 Nf6 2. c4 e6 3. g3 d5 4. d4 Be7 5. Bg2 O-O 6. O-O dxc4 7. Qc2 a6 8. Qxc4 b5 9. Qc2 Bb7 10. Bd2 Nc6 $6 { The beginning of a suspect plan.} 11. e3 Nb4 12. Bxb4 Bxb4 13. a3 Be7 $2 { This looks very passive. The Black Pawn on c7 is looking weak, and White has total control of the e5 square.} 14. Nbd2 Rc8 15. b4 { Establishing the classic bind on c5.} 15... a5 { The thematic attempt at counterplay.} 16. Ne5 { If Black&apos;s dark Bishop were at d6 rather than e7, White&apos;s Knight would not have gotten this strong.} 16... Nd5 $2 { A serious blunder.} ( 16... Bxg2 17. Kxg2 c6 { Trading off the light-squared Bishops and advancing c6 thematically to defend the Queen side.} ) 17. Nb3 $1 { Sacrificing the b-Pawn in return for domination with the Knight.} 17... axb4 18. Na5 Ba8 19. Nac6 Bxc6 $2 ( 19... Qe8 20. Bxd5 exd5 21. Nxe7+ Qxe7 22. axb4 c6 { Looks terrible, but the simplification means the position may be defensible.} ) 20. Nxc6 Qd7 21. Bxd5 exd5 22. axb4 { White still has a monster Knight on c6.} 22... Rfe8 23. Ra5 { Black&apos;s Queen side is completely ruptured.} 23... Bf8 24. Ne5 Qe6 25. Rxb5 { Winning a critical Pawn.} 25... Rb8 $2 { Giving up another Pawn.} 26. Rxb8 Rxb8 27. Qxc7 Bd6 ( 27... Rxb4 $4 28. Ra1 { It&apos;s game over as White threatens Nd7 and further invasion.} ) 28. Qa5 Bxb4 $4 29. Rb1 Qd6 30. Qa4 { White will win more material shortly and the game.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Thoughts on the construction of the new Frick Environmental Center</title><link>https://franklinchen.com/blog/2014/08/05/thoughts-on-the-construction-of-the-new-frick-environmental-center/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/08/05/thoughts-on-the-construction-of-the-new-frick-environmental-center/</guid><pubDate>Wed, 06 Aug 2014 01:12:30 GMT</pubDate><content:encoded>&lt;p&gt;Almost exactly twelve years ago, in 2002, tragedy struck in Frick Park in Pittsburgh. I was on a long evening run in Frick Park when I unwittingly came across what had happened earlier in the day.&lt;/p&gt;
&lt;h2&gt;From my journal, August 4, 2002&lt;/h2&gt;
&lt;p&gt;&quot;91 degrees, heat index 93. The Frick Park entrance was closed off for
some reason with tape, so that I could not access the water fountain I
had counted on using, so I ran up to Forbes instead and to Braddock to
get a fountain at that end of the park.&quot;&lt;/p&gt;
&lt;p&gt;Later in the evening, I found out what had happened:&lt;/p&gt;
&lt;p&gt;&quot;Whoa!!!  The Frick Environmental Center was burned down in the
morning.  No wonder it was all closed off when I tried to run to the
water fountain.&quot;&lt;/p&gt;
&lt;p&gt;This was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://old.post-gazette.com/neigh_city/20020805frickpark0805p1.asp&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://old.post-gazette.com/neigh_city/20020805frickpark0805p1.asp&quot;&amp;gt;reported the next day in the Post-Gazette&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Construction&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.post-gazette.com/local/city/2014/08/04/Frick-Environmental-Center-construction-begins/stories/201408040171&quot;&gt;Yesterday&lt;/a&gt;, construction of the new &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghparks.org/environmentalcenter&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghparks.org/environmentalcenter&quot;&amp;gt;Frick Environmental Center&amp;lt;/span&amp;gt; began, finally, after twelve years of uncertainty and controversy.&lt;/p&gt;
&lt;p&gt;On my evening run tonight (very cool, in the 60s, this summer, unlike the summer of twelve years ago!), I checked out the construction site.&lt;/p&gt;
&lt;p&gt;Road sign on Beechwood Blvd:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/14817138516&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3882/14817138516_f9529cdba9_b.jpg&quot; alt=&quot;Road sign for Frick Environmental Center&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Old burned building still there:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/14653568337&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/5581/14653568337_6f5ec39932_b.jpg&quot; alt=&quot;Old Frick Environmental Center&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some trail detour signs:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/franklinmingchen/14840109625&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/3914/14840109625_f49a9061fb_b.jpg&quot; alt=&quot;Trails detoured for Frick Environmental Center construction&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Controversy&lt;/h2&gt;
&lt;p&gt;There was controversy because of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghcitypaper.com/pittsburgh/natural-selection-critics-question-choice-of-site-for-new-frick-environmental-center/Content?oid=1760832&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghcitypaper.com/pittsburgh/natural-selection-critics-question-choice-of-site-for-new-frick-environmental-center/Content?oid=1760832&quot;&amp;gt;concerns&amp;lt;/span&amp;gt; about the impact of the major development planned on Frick Park, which has been prized by many (certainly by me!) as the &quot;wildest&quot; space in Pittsburgh.&lt;/p&gt;
&lt;p&gt;I understand the concerns, and realize there are some major tradeoffs in creating a new, fancy Environmental Center. It is &lt;a href=&quot;https://web.archive.org/web/20160122043405/https://pittsburghparks.wordpress.com/2014/06/26/like-a-pheonix-rebuilding-a-new-frick-environmental-center/&quot;&gt;argued by the Pittsburgh Parks Conservancy&lt;/a&gt; that there are potentially tremendous benefits to having a modern community facility for education, especially for children. While I regret that some of the wildness of this part of Frick Park will be demolished, I hope that bringing interesting programs to children, especially urban children who might otherwise fail to ever appreciate nature, will be worth the development.&lt;/p&gt;
&lt;p&gt;I will miss not accessing some trails of the park from this direction for a while, but having sadly seen the old burned building lying around abandoned for twelve years, I look forward to its being replaced.&lt;/p&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;If you live in the neighborhood of Frick Park, how do you feel about the controversy over the new Frick Environmental Center? Do you believe the risks are uncertain or not worthwhile? What do you think will be the actual outcome and impact, to the environment as well as to the community, of the development and of the planned educational center?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you do not live in the neighborhood, how do you feel about these fancy developments in general? Have you seen them turn out badly somewhere else? Or turn out well?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: An instructive ending with Bishop up for a Pawn</title><link>https://franklinchen.com/blog/2014/07/31/the-chess-improver-an-instructive-ending-with-bishop-up-for-a-pawn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/31/the-chess-improver-an-instructive-ending-with-bishop-up-for-a-pawn/</guid><pubDate>Thu, 31 Jul 2014 13:37:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;An instructive ending with Bishop up for a Pawn&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;My student Eric (currently rated USCF 15xx) showed me a recent tournament game of his in which a rather fascinating ending came up. As Black, he had a Bishop and four Pawns versus White&apos;s five Pawns. At first it seemed obvious that this ending should clearly be a win, but actually, it is not so obvious, because the semi-blocked nature of the position meant that it was not completely trivial for Black to break through White&apos;s wall of Pawns. It turned out that he did come up with a very clever idea that is part of a good winning plan, but he did not manage to follow up on it, and seeing no way to make progress, accepted a draw with his opponent.&lt;/p&gt;
&lt;p&gt;Winning an ending given a material advantage is very important, because at some point during one&apos;s chess development, one plays well enough in the middlegame to get a material advantage, but if one is not able to convert in the endgame, it is a shame. In particular, when up more than two Pawns, there is usually a way to win, by taking advantage of imbalances on the board appropriately.&lt;/p&gt;
&lt;p&gt;Looking at the game position carefully, we worked out a winning plan for Black. I think it is instructive because it brings together many important &lt;em&gt;principles&lt;/em&gt; in endgame play. There are not any forced variations until the key transformative positions are reached. There may be other ways to win than the method I explain below; I would welcome feedback on other ways to win!&lt;/p&gt;
&lt;h2&gt;Initial position&lt;/h2&gt;
&lt;p&gt;First, let&apos;s look at the initial position. The fundamental material imbalance:&lt;/p&gt;
&lt;p&gt;Black has an extra light-squared Bishop.
White has an extra King-side Pawn, a g-Pawn that therefore could potentially be converted to a passed Pawn. However, Black is not in any danger of losing, because Black&apos;s Bishop can easily sacrifice itself if necessary to prevent successful Queening.&lt;/p&gt;
&lt;p&gt;Other interesting features:&lt;/p&gt;
&lt;p&gt;White is lucky to have most Pawns on dark squares, out of attack from Black&apos;s light-squared Bishop.
Black&apos;s Pawns are currently all blocked up and therefore Black can win only by using an active King somehow to penetrate White&apos;s position and either win some more Pawns or transform the position in order to create a passed Pawn.
But while activating the King, Black has to be careful about not letting White&apos;s g-Pawn Queen. However, note that Black&apos;s Bishop control&apos;s the g8 &lt;em&gt;Queening square&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;An active King&lt;/h2&gt;
&lt;p&gt;The single most important lesson in endings is that an active King is critical. Where can Black&apos;s King go? I think Eric was led astray because he was looking for a way to use the Black King to get through on White&apos;s King side, but that is where White is actually strongest and has an extra Pawn. But if we look at the &lt;em&gt;whole board&lt;/em&gt;, we see that Black can try to reach c4 or a4 in White&apos;s position, to attack the d-Pawn or the b-Pawn with the King. Granted, White&apos;s King could move over to the Queen side to defend the Pawns, and at least prevent Black from getting to c4. Black could get to a4, but then White can protect the b-Pawn with a3 and protected the a3-Pawn with a King shuffling between a2 and b2. These static considerations make it look like Black&apos;s King cannot make progress.&lt;/p&gt;
&lt;p&gt;Eric was also worried about how to get the Bishop involved in case of going over to the Queen side, because what if the Bishop got too far and White played g6 and then g7? We&apos;ll see later how to address this concern.&lt;/p&gt;
&lt;h2&gt;Notice a Pawn asymmetry&lt;/h2&gt;
&lt;p&gt;However, Black has another imbalance to use: the Pawn situation on the Queen side is not symmetric. This is important. White has a b-Pawn while Black has an a-Pawn. This means that if Black can prepare the &lt;em&gt;Pawn break&lt;/em&gt; …a5, if White ever trades the b-Pawn for Black&apos;s a-Pawn, then White ends up with a passed a-Pawn but Black can then use the second Pawn break …c5 to create either a passed c-Pawn or passed d-Pawn. In an even-material ending, the &quot;outside&quot; passed Pawn (White&apos;s a-Pawn in this situation) is advantageous, but with Black having an extra Bishop, there is no advantage to having the outside passed Pawn, because Black&apos;s Bishop can cover it while Black&apos;s King is free to press on with its own &quot;inside&quot; passed Pawn.&lt;/p&gt;
&lt;p&gt;If White protects the b4-Pawn with a3, then Black can just trade Pawns, leaving White with a weak b4-Pawn. In that case, the ending is easy to win for Black, because Black can simply gain the opposition (using waiting moves with the Bishop) to break through and win either the b-Pawn or the d-Pawn.&lt;/p&gt;
&lt;p&gt;Therefore, our conclusion is that if Black can safely manage to get the King to b6 or b5 in order to prepare a5, the game is a win. Note that no calculation of sequences of moves is necessary to come to this conclusion: all that is needed is&lt;/p&gt;
&lt;p&gt;Fundamental understanding of Pawn breaks and passed Pawns
Understanding how to win by &quot;taking the opposition&quot; (in a King and Pawn setting)&lt;/p&gt;
&lt;p&gt;The final question then is, how to perform this King manoeuvre while preventing White from trying to Queen the g-Pawn?&lt;/p&gt;
&lt;h2&gt;A clever Bishop manoeuvre&lt;/h2&gt;
&lt;p&gt;Eric hit upon a clever Bishop manoeuvre that, if followed up, would have worked great.&lt;/p&gt;
&lt;p&gt;First, he played …f5 to force White to play g5. Then he moved his Bishop to d3, a6, c8, e6, and finally f7, in order to protect the g6 and h5 squares from White&apos;s King invasion. This was a fine creative plan.&lt;/p&gt;
&lt;p&gt;Unfortunately, he agreed to a draw shortly after this manoeuvre, not being able to find the winning plan that involved activating the King and using two Pawn breaks. He saw that after getting the King around, if he ever tried to bring the Bishop around, that would risk White&apos;s g-Pawn advancing. This is in fact a valid concern, but the missing part of the picture was the importance of the …a5 Pawn break and the subsequent follow up. It turns out that there is something very subtle for Black black needs to do to time that Pawn break just properly, to avoid a draw.&lt;/p&gt;
&lt;h2&gt;Triangulation&lt;/h2&gt;
&lt;p&gt;The concept of triangulation is very important in endings. The main idea is to &quot;waste time&quot; in order to force the weaker side to reach a position on the move from a position in which the stronger side is on the move (but does not want to be on the move). In the analysis below, a critical position arises in which Black needs to prevent White&apos;s King from becoming too active after a planned Pawn break. By triangulation, Black forces White&apos;s King to the rim at a3 before playing the Pawn break …c5.&lt;/p&gt;
&lt;h2&gt;Control of the Queening square&lt;/h2&gt;
&lt;p&gt;It is also important to note that Black can wander just far enough with the Bishop to win White&apos;s a4-Pawn, because of the control of White&apos;s Queening square g8. Black&apos;s Bishop has enough time to make it back to d5 after White plays g6 and g7, to stop White from Queening on g8. Whew!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I thought this was an instructive ending to work out, because of the many themes necessary to understand and integrate in order to create a winning plan.&lt;/p&gt;
&lt;h2&gt;Full analysis&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[FEN &quot;8/p7/2p2pk1/3p4/1P1PbPP1/6K1/P7/8 b - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;p&gt;1... f5 { A committal move, giving White a passed g-Pawn, but fixing the global Pawn structure in preparation for an unstoppable plan by restricting White&apos;s activity.} ( 1... Kf7 2. Kh4 Ke6 3. Kh5 { White can try annoying things on the King side, even though there is clearly no win for White.} ) 2. g5 Bd3 { With a nice Bishop maneuvering idea.} 3. Kh4 Ba6 4. Kg3 Bc8 5. Kh4 Be6 6. Kg3 Bf7 { The point: Black can now move the King while not having to worry about a White invastion on h5 or g6.} 7. Kh4 Kg7 { Somewhere around here, my student got discouraged and did not see a way to win for Black, and accepted a draw.} 8. Kg3 Kf8 9. Kf3 Ke7 10. Ke3 Kd7 11. Kd3 Kc7 12. Kc3 Kb6 13. Kb3 a5 $201 { An important Pawn break.} 14. Ka4 axb4 15. Kxb4 Bh5 $1 { A waiting move, also preparing to bring the Bishop back to e8 or f7 as needed.} 16. a4 { Eventually White will have to push the a-Pawn here, or give way with the King.} ( 16. Kc3 { If White just retreats passively, Black&apos;s task is easy.} 16... Kb5 17. Kb3 c5 { Black&apos;s Pawn break wins.} 18. dxc5 Kxc5 19. a4 Be8 20. a5 Kb5 { Rounding up the a-Pawn.} 21. Kc3 Bf7 { Protecting the d-Pawn and also the g8 Queening square.} 22. Kd4 Kxa5 23. g6 Bg8 { Black&apos;s d-Pawn prevents White&apos;s King from wandering away.} ) ( 16. a3 Bf7 $1 { Still waiting for White to continue to push the a-Pawn forward to its own doom.} ) 16... Be8 $1 { Protecting the c6-Pawn in case of White King invasion on c5.} 17. Kc3 ( 17. a5+ Ka6 18. Kc5 Kxa5 19. Kd6 Kb5 20. Ke6 c5 { Black wins the race to Queen some Pawn, any Pawn.} 21. Kxf5 cxd4 22. g6 Bxg6+ 23. Kxg6 d3 24. f5 d2 25. f6 d1=Q 26. f7 Qf3 { White is not going to Queen successfully at all.} ) 17... Ka5 18. Kb3 $201 Bg6 $1 { A waiting move, to &quot;triangulate&quot; to cause White&apos;s King to end up on a passive square.} ( 18... c5 $4 { Allows a draw.} 19. dxc5 Bxa4+ 20. Kc3 { White&apos;s King gets too active and makes it impossible for Black to win. Black&apos;s King is far away from the action.} 20... Be8 21. Kd4 Bf7 22. Ke5 Kb5 23. Kd6 $1 { White&apos;s goal is simply to Queen the c-Pawn.} ) 19. Ka3 Bf7 20. Kb3 Be8 { Triangulation is complete.} 21. Ka3 c5 $1 { A perfect time for the Pawn break.} 22. dxc5 Bxa4 { This is now an easy win for Black. Unlike the non-triangulated position, White cannot play Kc3.} 23. Kb2 d4 24. g6 Bc6 25. g7 Bd5 { Stopping the g-Pawn just in time.} *`} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: How do you play against 1 h3?</title><link>https://franklinchen.com/blog/2014/07/24/the-chess-improver-how-do-you-play-against-1-h3/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/24/the-chess-improver-how-do-you-play-against-1-h3/</guid><pubDate>Thu, 24 Jul 2014 11:35:02 GMT</pubDate><content:encoded>&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;How do you play against 1 h3?&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;When I was 10 years old in 1980, shortly after playing in my first couple of rated tournaments, I came under the influence of the then-current Michigan Open champion, a master who changed the course of my life by introducing me to the bizarre in chess and therefore stimulating my imagination, resulting in my developing a taste for the unorthodox (for both better and worse in my chess development). In particular, he showed me &lt;a href=&quot;https://en.wikipedia.org/wiki/Grob%27s_Attack&quot;&gt;Grob&apos;s Attack&lt;/a&gt;, the opening in which White plays 1 g4 as the first move, a move that violates all the conventional principles that most chess players are taught when first learning the game. I never actually played this opening, because to his credit, he not only showed me the traps White can set for Black, but also how Black can sidestep the traps and get an advantage.&lt;/p&gt;
&lt;p&gt;Knowing how to face unorthodox openings in chess, both technically and psychologically, is an important part of growth for a serious student of chess. It is extremely easy for chess players to fall into an unthinking automatism in the opening stages of a game, following some pattern of moves without understanding what their purpose is, or without doing at least some rudimentary calculation when the position starts becoming unfamiliar and out of the scope of memorized patterns.&lt;/p&gt;
&lt;p&gt;In particular, many chess players as Black behave in a &lt;em&gt;reactive&lt;/em&gt; way rather than an &lt;em&gt;active&lt;/em&gt; way, because of the fact that many mainstream openings involve White placing considerable pressure on Black from the outset, such that Black is essentially forced to defend. But what if White plays in a less aggressive way? This is when true understanding and creativity are demanded.&lt;/p&gt;
&lt;p&gt;I believe that &lt;em&gt;every player as Black should have a prepared personal plan against each of White&apos;s twenty possible opening moves&lt;/em&gt; (eight possible Pawn advances of one square, eight possible Pawn advances of two squares, and two possible moves of each Knight). The plan should be not just some new memorized pattern, but one that can be explained in terms of strategic and tactical factors, whether general or specific. I find that being able to confidently &lt;em&gt;verbalize&lt;/em&gt; one&apos;s reasoning (even if it is not necessarily entirely correct) is important.&lt;/p&gt;
&lt;h2&gt;1 h3 as an example&lt;/h2&gt;
&lt;p&gt;I&apos;m &lt;em&gt;not&lt;/em&gt; going to give a Black recommendation against 1 h3 here; instead, I want you to come up with your own, by considering some of the following questions, and answering them for yourself. Even better, go further by adding your own questions and answering them as well.&lt;/p&gt;
&lt;h3&gt;What is White&apos;s purpose?&lt;/h3&gt;
&lt;p&gt;The first step is to ask what purpose White has in making the move. There must be some objective to it (even if you can calculate that you can prevent White&apos;s plan from having an advantageous outcome). What squares are now attacked (or protected) that were not, before the move? What squares have been, by contrast, unprotected or weakened? What lines of development or attack have been opened, or closed?&lt;/p&gt;
&lt;p&gt;In the case of 1 h3, by thinking about such questions, you might observe:&lt;/p&gt;
&lt;p&gt;White has not made any progress in developing pieces, either by actually developing a piece or by opening a line to enable development of a piece.
White still does not have any control over the center squares.
White does control the g4 square now.
White has weakened the g3 square, which is now only protected by the f-Pawn.
White has made space on the h2 square for a piece to possibly be moved there.&lt;/p&gt;
&lt;p&gt;Then you might hypothesize that perhaps:&lt;/p&gt;
&lt;p&gt;White may be planning to support a g4 Pawn advance.
White may be thinking way ahead, in anticipation of Black wanting to eventually put a Bishop or Knight on g4, but is preventing it already.
White may be thinking way ahead, preparing to eventually develop the dark-squared Bishop to f4, and then having h2 as an escape square in case the Bishop is attacked.&lt;/p&gt;
&lt;p&gt;If you considered the last two of these possibilities, you are probably an advanced player who already has a grasp of mainstream opening theory and are able to relate it to unorthodox moves.&lt;/p&gt;
&lt;h3&gt;What is your purpose as Black?&lt;/h3&gt;
&lt;p&gt;Let&apos;s say that you usually play the standard move 1…Nf6 as Black against mainstream opening moves other than 1 e4. Maybe you are used to playing for a Nimzo-Indian or Queen&apos;s Indian type of setup with 1…Nf3, 2…e6. If you went on autopilot, you might quickly play 1…Nf6 against 1 h3 only to be faced with 2 g4. And then if 2…e6, 3 g5 might follow, chasing your Knight away. Now, it&apos;s not the case that White actually has any advantage even if you played on autopilot; in fact, frankly, White still has a worse position despite autopilot. But if autopilot is a &lt;em&gt;symptom&lt;/em&gt; of not thinking, you could quickly find yourself in a bad position after all, after several more indifferent moves.&lt;/p&gt;
&lt;p&gt;You should probably question why you would play 1…Nf6 against 1 h3 at all. One observation you could make is that &lt;em&gt;you are actually playing White&lt;/em&gt; in this game. For example, if you normally play 1 e4 as White, why not consider 1…e5 against 1 h3? Or if you normally play 1 d4 as White, why not consider 1…d5?&lt;/p&gt;
&lt;p&gt;Against passive or slow moves by White, consider thinking in terms of actually &quot;playing White&quot;, with reversed colors. Also, even one tempo down, there may be benefits for that missing tempo. For example, might it be possible to exploit White&apos;s weakened dark squares g3 and h2?&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I believe there is considerable valuable in devoting some serious time thinking about and writing down your thoughts about how you would approach playing against an opening move like 1 h3. It will expose assumptions you have about the nature of the delicate balance between White and Black in the initial board position, and what you expect to happen in the middlegame when it comes to King safety, weak squares, and a head start in either defense or attack.&lt;/p&gt;
</content:encoded></item><item><title>The growth of loyalty after seventeen years</title><link>https://franklinchen.com/blog/2014/07/22/the-growth-of-loyalty-after-seventeen-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/22/the-growth-of-loyalty-after-seventeen-years/</guid><pubDate>Wed, 23 Jul 2014 01:44:11 GMT</pubDate><content:encoded>&lt;p&gt;Tonight I finally got a haircut.&lt;/p&gt;
&lt;p&gt;For two weeks I&apos;d been looking for my &lt;a href=&quot;/categories/barber/&quot;&gt;barber&lt;/a&gt; Joe, of Harry&apos;s Barber Shoppe in Squirrel Hill; I was due for my haircut. I&apos;d called Joe&apos;s phone number from work in the afternoon. I&apos;d driven by on the way home (the shop is just a block away from home). I&apos;d taken a walk on Saturday to see if he was open. No sign of him. I was worried. I began imagining the worst.&lt;/p&gt;
&lt;p&gt;I&apos;m not kidding when I tell people that I don&apos;t know what I&apos;d do without Joe to cut my hair. He&apos;s been the only one to cut my hair in the past seventeen years, apart from that one time he broke his hand and was out of commission for a while.&lt;/p&gt;
&lt;p&gt;My first thought when I wondered whether Joe was OK was, if he was gone, I would miss not only a great cut (after the first couple of times in 1997, he figured out how to do things just the way I like), but also some kind of relationship. Since Joe is a lot older than me, I know that one day I will have to find a new barber; I was just thinking that when that day comes, I don&apos;t want just a haircut, but I want some kind of relationship. Joe doesn&apos;t just cut my hair. He asks me how my life is going; he was there before I was married, and now he inquires about Abby, whom he&apos;s met, that time when I was waiting so long for my turn that she walked over and brought me dinner. He knows the structure of my head and the properties of my hair more than I do. We take turns guessing who&apos;s singing the songs on his favorite radio station; I&apos;ve absorbed some of his oldies into my consciousness.&lt;/p&gt;
&lt;h2&gt;Lucky&lt;/h2&gt;
&lt;p&gt;The whole haircut experience is about much more than my walking out with less hair. That&apos;s why I was relieved to find him accidentally after an evening run in Frick Park that ended with my spotting in the distance the light in Joe&apos;s shop and stopping by and seeing him there. It was already late in the evening, nearly 8:00 PM already, but he said he would take me (he was finishing up one guy in the chair), so I ran back home to change out of my running gear and get my wallet and return to the shop.&lt;/p&gt;
&lt;p&gt;Joe said he was OK. He&apos;s continued to have back trouble and reduced his work, but he&apos;s still around. It does not even occur to me to get angry with him for causing me to look for him for two weeks. I&apos;m simply grateful he&apos;s OK and able to work and cheerful. He thanks me for being patient and returning to him again and again. That is all. The rest is philosophical banter about what is important in life, and chuckling to myself as I easily identify &quot;drunky&quot; Dean Martin on the radio singing &quot;Ain&apos;t That a Kick in the Head?&quot; Such a dated song, I think, but it has a certain charm and who else could sing it in perfect character besides Dean Martin?&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2zBszbgkH8g&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Are you loyal to someone who cuts your hair? What would you do (or have done) if that person is no longer present in your life?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Code and Supply: Programming in journalism</title><link>https://franklinchen.com/blog/2014/07/17/pittsburgh-code-and-supply-programming-in-journalism/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/17/pittsburgh-code-and-supply-programming-in-journalism/</guid><pubDate>Fri, 18 Jul 2014 01:21:19 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;http://static.squarespace.com/static/538f3cc8e4b00f52172b5560/t/53a4ec76e4b0488fb14c5a29/1403317372203/sign.png?format=500w&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: http://static.squarespace.com/static/538f3cc8e4b00f52172b5560/t/53a4ec76e4b0488fb14c5a29/1403317372203/sign.png?format=500w&quot;&amp;gt;[image defunct]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I finally attended my first ever &lt;a href=&quot;http://www.codeandsupply.co/&quot;&gt;Pittsburgh Code and Supply&lt;/a&gt; meeting! The group, which posts its &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/&quot;&gt;events on Meetup&lt;/a&gt;, was created by local Pittsburgh software developer &lt;a href=&quot;https://twitter.com/justinxreese&quot;&gt;Justin Reese&lt;/a&gt; just a few months ago, in March 2014. His vision is to create a local community that, unlike conventional specific language/technology-based meetups, is much more universal and broad. If you haven&apos;t do so already, read more about the &lt;a href=&quot;https://web.archive.org/web/20161226144116/http://www.codeandsupply.co/about/&quot;&gt;goals of Pittsburgh Code and Supply&lt;/a&gt;. I&apos;m very excited about this new group!&lt;/p&gt;
&lt;p&gt;The Code and Supply meetup I just attended was about &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/186766512/&quot;&gt;&quot;Programming in journalism&quot;&lt;/a&gt;. This is a topic of huge importance, and I was excited to attend to hear more about what some local journalist/programmers are doing.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;A bit about sponsors&lt;/h2&gt;
&lt;p&gt;Justin opened by briefly saying a few words about the goals of Pittsburgh Code and Supply. He then noted that this month, the group did not have sponsors, unfortunately.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pittsburgh Code and Supply needs sponsors!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you like what Code and Supply is doing, please consider seeing if your employer would be willing to step up as a sponsor for the group.&lt;/p&gt;
&lt;h2&gt;Contribute!&lt;/h2&gt;
&lt;p&gt;Also, in any case, spread the word about the group.&lt;/p&gt;
&lt;p&gt;This is my first meeting, and next Monday, I am actually going to give my first presentation for the group, on &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/183483622/&quot;&gt;&quot;Type-Directed TDD in Rust&quot;&lt;/a&gt;. The group is always looking for people to speak about something or facilitate other formats of meetings, so &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.codeandsupply.co/speak/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.codeandsupply.co/speak/&quot;&amp;gt;sign up&amp;lt;/span&amp;gt; if you have an idea! I personally have some ideas I&apos;d like to propose for future meetings, such as discussions about technology-related topics such as philosophy, history, and education.&lt;/p&gt;
&lt;h2&gt;AmyJo Brown&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/DaOxhNkHvvw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://amyjobrown.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://amyjobrown.com/&quot;&amp;gt;AmyJo Brown&amp;lt;/span&amp;gt;, an independent journalist, gave a great talk about the kind of work that she does, and why it is important. She gave an overview of how journalism has changed because of the availability of data and because of the complexity of the world, both of which lead to the necessity of telling stories differently, as evidenced by what &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.propublica.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.propublica.org/&quot;&amp;gt;ProPublica&amp;lt;/span&amp;gt;, the &lt;a href=&quot;https://web.archive.org/web/20260330034825/https://www.nytimes.com/&quot;&gt;New York Times&lt;/a&gt;, and the &lt;a href=&quot;https://web.archive.org/web/20260330052010/https://www.latimes.com/&quot;&gt;Los Angeles Times&lt;/a&gt; have been doing.&lt;/p&gt;
&lt;p&gt;Her own work involves tracking political donations (&quot;follow the money&quot;).&lt;/p&gt;
&lt;p&gt;She gave examples of software tools she uses to get data, clean it, analyze it, and archive the whole process. On the programming end, she programs in Python, for example (Django for Web development), and uses &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.documentcloud.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.documentcloud.org/&quot;&amp;gt;DocumentCloud&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;She talked about many things to keep in mind while doing this kind of data journalism. First of all, you have to know the limitations of the data you&apos;re getting. She has to deal with handwritten documents, and data in different formats. Data that is clearly incomplete or entered wrong (whether accidentally or maliciously). It is necessary to know the domain, know the context in which data was collected or required or submitted, to not fall into the trap of just blindly treating data as a record of the full truth and just get into programmatically processing it. There&apos;s a lot that involves human judgment calls. And this is why it is so important to save all the original information and document each step of data &quot;cleaning&quot; and interpretation.&lt;/p&gt;
&lt;p&gt;Near the end of her talk, AmyJo had her colleague Katrina speak a bit also. Katrina was not originally trained as a programmer, but was always interested in politics. She ended up getting into programming later.&lt;/p&gt;
&lt;p&gt;(I&apos;m always very excited and impressed to hear of people with domain knowledge and passion who take up computer programming as a useful skill to apply to their domain. Sometimes I hear people saying &quot;please don&apos;t code&quot;; I totally disagree with this sentiment and believe that &lt;a href=&quot;https://franklinchen.com/blog/2011/12/09/why-everyone-should-learn-computer-science/&quot;&gt;everyone can benefit from learning the fundamentals of computer science and programming&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;Andrew McGill&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/0iT9rhwRXVs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.andrewrmcgill.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.andrewrmcgill.com/&quot;&amp;gt;Andrew McGill&amp;lt;/span&amp;gt; bills himself as &quot;your friendly neighborhood journalist&quot;, and works for the &lt;a href=&quot;http://www.post-gazette.com/&quot;&gt;Pittsburgh Post-Gazette&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;He started by talking about his interesting career path, which involved being into computers before college, but then going to college and then finding other interests and abandoning programming, and then only later taking it back up, in the service of journalism, to enable him to find data and tell stories through visualization.&lt;/p&gt;
&lt;p&gt;He showed us specific Web sites and articles he has created to provide better visualizations of data than what is available in raw form. For example, on the funny side, there is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://newsinteractive.post-gazette.com/wheresbill/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://newsinteractive.post-gazette.com/wheresbill/&quot;&amp;gt;&quot;Where&apos;s Bill?&quot;&amp;lt;/span&amp;gt;, which he created because he was not happy with the &quot;official&quot; boring text news feed of Mayor Bill Peduto&apos;s calendar. He scraped the official site with PHP. He also created a Bill Peduto Twitter bot using Python.&lt;/p&gt;
&lt;p&gt;He also showed a D3-based visualization of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://newsinteractive.post-gazette.com/plugged-wells/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://newsinteractive.post-gazette.com/plugged-wells/&quot;&amp;gt;&quot;The Mystery of the Plugged Wells&quot;&amp;lt;/span&amp;gt;. Again, the point was to take already available data but to tell a story better with it than just giving raw tables or a purely text-based narrative.&lt;/p&gt;
&lt;p&gt;He showed some other projects, such as a visualization of school comparisons based on &lt;a href=&quot;https://en.wikipedia.org/wiki/Pennsylvania_System_of_School_Assessment&quot;&gt;PSSA&lt;/a&gt; data.&lt;/p&gt;
&lt;h2&gt;Questions and answers&lt;/h2&gt;
&lt;p&gt;There were quite a lot of questions posed to the presenters throughout the evening, on the technologies used, on work with graphic designers, on the process of obtaining data, and political implications of the work. Great discussions.&lt;/p&gt;
&lt;h2&gt;Technologies used&lt;/h2&gt;
&lt;p&gt;Here&apos;s something resembling a summary of technologies mentioned that the presenters use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Django&lt;/li&gt;
&lt;li&gt;DocumentCloud&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;R&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;li&gt;OpenRefine&lt;/li&gt;
&lt;li&gt;D3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Interesting articles&lt;/h2&gt;
&lt;p&gt;Before the meetup, I posted to the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/186766512/&quot;&gt;event page&lt;/a&gt; a link to a provocative (perhaps too harsh and ranty) article warning about dangers in data journalism, &lt;a href=&quot;https://web.archive.org/web/20250117201258/https://www.niemanlab.org/2014/07/alberto-cairo-data-journalism-needs-to-up-its-own-standards/&quot;&gt;by visualization expert Alberto Cairo&lt;/a&gt;. It got no response.&lt;/p&gt;
&lt;p&gt;Later, I also posted a link to a thoughtful examination of the question of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://source.opennews.org/en-US/learning/true-facts-maybe/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://source.opennews.org/en-US/learning/true-facts-maybe/&quot;&amp;gt;epistemology in data journalism&amp;lt;/span&amp;gt;. I totally recommend reading that article.&lt;/p&gt;
&lt;p&gt;AmyJo after the meetup posted some more links on the event page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://medium.com/@jeremybowers/why-im-a-newsroom-coder-860d9d49f684&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://medium.com/@jeremybowers/why-im-a-newsroom-coder-860d9d49f684&quot;&amp;gt;&quot;Why I&apos;m a newsroom coder&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://source.opennews.org/en-US/articles/planting-next-crop-newsroom-coders/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://source.opennews.org/en-US/articles/planting-next-crop-newsroom-coders/&quot;&amp;gt;&quot;Planting the next crop of newsroom coders&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.nytimes.com/2014/07/17/opinion/the-fec-lags-on-campaign-finance-disclosures.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.nytimes.com/2014/07/17/opinion/the-fec-lags-on-campaign-finance-disclosures.html&quot;&amp;gt;&quot;Data delayed is democracy denied&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was very excited to attend my first Pittsburgh Code and Supply meetup, on the fascinating topic of programming in journalism. I felt I learned a lot about what is at stake and how programming is being used in journalism to better inform people of what is going on in the world.&lt;/p&gt;
</content:encoded></item><item><title>Why programming puzzlers make me sad</title><link>https://franklinchen.com/blog/2014/07/17/why-programming-puzzlers-make-me-sad/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/17/why-programming-puzzlers-make-me-sad/</guid><pubDate>Thu, 17 Jul 2014 23:01:52 GMT</pubDate><content:encoded>&lt;p&gt;I recently saw a
&lt;a href=&quot;http://blog.plover.com/2014/07/17/&quot;&gt;&quot;guess what this does&quot; article&lt;/a&gt;
on a blog I follow, and this post presents mysterious Perl code for
which the reader is asked to guess what it does:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;perl -le &apos;print(two + two == five ? &quot;true&quot; : &quot;false&quot;)&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I looked at it briefly, got a headache, and didn&apos;t even want to solve
it. This despite using Perl as one of my main programming languages
from 1993-2010 and considering myself fairly proficient at Perl.&lt;/p&gt;
&lt;p&gt;Programming puzzlers just in general make me sad.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;I know every programming language has quirks&lt;/h2&gt;
&lt;p&gt;It is a human reality, given human imperfection, that the languages we
invent have quirks of some kind. You might expect that, unlike natural
languages like English and Chinese, which have the burden of no
centralized design and hundreds or thousands of year of history and
random evolution, computer languages would be designed up front to
avoid ambiguity and just plain confusion. But the human desire to make
some things &quot;easy&quot; through clever defaults or implicit assumptions
always results in an invented computer language that has
irregularities or unexpected behavior somewhere.&lt;/p&gt;
&lt;h2&gt;The strange love of puzzlers&lt;/h2&gt;
&lt;p&gt;Still, it makes me sad when I see &quot;puzzlers&quot;, and especially how they
are used. For some reason, in some circles, it is considered a sign of
intelligence or competence to be able to decode strange
puzzlers. Many academic homework assignments and exams tend to focus
on weird puzzlers as a way of supposedly testing proficiency in
programming. Java certification exams and job interview questions
often throw in puzzlers. I deplore this situation.&lt;/p&gt;
&lt;p&gt;I understand that in specialized circumstances, you would want to
value someone who was really good at puzzlers: someone who could write
a conforming compiler for a language, diagnose strange bugs, etc. But
that is not what most of us do or need to do. And too many puzzlers
makes non-programmers wince and stay away from a field they consider
to be pointlessly capricious.&lt;/p&gt;
&lt;h2&gt;When to understand puzzlers&lt;/h2&gt;
&lt;p&gt;The exception I make is when a &quot;puzzler&quot; is not actually rare code,
but typical code that has some kind of mistake. Some languages have
more of these puzzlers that are actually critical to understand in
order to be functional at working with code in them. For example,
almost all normally used features of C could be considered puzzlers!&lt;/p&gt;
&lt;h2&gt;Languages with &quot;puzzler&quot; books&lt;/h2&gt;
&lt;p&gt;Many languages have spawned &quot;puzzler&quot; books or sites. You can look
them up for yourself if you are curious about puzzlers in your
favorite languages. I won&apos;t list any here because I wouldn&apos;t know
where to stop. I didn&apos;t mean to pick on Perl, of course, when writing
this article.&lt;/p&gt;
&lt;h2&gt;An idea: how about learning from all the puzzlers?&lt;/h2&gt;
&lt;p&gt;I have an idea: how about pooling together all the puzzlers in all the
languages that currently exist, classifying the language misfeatures
that resulted in those puzzlers, and coming up with a plan to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;teach the puzzlers in a systematic polyglot way&lt;/li&gt;
&lt;li&gt;fix as many of these puzzlers as possible in the languages (I expect
this to be very difficult because of compatibility needs)&lt;/li&gt;
&lt;li&gt;write up a guide to what &lt;em&gt;not&lt;/em&gt; to do in future &lt;em&gt;new&lt;/em&gt; languages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Do you think there would be value in mining existing puzzlers for
the purpose of a systematic resource for learning about programming
language design?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I don&apos;t like programming puzzlers. They are supposed to be funny, and
maybe sometimes they are, but often they are abused for status and
mistaken as an accurate gauge of competence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel about puzzlers? Do you use them for assessing your
own or others&apos; knowledge? Do you solve them for entertainment? Do
you think minimizing the existence of puzzlers should be a criterion
for design of any new programming languages?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Pawn moves in front of Black&apos;s castled King: looking at h6 and f5</title><link>https://franklinchen.com/blog/2014/07/17/the-chess-improver-pawn-moves-in-front-of-blacks-castled-king-looking-at-h6-and-f5/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/17/the-chess-improver-pawn-moves-in-front-of-blacks-castled-king-looking-at-h6-and-f5/</guid><pubDate>Thu, 17 Jul 2014 11:35:27 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Pawn moves in front of Black&apos;s castled King: looking at h6 and f5&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I stopped by the Pittsburgh Chess Club recently, met someone new, and played a couple of quick casual games with him. I felt that one of the games we played was instructive, illustrating the theme of &lt;em&gt;king safety&lt;/em&gt; in the middlegame (and by extension, thinking about this straight from the opening).&lt;/p&gt;
&lt;h2&gt;King safety and Pawn advances&lt;/h2&gt;
&lt;p&gt;One important theme when paying attention to King safety in the middlegame is sometimes expressed, too simplistically, as &quot;don&apos;t move Pawns in front of your castled King&quot;. Let&apos;s focus, for this article, on so-called &lt;em&gt;classical&lt;/em&gt; development, versus &lt;em&gt;modern&lt;/em&gt; development: we mean by &quot;classical&quot; that Bishops are developed toward the center rather than fianchettoed away from the center onto diagonals.&lt;/p&gt;
&lt;p&gt;Taking the side of Black developing &quot;classically&quot; as an example, the maxim &quot;don&apos;t move Pawns in front of your castled King&quot; means not moving the f, g, or h Pawns unless necessary. The tricky part of interpreting this advice is understanding what &quot;necessary&quot; really means, and also an advanced player will want to know not only when to do something when it is necessary, but when it is not necessary but nevertheless advantageous. I will ignore the advanced case in this post.&lt;/p&gt;
&lt;p&gt;I would like to begin a series of articles on concrete guidelines for when it is good or bad to move a Pawn in front of one&apos;s castled King. The quick game I just played illustrates two of the easiest considerations starkly.&lt;/p&gt;
&lt;h2&gt;Black&apos;s h6 when White may create a diagonal threat on h7&lt;/h2&gt;
&lt;p&gt;In the game, Black made a serious error by playing an &lt;em&gt;unnecessary&lt;/em&gt; 11…h6. First of all, White had no real threat to place a piece on g5. But more generally, even if there is such a threat, the cure may be worse than letting it happen.&lt;/p&gt;
&lt;p&gt;Here is a rule of thumb: &lt;em&gt;in classical positions where Black no longer has a Knight (usually on f6) protecting the King side, h6 is often a serious weakening move&lt;/em&gt;. This is because it prevents Black from being able to solidly playing the &quot;other&quot; defensive Pawn move in the future, g6. Being able to play g6 is often very important to block White from delivering a mating attack on the light-squared diagonal from b1 to h7. The move h6 weakens not only the h6 Pawn (if White has a dark-squared Bishop aiming at h6), but also weakens h7 light-colored square and the g6 light-colored square, making defense of the King much more difficult. For example, with only the f7 Pawn protecting the g6 square, if Black ever needs to put either a Pawn or a piece on g6 to block any attack, White can potentially attack that square with multiple pieces, outnumbering Black. This is the kind of forward looking that a chess player must attend to when creating a defensive middlegame plan out of the opening, especially as Black.&lt;/p&gt;
&lt;p&gt;In the game, you can see each of these dire predictions come true. Being on the other side of the board, knowing about these weaknesses around you opponent&apos;s King, you can often create a lethal attack very quickly!&lt;/p&gt;
&lt;p&gt;In the annotations, note that if Black had just castled, and then defended with g6 only when forced to, the resulting position if White tried the same brute force mating plan against h7 would have been quite acceptable and solid for Black, with Pawns on f7, g6, and h7 blocking any quick mate. As White, I would therefore have refrained from the committal e5 advance, which has the disadvantage of ceding control of the d5 light-colored square and opened up the diagonal from a8 to h1 to my own King!&lt;/p&gt;
&lt;h2&gt;Black&apos;s f5 to block a diagonal threat on h7&lt;/h2&gt;
&lt;p&gt;The final error by Black was that of not cutting losses by pushing back and at least blocking White&apos;s powerful King side attack by fighting with well-timed f5. f5 looks very ugly, because White can take the f-Pawn en passant and leave Black with an isolated e-Pawn. For this reason, I have seen that many club players avoid playing such a move until it is too late to make maximum use of this blocking attempt/counterpunch.&lt;/p&gt;
&lt;p&gt;When you are on the defensive, you have to ask yourself: what is the lesser evil, getting a weak Pawn and a King side that looks like Swiss cheese because of holes on g6 and h7, or getting mated through too-passive defense? If it seems that all other defenses will fail, choose to avoid getting mated, and choose to fight on even with an ugly-looking position. In fact, 13…f5 results in a position that, while rather unpleasant, at least offers opportunities for Black counterplay. Black does get rid of White&apos;s powerful e5 Pawn, open up the f-file, and develop the Queen, all while fighting White&apos;s center and avoiding getting suffocated to death.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;2014.07.05&quot;]
[Round &quot;&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;NN&quot;]
[Result &quot;1-0&quot;]
[ECO &quot;D41&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 e6 3. Nf3 d5 4. Nc3 c5 5. cxd5 Nxd5 6. e4 Nxc3 7. bxc3 cxd4 8. cxd4 Nc6 9. Bc4 Bd6 $2 ( 9... Bb4+ { Trading off the dark-squared Bishops is standard.} ) 10. O-O O-O 11. Qe2 h6 $4 { Wastes valuable development time and weakens the King.} ( 11... b6 { Black has to try to finish development.} 12. e5 $6 { White can try a brute-force attack on h7, but it is not best.} 12... Be7 13. Qe4 Bb7 14. Bd3 g6 15. Bh6 Re8 { White still has more space, but Black has a solid, defensible position.} ) 12. e5 Bc7 ( 12... Be7 $4 13. Qe4 { Wins immediately.} ) 13. Qe4 $5 { Going straight for the King.} ( 13. Ba3 { Was stronger, abandoning thoughts of a King side attack and focusing positionally on the Queen side instead.} 13... Re8 14. Qe4 Ne7 15. Bd3 Ng6 16. Rfc1 { Switching to Queen side pressure.} ) 13... Ne7 $4 ( 13... f5 { Ugly but prevents losing immediately.} 14. exf6 Qxf6 { White has a clear advantage because of Black&apos;s terrible e-Pawn and light square weaknesses near the King, but there is no forced win yet.} ) 14. Bd3 Ng6 15. Qg4 Qd5 16. Bxh6 $1 { I didn&apos;t actually play this move, but wish I had done it.} ( 16. Bxg6 { I chickened out and sacrificed the Bishop on h6 only after a couple more moves instead.} 16... fxg6 17. Qxg6 Kh8 $2 18. a4 $6 { I was obsessed with lifting my Queen Rook when I could have just used my King Rook.} ( 18. Bxh6 $1) 18... Bd7 19. Bxh6 { Finally.} 19... gxh6 20. Qxh6+ Kg8 21. Qg6+ Kh8 22. Ng5 ) 16... gxh6 17. Bxg6 fxg6 18. Qxg6+ Kh8 19. Qxh6+ Kg8 20. Qg6+ Kh8 $201 21. Rfe1 { A quiet but deadly move threatening a Rook lift to e4 and then either mate or winning a lot of material.} 21... Qd7 22. Qh6+ Kg8 23. Re4 Qg7 24. Qh3 { And Rg4 winning the Queen is coming.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The one thing I remember Lorin Maazel for</title><link>https://franklinchen.com/blog/2014/07/13/the-one-thing-i-remember-lorin-maazel-for/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/13/the-one-thing-i-remember-lorin-maazel-for/</guid><pubDate>Sun, 13 Jul 2014 23:36:07 GMT</pubDate><content:encoded>&lt;p&gt;RIP, &lt;a href=&quot;https://en.wikipedia.org/wiki/Lorin_Maazel&quot;&gt;Lorin Maazel&lt;/a&gt;. A music conductor of fame and longevity has died (at age 84), generating no shortage of obituaries, such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2014/07/14/arts/music/lorin-maazel-brilliant-intense-and-enigmatic-conductor-dies-at-84.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2014/07/14/arts/music/lorin-maazel-brilliant-intense-and-enigmatic-conductor-dies-at-84.html&quot;&amp;gt;this one&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Very often famous people die without my really having known much about them, and of course, this case was no exception. But this post isn&apos;t about what I didn&apos;t know, but what I do know, and &lt;em&gt;remember&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;The &quot;Ring&quot; Without Words&lt;/h2&gt;
&lt;p&gt;Lorin Maazel may have had a long and illustrious career, but actually, I don&apos;t believe I have listened to a single of his recordings (I never saw him in performance) other than one, his &quot;Ring Without Words&quot; purely orchestral arrangement of Richard Wagner&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Der_Ring_des_Nibelungen&quot;&gt;&quot;Ring&quot; cycle of operas&lt;/a&gt; that fits in a CD-length 75-minute &quot;summary&quot; of the epic operatic cycle (which takes more like 17 hours for a complete performance, spread out over four separate operas).&lt;/p&gt;
&lt;p&gt;So he touched my life in a single, unusual, but quite &lt;em&gt;positive&lt;/em&gt; way. Ironically, the example obituary I mentioned does not even mention this work of Maazel&apos;s. This illustrates that obituaries hardly tell the whole story of the contributions of someone to people&apos;s lives. They may tell what is most prestigious or most scandalous, but may miss interesting quirky projects that have less measurable impact.&lt;/p&gt;
&lt;h2&gt;My story&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://ecx.images-amazon.com/images/I/51lK9-us16L._SY300_.jpg&quot; alt=&quot;The Ring Without Words&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In my senior year of college, I came across a CD in the campus library on the Telarc label of Maazel&apos;s recording of the &quot;Ring Without Words&quot;. At the time, I knew fairly little about Richard Wagner or his music, but I was intrigued by the concept, since I was &lt;em&gt;not&lt;/em&gt; an opera fan, and didn&apos;t mind trying out what some immediately criticized as a gimmicky &quot;Reader&apos;s Digest&quot; concept by Maazel.&lt;/p&gt;
&lt;p&gt;I very much enjoyed the recording and listened to clips here and there without the &quot;guilt&quot; or confusion of choosing and listening to selected portions of recordings of the actual original operas. Basically, I appreciated Maazel&apos;s role as a curator and summarizer that brought in curious new listeners like me. I still believe there is a role for &quot;popularizers&quot; of &quot;classical music&quot;.&lt;/p&gt;
&lt;p&gt;I just looked on YouTube and found this very short clip of a performance by Maazel of the &quot;Ring Without Words&quot;, so you can check it out to get an idea of how it works:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/h9ObRSy3D1E&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Authorial intent&lt;/h2&gt;
&lt;p&gt;I mentioned last year in &lt;a href=&quot;/blog/2013/05/22/reflections-on-richard-wagners-200th-birthday/&quot;&gt;my post for Wagner&apos;s 200th birthday&lt;/a&gt; that I had, before encountering Maazel&apos;s CD, tried to watch the Metropolitan Opera&apos;s four-evening TV broadcast in the summer of the &quot;Ring&quot; cycle and found it hard going. My overall philosophy was, and is, that &lt;a href=&quot;/blog/2013/05/24/why-i-will-always-pronounce-gif-like-gift-and-not-like-jif/&quot;&gt;authorial intent is overrated&lt;/a&gt;. Fact is, if we were really serious about authorial intent, Wagner actually originally &lt;a href=&quot;https://en.wikipedia.org/wiki/Parsifal#The_ban_on_Parsifal_outside_Bayreuth&quot;&gt;forbade his opera &quot;Parsifal&quot; from being performed anywhere except in Bayreuth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying we shouldn&apos;t respect to one degree or other a composer&apos;s original setting or wishes. Actually, I&apos;m probably more respectful than most other people, because of my involvement with early music! I&apos;m just saying that alternative arrangements and excerpts are always possible, and as long as they do not misrepresent themselves, I have no problem with them.&lt;/p&gt;
&lt;h2&gt;Pittsburgh&lt;/h2&gt;
&lt;p&gt;You might expect me to say something how Maazel turned the Pittsburgh Symphony Orchestra into a world-class orchestra, but actually, I moved to Pittsburgh in 1997 after Maazel had just left, so when I started attending PSO concerts, it was &lt;a href=&quot;/blog/2012/06/08/heinz-hall-memories-at-the-pittsburgh-symphony-being-shocked-out-of-my-mind-upon-experiencing-prokofievs-second-piano-concerto-for-the-first-time/&quot;&gt;under Mariss Jansons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blogs.pittsburghsymphony.org/2014/07/statement-on-the-death-of-former-pittsburgh-symphony-orchestra-music-director-lorin-maazel/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blogs.pittsburghsymphony.org/2014/07/statement-on-the-death-of-former-pittsburgh-symphony-orchestra-music-director-lorin-maazel/&quot;&amp;gt;Pittsburgh Symphony Orchestra&apos;s official statement on the passing of Lorin Maazel&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Whatever else Lorin Maazel may have done in his life, one thing he did was bring Wagner to people like me, through his &quot;Ring Without Words&quot;. I am grateful he carried out this project. Also, more indirectly, he shaped the Pittsburgh Symphony Orchestra into the world-class orchestra it was by the time I moved to Pittsburgh, so I benefited from something he did that I never personally saw.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Completing my first tournament: 7th round and summary of what I learned</title><link>https://franklinchen.com/blog/2014/07/10/the-chess-improver-completing-my-first-tournament-7th-round-and-summary-of-what-i-learned/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/10/the-chess-improver-completing-my-first-tournament-7th-round-and-summary-of-what-i-learned/</guid><pubDate>Thu, 10 Jul 2014 11:08:25 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Completing my first tournament: 7th round and summary of what I learned&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here I conclude my coverage of my first chess tournament, the 1980 Michigan Open (Reserve Section), achieving my first provisional USCF rating of 1546 after scoring 3.5/7.0 points. I also won a trophy for 2nd place Unrated in the Reserve Section (my father, also playing in his first tournament, won the trophy for 1st place Unrated in the Reserve Section). It was a great way to start my chess tournament life!&lt;/p&gt;
&lt;p&gt;My goal in analyzing the games of my first tournament has been to begin exploring the development of a new chess tournament competitor (my young self of 1980) and examine common patterns of thoughts and behavior. I will continue further to track the evolution of my skill and style through analysis of further tournaments from 1980 and 1981.&lt;/p&gt;
&lt;h2&gt;Round 7&lt;/h2&gt;
&lt;p&gt;In my round 7 game, as Black I faced the Ruy Lopez (against White rated around USCF 1600), and as in round 3, did not know what I was doing and quickly gave up the center. My opponent did not know what he was doing either and we traded quickly into an endgame. As with many other endgames I played in this tournament, positions that are clearly draws at a higher level of play nevertheless contained imbalances and opportunities for going astray, and I played poorly, deliberately trading into what I should have known was a lost King and Pawn ending.&lt;/p&gt;
&lt;h2&gt;Summary of tournament&lt;/h2&gt;
&lt;h3&gt;Openings&lt;/h3&gt;
&lt;p&gt;Move numbers after I was out of any theoretical knowledge:&lt;/p&gt;
&lt;p&gt;1 (Bird&apos;s Opening as Black)
5 (Petroff Defense as White)
9 (Closed Ruy Lopez as Black)
5 (Exchange Ruy Lopez as Black)
4 (Open Sicilian as White)
6 (Philidor&apos;s Defense as White)
9 (Closed Ruy Lopez as Black)&lt;/p&gt;
&lt;p&gt;Nobody lost a game straight out of the opening (except for the Open Sicilian where I won quickly as White), although poor positions of course arose. We could have used a better understanding and use of &lt;em&gt;principles&lt;/em&gt; (such as development and central control) to improve beyond this 1500 level of play.&lt;/p&gt;
&lt;h3&gt;Middlegames&lt;/h3&gt;
&lt;p&gt;I did not understand the value of the Bishop pair, or that Knight on the rim is dim, and got destroyed on the King side.
A lot of piece trades. My opponent did not understand the value of the Bishop pair.
Highlighted the importance of using Pawn breaks.
My opponent should have opened the position because of my poor opening development, but instead closed it, allowing me to consolidate and in return attack his King with a Pawn storm.
(I won the game out of the opening because my opponent ignored development and created holes.)
A lot of piece trades. I did not understand the weakness of my isolated Pawn and lost it.
A lot of piece trades. I did not understand the weakness of my opponent&apos;s isolated Pawn and dissolved it instead of attacking it.&lt;/p&gt;
&lt;h3&gt;Endgames&lt;/h3&gt;
&lt;p&gt;5 of 7 games went all the way to an endgame. Many errors occurred, so the lesson is that there is much to be gained from studying the endgame. In addition, knowing what endgames are advantageous would have allowed me to make better decisions in the middlegame (regarding Pawn structures and Bishop vs. Knight). I feel that in the absence of clear attacks against the King, middlegame play often tend to be aimless simplification at the 1500 level. At top levels of chess, one plays openings with a goal toward certain kinds of endgames. Club level players who are no longer hanging material all the time and want to improve should also start to think this way.&lt;/p&gt;
&lt;p&gt;(I lost in the middlegame.)
I had the Bishop pair advantage but squandered it. Comedy of errors resulted in my winning because my opponent did not realize the King and Pawn ending was lost for him.
Draw: I dawdled and simplified in an endgame I could have won.
Draw: I simplified too much, then my opponent allowed a won King and Pawn ending but I did not know it was won for me.
(I won in the opening.)
Draw: one Pawn down, but Bishop vs. Knight; comedy of errors, but eventually I won a Pawn back and simplified to a draw.
I mistakenly simplified repeatedly, resulting in a lost and King and Pawn ending.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;?&quot;]
[Date &quot;1980.09.01&quot;]
[Round &quot;7&quot;]
[White &quot;Wilson&quot;]
[Black &quot;Chen Franklin&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[ECO &quot;C91&quot;]
[TimeControl &quot;40/2&quot;]
[WhiteElo &quot;0&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. c3 d6 9. d4 $5 exd4 $2 { As in round 3 previously, I had no idea of the strategic ideas of the Ruy Lopez. Here I gave up the center for no reason.} ( 9... Bg4 { Putting pressure on White&apos;s d4 Pawn is normal.} ) 10. cxd4 d5 $2 11. Nc3 $2 { White also showed little positional understanding. This move concedes an isolated d-Pawn.} ( 11. e5) 11... dxe4 12. Nxe4 Bf5 $6 ( 12... Nxe4 13. Rxe4 Bf5 { Removing White&apos;s strong Knight and developing with gain of time was good.} ) 13. Nc5 Na5 $2 { Knight on the rim is dim!} ( 13... Bg4) 14. Bd2 $2 { Giving up the Bishop pair for insufficient reason.} ( 14. Bc2) 14... Nxb3 15. axb3 Bxc5 { At this point, I was unhappy about the weak a-Pawn and wanted to start trading everything down to get a draw.} ( 15... Bg4) 16. dxc5 Re8 17. Bc3 $2 $201 Rxe1+ $2 ( 17... Qxd1 { Completely equal.} ) 18. Qxe1 Qd7 $6 { A provocative &quot;developing&quot; move that allows the doubling of the f-Pawns. I had hoped the exchange would simplify the position toward a draw.} 19. Bxf6 gxf6 20. Rd1 Re8 21. Qd2 $2 ( 21. Rxd7 Rxe1+ 22. Nxe1 Bxd7 23. b4 ) 21... Qxd2 22. Rxd2 b4 $5 { A positionally risky move. The point was to try to win White&apos;s c-Pawn, by artificially isolating it, but now Black&apos;s b-Pawn is on the wrong color square and potentially weak.} 23. h3 Re7 $2 { Planless move.} ( 23... Be4 { With an active Bishop and Rook, Black is fine.} ) 24. g4 ( 24. Rd8+ { Stronger was to seize the back rank and activate the Rook.} ) 24... Bd7 25. Kh2 Bb5 $2 { Still trying to trade, but this is a mistake now.} 26. Kg3 Re2 $4 { A horrific positional error, given Black&apos;s weak dark-squared Pawns.} 27. Rxe2 Bxe2 28. Nd4 Bb5 $4 { Senseless, inviting a trade into a lost King and Pawn ending.} ( 28... Bd3 29. Nc6 ) 29. Nxb5 axb5 $201 30. Kf4 Kf8 31. Ke4 { Dawdling pointlessly, but the game is won.} ( 31. Kf5) 31... c6 32. Kf5 Kg7 33. h4 Kh6 { Hope chess!} 34. f4 ( 34. Kxf6 $9 { Stalemate.} ) 34... Kg7 35. g5 fxg5 36. hxg5 Kf8 37. Kf6 Ke8 38. Kg7 Ke7 39. f5 Ke8 40. f6 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Third year at July 3 music party and finally participated in jamming</title><link>https://franklinchen.com/blog/2014/07/03/third-year-at-july-3-music-party-and-finally-participated-in-jamming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/03/third-year-at-july-3-music-party-and-finally-participated-in-jamming/</guid><pubDate>Fri, 04 Jul 2014 02:11:59 GMT</pubDate><content:encoded>&lt;p&gt;The past two years, Abby and I have gone to an annual July 3 music potluck/party, and we went again this year. Both &lt;a href=&quot;/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/&quot;&gt;in 2012&lt;/a&gt; as well as &lt;a href=&quot;/blog/2013/07/03/second-year-at-july-3-music-party-still-only-listening-without-playing/&quot;&gt;in 2013&lt;/a&gt;, I was too intimidated to participate in music jamming, and only watched. This year I was determined to contribute, and I brought my ukulele (which I only started learning &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;a month after last year&apos;s party&lt;/a&gt;, actually) and my Irish flute.&lt;/p&gt;
&lt;h2&gt;Piano&lt;/h2&gt;
&lt;p&gt;After my first round of food at the potluck, I went to Susan&apos;s piano and played David Raksin&apos;s theme from &quot;Laura&quot;, which I had so botched up last month at the annual Pittsburgh Recorder Society potluck/recital. I play it much better now, although I somehow messed up the final chords today. There were a few people sitting around listening, and they wanted to hear more, but I didn&apos;t have any more, so I scurried away to eat more food.&lt;/p&gt;
&lt;h2&gt;Old time&lt;/h2&gt;
&lt;p&gt;As dinner started winding down, the old time musicians started gathering outside to play. I saw fiddles, banjos, and other instruments make an appearance.&lt;/p&gt;
&lt;h2&gt;Blues&lt;/h2&gt;
&lt;p&gt;Inside, the main guy who plays guitar and ukulele unpacked his soprano ukulele, and so I took out my concert ukulele, and two other guys with guitars appeared. Eventually a woman who sang also appeared, as well as a guy on fiddle.&lt;/p&gt;
&lt;p&gt;I felt very intimidated, because although I&apos;ve gotten some experience jamming while on recorder or flute or tin whistle, my ukulele experience &lt;em&gt;without written music&lt;/em&gt; is still very minimal. Nevertheless, I joined in. I fumbled around, and had to ask what key each song was being played in, and even then, I&apos;m still quite shaky in anticipating and knowing chord changes beyond the simplest I, IV, V, and some dominant and major 7th chords. I strummed very softly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/music-2014-07-04/jamming.jpg&quot; alt=&quot;Music jamming&quot; /&gt;&lt;/p&gt;
&lt;p&gt;They&apos;re a great bunch, improvising melodic lines at will and even making up lyrics right on the spot, just as they had at the last two years when I only watched. And the singing in harmony was fantastic.&lt;/p&gt;
&lt;p&gt;Abby got a little bit of video footage of us at one point:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/zYb1aBioAao&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For two years, I was afraid to join in the music jams at this annual July 3 party. This year I joined in a little bit. If we attend the party again next year, I hope to be in a position to contribute even more! Many thanks to Susan for hosting this annual party!&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: My 6th tournament game: an error that reveals an attempt to learn</title><link>https://franklinchen.com/blog/2014/07/03/the-chess-improver-my-6th-tournament-game-an-error-that-reveals-an-attempt-to-learn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/07/03/the-chess-improver-my-6th-tournament-game-an-error-that-reveals-an-attempt-to-learn/</guid><pubDate>Thu, 03 Jul 2014 11:15:03 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;My 6th tournament game: an error that reveals an attempt to learn&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Continuing my series on my first chess tournament, which I played in 1980, I cover my round 6 game, which ended up being the third draw in 6 rounds. There is a pattern here to note: at this USCF 1500-1600 level of play, games very easily end in draws, because of missed opportunities in the middlegame, inappropriate simplification into an endgame, and then inaccurate endgame play leading to a final simplification after which no progress can be made by either side. We already saw this in my &lt;a href=&quot;/blog/2014/06/12/the-chess-improver-lessons-from-my-3rd-tournament-game-the-nature-of-endgames/&quot;&gt;round 3 game&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Summary of the game&lt;/h2&gt;
&lt;p&gt;Having scored 3 out of 5 points so far in the tournament, I got to play someone rated around 1600. I was White.&lt;/p&gt;
&lt;h3&gt;Opening&lt;/h3&gt;
&lt;p&gt;To my surprise, as Black he played an opening continuation in the Philidor Defense known to be bad. Unfortunately, because I saw the resemblance between the position and the famous &lt;a href=&quot;https://en.wikipedia.org/wiki/Morphy_versus_the_Duke_of_Brunswick_and_Count_Isouard&quot;&gt;1858 game by Paul Morphy against the Duke of Brunswick and Count Isouard&lt;/a&gt;, at move 7 I swung my Queen over to b3 just as Morphy had done, even though because Black&apos;s 6th move was different, this move was harmless. Playing by analogy rather than by calculation is sometimes reasonable, but in this case it was thoughtless.&lt;/p&gt;
&lt;p&gt;The result was that Black forced a &lt;em&gt;Queen trade&lt;/em&gt; immediately. This combined with the symmetrical Pawn structure meant that in the absence of gross errors, the likely result of the game was a draw. (Recall that in my &lt;a href=&quot;/blog/2014/06/05/the-chess-improver-lessons-from-my-2nd-tournament-game/&quot;&gt;round 2 game&lt;/a&gt;, in a Petroff where the Queens also got traded quickly, my game should have been a draw, but I accidentally won anyway.)&lt;/p&gt;
&lt;h3&gt;An error that reveals an attempt to learn&lt;/h3&gt;
&lt;p&gt;In the middlegame, I made a curious and admittedly ugly and poor positional and tactical error of advancing my f-Pawn with 13 f4, to try to undermine Black&apos;s e-Pawn and attack on the King side. This resulted in my isolating my own e-Pawn and then losing it. The resulting simplified position, nevertheless, was easily drawable.&lt;/p&gt;
&lt;p&gt;What I want to talk about is the nature of this error. It&apos;s a pretty bad error, but I think it illustrates that sometimes, when progressing in chess, it is common to make an error that nevertheless has clear motivations behind it. Here, I made this error because&lt;/p&gt;
&lt;p&gt;I wanted to unbalance a dead symmetrical position in order to play for a win, showing an active fighting spirit I had not always shown earlier in the tournament.
I had been reluctant to make Pawn breaks in earlier games, but was warming up to the idea that Pawn breaks were important.&lt;/p&gt;
&lt;p&gt;In other words, even though the plan was completely misguided, it showed that I was now willing to take risks to unbalance a position. I think an important stage in developing as a chess player is that of trying a different way of thinking, even if it is actually not carried out well. That is better than simply being stuck in a rut, in which case there is no way to improve. Currently, as an instructor and coach, I look for ways in which someone is stuck in a rut, a plateau, and encourage doing something different even if it initially backfires.&lt;/p&gt;
&lt;h3&gt;Endgame&lt;/h3&gt;
&lt;p&gt;I would call the position after move 18 and endgame: a lot of simplification, White a Pawn down, two Rooks and Bishop vs. two Rooks and Knight.&lt;/p&gt;
&lt;p&gt;It turned out that neither player knew how to optimize using either the Bishop or the Knight imbalance in the endgame, so the endgame was a typical trading of errors until all the Pawns came off the board and all that was left was a Bishop vs. Knight, so a draw was agreed.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;?&quot;]
[Date &quot;1980.09.01&quot;]
[Round &quot;6&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Sunts&quot;]
[Result &quot;1/2-1/2&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;0&quot;]
[ECO &quot;C41&quot;]
[TimeControl &quot;40/2&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 d6 3. d4 Bg4 $2 { I knew this was bad, from the famous Morphy game I learned in a children&apos;s chess book when I was in Kindergarten.} 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Qe7 ( 6... Nf6 $4 7. Qb3 ) 7. Qb3 $6 { Mechanically following the Morphy idea of swinging the Queen over to attack the b7 Pawn.} ( 7. O-O) 7... Qb4+ { At a 1500-level of play, a Queen trade often leads to a draw.} 8. Nc3 Qxb3 9. Bxb3 $6 { Preserving a natural Pawn structure, but it was actually better to get the half-open a-file.} ( 9. axb3) 9... Nc6 10. Bd2 $5 { I didn&apos;t play Be3 because I feared ...Bb4 doubling my c-Pawns.} 10... Nf6 11. O-O-O Bd6 12. Rhf1 $6 { At this stage of my chess life, I still had the idea of quickly &quot;developing&quot; all my pieces including my Rooks.} 12... O-O 13. f4 $6 { With an idea of opening lines, although this is positionally suspect given that White&apos;s e-Pawn will become isolated.} 13... Na5 14. fxe5 $2 { Terrible. The e-Pawn becomes weak and will be lost.} 14... Nxb3+ 15. axb3 Bxe5 16. Bf4 Bxc3 17. bxc3 Nxe4 { White has lost a Pawn. But the position is simplified and should lead to a draw.} 18. Bxc7 Nxc3 19. Rd7 Nb5 $2 { The Knight has no future stuck here.} ( 19... Ne4) 20. Be5 $6 { The Bishop is an unprotected target here.} 20... Rae8 $2 21. Re1 $2 { Now we will have more simplification.} ( 21. Bb2 { Controlling the long diagonal and cutting off the Knight was strong.} ) 21... f6 22. Rxb7 a6 $2 ( 22... fxe5 { Simplifying was the easy route to a draw.} ) 23. Bg3 Rxe1+ ( 23... Nd4 { Good enough to draw.} 24. Rd1 Rd8 25. Kb2 Nf5 ) 24. Bxe1 Re8 25. Kd2 h6 $2 26. Bf2 $6 ( 26. c4 Nd4 27. c5 a5 28. Bf2 ) 26... Rd8+ 27. Ke2 Rd6 $2 ( 27... Nc3+ 28. Kf3 Rd2 29. Ra7 Rxc2 ) 28. Rb6 $2 { Trading gives Black an easy draw.} ( 28. c4) 28... Rxb6 29. Bxb6 Kf7 30. Kd3 Ke6 31. c4 Nd6 32. Kd4 Kd7 $2 { Passive.} 33. Kc5 $2 ( 33. Kd5) 33... g5 $2 34. Kb4 $2 { White should have kept the King centralized and started advancing Pawns.} 34... Kc6 35. Ka5 Kb7 36. Bc5 $2 { Senselessly driving the Knight to activity.} ( 36. g4) 36... Ne4 37. Be7 $2 f5 38. b4 $2 ( 38. h3 Nd2 { Now Black can get the King side majority moving.} 39. Kb4 Ne4 40. Bf8 ) 38... h5 $6 ( 38... Nd2) 39. c5 ( 39. h4 g4 40. Bg5 Nf2 41. b5 ) 39... g4 $2 ( 39... f4 40. h3 g4 41. hxg4 hxg4 ) 40. c6+ $2 Kxc6 41. Kxa6 Nc3 $2 ( 41... f4 { Now it&apos;s a clear draw again.} 42. b5+ Kd7 43. Bh4 Nd6 ) 42. Bf6 $6 ( 42. g3 Nb5 { +1.27 Tiger 2004} 43. Bd8 Nc3 44. Bg5 ) 42... Nb5 ( 42... Nd5 43. b5+ Kc5 44. Bd8 f4 ) 43. Be5 ( 43. g3 Nd6 44. Be5 Nb5 45. Ka5 ) 43... h4 44. h3 $2 ( 44. Ka5 Nc7 45. Ka4 Ne6 { Only barely not a losing move.} 46. Bf6 ) 44... Na3 $2 ( 44... Nc7+ 45. Bxc7 Kxc7 46. Ka7 { Black could have caused White some pain before a draw.} ) ( 44... g3 $1 45. Bf6 Nc7+ 46. Ka5 { White manages to draw.} 46... f4 { +0.89 Tiger 2004} 47. Bxh4 { !?} 47... Nd5 48. Bxg3 fxg3 49. h4 Nf4 50. Ka6 Nxg2 51. b5+ Kc7 52. Ka7 Nf4 53. b6+ Kc6 54. b7 g2 55. b8=Q g1=Q+ { +0.89 Tiger 2004} 56. Ka8 { !?} ) 45. Bf4 ( 45. Bf6 gxh3 46. gxh3 { +0.18 Tiger 2004} 46... f4 47. Bxh4 ) 45... Nb5 46. Be3 $2 ( 46. Bg5 g3 47. Ka5 Nc3 48. Bxh4 ) 46... Nc7+ 47. Ka5 Kb7 $6 ( 47... Ne6 48. Ka6 f4 49. b5+ Kd7 ) ( 47... g3 48. Bg5 { !?} 48... Nd5 49. Bxh4 f4 50. Bxg3 fxg3 51. h4 Nf4 { White barely draws.} 52. Ka6 Nxg2 53. b5+ Kc7 54. Ka7 Nf4 55. b6+ ) 48. Bd2 $4 ( 48. Bg5 gxh3 49. gxh3 Ne6 { A losing move!} 50. Bxh4 ) 48... Nd5 49. Kb5 $201 gxh3 $4 ( 49... f4 $1 50. hxg4 f3 51. gxf3 { Throwing away the win. Now the game is a dead draw.} 51... h3 { An important theme in how to Queen a Pawn when having a majority.} ) 50. gxh3 f4 51. Kc4 f3 { And the h-Pawn will Queen!} 52. Be1 Nf4 53. Bxh4 Nxh3 54. Kd3 f2 55. Ke2 Nf4+ 56. Kxf2 Nd3+ 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The Chess Improver: My 5th tournament game: lessons from an uncomfortable miniature</title><link>https://franklinchen.com/blog/2014/06/26/the-chess-improver-my-5th-tournament-game-lessons-from-an-uncomfortable-miniature/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/26/the-chess-improver-my-5th-tournament-game-lessons-from-an-uncomfortable-miniature/</guid><pubDate>Thu, 26 Jun 2014 11:15:47 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;My 5th tournament game: lessons from an uncomfortable miniature&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Continuing in my series of posts covering the first chess tournament in my life as a new unrated player and member of USCF, here I present my 5th round game in the 1980 Michigan Open (Reserve Section). It was a very short game, lasting only 12 moves, and only a couple of minutes. This was in a tournament where the time control was the old classical 40 moves in 2 hours, so after the game, I had to hang around for hours waiting for my father to finish his game.&lt;/p&gt;
&lt;p&gt;I felt embarrassed by this game, which I won by checkmating my opponent (rated around USCF 1500) on the 12th move. I definitely felt good that I played well and deserved to win, but some things about what happened bothered me.&lt;/p&gt;
&lt;h2&gt;Lessons I Learned&lt;/h2&gt;
&lt;p&gt;I had never seen my opponent&apos;s 4th move before in the opening, but just remembered to stay calm and play by ordinary principles of development. He then proceeded to break every opening principle I had learned: he moved his Queen out early, put his Knight on the rim, and even weakened the critical square d5.&lt;/p&gt;
&lt;p&gt;I was surprised and disappointed by how quickly and poorly he played. I felt that he did not take me seriously, thinking he could just play garbage against an unrated 10-year-old boy at a time (1980) when very few kids were playing in chess tournaments. I did not believe that his play against matched his 1500 rating. I felt insulted for the first time in the tournament: in my first four rounds, all of my games had been quite hard-fought, no mercy shown me whatsoever. Fortunately, this was the only chess game in my life when I felt that I was not taken seriously because of my age and inexperience.&lt;/p&gt;
&lt;p&gt;After the game, my opponent quickly exited to smoke. My assessment of the situation suddenly changed. I concluded that I might have been hasty in assuming he was deliberately insulting me. I thought to myself that he had not looked very well during the game and was fidgety. Maybe as a smoker he was having trouble functioning well because of withdrawal. I felt some compassion for his plight.&lt;/p&gt;
&lt;p&gt;Then I got angry again: maybe he had deliberately thrown the game in order to go smoke? Was this possible? I no longer knew what to believe about what had happened, and I did not ask him.&lt;/p&gt;
&lt;p&gt;Finally, I felt embarrassed that I had jumped to conclusions that may have simply reflected my own self-consciousness at being the little kid at the tournament. I realized that I could have trapped myself psychologically. From then on, I decided never to think of myself as the kid at the tournament. As long as I didn&apos;t think that, then it wouldn&apos;t matter whether anyone else thought it either. This was the real lesson I learned that day. Whatever was going on with my opponent, I would play the game and aim for the win. I could not control what he thought of me or whether he was sick or whether he was deliberately losing. I could not control any of these things, so it was pointless to dwell on them.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;?&quot;]
[Date &quot;1980.08.31&quot;]
[Round &quot;5&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Lungu&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[ECO &quot;B40&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Bc5 { Immediately I was out of &quot;book&quot;. I had never seen this move before.} 5. Nc3 { I just played a normal developing move.} 5... Qf6 $4 { An already losing move, actually.} 6. Be3 Nh6 $4 7. Be2 $2 { I was worried about ...Ng4 and simply developed to prevent it. I was not even looking for any tactics in this position.} ( 7. Nxe6 { An obvious tactic wins a Pawn.} 7... dxe6 ( 7... Bxe3 8. Nc7+ Kd8 9. fxe3 Kxc7 $4 10. Nd5+ ) 8. Bxc5 ) 7... e5 $4 { Now White will win a Rook, because a Knight will get to c7.} 8. Nd5 Qd6 9. Nb5 Qg6 $4 { Just giving up a Bishop in addition to all else.} 10. Bxc5 Qxg2 $4 { Missing a mate in 2.} 11. Nbc7+ Kd8 12. Be7# { I was amazed by how poorly my opponent played.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The Chess Improver: My 4th tournament game: first time I attacked in the middlegame</title><link>https://franklinchen.com/blog/2014/06/19/the-chess-improver-my-4th-tournament-game-first-time-i-attacked-in-the-middlegame/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/19/the-chess-improver-my-4th-tournament-game-first-time-i-attacked-in-the-middlegame/</guid><pubDate>Thu, 19 Jun 2014 10:55:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;My 4th tournament game: first time I attacked in the middlegame&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In my last three posts here, I analyzed the first three tournament games of my life, as a new unrated player in 1980:&lt;/p&gt;
&lt;p&gt;I lost the &lt;a href=&quot;/blog/2014/05/29/the-chess-improver-is-it-worth-studying-your-own-games-from-thirty-years-ago/&quot;&gt;first&lt;/a&gt; upon being attacked effectively in the middlegame.
I won the &lt;a href=&quot;/blog/2014/06/05/the-chess-improver-lessons-from-my-2nd-tournament-game/&quot;&gt;second&lt;/a&gt; in a very uneven game in which both players simplified quickly and reaching an endgame which I won only because my opponent blundered into an obviously lost King and Pawn endgame.
I drew the &lt;a href=&quot;/blog/2014/06/12/the-chess-improver-lessons-from-my-3rd-tournament-game-the-nature-of-endgames/&quot;&gt;third&lt;/a&gt; after bumbling into an advantageous endgame but not knowing how to win, and allowing simplification to a draw.&lt;/p&gt;
&lt;h2&gt;Fourth game&lt;/h2&gt;
&lt;p&gt;My fourth game (my opponent was rated around USCF 1550) is interesting because for the first time in the tournament, I actually had a clear middlegame attacking plan in a blocked position, and correctly followed through on it, castling Queen side and attacking on my opponent&apos;s vulnerable King side with an obvious Pawn break as well as activating my pieces toward that side of the board. For the first time in the tournament, really, I displayed an active search for an initiative in the middlegame.&lt;/p&gt;
&lt;p&gt;Unfortunately, a few moves before forced mate, I apparently did not realize the strength of my position and mysteriously simplified repeatedly, into an endgame with a useless Pawn up, and a draw resulted. The irony is that my opponent allowed me at two points the opportunity to trade my Bishop for his Knight, in which case the Pawn-up King and Pawn endgame would have been an easy win for me. Apparently my knowledge of King and Pawn endgames was still very limited, illustrating yet again how important it is to master these basic endgames.&lt;/p&gt;
&lt;p&gt;The classic pattern I see in these early games is that of unwarranted simplification in advantageous middlegames and endgames, probably a result of the early emphasis on &quot;counting points&quot; of material, and not realizing that an active piece is worth more than a passive piece.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;&quot;]
[Date &quot;1980.08.31&quot;]
[Round &quot;4&quot;]
[White &quot;Middlebrooks&quot;]
[Black &quot;Chen Franklin&quot;]
[Result &quot;1/2-1/2&quot;]
[Annotator &quot;Chen Franklin&quot;]
[ECO &quot;C68&quot;]
[WhiteElo &quot;0&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O Bd6 { I was already out of book, never having played against the Exchange Variation.} ( 5... Bg4 ) 6. h3 $6 ( 6. d4 ) 6... Nf6 $6 { Playable, but positionally not best. Black should develop the remaining Knight to e7, in order to then head to c6 or g6 for dark square control, and protect the e5 Pawn with f6.} ( 6... c5 { Immediately seizing control of d4 seems good.} ) 7. Re1 Bd7 $2 { Upon seeing White castled King side with the h3 Pawn advanced, I decided on the idea of castling Queen side, in order to attack White on the King side. But I completely missed the fact that White could strike in the center.} 8. d4 Qe7 { Black must try to hang onto the e5 square.} ( 8... exd4 $4 9. e5 ) 9. c4 $5 ( 9. Nbd2 $1 { Even stronger, threatening Nc4 to attack the e5 Pawn one more time.} ) 9... c5 { Stopping White&apos;s c5 threat.} 10. d5 $2 { A positional error. Blocking up the center allows Black to escape.} ( 10. dxe5 { -0.04 Tiger 2004} 10... Bxe5 11. Nxe5 Qxe5 { Mate in 6.} ) 10... O-O-O { Black has every reason now to think about attacking White on the King side.} 11. Na3 $2 { Aiming to go to c2, apparently, but this is slow.} 11... h6 12. Bd2 g5 13. Nh2 Rdg8 14. f3 $2 { Just creates a target for Black to open lines, and weakens the King side.} 14... Nh5 $5 ( 14... h5 { The obvious prelude to a g4 Pawn break.} ) 15. Nc2 Nf4 { Black has improved the Knight.} 16. Re3 $4 f6 $5 { Not terrible, but slow. The point was to prepare Qh7.} ( 16... h5 ) 17. a3 h5 18. Be1 g4 19. fxg4 hxg4 20. Nxg4 Bxg4 21. hxg4 Qh7 $201 { Black has built up a won position with logical play on the King side.} 22. Qf3 Qh1+ 23. Kf2 Rh2 24. Rc3 { There is now actually a forced mate in 8 for Black.} 24... Qxg2+ 25. Qxg2 Rxg2+ 26. Ke3 R8xg4 $2 { Losing the thread, missing the mate and going for material gain instead.} ( 26... Rh8 { Improving the remaining Rook delivers mate in 6.} ) 27. Bf2 Nh3 28. Rf1 Nxf2 $2 ( 28... Rf4 { Wins the Bishop on f2.} ) 29. Rxf2 R4g3+ $2 ( 29... Rxe4+ { Picks up a a second Pawn.} ) 30. Rf3 Bf8 $2 { Allowing simplification rather than keeping the strong Rook.} 31. Rxg3 Rxg3+ 32. Ke2 Rxc3 $2 { Terrible, simplifying even further.} ( 32... Rg2+ { Keeps the active Rook.} ) 33. bxc3 Bh6 34. Ne3 $4 c6 $4 { Missing that the King and Pawn ending is won.} ( 34... Bxe3 35. Kxe3 $201 { A trivial win for Black, because of the King side majority. Black just needs to push f5, get a passed Pawn, then push it, then abandon it to win White&apos;s Queen side Pawns.} ) 35. a4 $4 a5 $4 36. Ng4 { Dead draw now.} 36... Bg5 37. dxc6 bxc6 38. Kf3 Kd7 39. Nf2 Ke6 40. Nd3 Kd6 41. Kg4 Bd2 42. Kf5 Ke7 43. Nxc5 Bxc3 44. Nb3 Be1 45. Nc5 Bf2 46. Nd3 Bb6 47. Nc1 Bd8 48. Nb3 Kf7 49. Nc5 Be7 50. Nb7 Bb4 51. Nd8+ Ke7 52. Nxc6+ Kd6 53. Nd8 Kc5 54. Kxf6 Kxc4 55. Kxe5 Kb3 56. Kd5 Kxa4 57. Nc6 Kb5 58. Nxa5 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>The Chess Improver: Lessons from my 3rd tournament game: the nature of endgames</title><link>https://franklinchen.com/blog/2014/06/12/the-chess-improver-lessons-from-my-3rd-tournament-game-the-nature-of-endgames/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/12/the-chess-improver-lessons-from-my-3rd-tournament-game-the-nature-of-endgames/</guid><pubDate>Thu, 12 Jun 2014 11:11:03 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Lessons from my 3rd tournament game: the nature of endgames&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I have now shown the first two tournament games of my life, from 1980: I lost the &lt;a href=&quot;/blog/2014/05/29/the-chess-improver-is-it-worth-studying-your-own-games-from-thirty-years-ago/&quot;&gt;first game&lt;/a&gt; and won the &lt;a href=&quot;/blog/2014/06/05/the-chess-improver-lessons-from-my-2nd-tournament-game/&quot;&gt;second game&lt;/a&gt;. My third game, discussed here was a draw.&lt;/p&gt;
&lt;p&gt;It was an instructive experience for me in my first tournament to experience all three possible results in the first three rounds! I believe it might have been devastating if, for example, I had lost too many games in my very first tournament. Instead, I was involved in some very long and interesting games from the start.&lt;/p&gt;
&lt;p&gt;My opponent was rated around USCF 1500, and this shows in his play.&lt;/p&gt;
&lt;h2&gt;Common errors in 1500-level chess&lt;/h2&gt;
&lt;h3&gt;Opening&lt;/h3&gt;
&lt;p&gt;In the opening, I had no idea how to play the Black side of a Ruy Lopez. Nobody had taught me the plans for White or Black. I was just winging it. I gave up the center at move 10; my opponent returned the favor by playing apparently &lt;em&gt;mechanical&lt;/em&gt; moves that would have applied in a &quot;standard&quot; line, instead of more principled developing moves fitting the situation.&lt;/p&gt;
&lt;p&gt;The first thing someone at a 1500 level can do, after mastering basic tactics, is to understand the basic principles of what to try to achieve in the middlegame after the first several opening moves. Many games at this level are decided, unfortunately, by &quot;unorthodox&quot; opening continuations that lead immediately to not knowing how to cope, being outside of one&apos;s memorization. Pointlessly giving up the center for Black should have led to trouble for me, but by accident, actually kept working well for me, against 1500-level opponents, even after this game, because they did not understand what to do any more than I did, and it became almost random who would enter the middlegame with an advantage.&lt;/p&gt;
&lt;h3&gt;Middlegame&lt;/h3&gt;
&lt;p&gt;One thing I noticed while looking at my first tournament games, including this third one, was that at the level of play of myself and my opponent, we shuffled a lot of pieces around, either&lt;/p&gt;
&lt;p&gt;&quot;attacking&quot; without enough backup, or
playing passive-looking retreating moves without a clear plan of reactivation.&lt;/p&gt;
&lt;p&gt;In particular, I did not understand the importance of looking for &lt;em&gt;Pawn breaks&lt;/em&gt;. Here, for example, c5 was crying out to be played, repeatedly. However, I did use a g4 Pawn break to achieve a lasting advantage, so I get some credit for that.&lt;/p&gt;
&lt;p&gt;Also, I got into tactical trouble, hanging a piece in an elementary way. Luckily, my opponent got bamboozled and missed an elementary &quot;capture Pawn with check and double attack&quot; that would have left me completely lost, and instead allowed me a recapture with check that led to a Queen trade into an endgame favorable to me!&lt;/p&gt;
&lt;p&gt;1500-level chess is still largely decided by big swings in evaluation resulting from missed tactics.&lt;/p&gt;
&lt;h3&gt;Endgame&lt;/h3&gt;
&lt;p&gt;The endgame was an unbalanced one, with Black having a Rook and two Pawns for two minor pieces. It favored Black because of the noticeable lead in development. My opponent as White made the elementary mistake of trading pieces in a bad endgame, rather than keeping them to maximize defensive possibilities. Trading the single remaining Rook led to a terrible Rook and two Pawns versus two Knights endgame.&lt;/p&gt;
&lt;p&gt;However, again I did not know yet to aggressively use my Pawns, especially here the Queen side Pawn majority. There was a lot of random shuffling around of pieces, then an insidious swindle by my part when I finally realized I should attack on the Queen side. I succeeded in achieving a tactically won position against the pair of Knights, but never saw the win. After too much simplification, the result was a dead draw.&lt;/p&gt;
&lt;p&gt;My observation about 1500-level endgame play is that players trade pieces and Pawns too readily, not realizing that there are times when a trade helps and there are times when a trade harms. As a result, many quick draws happen in actually interesting and unbalanced endgames. The 1500-level player who understands endgames can often survive terrible openings and middlegames and win in the endgame. I wish I had learned this lesson earlier in life. I now think that &quot;working backwards&quot;, by knowing what to aim for in the endgame, and then approaching the middlegame with a goal of reaching a good endgame, and approaching the opening with a goal of reaching a good middlegame, should be addressed by students of chess who have reached a 1500-level and are no longer just making extreme tactical blunders constantly.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;?&quot;]
[Date &quot;1980.08.30&quot;]
[Round &quot;3&quot;]
[White &quot;Luna Art&quot;]
[Black &quot;Chen Franklin&quot;]
[Result &quot;1/2-1/2&quot;]
[Annotator &quot;Chen Franklin&quot;]
[ECO &quot;C93&quot;]
[EventDate &quot;1980.08.30&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. c3 d6 9. h3 h6 $6 { I played this with no understanding at all. I knew the Closed Ruy Lopez position at this point, but had no idea how to play it with either color, since as White I played only Bc4.} 10. d4 exd4 $2 { Showing total lack of understanding of the point of Black&apos;s play, which is to fight for the center, not give it up.} ( 10… Bb7 ) 11. cxd4 $201 Bb7 12. Nbd2 $5 { My opponent was also playing mechanically.} ( 12. Nc3 { A more nature, active development for the Knight, now that the c3 square is open.} ) 12… Re8 13. Bc2 Nb4 14. Bb3 $2 { Strange reply that immediately gives Black an advantage.} ( 14. Bb1 { Maintaining protection of the e4 square and aiming at the h7 diagonal was simple and strong.} ) 14… Nd3 $6 { What is Black planning to do with this Knight? I did not understand the need for Pawn breaks.} ( 14… c5 $201 { Thematic flank attack on White&apos;s center, and very strong.} ) 15. Re3 Nf4 { OK, Black did get the Knight around to the King side, but with what plan?} 16. Nh2 $2 Nd7 $6 { Now it is clear Black has no real plan, but is shuffling pieces around.} ( 16… c5 ) 17. Qf3 Bg5 $4 { A horrible blunder, missing a tactic winning material.} 18. h4 { Obvious, attacking the defender of the Knight.} 18… Nxg2 { Trying to get something for the Knight.} 19. hxg5 Nxe3 20. Qxe3 $4 ( 20. Bxf7+ { Picking off an extra Pawn with check and a threat first wins immediately.} ) 20… Qxg5+ 21. Qxg5 hxg5 $201 { Miraculously, Black has emerged with perhaps a tiny advantage, with Rook and two Pawns for a Bishop and Knight, and better development!} 22. f3 $2 Nf6 $6 { Still not hitting White&apos;s center.} ( 22… c5 ) 23. Ndf1 $2 { Leaving the e4 Pawn weak.} 23… g4 { Give credit to Black for this Pawn break.} 24. fxg4 $2 Bxe4 $6 ( 24… Rxe4 { Activating the Rook with threats was obviously better.} ) 25. Bg5 c5 { Finally, this Pawn break, although not at the best time.} ( 25… Bb7 { Opens the e-file and prevents White&apos;s Rook from developing to e1.} ) 26. dxc5 $2 { Positionally suspect, opening the position for Black&apos;s Rooks.} ( 26. Bxf6 ) 26… dxc5 27. Bxf6 gxf6 $201 28. Re1 $2 { With a apparent plan to trade a lot of pieces to hope to draw, but White should be avoiding trades to try to draw! Especially his one Rook.} 28… c4 29. Bd1 Rad8 30. Bf3 Bxf3 31. Nxf3 Rxe1 32. Nxe1 $201 { Now, can Black win this simplified Rook and two Pawns versus two Knights ending? It&apos;s not so easy.} 32… Re8 $2 { Black clearly has no plan.} ( 32… a5 { Using the Queen side Pawn majority should have been an obvious plan.} ) 33. Kf2 Kg7 34. Nf3 $4 { White has no plan either, or would be taking care of Queen side dangers.} ( 34. Nc2 { Bringing the Knights to defend the Queen side should draw without too much difficulty.} ) 34… Kg6 $2 ( 34… Rc8 { Will break through on c3 then win White&apos;s a2 Pawn.} ) 35. Ne3 Rc8 36. Nd5 Kg7 $5 { Planning a devious trick.} 37. Nh4 Kf8 $5 38. Nxf6 $4 { Falling for the trick. Black finally saw the idea of advancing on the Queen side while White&apos;s Knights are out of range.} 38… c3 39. bxc3 Rxc3 40. g5 b4 41. Nd5 Rc5 $6 { Deciding to win the g-Pawn instead of the a-Pawn.} ( 41… Rc2+ 42. Ke3 Rxa2 43. Nxb4 Ra4 { I did not see this skewer.} 44. Nxa6 Rxh4 ) 42. Nxb4 Rxg5 $4 { It&apos;s a dead draw now.} ( 42… Rc4 { Yes, I missed this tactic winning a Knight.} 43. Nxa6 Rxh4 44. Nc5 Rh2+ 45. Kf3 Rxa2 $201 { This is an easy win for Black, who can use the King and Rook to drive White&apos;s Knight away in order to win the g-Pawn eventually.} ) 43. Nxa6 Ra5 44. Nc7 Rxa2+ 45. Kg3 Ra4 46. Nf5 f6 47. Nd5 Kf7 48. Nde3 Ke6 49. Kf3 Ke5 50. Kg3 Rf4 51. Nh4 Re4 52. Ng6+ Ke6 53. Nf4+ Ke5 54. Ng6+ Ke6 55. Nf4+ Ke5 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Celebrating the 150th birthday of my favorite second-rate composer: Richard Strauss</title><link>https://franklinchen.com/blog/2014/06/11/celebrating-the-150th-birthday-of-my-favorite-second-rate-composer-richard-strauss/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/11/celebrating-the-150th-birthday-of-my-favorite-second-rate-composer-richard-strauss/</guid><pubDate>Wed, 11 Jun 2014 21:22:01 GMT</pubDate><content:encoded>&lt;p&gt;So it&apos;s the 150th birthday of Richard Strauss, the German composer who famously declared himself a &quot;first-class second-rate composer&quot;, since he considered himself not in the rank of Mozart and Beethoven.&lt;/p&gt;
&lt;p&gt;Nevertheless, I would certainly consider him one of the great composers of all time, because of his innovative explorations of color, and the tension between counterpoint and tonality.&lt;/p&gt;
&lt;p&gt;Here&apos;s a tour of some of my favorite performances of his music.&lt;/p&gt;
&lt;h2&gt;My first discovery of Richard Strauss: &quot;Also sprach Zarathustra&quot;&lt;/h2&gt;
&lt;p&gt;Probably like everyone else born after 1968, the first time I heard any music by Strauss was surely while watching the 1968 film &lt;a href=&quot;https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey_%28film%29&quot;&gt;&quot;2001: A Space Odyssey&quot;&lt;/a&gt;. I watched it sometime in the 1980s. Kubrick took the opening &quot;Sunrise&quot; of Strauss&apos;s 1896 symphonic poem &lt;a href=&quot;%22https://en.wikipedia.org/wiki/Also_sprach_Zarathustra_%28Richard_Strauss%29%22&quot;&gt;Also sprach Zarathustra&lt;/a&gt; as the opening musical theme of the film:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/e-QFj59PON4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It took years until I actually learned this music wasn&apos;t composed for the film, but was a fragment of something old, and had a name. At some point, I finally heard the whole piece, on the radio. And then I listened to it more deeply in college, as I grappled with Strauss&apos;s playing with tonality, using B major against C major in the piece to contrast humanity with the universe.&lt;/p&gt;
&lt;p&gt;If you&apos;ve only heard the opening fanfare, you must listen to the whole piece. It&apos;s a story in itself.&lt;/p&gt;
&lt;p&gt;A video of Mariss Jansons conducting this work:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Y9QxaJLt7EA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;My second discovery: &quot;Im Abendrot&quot;&lt;/h2&gt;
&lt;p&gt;In college, I watched the 1990 film &lt;a href=&quot;https://en.wikipedia.org/wiki/Wild_at_Heart_%28film%29&quot;&gt;&quot;Wild at Heart&quot;&lt;/a&gt; with friends as it came out. I was wowed by the opening music theme and wondered what that gorgeous music was. Well, it turned out to be the beginning of Richard Strauss&apos;s &quot;Im Abendrot&quot;, one of his &lt;a href=&quot;https://en.wikipedia.org/wiki/Four_Last_Songs&quot;&gt;&quot;Four Last Songs&quot;&lt;/a&gt; composed in 1948 when he was 84 years old.&lt;/p&gt;
&lt;p&gt;Check out the opening of the film, if you haven&apos;t seen it before or don&apos;t remember:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/JHNEL1H5_b0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;The music clip from that film was an excerpt from one sung by Jessye Norman, conducted by Kurt Masur. It turns out that she sang it really slowly, and I prefer the music as a whole to go more quickly, in the context of it being a whole song, not just an instrumental introduction. Here is a classic recording by Gundula Janowitz in 1973 conducted by Herbert von Karajan that may be my favorite one of this beautiful song, which is about reflections on approaching death: &lt;em&gt;&quot;We have gone through sorrow and joy hand in hand; now let us rest from our wanderings above the silent land.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Listen to the whole thing:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/6YD_8E4ZVxY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I find it marvelous and touching that Richard Strauss continued to give the world the gift of lovely music in his old age.&lt;/p&gt;
&lt;h2&gt;Some youthful music: piano sonata in B minor&lt;/h2&gt;
&lt;p&gt;Now, for something completely different: a piano sonata he wrote at age 16, in 1880. (Yes, 1880. One thing to remember about Richard Strauss is just how long he lived, and how many eras of musical and political change he survived through.)&lt;/p&gt;
&lt;p&gt;Glenn Gould was a big champion of Richard Strauss, and I&apos;m grateful he recorded a bunch of his Strauss&apos;s piano music. Obviously, this youthful piano music is not among Strauss&apos;s greatest work (it tends to be very repetitious, not yet fully individualist and economical), but it still has its charm, as a transitional late Romantic attempt of the 19th century. I can&apos;t possibly listen to the whole thing without falling asleep, but it&apos;s interesting to click around to get a glimpse of where he was coming from:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/xemgqKGl9VE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;His masterpiece at the end: Metamorphosen for 23 solo strings&lt;/h2&gt;
&lt;p&gt;In 1944, near the end of his life, 64 years after the last musical selection I linked to, Strauss composed his final masterpiece, &lt;a href=&quot;https://en.wikipedia.org/wiki/Metamorphosen&quot;&gt;Metamorphosen&lt;/a&gt;, which he subtitled &quot;in memoriam&quot;. &quot;In memory&quot; of what? He refused to say, so there is debate about this: it could be a statement of mourning over the Dresden destruction in World War II, or could be a more abstract statement about the horrors of war in general. See this &lt;a href=&quot;https://csosoundsandstories.org/strauss-reflecting-on-his-artistic-life-in-metamorphosen/&quot;&gt;recent article&lt;/a&gt; for more discussion.&lt;/p&gt;
&lt;p&gt;This is my favorite music by him. It is a feat of emotional contrast and expression, and gorgeous orchestration, writing for strings.&lt;/p&gt;
&lt;p&gt;Here is a wonderful video of Nathalie Stutzmann conducting Metamorphosen:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/3X9asrefuSg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Other work&lt;/h2&gt;
&lt;p&gt;I have completely omitted any mention of &lt;em&gt;decades&lt;/em&gt; of Strauss&apos;s most prominent masterpieces, because, ironically, most of them do not speak to me. I realize that by saying this, I am saying that Strauss is a problem for me: much of his music leaves me cold, however technically brilliant they might be. So I do not love that music. I remember him for his accomplished, nostalgic later work that I actually love.&lt;/p&gt;
&lt;h2&gt;Conducting&lt;/h2&gt;
&lt;p&gt;Richard Strauss was influential as a conductor.&lt;/p&gt;
&lt;h3&gt;His own music&lt;/h3&gt;
&lt;p&gt;Here is a video clip of Richard Strauss conducting his own music in 1944:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/doJVlS7nn_g&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Mozart&lt;/h3&gt;
&lt;p&gt;Strauss loved Mozart. Here he is in a 1926 recording of Mozart&apos;s &quot;Jupiter&quot; symphony, no. 41:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/lF7QxBkmlXE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s not a great performance (I do not like the sloppiness or the rushing), but it is interesting how &quot;modern&quot; it sounds, in that it takes a brisk tempo and focuses on overall structural integrity and drive. Apparently he did not treat recording as a serious activity, however, so one cannot extrapolate from this recording how his live performances sounded in general.&lt;/p&gt;
&lt;h2&gt;Controversies&lt;/h2&gt;
&lt;p&gt;There are two controversies over Strauss: one is over music and one is over politics.&lt;/p&gt;
&lt;p&gt;Musically, Strauss for a long time was considered to have fallen into conservatism, as he began as a radical innovator but did not follow through: he rejected the 20th century developments in atonality and serialism. I am not sure how entirely fair it is to level this charge against him, since he lived so long that one could not expect him to stay a radical forever. I also do not believe musical conservatism is necessarily horrible. Not everyone has the temperament or desire to be perpetually be on the cutting edge. I am perfectly happy that he wrote the &quot;conservative&quot; Metamorphosen and Four Last Songs that only he, who had lived half his life through the late Romantic era in the 19th century, could have created the way that they are.&lt;/p&gt;
&lt;p&gt;Politically, there are charges of his conveniently &lt;a href=&quot;https://web.archive.org/web/20251010043754/https://www.nytimes.com/2002/01/06/arts/music-richard-strauss-and-hitler-s-reich-jupiter-in-hell.html&quot;&gt;going along with the Nazi regime&lt;/a&gt; for his own career gain. He is not alone, of course, in being a German musician under a cloud for not fleeing Germany or actively opposing Hitler. So there will always be &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dw.de/richard-strauss-and-musical-seduction/a-17695663&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dw.de/richard-strauss-and-musical-seduction/a-17695663&quot;&amp;gt;discussion of this aspect of his life&amp;lt;/span&amp;gt;. I think it&apos;s clear that he had no Nazi ideological convictions, but was a career opportunist.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;On Richard Strauss&apos;s 150th birthday, I decided to celebrate the music of his that I love most, and share it here. I hope you have checked out some of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you like the music of Richard Strauss? If so, what are your favorite pieces by him? Are they among those I mentioned, or those I did not? What do you think about him as a person?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Finally making rhubarb tasty to myself: flour-less rhubarb crisp</title><link>https://franklinchen.com/blog/2014/06/09/finally-making-rhubarb-tasty-to-myself/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/09/finally-making-rhubarb-tasty-to-myself/</guid><pubDate>Mon, 09 Jun 2014 22:15:32 GMT</pubDate><content:encoded>&lt;p&gt;For the first forty years of my life, I believe I never ate any rhubarb. At least, I don&apos;t ever recall anything identified as rhubarb that I ate. It was just something I heard about, in the context of pie, and I rarely eat pies, and am rather particular about pie when I do eat it (for example, I have sometimes eaten pumpkin pie, because my father likes it, but I never once really enjoyed it).&lt;/p&gt;
&lt;p&gt;My Krestschmann Farm box subscription has always recognized that some people don&apos;t like rhubarb, and allows opting out of receiving it. Since I never ate it, I didn&apos;t know whether I liked it, but looking up its description online, I felt no need to try it, so I always indicated that I did not want it.&lt;/p&gt;
&lt;p&gt;Today was the first time I cooked rhubarb and made something that I actually enjoyed eating. Here&apos;s the story.&lt;/p&gt;
&lt;h2&gt;My first time cooking rhubarb was a disaster&lt;/h2&gt;
&lt;p&gt;Almost exactly a year ago, Abby and I accidentally did not specify rhubarb exclusion from our farm box (upon renewing our subscription). So we received rhubarb.&lt;/p&gt;
&lt;p&gt;I didn&apos;t know what the heck to do with it. I decided to make an Indian-style lentil dish and &quot;hide&quot; rhubarb in it. At first I thought it was OK, but then I decided it was weird. Unfortunately, I had to finish the whole batch. Abby didn&apos;t help me finish it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rhubarb-lentils-2013-06-10.jpg&quot; alt=&quot;Rhubarb lentils&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Abby&apos;s experiment didn&apos;t work for me&lt;/h2&gt;
&lt;p&gt;Abby also tried an experiment, cooking rhubarb with banana on the stove. The resulting concoction caused an argument, because after trying it, I refused to eat any more of it, but she had made a huge batch and so she was stuck with it.&lt;/p&gt;
&lt;h2&gt;My experiment today&lt;/h2&gt;
&lt;p&gt;Today I decided that instead of randomly making crap up, I would look for some kind of &quot;recipe&quot;, and also incorporate the advice of friends from last year. The following is what I made. I found it surprisingly edible, and even had to stop myself from eating too much after dinner:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rhubarb-2014-06-09.jpg&quot; alt=&quot;Rhubarb crisp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coconut oil&lt;/li&gt;
&lt;li&gt;Rhubarb, chopped up&lt;/li&gt;
&lt;li&gt;Honey (I tried to go easy with this!)&lt;/li&gt;
&lt;li&gt;Cinnamon&lt;/li&gt;
&lt;li&gt;Cloves&lt;/li&gt;
&lt;li&gt;Orange zest&lt;/li&gt;
&lt;li&gt;Lemon juice&lt;/li&gt;
&lt;li&gt;Salt&lt;/li&gt;
&lt;li&gt;Cocoa powder (a tiny sprinkle, just an improvisation)&lt;/li&gt;
&lt;li&gt;Raw walnuts and pecans, chopped&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Preheat oven to 350 degrees F, layer the nuts on top of the remainder of the mixture, and bake for 40 minutes.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who offered suggestions to me last year!&lt;/p&gt;
&lt;p&gt;The result was fairly tart, which is fine, but I didn&apos;t want to put too much sugar into this.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I was planning to notify Kretschmann Farm that we don&apos;t want to receive rhubarb, but I have second thoughts now.&lt;/p&gt;
&lt;p&gt;Nevertheless, we will probably go ahead as planned and put rhubarb on our &quot;do not want&quot; list, simply because we&apos;d rather get other stuff instead.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;I learned some lessons from this whole rhubarb incident:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I can learn to &lt;a href=&quot;/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/&quot;&gt;like stuff I never ate for decades&lt;/a&gt;, if I prepare it just so. (More generally, I try to continuously find opportunities to &lt;a href=&quot;https://sivers.org/hate&quot;&gt;love what I used to hate&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;It is wise to listen to accumulated wisdom, especially from my friends (whose taste might be correlated a bit with mine).&lt;/li&gt;
&lt;li&gt;Accidentally &lt;em&gt;not&lt;/em&gt; choosing to opt out of my &quot;default&quot; preference led to some interesting experiences.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What&apos;s the latest food you feared or hated or didn&apos;t know about that you recently tried? How did it go? If it went poorly, will you try again, or just write it off?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Lessons from my 2nd tournament game</title><link>https://franklinchen.com/blog/2014/06/05/the-chess-improver-lessons-from-my-2nd-tournament-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/05/the-chess-improver-lessons-from-my-2nd-tournament-game/</guid><pubDate>Thu, 05 Jun 2014 11:16:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Lessons from my 2nd tournament game&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Last week, I wrote about deciding to &lt;a href=&quot;/blog/2014/05/29/the-chess-improver-is-it-worth-studying-your-own-games-from-thirty-years-ago/&quot;&gt;analyze my tournament games from over thirty years ago&lt;/a&gt; for my own benefit as well as for valuable teaching material. I started off with my first tournament game, from 1980, as an unrated 10-year-old boy, which I lost without much of a fight.&lt;/p&gt;
&lt;p&gt;This week, I bring a much more interesting game, my second tournament game that took place probably an hour or two after my first one. This game, played against someone rated around USCF 1400, I ended up winning, but as is typical in games of this level, both sides made serious errors. The nature of these errors is instructive.&lt;/p&gt;
&lt;h2&gt;Themes to pay attention to&lt;/h2&gt;
&lt;p&gt;As is typical in weaker amateurs&apos; games, we were out of opening &quot;book&quot; theory at move 5 in a Petroff Defense, when my opponent played a poor and strange Queen move. I reacted not terribly, but not best either. If I were coaching my younger self now, I would emphasize that &lt;em&gt;general principles&lt;/em&gt; apply when facing strange moves in the opening. Here, just because my opponent moved his Queen doesn&apos;t mean that I should also move my Queen!&lt;/p&gt;
&lt;h3&gt;Quick piece trades into an ending; interesting imbalance of my having the Bishop pair&lt;/h3&gt;
&lt;p&gt;Typical of games at this level, a lot of piece trades happened, just because they could. Stronger players would evaluate whether it is advantageous to offer a particular trade or to accept one. The trade in this game at move 16 determined the course of the rest of the game: my opponent gave up a Bishop for my Knight, resulting in a permanent imbalance whose significance was not appreciated by either of us, as our endgame shows.&lt;/p&gt;
&lt;p&gt;All the trades resulted in an endgame with two Bishops vs. Bishop and Knight, and symmetrical Petroff Pawn structures. I missed the win of a light-squared Pawn on the Queen side: a stronger player would have immediately spotted the possibility, because of Black missing a light-squared Bishop while the Knight was out of play on the other side of the board. When I finally did see the win, I inexplicably did not take the free Pawn. I don&apos;t remember what I was thinking 34 years ago, but perhaps I missed an elementary recapture with check?&lt;/p&gt;
&lt;h3&gt;Bishop versus Knight, symmetrical Pawns&lt;/h3&gt;
&lt;p&gt;At move 30, my opponent forced the trade of his remaining Bishop, leaving us with a Bishop versus Knight endgame. This is when things got strange. Neither of us knew what we were doing. We didn&apos;t have clear plans, clear points of attack or defense. We played somewhat randomly. I made the first terrible moves, pushing a Pawn so far, without any support of my King, that it was doomed. Miraculously, my opponent never figured out how to win that Pawn. Apparently, neither of us had been taught that &lt;em&gt;an active King is the most important piece in a minor piece and Pawn ending&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;At move 35, an interesting thing happened: my opponent tried to trick me into trading my Bishop for his Knight, which, because of his more active King and position, would have led to a won King and Pawn ending. Critically, in my chess education &lt;em&gt;I had learned the basics of standard King and Pawn endings&lt;/em&gt;, so I did not fall into the trap.&lt;/p&gt;
&lt;p&gt;At move 44, I made a horrific &quot;active&quot; Pawn push to attack Black&apos;s Knight, but this should have led easily to losing a Pawn by force, if the Knight simply danced around attacking all the Pawns in sight until one fell. Everyone should know basic examples of &lt;em&gt;the special power of the Knight in an ending&lt;/em&gt;, especially against a Bishop that can only protect Pawns of one square color!&lt;/p&gt;
&lt;p&gt;It turns out that at move 46, I horrifically gave up a Pawn voluntarily anyway. I can deduce what must have happened. There was a Knight check fork after which I could have taken the Knight with my Bishop, leading to a &lt;em&gt;drawn&lt;/em&gt; King and Pawn ending, but I must have still felt (from the earlier trick attempt) that any King and Pawn ending was still lost for me. I didn&apos;t evaluate the position as it was, but only thought about a past &quot;similar&quot; position that was in fact critically different. I will confess that even at my much higher level of chess today, I still sometimes fall into the trap of &lt;em&gt;making assumptions based on past positions&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;After winning the Pawn, the ending should have been an easy win for Black, but he did not know what to do with his King and Knight, and actually ended up putting his &lt;em&gt;Knight on the rim where it is dim&lt;/em&gt;! This enabled me to regain the lost Pawn.&lt;/p&gt;
&lt;p&gt;At move 60, my opponent made a random Knight move that I could have punished by invading the King side with my King and mopping up Pawns and Queening. But I did not realize that the situation had changed and I was winning; I did not &lt;em&gt;use my King&lt;/em&gt;. I had been defending for 25 moves, basically, since mistakenly advancing my b-Pawn and making it a target. I started retreating again to &quot;defend&quot; my Queen side, rather than win on the King side.&lt;/p&gt;
&lt;h3&gt;Winning King and Pawn ending&lt;/h3&gt;
&lt;p&gt;Just as I started retreating, my opponent made a horrific blunder at move 62, moving his Knight such that I could skewer it with a check and trade into an obviously won King and Pawn ending. Apparently, he fell into the mental trap just mentioned earlier of thinking that because at one point, King and Pawn endings were winning for him, they must always be winning for him.&lt;/p&gt;
&lt;p&gt;The rest of the game was easy, but I am proud that I cleaned up efficiently. One important part of it was &lt;em&gt;knowing how to win a Queen versus Pawn ending&lt;/em&gt; by forcing the defending King to block the Pawn&apos;s Queening square, gaining time. Finally I activated my King in the game! And I won without resorting to my other passed Pawn, just using my Queen and King.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;&quot;]
[Date &quot;1980.08.30&quot;]
[Round &quot;2&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Swathell Gary&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;0&quot;]
[ECO &quot;C42&quot;]
[EventDate &quot;1980.08.30&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 Qe7 $2 6. Qe2 $2 { I was &quot;out of book&quot; and confused, unable to think for myself.} ( 6. Be2 { Normal development is fine, and great for White.} ) 6… d5 7. Nbd2 Nxd2 8. Bxd2 Qxe2+ 9. Bxe2 Bf5 10. c3 Bd6 11. O-O O-O 12. Rfe1 { Still following my mechanical &quot;rule&quot; of developing all of my pieces, including my Rooks, before any other active play.} 12… c6 13. Rac1 { Simply the best square I could find for my remaining Rook, which I felt I needed to develop.} 13… Re8 $2 { My opponent broke the rule about developing minor pieces before Rooks!} 14. Nh4 Be6 15. Bd3 { Improving my Bishop and opening the way for my Rook on the e-file.} 15… Nd7 16. Nf5 { An active attacking move.} 16… Bxf5 $6 { Giving up the Bishop pair for no good reason.} 17. Rxe8+ Rxe8 18. Bxf5 Nf6 19. Re1 { Following the rule to face off against Rooks on open files.} 19… Rxe1+ $2 20. Bxe1 $201 Ne4 $2 { An &quot;active&quot; move that does not do anything but waste time. It also does not pay attention to serious Queen side threats.} 21. f3 $2 { A reactive move in fear of leaving the Knight at its &quot;outpost&quot;.} ( 21. Bc8 { Would have won a light-squared Pawn!} ) 21… Nf6 22. Bh4 Nh5 $4 23. Bc8 { Finally seeing a target on the Queen side.} 23… b6 24. Bb7 c5 25. dxc5 $2 { Completely incomprehensible, avoiding the easy win of a Pawn.} ( 25. Bxd5 { Wins a Pawn for nothing.} ) 25… Bxc5+ { Did I miss that the recapture was with check?} 26. Kf1 d4 27. cxd4 Bxd4 28. b3 Be5 29. g3 h6 30. f4 Bf6 31. Bxf6 Nxf6 $201 32. Ke2 Kf8 33. Bc6 $2 { I was playing without a clear plan.} 33… Ke7 34. b4 $2 Kd6 35. b5 $2 { Terrible and totally misguided. Now White is overextended and should actually lose a Pawn soon.} 35… Nd5 { Trying to trick White into trading into a King and Pawn ending.} ( 35… Kc5 ) 36. Kd2 $4 { Not even at least trying to get closer to the defense of the b-Pawn.} ( 36. Bxd5 $4 ) 36… Nb4 $2 ( 36… Nc7 ) 37. Be8 f6 38. a4 Kc5 39. Bf7 Nd5 $2 ( 39… Kd4 ) 40. Kd3 Ne7 41. Kc3 Nd5+ { Still trying to trick White into a King and Pawn ending.} 42. Kd3 Ne7 43. Kc3 Nf5 { Avoiding a draw by repetition and trying to win.} 44. g4 $4 { Horrible, weakening the King side Pawns.} 44… Ne3 45. h3 Nd5+ $2 ( 45… Ng2 { A Knight dance would have won one of the Pawns.} 46. f5 Nf4 47. h4 Ng2 48. h5 Ne3 ) 46. Kb3 $4 { Horrific, giving up a Pawn without a fight. I did not recalculate that the new King and Pawn ending is a draw.} ( 46. Bxd5 { Now was the time to bail out into a draw.} ) 46… Nxf4 47. h4 g5 48. h5 Nd5 ( 48… f5 ) 49. Be6 Ne7 $6 { Strangely passive.} ( 49… Kd6 ) 50. Kc3 Kd6 51. Bc4 f5 52. Be2 f4 $2 ( 52… Ke5 { Again, activating the King was winning.} ) 53. Kd4 Nd5 54. Bf3 Nb4 $6 { Playing on the wrong side of the board. The goal should be to maneuver the Knight to kick away White&apos;s Bishop on f3.} ( 54… Nf6 { !?} 55. Be2 Nd7 56. Bf3 Ne5 ) 55. Be4 Na2 $4 { Knight on the rim is dim!} 56. Bd3 $4 ( 56. Kc4 { Immobilizing Black&apos;s Knight would have drawn immediately.} ) 56… Nc1 $2 ( 56… Nb4 ) 57. Bc4 f3 58. Ke3 { Now White will regain the Pawn.} 58… Kc5 59. Bf7 Ne2 60. Kxf3 Nf4 $4 { Allows White&apos;s King to invade the King side.} ( 60… Nc3 { Keeping the Knight active and pointed at White&apos;s Queen side would have held.} ) 61. Bg6 $4 { Completely ridiculous, not realizing it was time to attack and win.} ( 61. Ke4 { Should be an easy win for White on the King side.} ) 61… Kd5 62. Bc2 Ne6 $4 { Suicide.} ( 62… Kd4 { Activate the King!} ) 63. Bb3+ Ke5 64. Bxe6 Kxe6 $201 { The King and Pawn ending is winning for White.} 65. Ke4 { I knew about taking the opposition.} 65… Kf6 66. Kd5 Ke7 67. Kc6 Ke6 68. Kb7 Ke5 69. Kxa7 Kf4 70. Kxb6 Kxg4 71. a5 Kh3 72. a6 g4 73. a7 g3 74. a8=Q g2 $201 75. Qf3+ { I knew how to win with Queen versus Pawn.} 75… Kh2 76. Qf2 Kh1 77. Qh4+ Kg1 78. Kc5 { I knew the standard technique of forcing Black to block the Queening square to give time for White&apos;s King to come back.} 78… Kf1 79. Qf4+ Ke2 80. Qg3 Kf1 81. Qf3+ Kg1 82. Kd4 Kh2 83. Qf2 Kh3 84. Qg1 { Does the job, but was not necessary.} ( 84. Ke4 { Most thematic and efficient.} ) 84… Kh4 85. Qxg2 Kxh5 86. Ke5 Kh4 87. Kf4 h5 88. Qg3# { A very long game, but I was proud to win my second ever tournament game.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Thoughts on National Running Day 2014</title><link>https://franklinchen.com/blog/2014/06/04/thoughts-on-national-running-day-2014/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/06/04/thoughts-on-national-running-day-2014/</guid><pubDate>Wed, 04 Jun 2014 23:19:21 GMT</pubDate><content:encoded>&lt;p&gt;This is my third year of celebrating &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runningday.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runningday.org/&quot;&amp;gt;National Running Day&amp;lt;/span&amp;gt;. The first year, I did so by &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;running in Schenley Park&lt;/a&gt;; last year, I quietly did &lt;a href=&quot;/blog/2013/06/05/celebrating-national-running-day-quietly-in-frick-park/&quot;&gt;my usual Frick Park run&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year, I ran in Frick Park again, a shorter run, because I took such a long break from running since last October, and only recently returned to regular running.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-06-04/frick.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Luna Venado Sandals&lt;/h2&gt;
&lt;p&gt;Since it was a shorter run of just 3 miles, I wore my thin &lt;a href=&quot;https://www.lunasandals.com/products/luna-venado&quot;&gt;Luna Venado Sandals&lt;/a&gt; (only 7 mm thick) instead of the Luna Mono Sandals that I wore on last year&apos;s run.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-06-04/luna-venado-sandals-top.jpg&quot; alt=&quot;Luna Venado Sandals&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2014-06-04/luna-venado-sandals-side.jpg&quot; alt=&quot;Luna Venado Sandals&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Thoughts&lt;/h2&gt;
&lt;p&gt;I&apos;m grateful that I have returned to running after many months off. It&apos;s good for my body and most of all, my mind, actually.&lt;/p&gt;
&lt;p&gt;I&apos;m grateful that I have no excuse to go out since I live so close to Frick Park.&lt;/p&gt;
&lt;p&gt;I&apos;m grateful that running is one of those things that (assuming your legs and feet are doing OK) you can do as slowly or as easily as you need or want to. I&apos;m just ramping up slowly right now, and feel no anxiety about what level of fitness I&apos;m at now. If I get tired, I can always walk, no shame. It&apos;s all good.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you run? Do you make it a ritual, as apparently I have, of taking time out periodically to reflect on what running means to you?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Sometimes the best speech is the one you didn&apos;t have time to prepare</title><link>https://franklinchen.com/blog/2014/05/29/sometimes-the-best-speech-is-the-one-you-didnt-have-time-to-prepare/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/29/sometimes-the-best-speech-is-the-one-you-didnt-have-time-to-prepare/</guid><pubDate>Fri, 30 May 2014 01:57:45 GMT</pubDate><content:encoded>&lt;p&gt;I went to something like my twelfth &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.hss.cmu.edu/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.hss.cmu.edu/&quot;&amp;gt;CMU Dietrich College of Humanities and Social Sciences&amp;lt;/span&amp;gt; staff appreciation lunch (I&apos;ve lost track). Basically, they feed you, recognize people who have worked some multiple of five years, and hold a raffle for ten cash prizes topping out at $100 (I won $75 last year). It&apos;s a pleasant annual social event, but one whose details I don&apos;t really remember from one year to the next.&lt;/p&gt;
&lt;p&gt;But this year was different. I will not forget this year.&lt;/p&gt;
&lt;h2&gt;Where&apos;s the dean?&lt;/h2&gt;
&lt;p&gt;The current dean, &lt;a href=&quot;https://web.archive.org/web/20251212185734/https://www.stat.cmu.edu/GSS/lehoczky.html&quot;&gt;John Lehoczky&lt;/a&gt;, who always gives out the awards during the staff appreciation lunch, was nowhere to be found. This was especially mysterious because he was to be honored with a gift today, since he is stepping down as dean after fourteen years, to return to his duties as professor of statistics.&lt;/p&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;p&gt;Lunch was pretty good, for me anyway. I had steak, potatoes, steamed vegetables, and salad, and topped off with some coffee and cake.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dietrich-appreciation-lunch-2014-05-29/lunch.jpg&quot; alt=&quot;Lunch&quot; /&gt;
&lt;img src=&quot;../../assets/images/dietrich-appreciation-lunch-2014-05-29/cake.jpg&quot; alt=&quot;Coffee and cake&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But I was surprised by the absence of vegetarian entrees. I myself am not vegetarian, but I know many people who are, or are almost-vegetarian, and I enjoy vegetarian options, so I am always sensitive to the variety of food options at events. Vegetarians at this lunch today had to make do by loading up on only simple salad and steamed vegetables.&lt;/p&gt;
&lt;h2&gt;Dean Lehoczky appears&lt;/h2&gt;
&lt;p&gt;Finally, after everyone was done eating, Dean Lehoczky appeared.&lt;/p&gt;
&lt;p&gt;He explained that last night he had been working on some fancy speech for us, but then his wife had an accident and he took her to the hospital and they had some adventures there. After they finally returned home, he decided to scrap his plans for his speech.&lt;/p&gt;
&lt;p&gt;Instead, he gave a little talk that is the only one of his that I expect to remember in the past decade of this annual event (I have no memory of what he even said last year, for example). It was hilarious, and it was just him telling a story highlighting the humor in all the situations that arose after the accident last night.&lt;/p&gt;
&lt;p&gt;I guarantee you that I will &lt;em&gt;never&lt;/em&gt; forget this story he told, as long as I live, it was so funny and personal. I will remember this story for decades. Up till this moment, John Lehoczky was to me just some guy I saw around at events. I don&apos;t remember anything he might have said at any ceremonial speech I may have attended by him. But after yesterday, I saw a really funny guy who shared a personal story at his last staff appreciation lunch. The first thing when I got home from work was to tell Abby the story.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dietrich-appreciation-lunch-2014-05-29/lehoczky.jpg&quot; alt=&quot;John Lehoczky&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you&apos;re going to give a speech, why not make it unique and interesting, rather than formal and boilerplate? It worked, by accident, for John Lehoczky in his final moments as dean of the CMU Dietrich College of Humanities and Social Sciences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you have to speak in public, how do you feel about your obligation? Do you fall back on some impersonal formula based on some template, since nobody really cares anyway? Or do you tell a story, and make it interesting? Do you care if anyone cares?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Is it worth studying your own games from thirty years ago?</title><link>https://franklinchen.com/blog/2014/05/29/the-chess-improver-is-it-worth-studying-your-own-games-from-thirty-years-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/29/the-chess-improver-is-it-worth-studying-your-own-games-from-thirty-years-ago/</guid><pubDate>Thu, 29 May 2014 11:16:26 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Is it worth studying your own games from thirty years ago?&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I am firmly convinced that the single best thing one can to do improve one&apos;s chess is to analyze one&apos;s actual games. For this reason, I make game analysis the cornerstone of my work with a student; from going over his games, and asking him why he played certain moves or what thoughts he was having, and how he evaluated certain positions, we get a lot of data to use in targeted improvement of endgame, middlegame, and opening understanding, as well as tactical themes.&lt;/p&gt;
&lt;h2&gt;But I didn&apos;t quite take my own advice&lt;/h2&gt;
&lt;p&gt;So it is ironic that I never fully analyzed the games of chess that I played in my first five years in tournaments, from 1980-1985, ages 10-15! Several years ago, upon returning to chess after an absence of twenty years, I decided I might as well enter into a database &lt;em&gt;all&lt;/em&gt; the tournament games I have ever played in my life, starting from my very first games as a child 34 years ago now in 1980. I had kept all my old scoresheets (except for one stray tournament I played while in high school; I seem to have misplaced my scoresheets from that Michigan high school tournament).&lt;/p&gt;
&lt;p&gt;But I never actually went back to analyze any of those old games, except for a handful that came to mind because of important positions that had stuck in my mind. I basically came back to chess tournament play in 2005 with a clean slate, as though I had never played before. I had in twenty years completely forgotten any opening theory I had ever known (which was very little, actually), and therefore rebuilt my game from scratch. I didn&apos;t feel that it was worth studying my old games from my childhood.&lt;/p&gt;
&lt;p&gt;The reasons I did very little analysis of my games (other than sometimes a post mortem with some stronger players) during my tournament life in my youth:&lt;/p&gt;
&lt;p&gt;My lack of access to computer engines in the early 1980s.
Not having a chess coach.&lt;/p&gt;
&lt;p&gt;I have, of course, analyzed all of my games during my adult return to chess in 2005.&lt;/p&gt;
&lt;p&gt;But the question remains: is it worth analyzing my ancient games from more than &lt;em&gt;thirty&lt;/em&gt; years ago?&lt;/p&gt;
&lt;h2&gt;A bit about the past&lt;/h2&gt;
&lt;p&gt;Recently, out of curiosity, I decided to look at all the games in my first tournament I ever played, which was the 1980 Michigan Open, when I was 10 years old. This was the first tournament for my father also: we simultaneously entered the tournament world only weeks after he discovered a local chess club and took me there. They had said, hey, there&apos;s an organization for official tournaments you should join, the United States Chess Federation, then you can play rated games, so we joined, we learned how to use chess clocks, and we both entered the Reserve (under-1800) Section of the Michigan Open.&lt;/p&gt;
&lt;p&gt;Both my father and I did well in our first tournament in 1980. He won the First place Unrated trophy, and I won the Second place Unrated trophy, both of which he still has at home. I scored 3.5/7.0 points and my first provisional rating was 1546. Not bad for a 10-year-old who had only begun playing with  people other than his father for a couple of weeks, and neither of us had ever had lessons, but just studied the game ourselves from old library books. My father achieved a provisional rating a bit higher, around 1574, I believe. He was still stronger than me; I would not surpass him until age 11, when he peaked at 17xx but I passed him, and also beat him at home for the first time ever.&lt;/p&gt;
&lt;h2&gt;The seeds of one&apos;s personality and strengths and weaknesses?&lt;/h2&gt;
&lt;p&gt;To my surprise, examining the first seven tournament games I ever played, I felt some kind of recognition. Obviously, my tactical and positional understanding were much poorer than they would become later, but certain oddities or weaknesses of how I still play today seem present in those early games, and they contain some elements I am still proud of as well.&lt;/p&gt;
&lt;p&gt;In addition, looking at more early games, I found a lot of material that I think may be useful for teaching purposes, because I actually remember what kind of mindset, even specific thoughts, led me to play in certain ways. Since my rating surpassed 2000 by 1985, sometimes it&apos;s hard for me to remember specifically what it was like to play at a strength between 1500 and 2000. But it&apos;s necessary to know that, in order to better teach and explain things for players of that range of strength.&lt;/p&gt;
&lt;p&gt;Therefore, both for my own benefit and for others&apos; benefit, I may start selecting interesting games of mine from the 1980s for analysis.&lt;/p&gt;
&lt;p&gt;As a basis, let&apos;s start with my first tournament game in my life. In future posts, I will show how I improved my play after this first game. I did end up scoring 3.5/7.0 in this tournament!&lt;/p&gt;
&lt;h2&gt;My first game&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://franklinchen.com/images/franklin-1980.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I still remember my first tournament game. I was ten years old, I didn&apos;t know what to expect, and I was on my own, as my father was also playing in his first tournament game. My opponent did not show up for something like twenty minutes. I sat there as my clock ticked.&lt;/p&gt;
&lt;p&gt;I played pretty badly in my first game. My annotations show my memories of what I was thinking during the game.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Michigan Open&quot;]
[Site &quot;&quot;]
[Date &quot;1980.08.30&quot;]
[Round &quot;1&quot;]
[White &quot;Borders Michael&quot;]
[Black &quot;Chen Franklin&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;Unrated&quot;]
[ECO &quot;A03&quot;]
[EventDate &quot;1980.08.30&quot;]
[WhiteElo &quot;&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;f4 { My first ever tournament game in my life, and my opponent arrived late, and played the Bird! I recall that his rating was 15xx.} 1… d5 { I already didn&apos;t know what I was doing. My father only played 1 e4 against me.} 2. Nf3 e6 { I had the idea that I need to develop my King side Bishop as quickly as possible.} 3. g3 b6 { I got &quot;scared&quot; and wanted to &quot;cancel&quot; White&apos;s fianchetto with my own.} 4. Bg2 Bb7 5. O-O Nf6 6. d3 Bc5+ $5 { Not actually pointless. My plan was to provoke an advance of White&apos;s e-Pawn to e3, to make White&apos;s dark-squared Bishop &quot;worse&quot;.} 7. e3 O-O 8. c3 $6 ( 8. Ne5 Bd6 9. b3 c5 10. Bb2 ) 8… Bd6 { Weird to waste a tempo, but this was intentional. After provoking e3, I wanted to play c5.} 9. Qc2 c5 10. Nbd2 Re8 $6 { With a plan, but not a good one. I did not understand the value of the Bishop pair, and did not think about the drawbacks of a half-open f-file.} ( 10… Ng4 { Taking advantage of White&apos;s momentary weakness on e3.} 11. Nb3 Re8 12. e4 c4 ) 11. e4 e5 $2 { Positionally terrible.} ( 11… Ng4 ) 12. fxe5 Bxe5 13. Nxe5 Rxe5 14. Nf3 Re8 15. e5 Ng4 $4 { Not considering that the Knight would be stranded. But at this point in my chess development, I resisted moving my pieces backwards.} ( 15… Nfd7 16. d4 f6 17. exf6 Nxf6 ) 16. Bf4 $2 ( 16. d4 Ba6 17. Ng5 Bxf1 18. Qxh7+ ) 16… Nd7 17. Rae1 $2 ( 17. d4 Nf8 18. h3 Nh6 19. Rf2 ) 17… Rc8 $4 { Here you have to understand that I believed in &quot;developing&quot; every piece (including Rooks) before doing anything else in a game. This was the best square I could think of for the Rook.} ( 17… d4 18. Qb3 Qe7 19. h3 Nh6 ) 18. h3 Nh6 19. g4 d4 { To open up the way for my Bishop.} 20. Qd2 Nf8 21. c4 Re6 $4 { Protecting the Knight on h6, but providing a target. I simply did not think ahead for possible threats, but played one move at a time.} ( 21… Ng6 22. Bxh6 gxh6 23. Qxh6 Bxf3 ) 22. Ng5 Re7 $2 { OK, this protects the Bishop on b7, but I was not yet capable of realizing that it was best to give up an exchange and get my Knight out of h6.} ( 22… Bxg2 23. Nxe6 fxe6 24. Qxg2 Nf7 ) 23. Bxb7 Rxb7 24. Ne4 f5 $4 { I was focused on rescuing my Knight from h6 and thought I was being clever by playing an attacking move to get the time for the Knight to move.} ( 24… Rc6 { At least protects the Knight.} ) 25. Nd6 { Oops, I didn&apos;t look to see that White could move the Knight and also attack at the same time.} 25… Rf7 $4 { Trying to &quot;trick&quot; White into taking the Rook on f7, because I was fixated on rescuing my Knight from h6.} 26. Nxf7 { It still wins.} ( 26. Bxh6 { Was even stronger, but it doesn&apos;t matter here.} ) 26… Nxf7 27. gxf5 { Black is an exchange and Pawn down, totally lost, of course.} 27… Qd7 28. e6 Qe7 29. exf7+ Qxf7 30. Bd6 Nd7 $9 { Still obsessed with &quot;developing&quot; the Knight, and not watching out for threats.} 31. Re7 { Oops, I will lose a Knight.} 31… Qh5 { Maybe I&apos;ll get the h3 Pawn.} 32. Qg2 { No luck getting the h3 Pawn.} 32… Qh6 { Have to stop mate on g7.} 33. Rxd7 g6 $2 { Allowing mate in 3.} 34. Qd5+ Kh8 35. Be5+ 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Copland&apos;s Appalachian Spring danced by the orchestra musicians: confronting my memories of boredom four years ago</title><link>https://franklinchen.com/blog/2014/05/28/coplands-appalachian-spring-danced-by-the-orchestra-musicians-confronting-my-memories-of-boredom-four-years-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/28/coplands-appalachian-spring-danced-by-the-orchestra-musicians-confronting-my-memories-of-boredom-four-years-ago/</guid><pubDate>Thu, 29 May 2014 02:23:26 GMT</pubDate><content:encoded>&lt;p&gt;I follow Greg Sandow&apos;s blog on the &lt;a href=&quot;https://www.artsjournal.com/sandow/&quot;&gt;&quot;future of classical music&quot;&lt;/a&gt;. He posted an &lt;a href=&quot;https://www.artsjournal.com/sandow/2014/05/essential-video.html&quot;&gt;article&lt;/a&gt; that got me thinking: he was all excited about an unorthodox performance of Aaron Copland&apos;s half-hour-long &lt;a href=&quot;https://en.wikipedia.org/wiki/Appalachian_Spring&quot;&gt;&quot;Appalachian Spring&quot;&lt;/a&gt; by the University of Maryland Symphony Orchestra in which the students of the orchestra actually moved around and danced as well as played their instruments.&lt;/p&gt;
&lt;p&gt;I have a confession to make: back almost four years ago, in November 2010, I went to a &lt;a href=&quot;https://web.archive.org/web/20160603184310/http://www.cmu.edu/news/archive/2010/November/nov15_cmunightwithpso.shtml&quot;&gt;&quot;Carnegie Mellon Night at the Symphony&quot;&lt;/a&gt; in which &quot;Appalachian Spring&quot; was on the program. &lt;strong&gt;I got very bored during the piece.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One thing to remember is that the orchestra suite was actually arranged by Copland from his original piece that was an actual ballet for Martha Graham! So it&apos;s actually kind of unnatural to experience this music &quot;purely&quot; as music. To me the suite is rather long and redundant without some kind of &quot;story&quot; to go along with it. So I watched the video of the orchestra-danced performance.&lt;/p&gt;
&lt;p&gt;It was definitely more interesting seeing action. At the same time, I got bored eventually anyway, after about 15 minutes. But I lasted longer with the physical action. However, I was also distracted by thoughts of how difficult it must have been for the orchestra to pull this off. I mean, marching band is one thing, but this is an orchestra and there was a ton of choreography and it&apos;s not just marching.&lt;/p&gt;
&lt;p&gt;It&apos;s interesting that a commenter on Sandow&apos;s blog criticized the
effort, writing: &lt;em&gt;It&apos;s nicely done, I suppose, if you must do this
sort of thing. But when I go to an orchestral concert, I&apos;m there for
the music, not for this sort of thing. To me, this doesn&apos;t tell the
audience &quot;this music is worth your time and attention,&quot; it tells them
&quot;we have so little faith that you’ll enjoy the music that we feel
compelled to trick it out with distractions.&quot; I used to sing in a
chorus that was fond of &quot;chorusography,&quot; and it annoyed me as a
performer, too.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you think? Do you like this idea or does it annoy you?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Judge for yourself:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/jGSctM_8K_E&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Remembering the gift of being introduced to kayaking six years ago by a total stranger</title><link>https://franklinchen.com/blog/2014/05/25/remembering-the-gift-of-being-introduced-to-kayaking-six-years-ago-by-a-total-stranger/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/25/remembering-the-gift-of-being-introduced-to-kayaking-six-years-ago-by-a-total-stranger/</guid><pubDate>Mon, 26 May 2014 03:01:47 GMT</pubDate><content:encoded>&lt;p&gt;Over Memorial Day weekend, Abby and I went kayaking on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Kiskiminetas_River&quot;&gt;Kiski River&lt;/a&gt;, at the invitation of Steve, the guy we first met six years ago. There&apos;s a story I&apos;d like to share about what happened by chance six years ago.&lt;/p&gt;
&lt;h2&gt;First meeting Steve at his &quot;soup hike&quot; in 2008&lt;/h2&gt;
&lt;p&gt;Abby and I met Steve on a Pittsburgh hiking meetup hike on June 8, 2008 that he hosted in Apollo, PA, the &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/8046324/&quot;&gt;second &quot;soup hike&quot;&lt;/a&gt; that has since then become a regular tradition. 13 people attended that soup hike. (The first instance of the soup hike, which we did not attend, was &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/7578281/&quot;&gt;on April 5, 2008&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;The original theme of the soup hike was that since the first one was in cold weather, participants were invited to bring soup to share in Steve&apos;s garage after the hike. It would turn out, of course, that people brought all kinds of food, not just &quot;soup&quot;, but the name has stuck!&lt;/p&gt;
&lt;p&gt;The truth is that I had to drag Abby into attending our first soup hike. Although we had done a little bit of hiking after we first met dancing, she had been uninterested in the longer hikes (over five miles) that I liked to do. (It turns out that she had a lot of knee and ankle and endurance problems at the time; we&apos;ve found solutions in recent years, largely through the radical change in footwear to Vibram FiveFingers and also changes in diet.) I was very sad about this, because to be honest, I did not know how much longer I could date someone who was not going to be part of my weekend outdoors life (we had been together a year, but I was still spending much of my time hiking with my office mate John on weekends). It was a huge deal to me to encourage Abby to join me for hikes.&lt;/p&gt;
&lt;p&gt;We both enjoyed the hike tremendously. It&apos;s a beautiful hike.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/soup-hike-2008-06-08/abby-franklin.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When Abby saw Jackson Falls, she knew she wanted to come back again to swim!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/soup-hike-2008-06-08/jackson-falls.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Kayaking&lt;/h3&gt;
&lt;p&gt;After the hike, I was surprised to see some people taking kayaks out to the Kiski River. Steve was letting people use his kayaks!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/soup-hike-2008-06-08/kayak.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At this point in my life, I had &lt;em&gt;never&lt;/em&gt; voluntarily been in the water before. I&apos;m terrible at swimming, had near-drowning experiences when young, and had never touched a kayak or canoe before. But Abby was all excited, and the view on the river look so nice.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/soup-hike-2008-06-08/kiski.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So Steve said we could briefly get on the river, and each of us took a kayak and just paddled around in the river for a few minutes. I was so scared the first time, and disoriented, but after a while, decided I really enjoyed this!&lt;/p&gt;
&lt;p&gt;In summary, it was an amazing day, during which we met this great guy Steve who led us on a great hike, provided space and food in his garage, and even let us play with his kayaks. I was profoundly moved by his generosity, and the sense of fun that everyone brought to the event. Steve put us on his mailing list for his regular paddling trips, and ever since then, Abby and I have tried to join him for a couple of paddling trips a year, as our schedules and weather conditions allow.&lt;/p&gt;
&lt;h2&gt;Some photos from the paddling trip we just came back from&lt;/h2&gt;
&lt;p&gt;The paddling trip &lt;a href=&quot;https://www.meetup.com/kayaking-129/events/181882042/&quot;&gt;we just did&lt;/a&gt; with Steve was a 9-miler on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Conemaugh_River&quot;&gt;Conemaugh River&lt;/a&gt;, from &lt;a href=&quot;https://en.wikipedia.org/wiki/Blairsville,_Pennsylvania&quot;&gt;Blairsville&lt;/a&gt;. The water was rather low this day, but the weather was perfect: sunny, temperature in the 70s, not too high, and breezy, not so humid.&lt;/p&gt;
&lt;p&gt;It turns out that until today, we had not paddled in two years, because of our life situations last year, so we were really excited to have this opportunity this year.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/finishing-loading.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cute doggie coming with us:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/dog.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The group starting down the river while I hang back to take a photo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/starting.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Passing a rookery:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/rookery.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lunch break on the water because the water levels were too low for us to get off on solid ground.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/lunch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A panorama:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/panorama.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of several bridges along the route:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/bridge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Turning off to take out:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/turn.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Panorama at take-out point:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/panorama-take-out.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Logistics&lt;/h3&gt;
&lt;p&gt;It&apos;s really complicated setting up these paddling trips, because not only does Steve personally hoist up and tie up several kayaks to tow himself, but also we try to consolidate people into as few vehicles as possible in order to set up an efficient shuttle between the take-out and put-in points. And after paddling, all the kayaks have to be put back on, and everyone transported back to their appropriate vehicles, and some people ending back up at Steve&apos;s place while others just go back home. Basically, if you sign up for one of these trips, plan to spend the whole day outside.&lt;/p&gt;
&lt;p&gt;For example, on this trip, which was especially involved because of how far everything was, and because it did not end at Steve&apos;s place, we met up at 9:30 AM but didn&apos;t leave till more like 10:30 AM. After arriving at the put-in location, we unloaded, Steve went with some others to drive to the take-out location, take one car back to the put-in, and then we finally got on the river at noon! We ended up getting off the river at 3:30 PM, but then had to get back to Steve&apos;s place and help unload and clean up, and by the time we were done, it was 5:00 PM, time for a quick shower and then dinner.&lt;/p&gt;
&lt;p&gt;Very time-consuming, but it&apos;s good to invest the time to just relax and go with the flow all day and enjoy the scenery and camaraderie, rather than have anything else planned for later in the day!&lt;/p&gt;
&lt;h3&gt;Food&lt;/h3&gt;
&lt;p&gt;Abby made and brought a tasty zucchini dish, and some smoked Gouda cheese, to share for after paddling, and Steve provided burgers to grill. Many of the participants were newcomers and didn&apos;t realize they should bring food to contribute, but they know now. In any case, there was still leftover watermelon, chips, cookies, and beers from the previous day. People also brought in foccacia, cole slaw, and pasta salad.&lt;/p&gt;
&lt;p&gt;I ate two leftover homemade cookies immediately!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/cookie1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/paddling-2014-05-25/cookie2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby&apos;s zucchini was popular:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/zucchini.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Steve&apos;s burger patties, just off his grill:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/paddling-2014-05-25/burgers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Bonfire&lt;/h3&gt;
&lt;p&gt;There have been occasions when we have stayed long enough to sit in front of the bonfire that Steve likes to make (we have camped overnight outside his place a couple of times), but usually we are really beat and head out to drive home before dark, so that&apos;s what we did.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Six years ago I never went into water, but then thanks to meeting Steve, have had the opportunity to do kayaking a couple of times a year with Abby, expanding my experience of the natural world. It&apos;s really a remarkable experience going down the river, powering yourself, facing the vastness of water and under the open sky. Also, it&apos;s been inspiring to meet someone like Steve who is so generous and shares his knowledge and love of nature.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you been introduced to something new and beautiful in recent years, thanks to the kindness of someone you just met? If so, what are your thoughts on your fortune?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: You don&apos;t have to be who you think you are</title><link>https://franklinchen.com/blog/2014/05/22/the-chess-improver-you-dont-have-to-be-who-you-think-you-are/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/22/the-chess-improver-you-dont-have-to-be-who-you-think-you-are/</guid><pubDate>Thu, 22 May 2014 11:24:59 GMT</pubDate><content:encoded>&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;You don&apos;t have to be who you think you are&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I work with a chess student who sometimes expresses discomfort at facing a particular opening or kind of position. I know this feeling all too well, because I certainly experienced it as a young chess player, and even now as a not-so-young chess player! And I know that all of us have certain preferences. The question then becomes, what should we do about these preferences? Should we avoid entire openings and positions, or just hunker down and study what we don&apos;t like?&lt;/p&gt;
&lt;p&gt;From a practical point of view, we have to choose a middle path. For example, suppose you really like to open with 1 e4, but you hate facing the French Defense, which follows if your opponent responds with 1…e6. It would be extreme to give up 1 e4 just because of the French Defense, if you had no other reason to switch your White opening. We never get exactly what we &quot;want&quot; in a real game of chess anyway, so we might as well get used to some discomfort and expand our tolerance and understanding, both for better performance and better enjoyment in the long run.&lt;/p&gt;
&lt;h2&gt;Switch sides&lt;/h2&gt;
&lt;p&gt;One interesting response to discomfort in a situation in chess is to take the other side. I&apos;ve adopted this response sometimes, either casually or quite seriously. &quot;If you can&apos;t beat &apos;em, join &apos;em!&quot; So, continuing the example above, maybe if you have a lot of trouble playing White against the French Defense, you should try playing it as Black.&lt;/p&gt;
&lt;p&gt;There are two possible situations when switching sides.&lt;/p&gt;
&lt;h3&gt;Liking the other side&lt;/h3&gt;
&lt;p&gt;It is possible that you actually like the strategies of the Black side of the French Defense, but have never played this opening. Well, maybe this is a perfect opportunity for you to learn a new opening that intrigues you. And as you do so, you can take advantage of your prior experience as White, knowing what felt uncomfortable to you as White, and refining as Black how to cause your &quot;White self&quot; problems. Then you can transfer your knowledge to playing against other people.&lt;/p&gt;
&lt;h3&gt;Not liking the other side&lt;/h3&gt;
&lt;p&gt;I suspect that more likely, you may not like the other side either: you just don&apos;t like the French Defense as either White or Black. This is the real test of your commitment to chess. In a real chess game, you will often reach a position that seems weird and confusing, such that you don&apos;t know which side you&apos;d rather be on. So an important skill and mindset to develop is that of making the most of a situation that is confusing.&lt;/p&gt;
&lt;h2&gt;My big switch&lt;/h2&gt;
&lt;p&gt;I find that our personal preferences are not necessarily fixed. Sometimes we like to identify as a certain kind of player and reflexively avoid openings or positions that don&apos;t conform to our own self-image. And I find that sometimes we dislike something not because we are born to, but because &lt;em&gt;we don&apos;t understand it&lt;/em&gt;, and as a defense mechanism for our ego, we convince ourselves that we don&apos;t like it.&lt;/p&gt;
&lt;p&gt;As a personal example: for many years, I dreaded facing the English Opening when I was Black. I even convinced myself that it was a boring opening played by boring people, &quot;cowards&quot; who avoided a quick and sharp opening struggle. But in my mid-30s, after returning to chess and having to face my old fears about the English Opening (and losing games against it), I decided to study it, finally.&lt;/p&gt;
&lt;p&gt;I found that the English Opening is actually quite an interesting opening. I found that the more I &lt;em&gt;understood&lt;/em&gt; it, the more I liked it, and in fact, I liked White a lot. I abandoned my self-identity as a &quot;tactical&quot; player and started playing it. This resulted in a large improvement in my chess performance (both as White and facing it as Black) and fun. The English Opening is not something I play all the time as White, but learning how it works, for both sides, is something that I feel has permanently affected my understanding and confidence. The irony is that I have not actually played many games with the English per se: Black always has a choice to transpose out into a d-Pawn opening type of structure, in which case White has to transpose in turn to a main line d-Pawn opening or otherwise a Reti. So my improved performance is not a result so much of getting to play the opening, but of the improved confidence and overall chess knowledge. Just knowing that I &lt;em&gt;can&lt;/em&gt; play either side of the English has helped me!&lt;/p&gt;
&lt;p&gt;It&apos;s like exploring new music or new food. We may have some innate preferences (from genes or our prenatal environment), and other preferences shaped at childhood and adolescence, but in the end, we can choose to expand our tastes, in order to enjoy a richer life. On the other hand, it can be unsatisfying to be a dilettante at many things, so if you are looking to truly expand yourself, try one new thing at a time, going into some depth, before moving to another.&lt;/p&gt;
&lt;p&gt;And this is a lifelong process who loves learning. I am in fact right now exploring a type of opening/middlegame that has made me uncomfortable in the past.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;To expand your understanding of chess, your enjoyment, and your performance, think about what kinds of chess positions make you uncomfortable. Consider whether you have to go to extreme lengths to avoid them; if so, it may be worth facing your discomfort and learning what you think you hate.&lt;/p&gt;
</content:encoded></item><item><title>How a homemade ice cream cookie sandwich touched my heart seven years ago</title><link>https://franklinchen.com/blog/2014/05/21/how-a-homemade-ice-cream-cookie-sandwich-touched-my-heart-seven-years-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/21/how-a-homemade-ice-cream-cookie-sandwich-touched-my-heart-seven-years-ago/</guid><pubDate>Thu, 22 May 2014 00:09:43 GMT</pubDate><content:encoded>&lt;p&gt;Today&apos;s was Carnegie Mellon University&apos;s annual &quot;staff picnic&quot;. Basically, they provide some reasonable food in the University Center, including a variety of sandwiches and wraps (with many good vegetarian selections, by the way), and salads, and ice cream billed as &quot;homemade ice cream sandwiches&quot;.&lt;/p&gt;
&lt;p&gt;The menu in recent years has been pretty good, and stayed the same.&lt;/p&gt;
&lt;p&gt;I ate a single one of the ice cream cookie sandwiches, which was plenty! There were several different configurations: this time, I chose the chocolate ice cream sandwiched by chocolate chip cookies:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cmu-staff-picnic-ice-cream-top.jpg&quot; alt=&quot;Top view&quot; /&gt;
&lt;img src=&quot;../../assets/images/cmu-staff-picnic-ice-cream-side.jpg&quot; alt=&quot;Side view&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;A big disappointment seven years ago, then an unexpected surprise&lt;/h2&gt;
&lt;p&gt;The funny thing is that even as I enjoyed the staff appreciation lunch, my colleagues and I still remember a disappointment from seven years ago, when because of budget cuts and/or bad judgment, CMU put on a staff picnic that went horrifically wrong.&lt;/p&gt;
&lt;p&gt;Basically, they barely had enough food for everyone, there was no potato salad, and there was no ice cream at all! It was an insult to be &quot;appreciated&quot; in this manner: it would have been better to cancel the event than hold one that everyone would grumble about for seven years. I think only since last year did people really start forgetting about that one incident. Time heals.&lt;/p&gt;
&lt;p&gt;For me, however, I still remember the incident if only because of a counterbalancing incident that happened just a few hours later, after work.&lt;/p&gt;
&lt;p&gt;Seven years ago, when I had only recently started dating Abby, she had invited me to come after work to her friend&apos;s place for a little party the same day as the CMU staff picnic, so I went. I arrived complaining to her that I had not received my annual ice cream sandwich (in previous years of the CMU staff picnic, they always provided standard-brand ice cream sandwiches, nothing special, but at least something). It turned out that there was ice cream present at the party, and also cookies, so Abby just combined a pat of ice cream with two cookies and presented it to me! Although the ice cream melted quickly and so the &quot;sandwich&quot; didn&apos;t work so well after all, the gesture was funny and kind.&lt;/p&gt;
&lt;p&gt;I know it&apos;s a tiny little thing to do, but it really touched my heart seven years ago. It was a surprise, unexpected, and just very sweet. It&apos;s one of those memories that, when it pops up (spontaneously or because Abby reminds me, as she did tonight when I told her about eating a chocolate one this year rather than a vanilla one), makes me smile. There I was, disappointed by how CMU apparently didn&apos;t care enough to truly &quot;appreciate&quot; its staff, and then there was Abby, making a little treat for me.&lt;/p&gt;
&lt;p&gt;Our fifth anniversary of marriage is coming up soon. It&apos;s been easy to start forgetting the early moments from when we first met, but I&apos;ve decided that it&apos;s important to keep remembering and remain grateful.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;CMU must have gotten a lot of feedback from the debacle seven years ago, because the staff picnic went back to normal, and then eventually even improved further. In the past couple of years, they got away from the boring burgers and hot dogs entirely, and went to a much more healthy and interesting menu. Meanwhile, Abby still surprises me sometimes with a treat of some kind, such as when packing lunch for us when we got for a day of hiking. Life is the little things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you react to either negative or positive surprises? Which do you remember more, after the passage of time?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I voted yet again</title><link>https://franklinchen.com/blog/2014/05/20/why-i-voted-yet-again/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/20/why-i-voted-yet-again/</guid><pubDate>Wed, 21 May 2014 02:52:11 GMT</pubDate><content:encoded>&lt;p&gt;I voted again, as I&apos;ve been doing regularly for some years now.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/voter-receipt-primary-2014.jpg&quot; alt=&quot;2014 PA primary election voter receipt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But why?&lt;/p&gt;
&lt;p&gt;Last year, I &lt;a href=&quot;/blog/2013/05/21/voting-in-the-face-of-election-apathy/&quot;&gt;vented a bit about voting&lt;/a&gt; but did so anyway.&lt;/p&gt;
&lt;p&gt;This year, I paid almost no attention to any media coverage before the election. This included deleting answer machine messages, and summarily recycling all campaign flyers sent to my home, with an attempt not to even see who sent them. I don&apos;t know if it&apos;s just my imagination, but these flyers have gotten louder and more annoying and inane. I made the mistake of actually seeing &lt;em&gt;one&lt;/em&gt; of these flyers (and therefore know who it was from). In all caps and colored, bold text (if I recall correctly), it said something like&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Mike knows us.&lt;/p&gt;
&lt;p&gt;And we know Mike.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;That pretty much sums up what political campaigns are. And we know that psychologically, this stuff works. Just slamming someone&apos;s name into our brains, creating &quot;familiarity&quot;, influences votes.&lt;/p&gt;
&lt;p&gt;Yeah, I voted for Mike anyway. After all, &quot;I know him&quot;.&lt;/p&gt;
&lt;h2&gt;Governor&lt;/h2&gt;
&lt;p&gt;However, I knew very little about the main race, the primary election for Pennsylvania governor.&lt;/p&gt;
&lt;p&gt;The night before, I did a little bit of research, largely on whom to vote &lt;em&gt;against&lt;/em&gt;. One candidate apparently stood out for pretty harsh negative ads.&lt;/p&gt;
&lt;p&gt;On the whole, such negative ads turn me off. Now, I understand that psychologically, some people are motivated by negative ads to go vote against the target. But it&apos;s actually difficult to anticipate exactly what the tradeoff is, in terms of attracting support vs. fueling the opposition. Obviously, I would never make a decision based purely on campaign tactics, but in this case, I figured I would go with someone not particularly different on issues who did &lt;em&gt;not&lt;/em&gt; engage in this kind of behavior.&lt;/p&gt;
&lt;h2&gt;But why vote at all?&lt;/h2&gt;
&lt;p&gt;I wish I could tell you that I feel I&apos;m making a difference by voting. I&apos;m not sure that&apos;s true.&lt;/p&gt;
&lt;p&gt;I wish I could tell you that I feel it is my &quot;civic duty&quot; to vote, because I have the privilege of having the right to do so as a citizen of the United States. I&apos;m not sure I feel that is my duty.&lt;/p&gt;
&lt;p&gt;The truth is, I vote every election day now simply because I&apos;ve developed a &lt;em&gt;habit&lt;/em&gt; of it, and a &lt;em&gt;system&lt;/em&gt; (avoiding media coverage that would piss me off, and doing a bit of homework the night before election day). So, it&apos;s just what I do now. I no longer question whether I will get out there and press the big red button. I just do it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you vote? In every election or just high-profile primary or general elections, such as presidential? Why do you vote or not vote?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>When I&apos;m feeling too tired to venture out, there&apos;s always Frick Park</title><link>https://franklinchen.com/blog/2014/05/18/when-im-feeling-too-tired-to-venture-out-theres-always-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/18/when-im-feeling-too-tired-to-venture-out-theres-always-frick-park/</guid><pubDate>Mon, 19 May 2014 02:27:39 GMT</pubDate><content:encoded>&lt;p&gt;Because of the rain forecast and fatigue (I had a tough week), Abby and I ended up not venturing out of the city of Pittsburgh for a hike yesterday. But this afternoon, things seemed to clear up enough that we went for a hike in our local Frick Park. It was a bit chilly actually, so we wore raincoats and also I wore a hat in gloves (yes, it&apos;s May).&lt;/p&gt;
&lt;p&gt;It&apos;s been a real blessing that Frick Park is so close to where we live, because that means we have no excuse not to go out into nature and to get some exercise, even if time or energy means we can&apos;t do something more adventurous. Fact is, I took Abby around a bunch of trails that she had not yet explored, so there is no shortage of novelty in Frick Park itself! We were out for almost three hours. I led Abby to the network of trails by Nine Mile Run, then backtracked and went north of Fern Hollow, going up Tranquil Trail and branching off, before coming back down, and then back up toward home.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you have a local favorite hangout (in nature or otherwise) that provides comfort and stimulation when you want to get out of the home but don&apos;t want to go too far? How do you keep your experiences there interesting?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Recorder Society: discovering the beauty of Alonso Lobo</title><link>https://franklinchen.com/blog/2014/05/18/pittsburgh-recorder-society-discovering-the-beauty-of-alonso-lobo/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/18/pittsburgh-recorder-society-discovering-the-beauty-of-alonso-lobo/</guid><pubDate>Sun, 18 May 2014 21:48:23 GMT</pubDate><content:encoded>&lt;p&gt;We had another great turnout for the monthly meeting of the Pittsburgh Recorder Society. We got another new member, Joanna. I counted fifteen of us, total.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-05-18/group.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today, the highlight for me was discovering some music I don&apos;t remember encountering before, by &lt;a href=&quot;https://en.wikipedia.org/wiki/Alonso_Lobo&quot;&gt;Alonso Lobo&lt;/a&gt;, who lived roughly 1555-1617. Fred passed out parts for his &quot;Versa est in luctum&quot;, a sacred motet for voice (which we are playing as a recorder ensemble instead).&lt;/p&gt;
&lt;p&gt;This music is beautiful and new to me, and Fred provided instructive interpretive guidance I will discuss.&lt;/p&gt;
&lt;p&gt;I&apos;d never heard of Lobo before (outside of recorder playing, I simply have very little knowledge of early pre-Baroque music) and had to look up Lobo after the meeting.&lt;/p&gt;
&lt;h2&gt;&quot;Versa est in luctum&quot; by Alonso Lobo&lt;/h2&gt;
&lt;p&gt;This is passionate funeral music, written for a Spanish king&apos;s funeral. I found an interesting &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://luiscfhenriques.com/alonso-lobos-versa-est-in-luctum/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://luiscfhenriques.com/alonso-lobos-versa-est-in-luctum/&quot;&amp;gt;musicologist&apos;s blog post about the work&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;English translation printed on our recorder arrangement parts:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
My harp is turned to mourning and my music into the voice of those that weep.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Fred put me on the alto 1 part. After some work on the piece, he called for those of us on alto 1 (there was at least one other person, but possibly no more, of us fifteen) to play louder, with more emotion, to really ring out. I had held back in part because I was afraid of going sharp if I blowed harder, but also in part because for other music we&apos;ve been playing, I&apos;ve been focusing on blending in playing tenor parts. I sometimes somehow get into a rut and &quot;forget&quot; the importance or impact of carrying the top line.&lt;/p&gt;
&lt;p&gt;Fred was actually singing along quite expressively as he conducted us. It&apos;s inspirational to me that we have a leader who so believes in the music he has us play, and seeks to help us bring out its essence. The interesting thing about this piece is that there are phrases of longer notes as well as those that are more agitated, with faster movement. So there is a lot of beautiful interplay and contrast among the voices as well as within their own span throughout the piece. Fred advised on providing separation at the end of phrases so that they can be heard better in contrast against other voices as they enter and leave in different places.&lt;/p&gt;
&lt;p&gt;Anyway, the other first alto(s) and I did play more confidently and louder, as did the rest of the ensemble, and when we did that, it was an amazing feeling, the sense of filling the air and resonating. I live for experiences like this! Let&apos;s keep it up.&lt;/p&gt;
&lt;h3&gt;A performance for choir you should check out&lt;/h3&gt;
&lt;p&gt;For reference, here is a fine performance by the Gabrieli Consort I discovered:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/yZe16Mpsmg8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Group recording from before&lt;/h2&gt;
&lt;p&gt;Fred brought in a little boombox so we could hear the recording he had made earlier of us playing &lt;a href=&quot;/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/&quot;&gt;two months ago&lt;/a&gt;. We didn&apos;t sound terrible, actually!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-05-18/recording.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Snacks&lt;/h2&gt;
&lt;p&gt;I ate three cookies.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-05-18/cookie1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-05-18/cookie2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-05-18/cookie3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In retrospect, I should not have eaten three cookies. Maybe two, or maybe one. I know, I made this observation &lt;a href=&quot;/blog/2014/04/27/pittsburgh-recorder-society-palestrina-gombert-and-dolly-parton-cookies/&quot;&gt;last month&lt;/a&gt;. This time, I&apos;m serious. Next meeting, I will eat no more than &lt;em&gt;two&lt;/em&gt; cookies.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed being shown yet another beautiful piece of music and getting the opportunity to play it with others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How often do you discover beautiful music you have never heard before, through being given it to play? Is this experience different than just hearing it without playing it?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thoughts upon uninstalling &quot;Temple Run 2&quot; from my phone</title><link>https://franklinchen.com/blog/2014/05/16/thoughts-upon-uninstalling-temple-run-2-from-my-phone/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/16/thoughts-upon-uninstalling-temple-run-2-from-my-phone/</guid><pubDate>Sat, 17 May 2014 00:37:34 GMT</pubDate><content:encoded>&lt;p&gt;I have a confession to make.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://upload.wikimedia.org/wikipedia/en/thumb/c/c4/TempleRun.jpg/150px-TempleRun.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://upload.wikimedia.org/wikipedia/en/thumb/c/c4/TempleRun.jpg/150px-TempleRun.jpg&quot;&amp;gt;[image: Temple Run logo]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Two years ago, when I finally got my first &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;smartphone&lt;/a&gt;, I downloaded a free game, &lt;a href=&quot;https://en.wikipedia.org/wiki/Temple_Run&quot;&gt;Temple Run&lt;/a&gt;, and quickly became a bit obsessed with it.&lt;/p&gt;
&lt;p&gt;This was the first computer game I had played in &lt;em&gt;twenty years&lt;/em&gt;, actually; although in college I played a fair number of games (including actual physical arcade games in the basement of the college dining hall), including &lt;a href=&quot;https://en.wikipedia.org/wiki/Dark_Castle&quot;&gt;Dark Castle&lt;/a&gt;, which I commandeered friends&apos; Macs to play (I owned only an Apple IIe in college, for word processing purposes), the last time I played computer games was in grad school twenty years ago, when I conquered a Mac game called &quot;Kung Fu Chivalry&quot;. Somehow, after actually winning that game, I totally lost interest in playing computer games again (despite being annoyed about never finishing &quot;Beyond Dark Castle&quot;).&lt;/p&gt;
&lt;p&gt;I noticed that my reaction time and coordination were quite rusty after twenty years away from this kind of game, and was determined to get good at Temple Run. I was really bad for a while, but then everything started falling into place, and I got good enough that I got a bit bored. I forgot about the game for a long time.&lt;/p&gt;
&lt;p&gt;Months later, &lt;a href=&quot;https://en.wikipedia.org/wiki/Temple_Run_2&quot;&gt;Temple Run 2&lt;/a&gt; came out, and I got that, and deleted the original Temple Run. The graphics were much better and the action was more interesting, but again, I got good enough that I got bored. Eventually I stopped playing the game. It&apos;s probably been almost a year since I last played it, actually.&lt;/p&gt;
&lt;p&gt;But I still had it on my phone, just in case I got &quot;bored&quot; or wanted to check up on my reaction time to see if I had retained my improvements. I never did end up playing it again though. Finally, I just deleted it, to free up space on my phone and to commit to saying goodbye to the game.&lt;/p&gt;
&lt;p&gt;Thoughts flashed through my mind as I deleted the game.&lt;/p&gt;
&lt;h2&gt;We are always choosing how to spend our time; we must own our choices&lt;/h2&gt;
&lt;p&gt;I felt guilty every time I played the game on the phone (or the iPad, on which I had also installed the game, but I didn&apos;t play it often on that). Part of me thought it was a waste of time. Part of me rationalized that I was &quot;training&quot; my brain and fingers to improve my overall reaction time and motor coordination.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I don&apos;t like feeling guilty about anything&lt;/em&gt;. I&apos;d rather just &lt;em&gt;do&lt;/em&gt; the thing in all good conscience, or &lt;em&gt;not do&lt;/em&gt; it at all. At some point, I resolved the dissonance for good by no longer playing the game.&lt;/p&gt;
&lt;h2&gt;I noticed how I had let the smartphone intrude on my life&lt;/h2&gt;
&lt;p&gt;Obviously, upon getting my first smartphone, I was excited by all the things I could do that I couldn&apos;t do before. I could check my email anywhere, read my RSS feeds, Facebook, etc. I even loaded up some of my books onto the phone.&lt;/p&gt;
&lt;p&gt;I found myself pulling out the phone to play the game when I was &quot;bored&quot; while riding in a car or something. Then I realized that I was missing the scenery, or just plain quiet time away from technology. Eventually, I decided to minimize the use of my phone when away from home or work, where I&apos;m already in front of a computer most of the time already anyway. Yes, I can spend several hours without checking my phone for email (especially if I&apos;m in the middle of nowhere with no reception).&lt;/p&gt;
&lt;h2&gt;I got sucked in by fear of losing my accumulated &quot;wealth&quot;&lt;/h2&gt;
&lt;p&gt;I took so long to delete the game because I kept thinking that if I ever wanted to keep playing, I had racked up a lot of points and &quot;unlocked&quot; various powers, so I wanted to keep all that &quot;just in case&quot;. So keeping the game wasn&apos;t even really about my enjoyment of it any more; I just liked the &quot;wealth&quot; I had accumulated. I was hoarding what was really worthless. The only thing I could do with my unlocked powers was continue playing the game to earn more powers.&lt;/p&gt;
&lt;h2&gt;What was once fun and useful may become stale&lt;/h2&gt;
&lt;p&gt;I still believe that it was worth spending some time playing the game. It really did improve my mental functioning to a degree. But there were no further benefits to be gained. It is worth periodically evaluating whether old activities or habits are still doing us any good, even if they once did.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had my fun with Temple Run, learned some things about myself along the way, and now am done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel when you uninstall a favorite game or app, or declutter in some other way? Do you feel sadness? Relief? Regret? Pride?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: Exploring type-directed, test-driven development using FizzBuzz (my practice talk)</title><link>https://franklinchen.com/blog/2014/05/15/pittsburgh-scala-meetup-exploring-type-directed/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/15/pittsburgh-scala-meetup-exploring-type-directed/</guid><pubDate>Fri, 16 May 2014 02:49:48 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; met, with me presenting a &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/146581402/&quot;&gt;practice talk&lt;/a&gt; for &quot;Exploring type-directed, test-driven development using FizzBuzz&quot;, which I am presenting at the upcoming local &lt;a href=&quot;http://pghtechfest.com/&quot;&gt;Pittsburgh TechFest&lt;/a&gt; conference.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;I have only recently completed the slides and code for my talk, and had not actually given the talk yet, so this was a practice talk that did not go so well, unfortunately.&lt;/p&gt;
&lt;p&gt;I spoke too quickly and had too much material to cover, and also got lost in some of my own slides. Oops. I think reaction to my talk was mixed. Some enjoyed it, while others seemed lost at places.&lt;/p&gt;
&lt;p&gt;After going home, I frankly felt that I had &lt;em&gt;failed&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But I believe I can do much better. I have plenty of time to do a thorough revision before Pittsburgh TechFest in three weeks. I need to cut out material that is not needed for the core of what I am trying to achieve and make some things clearer (especially for the intended Pittsburgh TechFest audience, which I do not expect to even know Scala).&lt;/p&gt;
&lt;h2&gt;Supporting material&lt;/h2&gt;
&lt;p&gt;Here is the &lt;a href=&quot;https://github.com/FranklinChen/talk-on-type-directed-tdd-using-fizzbuzz&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&apos;t recommend looking at them, but for historical purposes, here are slides of the presentation &lt;a href=&quot;https://github.com/FranklinChen/talk-on-type-directed-tdd-using-fizzbuzz/blob/meetup/doc/presentation.pdf&quot;&gt;as it was given in the first draft&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-05-16)&lt;/h2&gt;
&lt;p&gt;One day makes a difference in my confidence and determination! I noticed that the new &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/&quot;&gt;Pittsburgh Code and Supply&lt;/a&gt; group (which I have not yet attended) is soon having its inaugural &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/181773312/&quot;&gt;soon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I decided to offer to do a version of my talk for Pittsburgh Code and Supply using Rust as the programming language (rather than Scala). I want to spread the news about how to effectively use a sufficiently typed programming language, whether it&apos;s Scala or Rust or anything else sufficiently derived from the ML family of type systems.&lt;/p&gt;
&lt;p&gt;Justin will schedule it for some time in July. That should give me enough time, after Pittsburgh TechFest in early June, to learn enough Rust to convert my Scala code over properly!&lt;/p&gt;
&lt;h2&gt;(Update of 2014-06-07)&lt;/h2&gt;
&lt;p&gt;I much improved the presentation for Pittsburgh TechFest, which I attended for the third year.&lt;/p&gt;
&lt;p&gt;I recommend reading the &lt;a href=&quot;https://github.com/FranklinChen/talk-on-type-directed-tdd-using-fizzbuzz/blob/master/doc/article.pdf&quot;&gt;article version of the presentation&lt;/a&gt;, rather than the slides. This is the first time I&apos;ve created both an article version of a presentation and slides for use during the live presentation. I will do this in the future as well. Slides are not meant to stand alone or even be read alone, but in case you really want to see them, they are here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/37257104&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen/presentation-37257104&quot; title=&quot;Exploring type-directed, test-driven development: a case study using FizzBuzz&quot; target=&quot;_blank&quot;&amp;gt;Exploring type-directed, test-driven development: a case study using FizzBuzz&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen&quot; target=&quot;_blank&quot;&amp;gt;Franklin Chen&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-07-17)&lt;/h2&gt;
&lt;p&gt;It&apos;s crunch time. My Rust version of the talk, &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Code-Supply/events/183483622/&quot;&gt;&quot;Type-Directed TDD in Rust&quot;&lt;/a&gt; is coming next week.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Which Pawn would your rather live without and why?</title><link>https://franklinchen.com/blog/2014/05/15/the-chess-improver-which-pawn-would-your-rather-live-without-and-why/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/15/the-chess-improver-which-pawn-would-your-rather-live-without-and-why/</guid><pubDate>Thu, 15 May 2014 11:40:37 GMT</pubDate><content:encoded>&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Which Pawn would your rather live without and why?&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;Recently I watched an unusual and fascinating &lt;a href=&quot;https://www.youtube.com/watch?v=H-DuThSuFhA&quot;&gt;video clip by GM Roman Dzindzichashvili about playing White while accepting move and Pawn odds&lt;/a&gt;. In this particular context, he was talking about playing against computers. But actually, I got to thinking, someone wanting to deepen understanding of chess could do well to seriously reflect on how this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.chessgames.com/perl/chesscollection?cid=1015076&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.chessgames.com/perl/chesscollection?cid=1015076&quot;&amp;gt;time-honored&amp;lt;/span&amp;gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_handicap&quot;&gt;handicap variant of chess&lt;/a&gt; should affect both White&apos;s play (going for the win starting with a huge advantage) and Black&apos;s play (struggling to survive). Many of us in our chess lives slowly end up playing on autopilot, falling back on familiar openings or familiar strategic ideas. An immediate imbalance straight out of the opening might be just the thing to get us out of our comfort zone to review our understanding of the game.&lt;/p&gt;
&lt;p&gt;Several months ago, at a party, I played a Pawn and odds game (with my f-Pawn missing as Black) against a friend rated about 400 USCF rating points below me. I was dead lost for much of the game, frankly, but managed to claw back to a draw, I think. (My memory is fuzzy: it was, after all, a party.) After that game, I marveled that players like Paul Morphy were able to play with such a disadvantage. Clearly, for Black the f-Pawn is one of the worst Pawns to be missing at the beginning of a game, primarily because of lack of King safety. I decided that in the future, I would not play my friend again at such odds! Maybe some other Pawn, but not that Pawn!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqkbnr/ppppp1pp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;An exercise&lt;/h2&gt;
&lt;p&gt;So the exercise raised the interesting question, &quot;How would you order, from best to worst, the loss of one of your eight Pawns as Black?&quot;&lt;/p&gt;
&lt;p&gt;I think this is a rather stimulating question for a chess student to work on independently (without computer aid, of course). A teacher in a group setting could even make it into a game. I have not tried this out yet, but here are some ideas:&lt;/p&gt;
&lt;p&gt;ask students to come up with their rankings and compare notes and debate each other
assign a simpler task, picking just two missing-Pawn starting positions, and having students compare just those two
ask for an in-depth analysis of just one missing Pawn
having students actually playing out both sides against each other and then discussing the challenges faced&lt;/p&gt;
&lt;p&gt;One great feature of this exercise is that it does not stray too far from &quot;normal&quot; chess (as Chess960 does), and so one good way to approach the exercise is to ask oneself how the absence of a Pawn alters what one has already learned about &quot;normal&quot; opening theory. Therefore, I feel the task is actually a good indirect way to improve one&apos;s understanding of the rationale behind normal opening theory. Also, it may be good training for how to react after blundering and losing a Pawn in a game, or after winning a Pawn: or, given a choice, which to give up or which to win.&lt;/p&gt;
&lt;h2&gt;A sample analysis: missing b-Pawn&lt;/h2&gt;
&lt;p&gt;Here is a sample analysis that might give ideas into what kinds of questions to ask oneself (or a student) as a guide for study. Let&apos;s remove Black&apos;s b-Pawn.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqkbnr/p1pppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Development: we note that in return for the missing Pawn, Black does potentially get a head start in development, because the light-squared Bishop is ready to be fianchettoed to b7. Also, potentially Black could use the half-open b-file to place a Rook on to attack White&apos;s b2 Pawn. I picked this example to illustrate that missing a Pawn can actually have some advantages, despite the disadvantages. One could consider this position to be in essence a gambit (although not a good one).&lt;/p&gt;
&lt;p&gt;Weak squares: the missing b-Pawn means that the a6 square and the c6 square are weakened. White could think about ways to exploit these weaknesses.&lt;/p&gt;
&lt;p&gt;Pawn structure: Black is starting out with an isolated a-Pawn. This may be a liability for White to attack. Especially, in case of an endgame, Black may have a lot of trouble and lose on the Queenside if the a-Pawn is lost, and then White has an outside passed Pawn. (I have in fact lost endgames a Pawn down in Pawn structures such as these.)&lt;/p&gt;
&lt;p&gt;Center control: Losing the b-Pawn is not as bad as losing a center Pawn, because Black can at least still fight for the center.&lt;/p&gt;
&lt;p&gt;Loss of a counterattacking resource: In many openings, Black depends on the b-Pawn to fight back against White, whether pushing away White&apos;s light-squared Bishop with a6/b5 or c6/b5, or advancing the b-Pawn to b4 to undermine White&apos;s Pawn on c3 or Knight on c3.&lt;/p&gt;
&lt;p&gt;Castling: White should probably not play some standard pet opening variation that involves castling Queen side.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have found it fun, and I think instructive for myself, to actually take some serious time, for each Pawn and move odds opening position, to consider different dimensions of what White gains and what Black loses, for each position. I think this would be a great exercise for anyone wanting to remember what the basic principles of chess play are and why.&lt;/p&gt;
</content:encoded></item><item><title>Is there a grounding problem in empirical computational linguistics?</title><link>https://franklinchen.com/blog/2014/05/13/is-there-a-grounding-problem-in-empirical-computational-linguistics/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/13/is-there-a-grounding-problem-in-empirical-computational-linguistics/</guid><pubDate>Wed, 14 May 2014 00:28:29 GMT</pubDate><content:encoded>&lt;p&gt;I saw an announcement for a lunch talk at CMU with the intriguing title &quot;Theoretical and Practical Grounding in Empirical Computational Linguistics&quot;, by &lt;a href=&quot;https://www.cl.uni-heidelberg.de/~riezler/&quot;&gt;Stefan Riezler&lt;/a&gt; of Heidelberg University.&lt;/p&gt;
&lt;p&gt;Abstract: &lt;strong&gt;Philosophy of science has pointed out a circularity problem in empirical sciences that arises if all known measuring procedures for a quantity of a theory presuppose the validity of this theory. We discuss how this problem relates to empirical computational linguistics, and define a criterion of T-non-theoretical grounding as guidance to avoid such circularities. We exemplify how this criterion can be met by crowdsourcing, task-related data annotation, or data in the wild. In particular, we illustrate the benefits of grounded learning in the area of statistical machine translation, e.g., by grounding machine translation in semantic parsing and in cross-lingual information retrieval.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/nlp-2014-05-13/presentation.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I attended the talk because of my long-standing interest in the philosophy of science, a subject I spent a lot of time studying in college (although my degree was in physics).&lt;/p&gt;
&lt;h2&gt;The problem&lt;/h2&gt;
&lt;p&gt;When using machine learning, there is a fundamental issue of whether one can run around in circles during feature discovery. For example, if you have labeled data, and you train a system, and then claim to find useful features which are actually just equivalent to what you were given, then there is a problem. Your system may not generalize to unseen data.&lt;/p&gt;
&lt;p&gt;Riezler opened with a simple example of the circularity problem of grounding in science involving Archimedean statics. Suppose you measure mass through use of a balance scale. Then how do you evaluate an empirical claim about the theory of Archimedean statics? If you use a balance scale, there is a circularity in the use of &lt;a href=&quot;https://plato.stanford.edu/entries/theoretical-terms-science/&quot;&gt;theoretical terms&lt;/a&gt;. Is there a way out? Yes, there is: use a different theory to &lt;em&gt;ground&lt;/em&gt; your terms: make a distinction, for a theory T, between T-theoretical and T-non-theoretical terms, and make a correspondence (some kind of &quot;transfer&quot;), so that non-circular progress can actually be made.&lt;/p&gt;
&lt;p&gt;In his talk, Riezler presented methods of learning for machine translation that he claimed to be free of the circularity problem. One method is &quot;naive&quot; coders (rather than expert coders) and crowdsourcing. Another is semantic parsing in which evaluation is based on a real-world task, getting the right answer according to a gold standard.&lt;/p&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;p&gt;Some interesting questions were posed by the audience.&lt;/p&gt;
&lt;h3&gt;&quot;Isn&apos;t circularity only a problem for science, but not for engineering systems?&quot;&lt;/h3&gt;
&lt;p&gt;Answer: a system that fails to generalize is a problem.&lt;/p&gt;
&lt;h3&gt;&quot;How can we know if we are doing it wrong?&quot;&lt;/h3&gt;
&lt;p&gt;Answer: talk to a social scientist!&lt;/p&gt;
&lt;h2&gt;Cookies&lt;/h2&gt;
&lt;p&gt;Cookies were available as part of lunch. In accordance with my promise, here are photos of two I ate:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/nlp-2014-05-13/cookie1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/nlp-2014-05-13/cookie2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;They were big. I should probably have eaten just the first one.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m not a working computational linguist, and it&apos;s been over a decade since the only course I&apos;ve taken in computational linguistics at CMU (in 2003), so I can&apos;t pretend that I entirely followed the presentation, but I found interesting his attempt to apply philosophical considerations toward generating new ways to tackle empirical computational linguistics, and hope more people take philosophy seriously in the field of machine learning in general. I have an impression that some practitioners just sling data and numbers around, but may not be aware of the pitfalls of the grounding problem.&lt;/p&gt;
</content:encoded></item><item><title>A short Sunday hike in Frick Park</title><link>https://franklinchen.com/blog/2014/05/11/a-short-sunday-hike-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/11/a-short-sunday-hike-in-frick-park/</guid><pubDate>Mon, 12 May 2014 01:09:24 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I had planned to go on a hike yesterday, but rain discouraged us, plus we had a late start to the day, and we were planning to check out part of the Bach Festival in Pittsburgh anyway (and did). This afternoon, it was nice and clear, so we did a little exploratory hike in Frick Park.&lt;/p&gt;
&lt;p&gt;A little stream crossing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-05-11/stream-crossing.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Poison ivy lurks everywhere:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-05-11/poison-ivy.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A bridge that has gotten lopsided:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-05-11/bridge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ducks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-05-11/ducks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>What does it mean that I&apos;ve never liked the &quot;Mona Lisa&quot; painting?</title><link>https://franklinchen.com/blog/2014/05/09/what-does-it-mean-that-ive-never-liked-the-mona-lisa-painting/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/09/what-does-it-mean-that-ive-never-liked-the-mona-lisa-painting/</guid><pubDate>Sat, 10 May 2014 03:45:29 GMT</pubDate><content:encoded>&lt;p&gt;I saw an interesting article recently, &lt;a href=&quot;https://web.archive.org/web/20151003155156/http://moreintelligentlife.com:80/content/ideas/ian-leslie/overexposed-works-art&quot;&gt;&quot;Why the Mona Lisa stands out&quot;&lt;/a&gt;. Read it! The summary of the article is that research has shown that the &quot;mere-exposure&quot; psychological effect really matters in determining what gets popular or gets considered &quot;great&quot;, so that these evaluations are not based entirely on &quot;intrinsic&quot; merits.&lt;/p&gt;
&lt;p&gt;One example used was the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mona_Lisa&quot;&gt;&quot;Mona Lisa&quot; painting by Leonardo da Vinci&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg/402px-Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Somehow this painting became famous and praised widely. Everyone knows the &quot;Mona Lisa&quot;.&lt;/p&gt;
&lt;p&gt;Yet, I&apos;ve never liked it, and I&apos;ve always been puzzled by its popularity.&lt;/p&gt;
&lt;h2&gt;Artistic quality or social pressure?&lt;/h2&gt;
&lt;p&gt;I have a confession to make: I didn&apos;t like my seventh grade required &quot;art&quot; class in school. For whatever reason, I am not fundamentally drawn to the visual arts in general. My loves are music and literature. I don&apos;t care particularly for painting, photography, or film. In fact, in my senior year in high school, I deliberately did not enroll in a course that was very popular among many seniors, and even considered to be the highlight of their high school experience. This course was called &quot;Humanities&quot; and apparently discussed not only literature, but art and music. I avoided it. I feared &quot;art&quot;.&lt;/p&gt;
&lt;p&gt;Why did I fear art? Part of it was that I got the impression that I saw things differently from others and had trouble enjoying what others enjoyed. I could not tell whether I was simply artistically untrained and unperceptive, or whether there was some kind of social game going on where people decided to pretend to like something that made no sense to me.&lt;/p&gt;
&lt;p&gt;I chose not to be an all-out cynic, so my default assumption was that &lt;em&gt;I was defective&lt;/em&gt;, and therefore I might as well stay away. I chose not to assume that &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Emperor%27s_New_Clothes&quot;&gt;the emperor has no clothes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One element of my being defective, obviously, was that I got nothing out of looking at the famous &quot;Mona Lisa&quot;. Nothing at all. I did not see anything remarkable, or experience some emotion. So it was interesting to me, and maybe a little vindicating, to learn just now that the &quot;Mona Lisa&quot; was once obscure and became famous largely because of a burglary!&lt;/p&gt;
&lt;h2&gt;Against cynicism&lt;/h2&gt;
&lt;p&gt;Nevertheless, I still stand against the cynicism that says there is no such thing as quality at all. Sure, what we consider &quot;great&quot; may be relative, or dependent on historical accidents, and every era always experiences rediscoveries of the once-forgotten, but actually, I don&apos;t think art is just a silly game. I am in fact profoundly disappointed and disturbed by how many people I have encountered who adopt the ultimate cynical attitude, not only toward art, but to music, to food, to science, to life itself. Yes, &lt;a href=&quot;https://en.wikipedia.org/wiki/There%27s_a_sucker_born_every_minute&quot;&gt;there&apos;s a sucker born every minute&lt;/a&gt;, but I think it takes more courage to choose to be vulnerable, and choose to sometimes maybe be a sucker, than to make oneself hard and pretend that everyone just has ill intentions and is actively conspiring to make fools of all of us.&lt;/p&gt;
&lt;p&gt;It is possible that if only I had taken the &quot;Humanities&quot; course in high school, I would have better perception or taste. I don&apos;t rule out this possibility, because by skipping &quot;Humanities&quot; I also missed a survey of Western classical music, and only came to truly discover and expand my love of it through taking a course in my first semester of freshman year in college, as well as making new friends who were huge music fans and shared recordings with me and took me to free concerts on campus. For whatever reason, perhaps simply temperament, there have almost never been art enthusiasts in my close social circles, people who might have aggressively encouraged me to expand my experiences of art. &lt;em&gt;Never&lt;/em&gt; in my life has anyone come up to me and said, &quot;hey, check out this painting&quot; or &quot;you should come to me and see this art show in town&quot;.&lt;/p&gt;
&lt;h2&gt;Is it an accident what I like?&lt;/h2&gt;
&lt;p&gt;Despite my claim that I don&apos;t care much for art, in fact, there has been some art that I have accidentally come across and found very beautiful and compelling. And they happen to be famous too. Coincidence?&lt;/p&gt;
&lt;p&gt;For example, I don&apos;t remember when I first saw the art of Vincent Van Gogh, but I &lt;em&gt;immediately&lt;/em&gt; found his work deeply moving; it spoke to me. It just did. On the other hand, was I contaminated already because as a child I had come into a copy of Irving Stone&apos;s novel &lt;a href=&quot;https://en.wikipedia.org/wiki/Lust_for_Life_%28novel%29&quot;&gt;&quot;Lust for Life&quot;&lt;/a&gt;? I didn&apos;t really read the novel, but the planting of a name (and a lurid story) into my head must have bred familiarity.&lt;/p&gt;
&lt;p&gt;For example, &quot;Sunflowers&quot; popped out at me the first time I saw it in a book:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/1/1a/Van_Gogh_Vase_with_Fifteen_Sunflowers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;More generally, if pressed, I would say I am drawn toward &lt;a href=&quot;https://web.archive.org/web/20241223135935/https://www.artyfactory.com/art_appreciation/art_movements/expressionism.htm&quot;&gt;expressionist&lt;/a&gt; art, because it &quot;pops out&quot; and speaks boldly and directly, intensely reflecting some aspect of reality. That said, this kind of art also often makes me uncomfortable, so I don&apos;t actively seek it out.&lt;/p&gt;
&lt;p&gt;For example, Emil Nolde&apos;s &quot;The Prophet&quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/en/2/23/%27The_Prophet%27%2C_woodcut_by_Emil_Nolde%2C_1912.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I cannot be sure how influenced I am about what I &quot;like&quot; by popularity and name recognition. The one thing that is certain is that I still do not understand the appeal of the Mona Lisa painting!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you like the Mona Lisa or not? Do you feel your taste in art reflects some intrinsic quality you are perceiving, or do you suspect it is a matter of marketing and your upbringing or peers? Do you care?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Try loving your Knights more than your Bishops</title><link>https://franklinchen.com/blog/2014/05/08/the-chess-improver-try-loving-your-knights-more-than-your-bishops/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/08/the-chess-improver-try-loving-your-knights-more-than-your-bishops/</guid><pubDate>Thu, 08 May 2014 11:09:55 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Try loving your Knights more than your Bishops&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The imbalance between the Knight and the Bishop, which traditionally are taught as having material values of 3 each, is one of the most fascinating in the game of chess. There are times when the Bishop is stronger, especially when you have the Bishop pair against a Bishop and Knight or against the Knight pair, but there are also times when the Knight is stronger, or even the Knight pair against a Bishop pair.&lt;/p&gt;
&lt;p&gt;In my more recent style of play, I have often chosen to try to make the most use of my Bishops, but I believe that it is fun, and &lt;em&gt;beneficial to long-term chess improvement&lt;/em&gt;, to try out loving your Knights more than your Bishops. I have had phases in my chess life in which I was particularly fond of my Knights. I always learned quite a lot about chess when trying my best to make my Knights happy. I thought I&apos;d share three games of mine from 30-31 years ago, when I was a young 13-14 year old. At that time in my life, I so &lt;em&gt;disliked the task of memorizing mysterious mainstream opening theory&lt;/em&gt; that I sought refuge in side lines where I could simply get a reasonable middlegame with &lt;em&gt;clear strategic ideas&lt;/em&gt;. For example, as White against the Sicilian Defense, I liked exchanging my Bishops for Knights in return for quick development and good central control and maneuvering possibilities. These youthful games were not very high-level games (I was rated around USCF 1900 at the time), but show how effective it can be to simply play chess with a clear theme in mind (in this case, loving my Knights).&lt;/p&gt;
&lt;h2&gt;Three examples of Knight play&lt;/h2&gt;
&lt;p&gt;The first game features White exchanging both Bishops for Knights and achieving a dominating position.&lt;/p&gt;
&lt;p&gt;The second game features Black&apos;s Bishops being poorly placed during a White buildup on the King side.&lt;/p&gt;
&lt;p&gt;The third game features a slow, positional struggle in which Black was OK until the mistake of forcing White to give up his remaining Bishop for Black&apos;s remaining Knight: the two Knights eventually proved better than the two Bishops, given the structure of the position.&lt;/p&gt;
&lt;h2&gt;The complete games&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;1983 Southeastern Michigan Open&quot;]
[Site &quot;?&quot;]
[Date &quot;1983.07.04&quot;]
[Round &quot;6&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Whitacre Frederick&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;0&quot;]
[ECO &quot;B53&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 d6 3. d4 cxd4 4. Qxd4 Nc6 5. Bb5 Bd7 6. Bxc6 Bxc6 7. Nc3 Nf6 8. Bg5 h6 $2 { A waste of valuable development time, and also gets doubled Pawns.} 9. Bxf6 gxf6 10. O-O-O Bg7 11. Nh4 Qc7 $4 { Black is actually already lost now.} 12. Nf5 Rg8 13. Qe3 $6 ( 13. Nd5 { Wins immediately.} 13… Bxd5 14. exd5 { Black&apos;s Bishop will be useless while White continues the rest of the game.} ) 13… O-O-O $4 14. Nd5 $5 ( 14. Qxa7 { Wins immediately.} ) 14… Bxd5 15. exd5 Kb8 16. Qxe7 { Black is completely lost.} 16… Rd7 17. Qe3 Rc8 18. c3 Bf8 19. Nxh6 $6 { It was not worth taking this Pawn.} ( 19. Qd4 { With an easy win, because the f6 Pawn is undefended.} ) 19… Re7 $2 ( 19… Qc4 ) 20. Qf4 $4 Re2 $4 ( 20… Qc4 ) 21. Rd2 Rce8 22. Nf5 { Now White is in control again with the good Knight against the useless Bishop.} 22… R2e4 23. Qf3 Qa5 24. Kb1 Qa4 25. Rd4 Re1+ 26. Rd1 R1e4 27. h4 Re2 28. Rc1 Qb5 29. b3 Qa5 30. a4 Qb6 31. Nd4 R2e5 32. Rhd1 Bh6 33. Rc2 f5 34. Kb2 Qd8 35. Nxf5 { White is three Pawns up!} 35… Bf8 36. h5 Qf6 37. g4 Bh6 38. Qd3 Bg5 39. Qd4 Qd8 40. Qb4 Be7 41. f4 Rxf5 42. gxf5 Rh8 43. Re2 Bh4 44. Rh1 Bf6 45. h6 Qd7 46. Qe4 Rc8 47. Rh3 b5 48. Qb4 Qxf5 49. Qxb5+ Ka8 50. Rf3 Qh5 51. Re8 Qh2+ 52. Ka3 Bd8 53. Qd7 { Mate is coming soon.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Ann Arbor Super Tornado&quot;]
[Site &quot;Ann Arbor (USA)&quot;]
[Date &quot;1984.07.29&quot;]
[Round &quot;2&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Foord Allan&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;1621&quot;]
[ECO &quot;B53&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 d6 3. d4 cxd4 4. Qxd4 Nc6 5. Bb5 Bd7 6. Bxc6 Bxc6 7. Nc3 Nf6 8. Bg5 e6 9. O-O-O Be7 10. e5 $6 { Prematurely opening the position.} ( 10. Rhe1 { The standard move.} ) 10… dxe5 11. Qxe5 Qb8 12. Qe2 O-O 13. Ne5 Bxg2 $6 { Playable but a bit risky.} 14. Rhg1 Bh3 $4 { Loses immediately.} ( 14… Bc6 15. Nxc6 bxc6 16. Qf3 Qe5 { White has compensation for the Pawn sacrificed, but no win.} ) 15. Qe3 Bf5 16. Nd7 Qxh2 $4 17. Bxf6 Bxf6 18. Nxf6+ Kh8 19. Rh1 Qc7 20. Qg5 gxf6 $4 { Allows a forced mate.} 21. Qxf6+ Kg8 22. Rdg1+ Bg6 23. Rxh7 Kxh7 24. Rh1+ 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Ann Arbor Super Tornado&quot;]
[Site &quot;Ann Arbor (USA)&quot;]
[Date &quot;1984.07.29&quot;]
[Round &quot;5&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Riegel&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;1815&quot;]
[ECO &quot;B53&quot;]&lt;/p&gt;
&lt;p&gt;{ This game is a good illustration of the power of the Knight pair! } 1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Qxd4 Nc6 5. Bb5 a6 $5 { Wastes some time but does pick up the Bishop pair.} 6. Bxc6+ bxc6 7. O-O e5 8. Qd3 Nf6 9. c4 $5 { Playing in a positional style, setting up a bind on d5.} 9… Be7 10. Nc3 Be6 11. Rd1 Qc7 12. Bg5 Rd8 13. Rac1 { White has completed development with a pleasant position but Black is quite solid.} 13… Qb7 14. b3 O-O 15. Rc2 $2 Rd7 $2 ( 15… d5 ) 16. Rcd2 Rfd8 17. Qe2 Qc7 $2 { The Queen is very passive here.} 18. h3 h6 $2 { Forcing White to do what he wanted.} 19. Bxf6 Bxf6 20. Qe3 $5 ( 20. Nd5 $1 ) 20… Qa5 $2 21. Na4 $1 { White continues to have a positional bind.} 21… d5 $4 22. Qc5 $6 { Deciding to avoid complications.} ( 22. exd5 cxd5 23. Nxe5 d4 24. Nxd7 $1 dxe3 25. Nxf6+ gxf6 26. Rxd8+ Kg7 27. fxe3 Bxc4 28. R8d4 ) 22… Qxc5 $4 ( 22… Qc7 23. cxd5 cxd5 24. Qxc7 Rxc7 25. exd5 ) 23. Nxc5 d4 24. Nd3 $6 { Deciding to try to win a Pawn instead of the exchange.} ( 24. Nxd7 { Winning the exchange was obvious and good.} ) 24… Rc7 25. c5 Be7 $4 { Giving up the Pawn without a fight.} ( 25… Re8 ) 26. Nfxe5 a5 27. Rc1 f5 28. exf5 Bxf5 29. f4 $2 ( 29. g4 ) 29… Bf6 $2 30. Nc4 { Black is lost.} 30… Re7 $4 { Just gives up without a fight.} ( 30… a4 31. b4 ) 31. Nxa5 { White is two Pawns up now.} 31… Rc8 32. Nc4 Ra8 33. Nde5 { Black is about to lose even more material.} 1-0`} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Tchaikovsky&apos;s 174th birthday: I&apos;m finally coming out as a lover of his music</title><link>https://franklinchen.com/blog/2014/05/07/tchaikovskys-174th-birthday-im-finally-coming-out-as-a-lover-of-his-music/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/07/tchaikovskys-174th-birthday-im-finally-coming-out-as-a-lover-of-his-music/</guid><pubDate>Thu, 08 May 2014 02:29:37 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;iframe width=&quot;100%&quot; height=&quot;450&quot; scrolling=&quot;no&quot; frameborder=&quot;no&quot; src=&quot;https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/148503230&amp;amp;auto_play=false&amp;amp;hide_related=false&amp;amp;visual=true&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s birthday time for Tchaikovsky. Actually, it&apos;s also Brahms&apos;s birthday, which &lt;a href=&quot;/blog/2013/05/07/happy-birthday-johannes-brahms/&quot;&gt;I celebrated last year&lt;/a&gt;. But this year I decided to do something I&apos;ve been thinking about doing for probably &lt;em&gt;twenty years&lt;/em&gt; now: I&apos;m &quot;coming out&quot; as one who has loved his music for a long time now and will continue to love it.&lt;/p&gt;
&lt;p&gt;Why have I been relatively silent, even &quot;closeted&quot;, about being a Tchaikovsky fan?&lt;/p&gt;
&lt;h2&gt;Discovering Tchaikovsky&lt;/h2&gt;
&lt;p&gt;Although I did not grow up with classical music training, it was basically unavoidable to encounter a lot of excerpts of Tchaikovsky&apos;s music from radio, TV, movies. Late in high school, I started listening to a local radio station at night while studying, and found that WQRS Detroit, the classical station, provided good &quot;music to study to&quot;. Now and then I would hear something familiar and realize that I had heard some of it in a cartoon or ad, and make note of what the musical piece really was: who it was by and what its title was. This was when I started identifying music as being by Tchaikovsky (whoever that was; some Russian): for example, my favorite cartoon around age ten was &lt;a href=&quot;https://en.wikipedia.org/wiki/Tom_and_Jerry&quot;&gt;&quot;Tom and Jerry&quot;&lt;/a&gt; and I distinctly remembered music from that cartoon.&lt;/p&gt;
&lt;p&gt;The thing about his music was that it was very easy to remember and hum and much of it made me want to move. He wrote a lot of waltzes, for example. He clearly had a gift for melody. Also, in his orchestral music you can always hear different instruments playing distinctive lines. I simply effortlessly enjoyed his music, and I know that many others do, and that is why his music is still popular.&lt;/p&gt;
&lt;h2&gt;Broken innocence&lt;/h2&gt;
&lt;p&gt;In college, many things changed for me that led to my basically deciding to keep quiet about my love for Tchaikovsky&apos;s music.&lt;/p&gt;
&lt;h3&gt;Tchaikovsky unfashionable&lt;/h3&gt;
&lt;p&gt;The main thing that happened was that early in freshman year, in 1987, as I made friends and encountered classmates and others with much more of a classical music background than me (I arrived at college never actually having attended an orchestra concert or even seen a string quartet), at least two specific individuals (one of them a new friend who introduced me to Mozart, for which I am tremendously grateful for) questioned my &quot;taste&quot; and declared Tchaikovsky to be second-rate and sentimental.&lt;/p&gt;
&lt;p&gt;Basically, I learned that in certain circles, it was not correct to like Tchaikovsky&apos;s music. It&apos;s easy to make light of this now, but think about it: I bet that in your own current social circles, some kinds of music or performers are deemed inferior and it would be embarrassing (maybe even actually ostracizing) to admit to liking them.&lt;/p&gt;
&lt;p&gt;Note that the criticism of Tchaikovsky was not actually without musical point. I was told that his music was too repetitious, that he didn&apos;t know how to do &lt;a href=&quot;https://en.wikipedia.org/wiki/Musical_development&quot;&gt;&quot;development&quot;&lt;/a&gt;, and so forth. On reflection, I sensed that yes, his music was not perfect, and I did get bored when listening to his longer works (like his symphonies). But I couldn&apos;t help noting that the &lt;em&gt;tone&lt;/em&gt; of the criticism wasn&apos;t entirely just objective, but also was a kind of snobbery, an identity marker.&lt;/p&gt;
&lt;h3&gt;Sexuality&lt;/h3&gt;
&lt;p&gt;Remember that the year was 1987.&lt;/p&gt;
&lt;p&gt;The other thing that happened was learning more about Tchaikovsky, the man. I learned that he was probably homosexual (I believe that later, by the 1990s, a general consensus about this had developed).&lt;/p&gt;
&lt;p&gt;In the general population in the US, attitudes toward homosexuality were very different from attitudes today.&lt;/p&gt;
&lt;p&gt;I went through four years of college without knowing that three individuals who were part of my social circles (one of them a dorm suite mate) were gay. I learned only later, a year or two after graduating in 1991, that coincidentally each of them came out as gay after entering grad school somewhere. I had no idea. In fact, two of them actually frequently made remarks and jokes disparaging homosexuality.&lt;/p&gt;
&lt;p&gt;I do not know how I would have reacted if my dorm suite mate had revealed to me that he was gay. It was a different time; 27 years later, I know plenty of openly gay people now, but back then, words like &quot;fag&quot; were thrown around casually in conversation in my social circles. When I think about that, it is not a surprise that an apparently sizeable number of friends and classmates of mine were gay and closeted. If you need a reminder of the conversational climate, watch the &quot;Bill and Ted&quot; movies from the period (which I watched happily with my friends); &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.giantfreakinrobot.com/scifi/bill-ted-universal-studios-show-shuts-homophobia-accusations.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.giantfreakinrobot.com/scifi/bill-ted-universal-studios-show-shuts-homophobia-accusations.html&quot;&amp;gt;you may cringe&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;In any case, returning to Tchaikovsky, there was something of atmosphere of disparaging his music as &quot;effeminate&quot; or some such thing, as opposed to the &quot;masculinity&quot; of Beethoven.&lt;/p&gt;
&lt;p&gt;By the way, note that even today, there are still those who, despite all the historical evidence, &lt;a href=&quot;https://www.theguardian.com/music/2013/sep/18/tchaikovsky-not-gay-russian-minister&quot;&gt;try to deny Tchaikovsky&apos;s sexual orientation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Private reassertion&lt;/h2&gt;
&lt;p&gt;For the first year or two in college, while I was exploring a lot of music I hadn&apos;t heard before anyway, I let go of my youthful enthusiasm for Tchaikovsky.&lt;/p&gt;
&lt;p&gt;But by senior year, I was done with pointlessly internalizing any external pressures I thought I faced. If anyone had asked me, I would not have denied enjoying Tchaikovsky&apos;s music.&lt;/p&gt;
&lt;p&gt;I still remember excitedly discovering an old LP recording, in one of the campus libraries, of Wilhelm Furtwängler conducting a performance of &lt;a href=&quot;https://en.wikipedia.org/wiki/Symphony_No._6_%28Tchaikovsky%29&quot;&gt;Tchaikovsky&apos;s sixth symphony, the &quot;Pathétique&quot;&lt;/a&gt;, I jumped to check it out and copy it to cassette tape.&lt;/p&gt;
&lt;h2&gt;Public declaration&lt;/h2&gt;
&lt;p&gt;But today, I am going further than just standing my ground. I am declaring that in fact, Tchaikovsky wrote a lot of beautiful, worthy music. It would be a mistake to focus on how he did not write music structured like Beethoven&apos;s. Why should we judge someone by whether his work is like someone else&apos;s? In fact, Tchaikovsky outspokenly did not like the music of Beethoven anyway. His favorite composer was Mozart!&lt;/p&gt;
&lt;p&gt;Ironically, it is &lt;em&gt;completely unremarkable&lt;/em&gt; for me to be praising Tchaikovsky today. You might even wonder why I&apos;m doing this. I believe that sometime in the 1990s, it became OK again to like Tchaikovsky. So my whole awkward experience early in college was a glimpse into an earlier era of taste. I wrote this post mainly to share some memories of what the atmosphere was still like in the 1980s. Maybe if you are over forty or fifty years old, you can remember also.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;The main lesson I have learned is to be true to myself, and not &lt;strong&gt;play bullshit games&lt;/strong&gt; with trying to &quot;fit in&quot; socially through markers of musical (or other) taste.&lt;/p&gt;
&lt;p&gt;I feel like my teens and even my twenties were wasted by caring what the hell people thought about me. Today, &lt;em&gt;I hide nothing&lt;/em&gt;. Maybe I&apos;m just old and cranky now, but it seems silly to me to base my identity or ego on what kind of music or food or clothing or hairstyle or car I like or don&apos;t. Well, here I am. I love Tchaikovsky; &lt;em&gt;do you have a problem with that?&lt;/em&gt; That&apos;s what I&apos;d tell my 17-year-old self if I could travel back in time. And I&apos;m saying it now to you, if case you&apos;re reading this and you&apos;re in your teens or twenties! Free your soul. Don&apos;t care what your closest friends think; it&apos;s OK to be different from them.&lt;/p&gt;
&lt;p&gt;The other lesson I have learned is that being in the majority can easily blind you to the realities of life for a minority. I&apos;m not gay. As a result, I never quite understood how life was for gay people in the US in the 1980s. It was really eye-opening to me when a year after graduating from college, I kept hearing about people I thought I knew coming out as gay. I learned that I could not make assumptions any more about people.&lt;/p&gt;
&lt;h2&gt;Some musical excerpts&lt;/h2&gt;
&lt;p&gt;It wouldn&apos;t be a birthday celebration without some musical excerpts.&lt;/p&gt;
&lt;h3&gt;&quot;June&quot; barcarolle from &quot;The Seasons&quot;&lt;/h3&gt;
&lt;p&gt;I played a bit of &quot;June&quot; for myself on my digital piano to celebrate. I&apos;d never actually touched it till today. I may work on learning the whole thing. Or not. Anyway, I was in the mood. It&apos;s still only May, but here&apos;s a beautiful live performance by pianist Lev Oborin, possibly the best I&apos;ve found on YouTube:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/oLxz9rai_bM&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&quot;Swan Lake&quot;&lt;/h3&gt;
&lt;p&gt;I still haven&apos;t gone to a ballet performance of &quot;Swan Lake&quot; but mean to sometime. (No, I have not watched the &lt;a href=&quot;https://en.wikipedia.org/wiki/Black_Swan_%28film%29&quot;&gt;&quot;Black Swan&quot;&lt;/a&gt; film yet and don&apos;t know that I will!) There is a lot of beautiful music in &quot;Swan Lake&quot;.&lt;/p&gt;
&lt;p&gt;I played for myself a piano transcription by Bantock of the famous act 2 scene 10 (sorry, there is no recording of myself of that yet).&lt;/p&gt;
&lt;p&gt;Here&apos;s a live video of a performance of the original orchestral version:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/jl53bDrLV1A&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Symphony no. 6, &quot;Pathétique&quot;&lt;/h3&gt;
&lt;p&gt;Great music, if depressing. Live performance conducted by Wilhelm Furtwängler in 1951:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/hacMYJo7EnE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;1812 Overture on melodica and violin&lt;/h3&gt;
&lt;p&gt;Now for something hilarious and delightful: James Howard Young and Cliff Bernzweig in action.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/JmS7fKEE_nA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;A quarter of a century ago, I was made to feel uncomfortable about enjoying Tchaikovsky&apos;s music. Times have changed, but I wanted to share my story (and also some favorite musical selections).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel about Tchaikovsky&apos;s music? Do you participate in uncomfortable social cliques of taste revolving around policing of musical taste? When do you think everyone will finally accept that Tchaikovsky was gay?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Our first hike at Coopers Rock State Forest</title><link>https://franklinchen.com/blog/2014/05/03/our-first-hike-at-coopers-rock-state-forest/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/03/our-first-hike-at-coopers-rock-state-forest/</guid><pubDate>Sun, 04 May 2014 01:36:12 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went on our first hike at &lt;a href=&quot;https://www.coopersrockstateforest.com/&quot;&gt;Coopers Rock State Forest&lt;/a&gt;, joining a &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/169497262&quot;&gt;Pittsburgh hiking meetup event&lt;/a&gt; led by Terri and Jeff. This is a regularly held hike that we simply never got around to in previous years because of schedule conflicts or other circumstances, so we were delighted to have the opportunity to go this time.&lt;/p&gt;
&lt;p&gt;I&apos;d only been to Coopers Rock once, as part of a rock climbing trip, which turned out to be an embarrassing disaster for me, because after climbing only a few minutes, I decided the whole thing just made me nervous, and I sat out the rest of the day. But I was there long enough to see how beautiful the area was, and knew I wanted to go back just to hike, not to climb!&lt;/p&gt;
&lt;h2&gt;Getting there&lt;/h2&gt;
&lt;p&gt;The drive from Pittsburgh took just over an hour and a half; we took the most direct, shortest route involving taking route 51 south. (We returned instead by way of Morgantown, the long route that uses I-79, but this was a huge mistake because of traffic as we neared Pittsburgh. I don&apos;t see any reason to take this longer route in the future, since it doesn&apos;t actually save any time even if there had not been congestion on the highways.)&lt;/p&gt;
&lt;p&gt;Abby and I took John and Courtney, since each of them also live in Squirrel Hill, in our car to carpool together.&lt;/p&gt;
&lt;h2&gt;Parking&lt;/h2&gt;
&lt;p&gt;It turns out, as I suspected, that parking is quite scarce in the main Coopers Rock parking lot. Now that spring is here, this is prime season for people to be visiting, of course. We arrived early enough to grab the very last spot, actually, in the main parking lot. There are other parking spaces further out, but even those were not plentiful.&lt;/p&gt;
&lt;h2&gt;Weather&lt;/h2&gt;
&lt;p&gt;There was always a chance of rain. We completely lucked out, because it didn&apos;t start raining until after we&apos;d completed the main hike. Then it was pouring. Pouring rain would have made the hike far less pleasant, because of the rocks and mud, but part of the experience of hiking is taking whatever nature gives us, in all humility and gratitude. We head out in the morning not knowing exactly what to expect. Sometimes the forecast the day before a planned hike looks pretty bad, in which case Abby and I might choose to cancel, but we tend not to cancel that often.&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;If you&apos;re a member of the Pittsburgh meetup group, you can see &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/photos/21676842/&quot;&gt;photos people took&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The hike&lt;/h2&gt;
&lt;p&gt;The forecast for the day was supposed to be temperatures in the 60s and 70s F in the middle of the day. In the morning at 10 AM, however, it started out rather cool, temperature possibly in the high 30s. I was glad I packed a winter hat and gloves, just in case.&lt;/p&gt;
&lt;p&gt;Around thirty people showed up for the group hike.&lt;/p&gt;
&lt;p&gt;Terri had her trail map ready, accompanied by Jeff who acted as the sweep. By the way, this hike is part of an extended camping weekend that they organize, running from Friday through Sunday, so many of the hikers had already camped one night, and many planned to camp another night. Abby and I did not feel ready to do camping yet this year, so we went just for the hike.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/terri-and-jeff.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Before we started the hike proper, we checked out the main overlook. It&apos;s beautiful. You can see Cheat River and beyond.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/overlook.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/overlook2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Heading down&lt;/h3&gt;
&lt;p&gt;The main hike was an out (mostly down, all the way to the river) and back up, roughly 7 miles. This is not very far at all, but given the terrain and significant elevation change, as well as waiting for everyone (since it was a large group), it took a while.&lt;/p&gt;
&lt;p&gt;A lot of rhododendron around:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/rhododendron.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There were also many little wildflowers along the trails during the hike.&lt;/p&gt;
&lt;p&gt;We took the rocky, Rattlesnake Trail winding along cliffs. By the way, &lt;strong&gt;using a pair of hiking poles&lt;/strong&gt; during the entire hike made things much easier. Both Abby and I used a pair of hiking poles as well as Vibram FiveFingers KSO Trek shoes (which prompted a lot of questions).&lt;/p&gt;
&lt;p&gt;I liked how peaceful and quiet most of the hike was. Sometimes Abby and I have gone on hikes where the hum of civilization never really goes away. Here, the main hum was of water, which was usually not too far away.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby spotted a huge toad!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/toad.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Lunch break&lt;/h3&gt;
&lt;p&gt;We were warned about poison ivy where we stopped for lunch by the river:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/poison-ivy.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/lunch-break.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Back up&lt;/h3&gt;
&lt;p&gt;I always find it strangely appealing to hike along running water. Water makes me feel like I am not alone or lost, that there is something soothing and dependable out there:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/water.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was fun to see ferns unfurling here and there:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/ferns.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We went back a different way than we came, and that involved a bunch of stream crossings over bridges. Here, some of us sat on a bridge for a photo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/bridge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Henry Clay Iron Furnace&lt;/h3&gt;
&lt;p&gt;We took a detour to the historic &lt;a href=&quot;https://en.wikipedia.org/wiki/Henry_Clay_Furnace&quot;&gt;Henry Clay Iron Furnace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/henry-clay-iron-furnace.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/henry-clay-iron-furnace-back.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I crawled inside to take a look.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/henry-clay-iron-furnace-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/henry-clay-iron-furnace-entrance.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Lost?&lt;/h3&gt;
&lt;p&gt;We got &quot;lost&quot; on the way back to the parking lot, but not really. We missed a turn, but quickly, Terri noticed that things did not look right, and we backtracked, and turned onto the Rhododenron Trail as we should have. All good!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/rhododendron-trail.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/map.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Back to civilization:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coopers-rock-2014-05-03/done.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Missing the optional hike&lt;/h2&gt;
&lt;p&gt;There was an optional 3-mile hike planned after the main one, to reach another scenic area, but Terri and Jeff decided it was too complicated to officially reorganize a group for it, and just left it to everyone to figure out appropriate car pools to park in a lot nearer to it.&lt;/p&gt;
&lt;p&gt;The four of us drove to the lot a bit later than some others, and unfortunately, someone pulled into the last parking space. As it was already drizzling rain anyway, and there was no parking to be found nearby, we just waved goodbye and started heading home. Maybe this was a good thing, because the rain quickly began to pour really hard!!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Coopers Rock State Forest is a great place to visit. The hiking is great, with varied terrain and elevation changes, lots to see. Perhaps in the future Abby and I will check out the camping.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you been to Coopers Rock? For hiking, cross-country skiing, camping, or rock climbing?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Black takes control of the dark squares by grabbing the Bishop pair</title><link>https://franklinchen.com/blog/2014/05/01/the-chess-improver-black-takes-control-of-the-dark-squares-by-grabbing-the-bishop-pair/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/05/01/the-chess-improver-black-takes-control-of-the-dark-squares-by-grabbing-the-bishop-pair/</guid><pubDate>Thu, 01 May 2014 11:59:02 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Black takes control of the dark squares by grabbing the Bishop pair&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the final round of my most recent tournament, I was scheduled to play Black against a particular opponent whom I have faced several times before. Because I had lost one game so far, I had to win this game to have any chance at catching the leaders in the tournament and winning it. So I thought about a plan to play hard for a win as Black.&lt;/p&gt;
&lt;p&gt;I knew one thing almost for certain: my opponent as White always plays a solid Torre-style opening system involving the moves d4, c3, Bg5, Nd2. Also, I knew him to happily give up his dark-squared Bishop early for the sake of quick development. Given this knowledge, inspired by a recent Chess Improver post about &lt;a href=&quot;https://web.archive.org/web/20170701040149/http://chessimprover.com:80/the-art-of-chess/&quot;&gt;the art of chess&lt;/a&gt;, I aimed to create a personal masterpiece on the chess board, with the knowledge that &quot;you have to willing to accept the consequences of taking a chance&quot;.&lt;/p&gt;
&lt;h2&gt;The battle of chess ideas&lt;/h2&gt;
&lt;p&gt;I decided to deliberately engage in a &quot;battle of chess ideas&quot; as Black for this game, investing valuable development time to gain the Bishop pair in hope of consolidating and achieving a good late middlegame or endgame, using my unopposed dark-squared Bishop to press on White&apos;s dark-squared Pawn chain.&lt;/p&gt;
&lt;p&gt;I attacked White&apos;s Bishop with my h-Pawn on move 4, planning to eliminate it, and White obliged. On move 8, because White did not take the opportunity to maintain a Pawn center, the game was in no risk of being opened up, so I also invested valuable time in playing g6 (instead of developing immediately with Be7) in order to maximize the scope of my dark-squared Bishop.&lt;/p&gt;
&lt;p&gt;Because of White&apos;s slightly passive development, I ended up a bit impatient at move 11. My safest course was to complete development first, and then start applying pressure to White&apos;s center, but I chose to open things up before actually completing development (of my light-squared Bishop). After some passive moves by White, I achieved a slightly advantageous position with all my main pieces developed, and my Rooks ready to be developed on the open d and e files also. I considered my opening experiment a success, although the cost of opening up the center was that the resulting symmetrical Pawn structure meant that most likely there would be a long struggle to try to win an endgame by applying more pressure on the Queen side to win a Pawn or something.&lt;/p&gt;
&lt;p&gt;In fact, after several more moves of mutual maneuvering, my opponent blundered on move 25, resulting in forced loss of material.&lt;/p&gt;
&lt;h2&gt;A bad practical decision&lt;/h2&gt;
&lt;p&gt;Unfortunately, I made what was a bad practical decision. I was starting to get tired, but instead of playing safely, I got a bit ambitious, trying for a bigger win of material than the simple one of winning a Queen for a Rook and Bishop; if I had gone for that situation instead, I could have played effortlessly &quot;for two results&quot;: there was no way I could lose, and defense was surely impossible. But I thought that I would &quot;wait&quot; for an even better moment to take advantage of White&apos;s self-pin.&lt;/p&gt;
&lt;p&gt;It turned out that in fact, White played another blunder, allowing me to win an exchange and more on the Queen side, just as I had hoped. At this point, the game should have been nearly over.&lt;/p&gt;
&lt;h2&gt;Swindled!&lt;/h2&gt;
&lt;p&gt;Unfortunately, while on the verge of winning, just a few moves away from promoting a Pawn, while nervous about time getting a little low on the clock (but objectively, not that low: 10 minutes left of my original 120 minutes), I blundered repeatedly and ended up losing. It was arguably one of the most horrific losses in my chess life, in a very important game. But what can I say, I got swindled, and with a passed c-Pawn, ironically, the same Pawn that as White &lt;a href=&quot;/blog/2014/04/24/the-chess-improver-is-it-ok-to-play-a-losing-move-in-order-to-win/&quot;&gt;I had swindled a win in my previous round&apos;s game&lt;/a&gt;, so there is justice in the chess universe.&lt;/p&gt;
&lt;p&gt;I was devastated by this loss (of course, I got over it after about twelve hours), but at least I was proud of having actually executed my pre-game plan. If I had actually taken White&apos;s Queen, then the plan of destroying White&apos;s dark-squared Pawn chain on b2 and c3 through the combined efforts of my fianchettoed Bishop, Queen, and a Pawn storm, could have created the exact &quot;personal masterpiece&quot; I had envisioned before the game.&lt;/p&gt;
&lt;h2&gt;The complete game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th William M. Byland Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.04.15&quot;]
[Round &quot;6&quot;]
[White &quot;Peter Jansen&quot;]
[Black &quot;Franklin Chen&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2161&quot;]
[ECO &quot;A00&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2014&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;c3 Nf6 2. d4 d6 3. Bg5 Nbd7 4. Nd2 h6 $5 { I had a very ambitious plan of gaining the Bishop pair and aiming to win the endgame.} 5. Bxf6 Nxf6 6. e4 e5 7. Ngf3 exd4 8. Nxd4 $6 ( 8. cxd4 { More consistently takes the center.} ) 8... g6 { Very ambitious indeed, aiming for the most active Bishop placement.} 9. Bc4 Bg7 10. Qc2 O-O 11. O-O d5 $5 { Risky, because Black is behind in development. It was safer to finish development before opening up the position.} ( 11... Bd7 { Simple development was best.} ) 12. exd5 Nxd5 13. Rad1 Nb6 14. Bb3 $6 { Somewhat passive.} 14... c5 15. N4f3 $2 { Too passive. Black can now finish development with some advantage because of the Bishop pair.} ( 15. Nb5 ) 15... Bf5 16. Qc1 Qc7 17. Nc4 Rad8 { Deciding to try to trade the Rooks off in order to reach an endgame with a tiny advantage.} ( 17... Be4 { Most ambitious.} ) 18. Nxb6 Qxb6 19. Bc4 $2 { Trying to avoid trades while maintaining control of d3.} ( 19. Rfe1 { With the simplification, the game should really be a draw, but at least Black is the one with the chances because of the Bishop pair.} ) 19... g5 $5 ( 19... Qc6 { Putting the Queen on a better square was strongest.} ) 20. Rfe1 $2 ( 20. h4 { White could have punished the Pawn advance, equalizing or even more.} 20... g4 21. Qf4 { White now has activity on the dark squares.} ) 20... Rxd1 21. Rxd1 Rd8 22. Bd5 $2 Bf6 $5 { &quot;Doing nothing&quot; as a way of trying to wait for a better opportunity to play for a win.} ( 22... Rd7 { Black can make White suffer for the draw with simple play.} ) 23. h3 $2 ( 23. h4 { Was best.} ) 23... Kg7 $5 { Another waiting move.} ( 23... c4 $1 { I saw this, but did not see a win, and therefore held off on it for one move.} 24. Ne1 Qb5 { Black has a good position.} ) 24. g4 $2 { A weakening move.} ( 24. Nh2 { I was expecting a Knight maneuver instead, but was prepared with a Bishop maneuver.} 24... Be5 25. Ng4 Bf4 26. Ne3 Bg6 ) 24... Bg6 25. Qd2 $4 { A losing blunder.} 25... c4 ( 25... Qa6 { Another way to &quot;prepare&quot; for c4.} ) ( 25... Be4 { An obvious tactic winning the Queen for a Rook and Bishop, but I felt that White might be able to put up resistance.} 26. Bxe4 Rxd2 27. Rxd2 Qa6 { The position is obviously better for Black, and is presumably winning, but I thought I had seen a better win.} 28. a3 b5 29. Kg2 Qa4 { Black has an obvious plan of breaking through on the Queen side.} ) 26. Qe2 $4 Bd3 27. Rxd3 cxd3 28. Qxd3 Qxb2 { Black is an exchange up and has a totally won game.} 29. c4 $4 Qxa2 30. Kg2 Qb2 ( 30... a5 { Starting to push the a-Pawn immediately was the clearest win.} ) 31. Qf5 b5 $2 ( 31... a5 { The a-Pawn is the one that should be promoted!} 32. Be4 a4 33. Qh7+ Kf8 34. Qxh6+ Ke7 { White has nothing. His Queen is almost trapped, the Black is about to promote the a-Pawn.} ) 32. c5 $1 { A clever swindling attempt.} 32... Qc1 $4 { An insane blunder. I was playing too quickly, and immediately saw that it was a blunder.} ( 32... b4 { Just plain pushing wins the race.} 33. Be4 b3 34. Qh7+ Kf8 35. c6 Bd4 36. Nxd4 Qxd4 37. c7 Rc8 38. Qxh6+ Ke7 39. Qxg5+ f6 40. Qg7+ Kd6 { White has run out of checks.} ) 33. Bxf7 $1 ( 33. c6 $4 { What I had expected.} 33... Qf4 ) 33... Qf4 34. Qg6+ Kf8 35. Be6 Bg7 36. c6 { Now, the game is not yet lost for Black, actually.} 36... b4 $4 ( 36... Qc7 { Ordinary defense should save the draw.} ) 37. Qf5+ $4 ( 37. Qh7 { Wins immediately.} ) 37... Ke7 $4 ( 37... Qxf5 { This might actually draw.} 38. gxf5 b3 39. c7 Ra8 40. Nd2 b2 41. Kf3 a5 42. Ke4 a4 43. c8=Q+ Rxc8 44. Bxc8 Ke7 45. Kd3 a3 46. Be6 Kf6 $201 { A remarkable position. Bishops of opposite colors, and White&apos;s broken Pawn structure, make it seem that the position should be a draw!!} ) 38. Qxf4 gxf4 39. c7 a5 $4 ( 39... Ra8 { At least makes the task a bit harder for White.} 40. c8=Q Rxc8 41. Bxc8 a5 42. Ba6 b3 43. Nd2 b2 44. Kf3 { OK, Black has run out of tricks.} ) 40. cxd8=Q+ Kxd8 41. Bb3 Kc7 42. Nd2 Kc6 43. Ba4+ Kc5 44. Nb3+ Kb6 45. Kf3 Be5 46. Ke4 Bb8 47. Kf5 Bc7 48. h4 Kb7 49. Kg6 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Pittsburgh Recorder Society: Palestrina, Gombert, and Dolly Parton cookies</title><link>https://franklinchen.com/blog/2014/04/27/pittsburgh-recorder-society-palestrina-gombert-and-dolly-parton-cookies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/27/pittsburgh-recorder-society-palestrina-gombert-and-dolly-parton-cookies/</guid><pubDate>Sun, 27 Apr 2014 21:47:27 GMT</pubDate><content:encoded>&lt;p&gt;We had a great turnout again for the monthly meeting of the Pittsburgh Recorder Society. We even got an enthusiastic new member, Andriy. There were around fifteen of us, total; we really filled the room!&lt;/p&gt;
&lt;p&gt;Our director Fred was inspirational again, encouraging and helping us to continue to refine our sound, our unity, our expression.&lt;/p&gt;
&lt;p&gt;Every month, attending the Sunday recorder meeting is truly one of the things I look forward to most in life! Sometimes I feel emotionally naked and a bit anxious in our meetings, but I know that this is a safe place to grow and to contribute. Today was one of those days in which I really felt challenged to do my very best to make music together.&lt;/p&gt;
&lt;h2&gt;Kyrie of the &quot;Missa Papae Marcelli&quot; by Palestrina, revisited&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;Well over a year ago&lt;/a&gt;, we had begun work on a recorder ensemble arrangement of Palestrina&apos;s &quot;Kyrie de la &lt;a href=&quot;https://en.wikipedia.org/wiki/Missa_Papae_Marcelli&quot;&gt;Missa Papae Marcelli&lt;/a&gt;&quot;, but had actually not picked up much on that, so I was delighted that Fred decided (especially now that we have more members) to start on this piece again.&lt;/p&gt;
&lt;p&gt;I got a tenor 2 part and was happy to do my best to produce a rich inner voice blending it into the ensemble&apos;s tapestry of sound. Fred emphasized that the original music did not have bar lines, and that each &quot;Kyrie&quot; phrase can and does begin on any beat of a &quot;measure&quot;, so we should focus on keeping the flow going. Of course, this being originally vocal music, I tried to &quot;sing&quot; on recorder, paying attention to entrances and breath control (I am still unable to last an entire breath in some of these phrases).&lt;/p&gt;
&lt;h2&gt;&quot;Mille Regres&quot; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Nicolas_Gombert&quot;&gt;Nicolas Gombert&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We also started work on a recorder arrangement of &quot;Mille Regres&quot; by Nicolas Gombert, originally for voice.&lt;/p&gt;
&lt;p&gt;Fred put me on the alto part and after we started playing, I realized I was the only one on the part, and felt anxious! There was nowhere to hide. It&apos;s very different from playing on a tenor or bass part with a bunch of other people, or even when playing a part with just one other person. On the one hand, there is much more freedom, because when a voice is doubled, you have to work with someone to sound like one. Of course, you always have to blend with the rest of the ensemble, regardless, but when you&apos;re alone, you realize that you do not have backup for your voice, that you are it. Strong entrances, making the high notes clear and rich, are totally up to you now. It&apos;s a great responsibility and opportunity, and I felt myself focusing as deep as I could into every element of the music. After today&apos;s first cut, I hope to continue to improve on bringing my part fully to life.&lt;/p&gt;
&lt;p&gt;Here&apos;s a performance of the original music for voice:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/J_2kRgCxeHk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&quot;Mille Regretz&quot; by Josquin des Prez&lt;/h3&gt;
&lt;p&gt;It turns out that elements of this music sounded familiar to me, because in fact it is based on the French chanson &lt;a href=&quot;https://en.wikipedia.org/wiki/Mille_Regretz&quot;&gt;&quot;Mille Regretz&quot;&lt;/a&gt; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Josquin_des_Prez&quot;&gt;Josquin des Prez&lt;/a&gt;, which I was familiar with because in last year&apos;s Mideast early music workshop, I took a voice class in which we performed it. I really enjoyed singing it (as tenor; sorry, I don&apos;t know if anyone has a video of our performance at the final student concert).&lt;/p&gt;
&lt;p&gt;Here&apos;s a nice performance of &quot;Mille Regretz&quot; with just one singer per part:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/S0TNPoDYHFY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Another alto solo&lt;/h2&gt;
&lt;p&gt;There was another piece we started (but there were not enough scores, so I had to share with Kristel; I need to ask for a copy to be emailed to me, but for now I don&apos;t remember the name or composer) in which Fred again put me on a solo part, which was originally marked &quot;soprano&quot; but after a run through, he told me to read it on alto up an octave.&lt;/p&gt;
&lt;p&gt;This assignment made me even more anxious because I actually start out with a full statement of the melody without any accompaniment, before everyone else starts to come in. I&apos;m not used to be put on the spot like this. But again, it&apos;s a great opportunity to really work on refining my technique and expression, and being aware that I am setting the stage for the whole piece to succeed. Also, it&apos;s an upbeat, rhythmic piece rather than a melancholy, lyrical one, so it was great to have the opportunity to portray different moods.&lt;/p&gt;
&lt;h2&gt;Snacks&lt;/h2&gt;
&lt;p&gt;As usual, people brought in snacks to share for the mid-meeting break.&lt;/p&gt;
&lt;p&gt;Helen not only brought in the recipe for her delicious brownies from &lt;a href=&quot;/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/&quot;&gt;last month&apos;s meeting&lt;/a&gt;, but also a new batch of what she called &quot;Dolly Parton&quot; cookies, incorporating a lot of apple in them.&lt;/p&gt;
&lt;p&gt;The recipe for last month&apos;s brownies:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-04-27/recipe.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ate three of this month&apos;s &quot;Dolly Parton&quot; squares:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-04-27/cookie1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-04-27/cookie2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-04-27/cookie3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Although setting a limit on three was better than no limit at all, after I got home, I did wonder whether maybe I should have limited myself to two; these were quite substantial and filling!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had another intense and joyful musical afternoon with a great group of friendly and fun recorder enthusiasts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is your favorite role when you are on a team? Do you like being a prominent soloist, or do you prefer to blend into the background? Or do you like to switch up your roles? What do you adjust when you switch?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Is it OK to play a losing move in order to win?</title><link>https://franklinchen.com/blog/2014/04/24/the-chess-improver-is-it-ok-to-play-a-losing-move-in-order-to-win/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/24/the-chess-improver-is-it-ok-to-play-a-losing-move-in-order-to-win/</guid><pubDate>Thu, 24 Apr 2014 11:45:59 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Is it OK to play a losing move in order to win?&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Over two months ago, I wrote an article here, &lt;a href=&quot;/blog/2014/01/30/the-chess-improver-9-lessons-to-learn-from-bill-gates-9-move-loss-to-magnus-carlsen/&quot;&gt;&quot;9 lessons to learn from Bill Gates&apos; 9-move loss to Magnus Carlsen&quot;&lt;/a&gt;, which generated a lot of discussion among my friends. I was also notified of something I hadn&apos;t known when I wrote the article, which was that Magnus Carlsen only had 30 seconds for the entire game, so this was a severe constraint, and that he had explained that he does not usually play for &quot;cheap tricks&quot;. Unfortunately, the media sources that all my friends had sent me had not mentioned these important details. With 1 minute or 2 minutes, he could have played in a &quot;normal&quot; way, but 30 seconds is much less time.&lt;/p&gt;
&lt;p&gt;I had been surprised that so many of my non-chess-playing friends thought (without the extra information about the constraints) that somehow, &lt;em&gt;in general&lt;/em&gt;, it was OK to play for cheap tricks that could backfire: playing an objectively &lt;em&gt;losing&lt;/em&gt; move in order to win a game against someone, hoping that the opponent would not see how to counter that bad move. I promised them that I would eventually write about why I thought that &lt;em&gt;in general&lt;/em&gt;, I don&apos;t consider it appropriate to play for cheap tricks that could backfire.&lt;/p&gt;
&lt;p&gt;Ironically, recently I played a game in which I uncharacteristically used exactly a cheap trick in order to win a game. I will confess that I felt ashamed afterwards, and did not celebrate my victory. In fact, after the game ended, I slumped away back home feeling just as psychologically drained as after losing a game. At the same time, I would not have done what I did if I had not felt &lt;em&gt;justified&lt;/em&gt; in what I did, even if it was not fully satisfactory. So I&apos;ll use this experience as a way to discuss the issues surrounding playing a losing move in order to win.&lt;/p&gt;
&lt;h2&gt;Objectivity vs. subjectivity in chess: science vs. sport&lt;/h2&gt;
&lt;p&gt;The argument for playing &quot;objectively&quot; good moves is clear, I think. If the goal is improve one&apos;s long-term playing understanding and performance, it is simply not good to play moves that you know are bad. You might succeed sometimes, against weak opponents, but against stronger opponents who can see just as well as you can, they will see your trick and punish you for the trick. I see a lot of chess play at lower levels in which trickery is attempted and often succeeds and often fails. Imagine playing tennis, and deliberately hitting a weak serve or return in hope of an unforced error. If your goal is not to just win a single game against a single opponent at a certain point in time, but to improve as an overall tennis player, I would say that it is better to try to do the &quot;right&quot; things.&lt;/p&gt;
&lt;p&gt;The argument for playing &quot;subjectively&quot; good moves is also clear, however. In any single situation, you may have extra information that you can exploit. You might know that your tennis opponent has a poor backhand, in which you might place an objectively weak shot to your opponent&apos;s weak side. As a matter of sport, in fact, it would be stupid not to use this information about the situation. And chess too is a sport: you may notice that your opponent lacks stamina and loses focus at the end of a long game, or has trouble playing quickly when time is running low on the clock, and use this information to your advantage. Psychology is a huge and valid element of the sport of chess, and goes well beyond these coarse examples, to the point of such subtleties as knowing whether your opponent likes to use Bishops in a certain way to control certain squares. Today, top professional chess players actually try to figure out their opponents&apos; psychology by performing data mining and statistical analyses on databases of the entire history of their opponents&apos; previously played games! In fact, arguably, Carlsen became the new World Champion recently by avoiding Anand&apos;s preferred opening setups and types of positions, even at the expense of his own positions: in many games, he conceded objectively superior positions to Anand, as long as they were not what Anand expected to have.&lt;/p&gt;
&lt;p&gt;So I would say that depending on whether you are treating chess as a serious discipline to continue improving at, or whether you have already practically maxed out in technical ability and/or are in a sporting situation where you evaluate the tradeoffs of taking a risk, it is justifiable to make different decisions.&lt;/p&gt;
&lt;p&gt;But here at The Chess Improver, I try to focus on elements of chess that are objective in nature, because although psychology is always important, improving at objective fundamentals will always be most important until you reach a certain level.&lt;/p&gt;
&lt;h2&gt;The case of my game won by a cheap trick&lt;/h2&gt;
&lt;p&gt;Now it&apos;s time for me to explain my cheap trick that won a game that was otherwise unwinnable.&lt;/p&gt;
&lt;p&gt;Out of a superior opening as White, I went astray and blundered a Rook away for a Bishop on move 15. I have no excuse; I simply got my move order confused and got skewered. At this point, I had to start thinking about how to &lt;em&gt;draw&lt;/em&gt; the game. I had some chances, having the Bishop pair against a Rook and Knight, and a passed Pawn on c5.&lt;/p&gt;
&lt;p&gt;But my opponent played strongly, sacrificing the exchange back immediately in order to reach a position in which he was going to win a Pawn. On move 22, about to lose a Pawn and face a very difficult fight for a draw, I had to start thinking about swindling ideas in order to try to make the draw more within my reach. The trick is always to give the opponent more choices: good ones and bad ones. Often, playing a &quot;good&quot; move that has only one plausible reply, which happens to also be good, is just continuing the game along a path that you don&apos;t want, and it is worth taking on some risk by playing a worse (but &lt;em&gt;not yet losing&lt;/em&gt;) move that offers hope.
Step 1: fighting back to a drawn position&lt;/p&gt;
&lt;p&gt;By move 27, I had swindled my opponent, through back rank threats, into a position in which I was still down a Pawn but had secured a drawn position. If I threatened to Queen my passed Pawn by pushing it to c6, then my opponent would have had &lt;em&gt;no choice&lt;/em&gt; but to perpetual check my King, accepting a draw. So I had to think: now that I have secured the draw, can I still try to swindle a &lt;em&gt;win&lt;/em&gt; out of a position in which I was still a Pawn down?&lt;/p&gt;
&lt;h2&gt;Step 2: attempting to get winning chances&lt;/h2&gt;
&lt;p&gt;Here&apos;s when the time situation on the clock became quite relevant: my opponent was running very low on time, and was visibly anxious; he had 2 minutes left on his clock, while I had over 30 left on mine!! (It needs to be noted, however, that we were playing with a 5-second delay, which means that there is potentially enough time to play obviously moves in a simplified endgame position.) Meanwhile, my position was active enough that I didn&apos;t have to accept the perpetual check right away: I was clearly no longer losing. Most important, however, was my tournament situation: I had lost my game in the previous round, and therefore I had to win this 5th round game in order to have any chance of catching the leaders by also winning the 6th round game. So I felt justified in beginning to play for a win. My only chance to win was to somehow prevent perpetual check and prepare a later advance of my passed Pawn on c5 to try to Queen it. It was a very long shot, but I had to try.&lt;/p&gt;
&lt;h2&gt;Step 3: playing the losing move in order to win&lt;/h2&gt;
&lt;p&gt;In order to take maximal advantage of the time situation, I had to play quickly myself, which I did, and unfortunately playing not so good moves. I actually ended up in a dangerous position by move 33. Here I had to pause and think. My opponent was down to less than a minute. Objectively the best thing for me to do was to acknowledge that I was now the one who had to defend and force a draw by perpetual check. I almost did this. It was the &quot;correct&quot; thing to do.&lt;/p&gt;
&lt;p&gt;However, I embarked on a rare gamble. If I played a clearly losing move that lost my Bishop by force, it would cause my opponent to have to make &quot;long&quot; moves, reaching across the board and completely changing the nature of the position, and possibly disorient him. Then I could push my Pawn forward to c6 and try to get it c7 and then even to Queen. It was somewhat absurd to hope that this could happen, and I will confess that if not for the tournament situation, I would not even have considered this option. But given the tournament situation, and given that my opponent&apos;s hand was trembling, it seemed that there really was some chance this swindle would work.&lt;/p&gt;
&lt;p&gt;The swindle worked. My opponent ended up spending precious seconds, repeatedly, on a couple of moves, and then made the final blunder, which allowed me to trade Queens, resulting in a miraculous position in which his Knight and King were too far away to prevent my Pawn from Queening. In a lost position, with a few seconds left on the clock, my opponent allowed his flag to fall, and I won the game by time forfeit.&lt;/p&gt;
&lt;p&gt;I marked my win on the posted paper sheet, quietly packed up, and went home.&lt;/p&gt;
&lt;p&gt;Chess is a sport. I did not play well today, but I won. But sometimes, the reverse happens, and I play well, but lose.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th William M. Byland Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.04.08&quot;]
[Round &quot;5&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Robert Atwell&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2000&quot;]
[ECO &quot;D37&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 d5 2. Nf3 Nf6 3. c4 e6 4. Nc3 Be7 5. Bf4 O-O 6. a3 c5 7. dxc5 dxc4 $2 { This gives up the center too easily. Black is also behind in development.} 8. e4 Bxc5 9. Bxc4 a6 10. O-O $6 { Hardly bad, but indicates sloppiness to come.} ( 10. e5 { Striking while ahead in development was very strong.} ) 10… b5 11. Ba2 $6 { Not a good place for the Bishop.} ( 11. Bd3 { White still has a huge advantage.} ) 11… Bb7 12. Qe2 ( 12. e5 { Still possible, but not as good as earlier.} ) 12… b4 $5 { A good psychological decision, trying to play actively.} 13. Na4 $6 ( 13. axb4 { I saw that the natural move leads to an obvious White advantage, but I started looking at strange lines.} 13… Bxb4 14. e5 ) 13… Be7 14. axb4 { My &quot;clever&quot; idea, which is actually not terrible, but was not necessary.} 14… Bxe4 $2 15. Nc5 $4 { Blundering away the exchange!! The game is not yet lost, thanks to the Bishop pair.} ( 15. Rfd1 { My original plan, but I got the move order wrong!!} 15… Qe8 16. Nc5 { White has a good position.} ) 15… Bxc5 16. bxc5 Bd3 { This move came as a real shock to me.} 17. Qe3 $5 { I decided to start playing actively, even though this was risky.} 17… Bxf1 18. Kxf1 $2 { In retrospect, a poor recapture.} 18… Nd5 19. Qe4 Nxf4 $1 { Giving back the exchange is actually a fine positional idea here. If White were allowed the Bishop at d6, White would almost certainly be able to draw.} 20. Qxa8 Qd3+ 21. Kg1 Qc2 $1 { Very nice. White&apos;s Queen side is totally undefended. Now I started looking for a swindling idea, based on Black&apos;s back rank.} 22. Ne1 Qxb2 $5 { Objectively OK, but invites tricks.} ( 22… Ne2+ { Grabbing the passed c Pawn was a safe way to an advantage.} 23. Kf1 Qxc5 ) 23. Rb1 $1 { The point is that White will win the Knight on b8. But actually, Black can allow this.} 23… Qc3 $2 ( 23… Qe2 { Threatening the Knight on e1 prevents White from winning anything.} ) 24. g3 $5 { First step in the swindling attempt.} ( 24. Qe4 { Bringing the Queen back for defense was a safe way to hold the draw a Pawn down.} ) 24… Ng6 $2 { Now White has an easy draw by allowing perpetual check.} ( 24… Ne2+ 25. Kf1 Nd7 { Developing was the way for Black to play for a win.} ) 25. Rxb8 Qxe1+ 26. Kg2 Qe5 27. Rxf8+ Nxf8 28. Qc6 $5 { Trying to delay the seemingly inevitable draw by perpetual check. It is critical to note that Black had only two minutes left on the clock, while White had many more minutes.} ( 28. c6 { The obvious draw by perpetual check.} 28… Qe4+ 29. Kg1 Qe1+ 30. Kg2 Qe4+ ) 28… g5 $5 { Black is also playing for a win.} 29. Bb1 $6 { A poor blitzing move.} 29… f5 $5 30. Bd3 h5 $5 { There was no need to give up the a-Pawn but Black is attempting to swindle also.} 31. Bxa6 h4 32. Bb7 $2 { Playing with fire. This Bishop does nothing on this square.} ( 32. Qd6 { The safe way to bail out into a drawn ending.} ) 32… g4 33. Qd6 $4 { A totally losing move, but a swindling attempt given that Black had less than a minute on the clock left.} ( 33. gxh4 { Now it&apos;s White&apos;s turn to try to give perpetual check.} 33… Ng6 34. Qe8+ ) ( 33. Ba6 { The safe way to simply defend the light squares around the King.} ) 33… h3+ 34. Kf1 Qa1+ 35. Ke2 Qb2+ 36. Ke3 Qxb7 { White has blundered away a whole piece.} 37. c6 Qc8 $4 { Too passive.} ( 37… Qb6+ { Being active would have prevented any Queening.} ) 38. c7 { Now White should be able to draw by perpetual check.} 38… Qb7 39. Qd8 Qb6+ $2 { A risky way to draw.} ( 39… Qe4+ { An easy perpetual check.} ) 40. Kf4 e5+ $1 { Forced.} ( 40… Qxf2+ $4 { Black saw that this move loses.} 41. Kg5 Qe3+ 42. Kh5 { White has escaped from perpetual check!} ) 41. Kxe5 { Black was down to a couple of seconds left.} 41… Qc5+ $4 ( 41… Qb2+ { Still draws. White&apos;s King has no shelter.} ) 42. Qd5+ { Black forfeited on time just before suffering from White&apos;s Queening the c-Pawn.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>My progress so far on my cookie quota system</title><link>https://franklinchen.com/blog/2014/04/20/my-progress-so-far-on-my-cookie-quota-system/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/20/my-progress-so-far-on-my-cookie-quota-system/</guid><pubDate>Sun, 20 Apr 2014 23:27:37 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to an annual (secular) Easter party hosted by Lynette and Jim. In the past, I&apos;ve often ended up all sleepy and sluggish at these parties. My experience this time was a bit different different. OK, we were all still quite well-fed, and I got tired, but far less so this time. I definitely believe it is because of my &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;cookie quota system&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I limited myself to just three &quot;cookies&quot; (Jim repeatedly teased me for my explanation that &lt;a href=&quot;/blog/2014/02/22/cake-is-the-same-as-cookie-in-my-book-so-here-is-a-photo-of-birthday-cake/&quot;&gt;cake counts as cookie&lt;/a&gt;). This meant skipping out on trying a couple of desserts, because there were far more than three options. In the past, I would try a bit of everything, and that always ended up being too much, even if I took what I considered to be a small portion.&lt;/p&gt;
&lt;p&gt;Some kind of tart:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/easter-2014/cookie1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Birthday cake:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/easter-2014/cookie2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tiramisu:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/easter-2014/cookie3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I also did not eat any bread rolls, and limited my potato intake at Easter dinner. And I drank no wine. All this helped me.&lt;/p&gt;
&lt;p&gt;Maybe it&apos;s time for me to go down from three to two &quot;cookies&quot;. I will consider this. Also, maybe I should start counting ice cream and candy as &quot;cookies&quot; as well. I do regret eating one &lt;a href=&quot;https://web.archive.org/web/20140411213734/http://www.lindtusa.com:80/shop/chocolate-carrot-gift-bag&quot;&gt;Lindt &quot;chocolate carrot&quot;&lt;/a&gt; that in retrospect I did not really need to eat. (I did not eat any ice cream at this party, however.)&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://cdn.lindtusa.com/wcsstore/ExtendedSitesCatalogAssetStore/images/catalog/products/main/450x/chocolate-carrot-gift-bag_main_450x_8325-M.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://cdn.lindtusa.com/wcsstore/ExtendedSitesCatalogAssetStore/images/catalog/products/main/450x/chocolate-carrot-gift-bag_main_450x_8325-M.png&quot;&amp;gt;[image: Lindt chocolate carrot]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other than quitting something cold turkey, do you have a working system for reducing your consumption of desserts that you know are not so healthy for you? What makes your system work? Do you have an incremental reduction plan like mine, and self-punishment such as promising to post individual photos online of what you eat?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The perfect music for Good Friday: some favorite interpretations of Bach&apos;s &quot;Erbarme dich&quot; from the St. Matthew Passion</title><link>https://franklinchen.com/blog/2014/04/18/the-perfect-music-for-good-friday-some-favorite-interpretations-of-bachs-erbarme-dich-from-the-st-matthew-passion/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/18/the-perfect-music-for-good-friday-some-favorite-interpretations-of-bachs-erbarme-dich-from-the-st-matthew-passion/</guid><pubDate>Fri, 18 Apr 2014 11:38:07 GMT</pubDate><content:encoded>&lt;p&gt;You might assume, since I&apos;m talking about &lt;a href=&quot;https://en.wikipedia.org/wiki/Good_Friday&quot;&gt;Good Friday&lt;/a&gt;, that I&apos;m Christian, and that I&apos;m here to talk about my faith. Actually, I&apos;m not Christian, but I also believe that Easter is not irrelevant. Here&apos;s another non-Christian writing about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.rsablogs.org.uk/2014/socialbrain/meaning-easter-bunnies/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.rsablogs.org.uk/2014/socialbrain/meaning-easter-bunnies/&quot;&amp;gt;why Easter matters&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve found it impossible to escape the fact that one of my favorite music composers, Johann Sebastian Bach, was not only Christian, but clearly imbued his music in some way or other with his deep faith. Two years ago, while listening to the opening chorus of his &lt;a href=&quot;https://en.wikipedia.org/wiki/St_Matthew_Passion&quot;&gt;St. Matthew Passion&lt;/a&gt;, which was first performed on Good Friday in 1727, I also saw a thoughtful article by a Muslim, &lt;a href=&quot;https://web.archive.org/web/20250809184500/http://www.telegraph.co.uk/culture/music/opera/9206775/Can-non-Christians-appreciate-Bachs-St-Matthew-Passion.html&quot;&gt;&quot;Can non-Christians appreciate Bach&apos;s St. Matthew Passion&quot;&lt;/a&gt;. I&apos;m not here to add to that debate, but to share one of the most moving pieces in the entire history of Western music, the aria &quot;Erbarme dich&quot; from the St. Matthew Passion. I hope you will check it out, whether you are Christian or not.&lt;/p&gt;
&lt;h2&gt;Erbarme dich&lt;/h2&gt;
&lt;p&gt;The aria features a prominent violin solo part as well as a sung alto solo part. It represents the disciple Peter&apos;s anguished and lonely weeping (&quot;Have mercy, my Lord&quot;) after &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://biblehub.com/matthew/26-75.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://biblehub.com/matthew/26-75.htm&quot;&amp;gt;he has three times denied knowing Jesus&amp;lt;/span&amp;gt;, guilty of the most shameful betrayal. The way Bach depicts Peter&apos;s emotional state through music is astounding and gripping. You just have to hear it for yourself.&lt;/p&gt;
&lt;h3&gt;Sophie Gent, Damien Guillon&lt;/h3&gt;
&lt;p&gt;One performance I like features Sophie Gent on violin and Damien Guillon as countertenor. It is a very meditative, pure-sounding performance:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/nZb7FcP84CM&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Unknown violinist, Andreas Scholl&lt;/h3&gt;
&lt;p&gt;However, I do prefer an edgier performance, and here is one that is more urgent and dramatic (audio only, no video of the performance) by Andreas Scholl as countertenor. Scholl really impresses here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/0WLedpz9a40&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;You can actually follow along in the score by a synchronized video score &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://musescore.com/rpbouman/scores/141997&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://musescore.com/rpbouman/scores/141997&quot;&amp;gt;here&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Fredrik From, Anne Sofie von Otter&lt;/h3&gt;
&lt;p&gt;An even more urgent performance that might be my favorite is by Fredrik From on violin, Anne Sofie von Otter as mezzo-soprano. I have to confess that I feel that the tempo is a bit fast, but that does, in conjunction with the impeccable articulation and ensemble unity of purpose and style, give a driving force to Peter&apos;s anguish. For me, this is the most &lt;em&gt;expressive&lt;/em&gt; of the performances I&apos;m listing here.&lt;/p&gt;
&lt;p&gt;A few notes on this video:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is a video of a recording session, so it is curious to see von Otter in everyday clothing and moving and gesturing while singing for the purpose of a recording, where the audience is not meant to know what she was wearing or how she was privately swaying to the music. I find watching her both mesmerizing and distracting, but I feel that somehow her being free to express herself any way she wanted, sight unseen, might have been a good thing, because hers is truly an emotionally raw performance. &lt;strong&gt;How do you feel about peeking into a recording session where conditions are optimal for the performer and not meant to be seen by the outside world?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The second half of the video is an interview with von Otter about the recording project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/XR-DFZEBAic&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Unknown violinist, Nathalie Stutzmann&lt;/h3&gt;
&lt;p&gt;On the topic of visually expressive performances, here is one of Nathalie Stutzmann as contralto and also as conductor. Both she and the violinist are totally into the music, holding nothing back physically as they express it. A rather unusual setting and view, but very powerful:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Jeil9S2exIU&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Frederick Chiu on piano&lt;/h3&gt;
&lt;p&gt;The pianist Frederick created his own transcription for piano of the aria. His performance is rather restrained for my taste, but it&apos;s something different:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/U3nUvzApF2E&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve shared a few interesting performances of Bach&apos;s aria &quot;Erbarme dich&quot; from his St. Matthew Passion. There are many other performances out there, of course.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Which of the performances I linked to are your favorite, and why? Or which ones I did not link to do you prefer, and why? And do you feel you need to be a Christian to appreciate and enjoy this kind of sacred music?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thoughts on never having read anything written by Gabriel García Márquez</title><link>https://franklinchen.com/blog/2014/04/17/thoughts-on-never-having-read-anything-written-by-gabriel-garcia-marquez/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/17/thoughts-on-never-having-read-anything-written-by-gabriel-garcia-marquez/</guid><pubDate>Fri, 18 Apr 2014 02:01:38 GMT</pubDate><content:encoded>&lt;p&gt;So I heard that &lt;a href=&quot;https://en.wikipedia.org/wiki/Gabriel_Garc%C3%ADa_M%C3%A1rquez&quot;&gt;Gabriel García Márquez&lt;/a&gt; just died.&lt;/p&gt;
&lt;p&gt;My immediate reaction was one of personal &lt;em&gt;embarrassment&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Because I knew almost &lt;em&gt;nothing&lt;/em&gt; about this famous writer. Now, that in itself is insignificant, since there is no shortage of famous writers or musicians or athletes or scientists whom I know nothing about.&lt;/p&gt;
&lt;p&gt;But there&apos;s a twist.&lt;/p&gt;
&lt;h2&gt;I once bought his novel&lt;/h2&gt;
&lt;p&gt;Over a decade ago, I actually bought a copy of his famous 1967 novel, &lt;a href=&quot;https://en.wikipedia.org/wiki/One_Hundred_Years_of_Solitude&quot;&gt;&quot;Cien años de soledad&quot; (translated into English as &quot;One Hundred Years of Solitude&quot;)&lt;/a&gt;. It seemed to me that everyone around me had a copy of this lying around somewhere, so I figured that I was missing out on something. After taking a Spanish class, in which his name popped up only incidentally as the inventor of &quot;magical realism&quot; (whatever that was), I finally went and bought his novel, in English translation.&lt;/p&gt;
&lt;h2&gt;Reading&lt;/h2&gt;
&lt;p&gt;I didn&apos;t make it past the first page of the novel. It was then that I realized that my fiction-reading days were over. Actually, I hadn&apos;t voluntarily read and finished any fiction for decades, except for short stories, and even then, read only when I was taking a creative writing workshop and we were assigned stories to read: I did enjoy the readings, but never looked for more, and also, despite enjoying writing some stories for the class, I decided to stop after the class was over. Something wasn&apos;t working out for me.&lt;/p&gt;
&lt;p&gt;This was strange because I survived high school largely through reading fiction alone in my room. But that was a different phase of my life. I almost feel like I used up my &quot;quota&quot; of fiction reading right then, during my years of high school. When I went to college, I did some fiction reading in my first year, but after that, did very little such reading outside of literature and philosophy classes, and by then I greatly preferred shorter forms to huge novels (for example, my &lt;a href=&quot;/blog/2013/12/27/are-you-familiar-with-the-nutcracker-story-check-out-eta-hoffmanns-other-creepy-tales/&quot;&gt;discovery of ETA Hoffmann&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also just tell, from the content on my blog, that I don&apos;t write much about literature at all!&lt;/p&gt;
&lt;h2&gt;I am not &quot;well-read&quot;&lt;/h2&gt;
&lt;p&gt;I realized by the time I left college that I was not interested in being &quot;well-read&quot; the way some of my peers were. This was probably clear even in my first year of college. While many of my new classmates eagerly signed up for the Shakespeare course to fulfill a literature requirement, I had no interest in reading more Shakespeare, after all I was subjected to in high school (I will note that in discussion with friends, they claim that Shakespeare is not meant to be read anyway, but experienced as actual theater). I&apos;ve never been one to follow a checklist of &quot;great books&quot; or &quot;great music&quot; or &quot;great films&quot;. I find something here or there, and it might or might not be popular, but I have no bucket list to check off.&lt;/p&gt;
&lt;p&gt;For example, now and then I get forwarded some quiz like &quot;how many of these 100 great books have you read&quot; and I take it and my score is not very high and reflects what I read in high school, and in particular, high school English classes!  Most recently, someone posted on Facebook &lt;a href=&quot;https://www.listchallenges.com/kaunismina-bbc-6-books-challenge&quot;&gt;&quot;BBC believes you only read 6 of these books&quot;&lt;/a&gt; (yes, &quot;One Hundred Years of Solitude&quot; is on this list), and of the 100, I scored 36, and my friends who responded seemed to score between 50 and 80.&lt;/p&gt;
&lt;p&gt;I have &lt;em&gt;not&lt;/em&gt; cracked open &quot;War and Peace&quot;. Or &quot;Moby Dick&quot;. Or &quot;Ulysses&quot;. I might never do so. I&apos;m actually somewhat ashamed I had copies of them in the first place. Despite &quot;intentions&quot;, I would classify my having them around for years as indulging in &lt;a href=&quot;https://eleventhstack.wordpress.com/2012/09/14/whats-your-vanity-read/&quot;&gt;&quot;vanity reads&quot;&lt;/a&gt;: some people &quot;show off&quot; their books or CDs or DVDs, and I suppose to some extent I was not an exception, until several years ago, when I decided that was a stupid game to play, and in the name of decluttering and &lt;a href=&quot;/blog/2011/10/19/really-taking-up-the-challenge-of-minimalism/&quot;&gt;minimalism&lt;/a&gt;, I donated or sold &lt;em&gt;almost all&lt;/em&gt; of my books and CDs and DVDs that I had no reason to keep around any more. I got tired of being embarrassed about all the books I had not yet read or had no clear intention of reading or had read years ago but never planned to revisit.&lt;/p&gt;
&lt;h2&gt;Never say never&lt;/h2&gt;
&lt;p&gt;On the other hand, I do sometimes feel like I&apos;m &quot;missing out&quot; if I don&apos;t check out something that seems to be popular. I don&apos;t want to be narrow-minded. But I&apos;ve learned I can&apos;t &lt;em&gt;force&lt;/em&gt; myself to be &quot;well-rounded&quot;. This has been true for literature as it has been for music, where, for example, I didn&apos;t really bother checking out much Baroque music for the first four decades of my life, but had a radical awakening to the beauty of it only in recent years, and it&apos;s become a cornerstone of my current musical life. If you had forced me to &quot;endure&quot; Baroque music in an earlier stage of my life, it might have just backfired. Similarly, when it comes to food, I have been &lt;a href=&quot;/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/&quot;&gt;very late in diversifying my taste&lt;/a&gt;. In the case of film, again, I am not a &quot;film buff&quot; like some of my friends; I actually very rarely watch films these days, maybe &lt;em&gt;5&lt;/em&gt; a year (I&apos;m amazed by those who watch something more like &lt;em&gt;150&lt;/em&gt; a year, but apparently that&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.businesswire.com/news/home/20120906006400/en/Average-Netflix-User-Watches-5-TV-Shows&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.businesswire.com/news/home/20120906006400/en/Average-Netflix-User-Watches-5-TV-Shows&quot;&amp;gt;average for Netflix users&amp;lt;/span&amp;gt;).&lt;/p&gt;
&lt;p&gt;So, in the same way, it appears I am not yet in any mood to read Gabriel García Márquez. &quot;It&apos;s not him, it&apos;s me&quot;? I gave away my copy of his novel a couple of years ago, knowing that it had sat around at home too long and that I wasn&apos;t going to read it anytime soon. It is possible that in twenty years I&apos;ll be giving it a shot again. But just not now.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It always feels a little odd when a lot of people around me mourn the death of someone I know little about. It was particularly odd in the case of a writer whose novel I once bought but never managed to read. Life seems short.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How did you feel upon hearing about the death of Gabriel García Márquez? How many of his books of his have you read? Did you enjoy them? Why did you read them? Do you ever experience feeling embarrassed by not having read something that many of your friends have read? If you do, how do you deal with this?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>RIP Cheo Feliciano: wonderful singer of salsa and bolero</title><link>https://franklinchen.com/blog/2014/04/17/rip-cheo-feliciano-wonderful-singer-of-salsa-and-bolero/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/17/rip-cheo-feliciano-wonderful-singer-of-salsa-and-bolero/</guid><pubDate>Fri, 18 Apr 2014 00:45:07 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://i2.cdn.turner.com/cnn/dam/assets/140417104237-cheo-feliciano---story---restricted-story-top.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://i2.cdn.turner.com/cnn/dam/assets/140417104237-cheo-feliciano---story---restricted-story-top.jpg&quot;&amp;gt;[image: Cheo Feliciano]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I learned that &lt;a href=&quot;https://en.wikipedia.org/wiki/Cheo_Feliciano&quot;&gt;Cheo Feliciano&lt;/a&gt; just &lt;a href=&quot;https://www.cnn.com/2014/04/17/showbiz/cheo-feliciano-obit/&quot;&gt;died in a car accident at age 78&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Why I have been a fan of Cheo Feliciano&lt;/h2&gt;
&lt;p&gt;Born in Puerto Rico, he was one of my favorite singers of salsa and bolero when I was regularly doing Latin dancing and seeking out the best music out there. As a particular fan of bolero, I was drawn to his magnetic voice and style: rich, smooth, flexible. His singing always seemed so resonant and never harsh; in particular, as a learner of Spanish, I appreciated how easy it was to hear his words, because of his clear, conversational articulation even as he sang.&lt;/p&gt;
&lt;p&gt;Check him out:&lt;/p&gt;
&lt;h2&gt;Some favorite musical selections&lt;/h2&gt;
&lt;p&gt;My single favorite recording of his is of the bolero (you know how I love bolero) &quot;Delirio&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/M4Unt7OwkJc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;He was fantastic at uptempo salsa too, of course. Here is a video of him performing &quot;Busca lo Tuyo&quot;. I particularly like his &lt;em&gt;improvisation&lt;/em&gt; in salsa: he sounds so natural while inventive.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/erddzOK3Eys&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you love classic salsa and bolero, take some time out to review his old albums and remember how great he was. And remember to keep dancing to his fine music!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you feel when you learn that a favorite musician of yours has died? Do you do anything to celebrate his or her life and contribution to yours? I like to reflect on what I found so special that touched my life, and share that so that others will remember, or learn anew.&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Ten reasons my winning game turned into a loss</title><link>https://franklinchen.com/blog/2014/04/17/the-chess-improver-ten-reasons-my-winning-game-turned-into-a-loss/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/17/the-chess-improver-ten-reasons-my-winning-game-turned-into-a-loss/</guid><pubDate>Thu, 17 Apr 2014 11:07:13 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Ten reasons my winning game turned into a loss&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Recently I had one of the most embarrassing losses in my chess life. Granted, I&apos;ve had many losses, and many of them have been quite painful, but this one was particularly bad, because of many regrets about factors that &lt;em&gt;I could have controlled but didn&apos;t&lt;/em&gt;. I did not fully understand this earlier in life, but more and more I have learned that my performance in a serious chess game hinges on factors completely independent of what one might think of as the core of chess play (theoretical knowledge, tactical calculation ability). The circumstances surrounding this game have much to teach about how &lt;em&gt;not&lt;/em&gt; to go into a game. When we talk about &lt;em&gt;chess improvement&lt;/em&gt;, we must talk about the whole context of playing chess, not just the pieces and positions on the board.&lt;/p&gt;
&lt;h2&gt;Ten faulty thoughts and actions&lt;/h2&gt;
&lt;p&gt;My first mistake was that, seeing that it was finally nice outside, after work, when I was supposed to just rest, and prepare to eat dinner after my wife came home, I instead went out for my first run in several days. I returned a bit tired. I&apos;m not stupid: I know that &lt;em&gt;it is foolhardy to waste one&apos;s glucose stores shortly before a competitive chess game, because the brain needs a lot of glucose to think clearly, especially in a four-hour time-control game ending near midnight&lt;/em&gt;.
Abby was confused when she saw me finally come home from my run, because the timing messed with our dinner plan, because she hadn&apos;t known when to start cooking dinner. &lt;em&gt;Having an unexpected change in routine caused unnecessary stress for everyone.&lt;/em&gt;
We decided we had to eat leftovers from the refrigerator, but suddenly the power in our neighborhood went out. This caused a dispute in which I (starving after my run) wanted to get stuff out of the refrigerator, but she didn&apos;t want to open it. &lt;em&gt;Don&apos;t have draining arguments before a chess game&lt;/em&gt;.
By the time the power came back and I had to go off to my chess game, I had packed dinner to take with me but still not eaten. &lt;em&gt;Do not play chess hungry.&lt;/em&gt;
I arrived at the chess club and ate much of my dinner in the couple of minutes before the round began, but this is not optimal timing. &lt;em&gt;Do not eat a lot of food right before a game. You need to be thinking, not digesting.&lt;/em&gt;
I trash-talked before the game, saying, &quot;We&apos;re going to see a sacrifice in this game&quot;, because in fact, I had prepared some Black gambits for the occasion. This was possibly the single worst mistake I made that evening. &lt;em&gt;Do not trash-talk and trap yourself into some ego-driven mindset or pre-commitment.&lt;/em&gt;
As White, my opponent surprised me on move 2, playing an opening that I don&apos;t fear but which I have never faced as Black and did not expect. I ended up playing slightly more passively than I normally would have. &lt;em&gt;Do not get &quot;surprised&quot; by coming to a game with too many expectations about how a familiar opponent will play. Be ready for anything.&lt;/em&gt;
In a good position, I moved quickly and recklessly with intention of attack, even though in my last three tournament games, I played deliberately and solidly. &lt;em&gt;Do not play a certain way just to back up your pre-game trash-talking. Play the position as it is.&lt;/em&gt;
I saw an opportunity for a sacrifice and instead of calculating it all out, just immediately played it. It was unsound, but my opponent did not find the refutation, and I suddenly had an easily winning position. But then I went crazy, unsoundly aiming for a quick win. He erred again, and I had a win in sight. But then, as I concluded that in a couple of moves I might Queen my a2-Pawn, I got up and walked to the corner of the chess club to open another chess set and return with a Black Queen in hand. &lt;em&gt;Do not get up and distract yourself at a critical moment in a game. Do not engage in nonverbal trash-talking by getting a Queen before it is your move and you have actually decided to playing the Pawn promotion.&lt;/em&gt;
In a winning position with beautiful checkmates in forced variations, I completely stopped thinking and played one bad move after another, my attack was stopped, and one piece down for nothing, I lost the game. &lt;em&gt;Continue careful calculation, even in a position that looks great, especially if you have sacrificed something and need to make it count.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are certain things I did wrong that I confessed here that I plan to &lt;em&gt;never&lt;/em&gt; do again. I have learned a truly expensive lesson. It is possible that none of you have done as many immature, stupid things as I just did, but if any of what I have confessed rings true to you and causes you to reconsider your similar behavior, I hope my loss has not been in vain.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th William M. Byland Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.04.01&quot;]
[Round &quot;4&quot;]
[White &quot;Kevin Carl&quot;]
[Black &quot;Franklin Chen&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2161&quot;]
[ECO &quot;D00&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2125&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. Bg5 d5 3. Bxf6 exf6 4. e3 Be6 5. Bd3 Bd6 { Solid but not most aggressive.} ( 5… c5 { Accepting an isolated d-Pawn for open lines and development was reasonable.} 6. dxc5 Bxc5 ) 6. Nd2 O-O 7. Qh5 $2 { Clearly premature, but psychologically distracting.} 7… g6 8. Qh6 Re8 $6 { On the passive side.} ( 8… Nc6 { Normal quick development was strong.} ) 9. Ne2 Bf8 $2 { Again, needlessly defensive.} 10. Qf4 f5 $6 ( 10… c5 { We will continue to see that striking against White&apos;s center was good.} ) 11. h4 h5 $2 { Completely unnecessary, weakening the King side. Still, Black has a better position. There is really no way White can attack Black&apos;s King.} ( 11… Nd7 ) 12. Qf3 Nd7 ( 12… c5 ) 13. Nf4 Nf6 ( 13… c5 ) 14. O-O-O a5 $5 ( 14… c6 { More solid, maintaining an advantage while preventing White&apos;s light-squared Bishop from getting to b5.} ) 15. Qe2 $2 a4 16. a3 c5 $5 { Late but still decent.} ( 16… c6 ) 17. dxc5 Bxc5 $6 ( 17… Bd7 ) 18. Nf3 $2 ( 18. Bb5 { The best way for White to hold.} ) 18… Qd6 $5 { Played with the risky idea of sacrificing the Bishop.} ( 18… Qb6 { Black looks to have good attacking chances, building up slowly.} ) 19. Qd2 $2 Bxa3 $5 { Taking a risk, going for a sacrifice.} ( 19… Rec8 { Black could have quietly prepared for a solid attack.} ) 20. Nd4 $4 { Loses.} ( 20. Qc3 $1 { The refutation of the attempted sacrifice.} 20… Ng4 21. Qxa3 Qxa3 22. bxa3 Nxf2 23. Nd4 { White comes out of all this with an advantage, because of the strong Knights.} ) ( 20. bxa3 $4 Qxa3+ 21. Kb1 d4 { Black wins immediately. I was seduced by seeing this variation.} ) 20… Bb4 $6 ( 20… Bc5 { A simple retreat was enough to keep a winning advantage.} 21. Ndxe6 fxe6 22. Nxg6 a3 { White&apos;s King is helpless.} ) 21. c3 a3 $6 { Still fantasizing about a quick win.} ( 21… Ba5 ) 22. cxb4 $4 ( 22. Kb1 { Was necessary, although Black still has a large advantage.} 22… Bc5 ) 22… a2 $1 { A good move, but my mind became disordered and excited, and I made the mistake of getting up and fetching a Queen from a spare set in the room.} 23. Kc2 Rec8+ 24. Kb3 $201 { With one move, Black could have forced resignation.} 24… Bd7 $4 { Having distracted myself, I totally stopped calculations.} ( 24… Ne4 { The correct move order was to force White&apos;s Queen away.} 25. Qe2 ( 25. Qe1 a1=Q 26. Rxa1 Rxa1 27. Qxa1 $4 Nd2+ { A beautiful mate is coming.} 28. Ka4 Ra8+ 29. Kb5 Bd7+ ) 25… Bd7 { And now threatening Ba4+.} 26. b5 Rc3+ $1 { Leading to a nice mate.} 27. bxc3 Qa3+ 28. Kc2 Qxc3# { This would have been a brilliant mate.} ) 25. b5 { At this point, I got discouraged and played quickly. I should have tried to find a strong continuation.} 25… Ng4 $4 { The game is effectively over after this blunder, taking the Black Knight away from any action.} ( 25… Ne4 $1 26. Bxe4 dxe4 27. Qb4 Qe5 { Black still has a bind on the position, and has opened the position to allow the light-squared Bishop to participate in the attack.} 28. Ra1 Be8 29. Rxa2 f6 { With this maneuver, Black is still winning.} 30. Ra4 Bf7+ 31. Nde6 { Giving back the piece.} ( 31. Ka3 $2 Rxa4+ 32. Qxa4 Qe8 33. b3 Ra8 34. Qxa8 Qxa8+ 35. Kb2 { Perhaps White can hold this ending because of the two strong Knights.} ) 31… Bxe6+ 32. Nxe6 Qxe6+ 33. Ka3 Rxa4+ 34. Qxa4 { Material is even, but White&apos;s King is unsafe.} 34… Qd6+ 35. Ka2 Qd5+ 36. Kb1 Qd2 { It looks like White can defend a draw.} ) 26. Ra1 Ne5 27. Qb4 Qb6 28. Rxa2 Rxa2 29. Kxa2 Rc5 30. Kb1 Nxd3 31. Nxd3 Rc4 32. Qb3 Qa5 33. Rc1 Ra4 34. Rc3 Ra1+ 35. Kc2 Rf1 36. Qa3 Qb6 37. Kd2 Kg7 38. Ke2 Rg1 39. Qe7 Bxb5 40. Nxb5 Qxb5 41. Qe5+ Kh7 42. Rc8 f6 43. Qe7+ Kh6 44. Rh8# 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Charlie Chaplin, a daughter, a granddaughter: changing my perception of &quot;Smile&quot;</title><link>https://franklinchen.com/blog/2014/04/16/charlie-chaplin/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/16/charlie-chaplin/</guid><pubDate>Thu, 17 Apr 2014 02:01:39 GMT</pubDate><content:encoded>&lt;p&gt;So today is the 125th birthday of &lt;a href=&quot;https://en.wikipedia.org/wiki/Charlie_Chaplin&quot;&gt;Charlie Chaplin&lt;/a&gt;. I could assume that he needs no introduction, being one of the famous pioneers of film, but I have to confess that I have never myself actually watched the entirety of any of his films. I went through much of my life not knowing much about him at all, in fact, other than caricatures of his famous character &quot;the little tramp&quot;, which to me just seemed dated and weird, and therefore not of interest. So I never looked further into his films or his life: it was all just ancient history to me.&lt;/p&gt;
&lt;p&gt;But two years ago, by chance, I learned more about him.&lt;/p&gt;
&lt;h2&gt;The song &quot;Smile&quot;&lt;/h2&gt;
&lt;p&gt;Two years ago, I discovered that the music for the famous song &lt;a href=&quot;https://en.wikipedia.org/wiki/Smile_%28Charlie_Chaplin_song%29&quot;&gt;&quot;Smile&quot;&lt;/a&gt; was actually composed by Chaplin. This intrigued me, so I learned a bit more about him.&lt;/p&gt;
&lt;p&gt;By the way, here is a video clip from his 1936 film &lt;a href=&quot;https://en.wikipedia.org/wiki/Modern_Times_%28film%29&quot;&gt;&quot;Modern Times&quot;&lt;/a&gt; featuring the musical theme that became the song &quot;Smile&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Ps6ck1ejoAw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Family&lt;/h2&gt;
&lt;p&gt;One thing I learned is that Chaplin had a very complicated family life, with four marriages, the last of whom was 36 years younger than him (and eventually had eight children with him). One of these children was &lt;a href=&quot;https://en.wikipedia.org/wiki/Geraldine_Chaplin&quot;&gt;Geraldine Chaplin&lt;/a&gt;. Her name rang a bell, because I vaguely remembered seeing her in the 1973 film &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Three_Musketeers_%281973_film%29&quot;&gt;&quot;The Three Musketeers&quot;&lt;/a&gt; way back!&lt;/p&gt;
&lt;p&gt;It turns out that not only did his daughter Geraldine also take up acting, but her daughter, &lt;a href=&quot;https://en.wikipedia.org/wiki/Oona_Castilla_Chaplin&quot;&gt;Oona Chaplin&lt;/a&gt; also did. Indeed, I found all this out by accident: two years ago, I had been looking for a karaoke version of &quot;Smile&quot; to sing along to, when by accident I found a video of Geraldine and Oona Chaplin singing &quot;Smile&quot; together! It was fascinating watching this performance of Charlie Chaplin&apos;s music by a daughter and granddaughter of his:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PSPP6EM_CcY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Biography&lt;/h2&gt;
&lt;p&gt;A couple of days ago, I saw this interesting &lt;a href=&quot;https://web.archive.org/web/20210724102135/https://www.spectator.co.uk/books/9179261/charlie-chaplin-by-peter-ackroyd-review/&quot;&gt;review of a biography of Charlie Chaplin&lt;/a&gt; calling him a &quot;monster&quot;. Of course, we know that an actor&apos;s character&apos;s persona may not match real life. Such is the complexity of humanity.&lt;/p&gt;
&lt;h2&gt;Other performances of &quot;Smile&quot;&lt;/h2&gt;
&lt;p&gt;There have been many famous classic performances of &quot;Smile&quot; since it became a song with lyrics in 1954. I&apos;ll share here one that is kind of creepy, yet compelling, maybe appropriately so given what we know of Chaplin&apos;s complicated life. Here&apos;s a video of Judy Garland singing the song. I find it utterly over the top but hard to resist; she gives the song a crazed intensity and sadness rather than a comfortable feel-good reading. Of course, her personal life was also a mess.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/GAQfwpEDdOw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;How I perceive &quot;Smile&quot; now&lt;/h2&gt;
&lt;p&gt;Before I knew about Chaplin&apos;s satirical film &quot;Modern Times&quot; and the man himself, I suppose I considered &quot;Smile&quot; something of a wishful, sentimental song, although with a lovely melody and seductive harmonic progression, but now it&apos;s completely impossible for me to think of this song without a sense of irony.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How about you? How have you perceived the song up till now? Did you know the back stories? How do you perceive the song now, after reading this post? Can you hear it or sing it again the way you did before?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>A note on running in warm weather</title><link>https://franklinchen.com/blog/2014/04/13/a-note-on-running-in-warm-weather/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/13/a-note-on-running-in-warm-weather/</guid><pubDate>Mon, 14 Apr 2014 01:43:14 GMT</pubDate><content:encoded>&lt;p&gt;I haven&apos;t been running much at all in recent months; actually, I barely ran all winter, in contrast to last winter.&lt;/p&gt;
&lt;p&gt;Since it&apos;s warmer now, I no longer have an excuse. I went out for a short run in Frick Park late in the afternoon, when it was warm and sunny, probably around 80 degrees F.&lt;/p&gt;
&lt;p&gt;I had a really tough time out there, going less than three miles before I turned around and started walking home. I know from prior experience that after not running much, I have to ramp up slowly, but in this case, the suddenly warm weather (after months of a seemingly endless winter) took a toll on me. So I&apos;d like to remind anyone else coming out of &quot;hibernation&quot; not to feel discouraged if feeling unfit: just do a little bit of running at a time, &lt;em&gt;hydrate&lt;/em&gt; (I was grateful that the water fountains in the park are operational), and &lt;em&gt;be patient&lt;/em&gt;! If I didn&apos;t know any better, I would be feeling quite discouraged after my excursion today.&lt;/p&gt;
&lt;p&gt;I treated myself to some cookies after my run. These are cookies I saved from an event at work last week, specifically for only after hiking or running. &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;I would not eat&lt;/a&gt; these unremarkable cookies otherwise!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-04-13/cookie1.jpg&quot; alt=&quot;Cookie 1&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2014-04-13/cookie2.jpg&quot; alt=&quot;Cookie 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2014-04-13/franklin.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Hiking again in Boyce-Mayview Park three months later</title><link>https://franklinchen.com/blog/2014/04/12/hiking-again-in-boyce-mayview-park-three-months-later/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/12/hiking-again-in-boyce-mayview-park-three-months-later/</guid><pubDate>Sun, 13 Apr 2014 00:58:26 GMT</pubDate><content:encoded>&lt;p&gt;For the New Year in January, &lt;a href=&quot;/blog/2014/01/01/happy-new-year-with-a-boyce-mayview-park-hike-wetlands/&quot;&gt;Abby and I went on a brisk winter hike through the Pittsburgh hiking meetup group in Boyce-Mayview Park&lt;/a&gt;, which was new to us at the time. We enjoyed the experience so much that we knew that we were going to return in the spring.&lt;/p&gt;
&lt;p&gt;So on a warm and sunny afternoon (temperature rising beyond 70 degrees F), we went (by ourselves) to Boyce-Mayview Park to do some hiking. We ended up doing maybe eight miles. Obviously, things just looked different without the snow and ice, and with some vegetation and more active life forms.&lt;/p&gt;
&lt;h2&gt;Parking&lt;/h2&gt;
&lt;p&gt;(You can download a detailed map of the park &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.twpusc.org/magazine/pdf/boyce-mayview-park_map.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.twpusc.org/magazine/pdf/boyce-mayview-park_map.pdf&quot;&amp;gt;here&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;We originally headed to parking at the trail head right next to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ardolinopizza.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ardolinopizza.com/&quot;&amp;gt;Ardolino&apos;s Pizza&amp;lt;/span&amp;gt;, off Boyce Road, but the small parking lot was full, not unexpectedly, so we drove all the way around to the &lt;a href=&quot;https://www.twpusc.org/crc/crc-home&quot;&gt;Boyce-Mayview community and recreation center&lt;/a&gt; entrance from Mayview Road, to park in a lot further in near the Outdoor Classroom, use the restroom building next to it, and enter the trail systems from there.&lt;/p&gt;
&lt;h2&gt;Our hike&lt;/h2&gt;
&lt;p&gt;We encountered a bit of mud on the trails that we took, but nothing too unpleasant. We both wore our Vibram FiveFingers KSO Trek shoes.&lt;/p&gt;
&lt;p&gt;We just basically wandered around, without any map or GPS, knowing that as long as we kept Chartiers Creek in sight, we could get back to where we started. Also, with all the many elevation changes, we could often see the community and recreation center up high. So we did not have to worry about getting lost.&lt;/p&gt;
&lt;p&gt;I very much enjoy hiking in the vicinity of water, seeing it and hearing it, so we spent a good deal time on the trails near Chartiers Creek, just following its curves.&lt;/p&gt;
&lt;p&gt;At one point in the wetlands we got excited and thought we saw an island and so we went there and hiked a trail there all the way till we realized it wasn&apos;t really an island after all. It was fun being surrounded by water on both sides on a strip of land, but also that part of the hike involved a lot of bugs happy to try to bite us!&lt;/p&gt;
&lt;p&gt;After about two hours, we eventually ended up at the Boyce Road trail head and I was really hungry and peeked into Ardolino&apos;s, but Abby didn&apos;t think it was a good idea for us to order pizza (we had packed our own lunch anyway), so we turned around and hiked back up, and stopped somewhere on a trail to sit and eat lunch.&lt;/p&gt;
&lt;p&gt;Then we made our way back to our start. At one point it wasn&apos;t clear how to get to a trail connecting where we were, high up, back to the trail next to Chartiers Creek, so we just took a &quot;shortcut&quot; (hiking poles are very helpful for the Boyce-Mayview Park in general), scrambling down to that trail.&lt;/p&gt;
&lt;h2&gt;A few photos of stuff we saw&lt;/h2&gt;
&lt;p&gt;View from where we parked:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/parking.jpg&quot; alt=&quot;Parking&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Outdoor Classroom and the restroom building:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/outdoor-classroom.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby spotting an interesting bird:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/critter.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A view of Chartiers Creek:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/chartiers-creek.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A little garter snake crossed our path. You might be able spot it in this photo. At my request, Abby did &lt;em&gt;not&lt;/em&gt; pick it up to show to me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/garter-snake.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A sample trail winding around a hill:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/hill-trail.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Rapids! We did see someone in a canoe further upstream.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/rapids.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Flowers (sorry, I know very little about identifying flowers):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/flowers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Crossing over to the &quot;island&quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/island.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We saw woodpeckers, geese, vultures, groundhogs, and other critters during the hike.&lt;/p&gt;
&lt;p&gt;Without leaves on trees obstructing the view, it is fairly easy to see where one is, as far as elevation and landmarks (we knew we had to get back down to the creek level and then back upward to where we parked):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-04-12/elevation.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was great to return to Boyce-Mayview Park in the spring. I expect that we&apos;ll go back in a couple more weeks, as more vegetation grows and even more birds hang out. I highly recommend checking out this park, located in Upper St. Clair just half an hour drive from the city of Pittsburgh.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Development: doing it and disrupting it are sides of the same coin</title><link>https://franklinchen.com/blog/2014/04/10/the-chess-improver-development-doing-it-and-disrupting-it-are-sides-of-the-same-coin/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/10/the-chess-improver-development-doing-it-and-disrupting-it-are-sides-of-the-same-coin/</guid><pubDate>Thu, 10 Apr 2014 11:44:28 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Development: doing it and disrupting it are sides of the same coin&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I&apos;ve written quite a few posts on The Chess Improver that revolve around the importance of piece development in chess. Some of them have focused on developing one&apos;s own pieces, while some have focused on disrupting the opponent&apos;s development. In this post, I present a game in which &lt;em&gt;both&lt;/em&gt; were pursued simultaneously and consistently, with good effect.&lt;/p&gt;
&lt;p&gt;After move 4 of a slow Slav Defense, both White and Black had 2 minor pieces developed, with a fairly balanced position. Then as White, I decided to move an already developed Knight to try to gain the Bishop pair. Black allowed me to not only gain it but also to get a better Pawn structure.&lt;/p&gt;
&lt;p&gt;On move 7, to my surprise, Black moved an already developed Knight, without any particular threat, rather than continue own development. Now I had a choice to make: either continue developing normally, or take advantage of the temporary situation to try to disrupt Black&apos;s continuing development. It turned out that the Knight move undefended Black&apos;s d5 Pawn and also did nothing to protect the b7 Pawn. After some calculation, I felt it justified to &lt;em&gt;develop my Queen&lt;/em&gt; to b3, striking at both the b7 and d5 Pawn. This is a thematic idea in many Slav Defense lines where Black&apos;s movement of the light-squared Bishop from c8 presents tactical opportunities for White. (Note that I count the Queen move as &quot;development&quot; here, because the Queen plays a great role on b3 and also is not in danger of being chased away.)&lt;/p&gt;
&lt;h2&gt;Is Black positionally lost at move 8?&lt;/h2&gt;
&lt;p&gt;At this point, on move 8, Black should have likewise developed the Queen, as a defensive move, but instead made a weakening Pawn move, b6, that I think already results in a &lt;em&gt;positionally lost&lt;/em&gt; game! Look at the tactically forced position after White&apos;s move 12.&lt;/p&gt;
&lt;h3&gt;Number of already developed pieces&lt;/h3&gt;
&lt;p&gt;White has effectively 3 developed pieces: Queen, light-squared Bishop (both attacking f7), and castled Rook on f1. I count the Rook as developed because after White plays f3, opening the f-file on the next move, it will already be attacking f7.
Black has only the Queen developed, and still cannot castle. That&apos;s effectively two pieces behind in development.&lt;/p&gt;
&lt;h3&gt;Future development possibilities&lt;/h3&gt;
&lt;p&gt;Although White&apos;s dark-squared Bishop is still not developed, and is somewhat blocked in by the Pawn on e3, actually Bd2 is already possible, after which White&apos;s remaining Rook can be developed.
Black will not be developing the Queen Knight anytime soon. It cannot even move to any square right now except to a6, but that just drops the piece to White&apos;s Bishop attacking the square. We see why b6 was such a terrible move, weakening the light squares in the absence of Black&apos;s light-squared Bishop. Also, Black will have to take probably four moves just to maneuver something in order to be able to develop the Knight on c6 or d7 without immediately losing material. For example, playing c5 would result in immediate loss on the light squares of Black&apos;s Queen, Rook, and/or Knight because of Bb5, and where can the Queen go in order to allow Nd7 without blocking Black&apos;s own undeveloped Bishop or dropping the f7 Pawn?&lt;/p&gt;
&lt;p&gt;So if you do the arithmetic, you can see that in effect, Black is something like six moves behind in development. Intuitively, in an open position (as will be the case once White plays f3), it would take a miracle for Black to survive, being so far behind: one way or another, it should be possible for White to aim pieces and Pawns at Black&apos;s position to tactically force some kind of decisive win of material during an attack.&lt;/p&gt;
&lt;h2&gt;The rest of the game&lt;/h2&gt;
&lt;p&gt;After move 18, let&apos;s take stock of the situation. Black has managed to develop a Bishop and castle in the last six moves. White has the half-open f-file for the Rook, and acquired a central Pawn mass and has opened up the way for the dark-squared Bishop to come out at will. Black&apos;s Knight is still not developed, but now hopes to get to a6 or d7, which are free, but the Queen side Pawns have been weakened even further with b5 (which was however practically necessary in order to get White&apos;s Bishop off the f7 target).&lt;/p&gt;
&lt;p&gt;It turns out that there was already a forced win here for White, without needing to develop the Queen Rook or Bishop. e6 would have won already, by winning the f7 Pawn for free. However, probably because i was in a state of mind of &quot;winning by developing&quot;, I chose not to immediately grab material, knowing that Black was lost already and I could take my time. So I just developed my dark-squared Bishop to f4, restricting Black from developing the Knight. After the Queen moved, I again just developed, bringing my remaining undeveloped piece, the Queen Rook, to d1, defending my d4 Pawn and &quot;preparing&quot; d5 (which was already a winning move even without the preparation).&lt;/p&gt;
&lt;p&gt;On move 21, let&apos;s do the arithmetic again: White has the Queen, two Rooks, and two Bishops developed (5 pieces), as well as the Pawn front of d4 and e6 ready to go, and Black has only the Queen developed; in fact, the Bishop that retreated to d8 cannot really be called &quot;developed&quot;, although there looks like some kind of swindling attempt to get to b6 to bother White&apos;s King.&lt;/p&gt;
&lt;p&gt;There was no longer any reason to delay, so I played d5 and e6. Black lashed out for activity (note that with the White Pawn about to come to e6, Black could only try to develop the Knight to a6 if at all, but then at the cost of losing vast amounts of material thanks to the threats on f7 and c6 and b5). I chose a simple solution based on Black&apos;s weaknesses on the dark squares, threatening simultaneously to win either a piece or the exchange, and then with a continuing raging attack while at it, and Black shortly resigned.&lt;/p&gt;
&lt;p&gt;I thought this admittedly lopsided game was a good example of a successful thought process based on evaluating both how quickly one can develop one&apos;s pieces and how restricting an opponent&apos;s development translates effectively to having more time for one&apos;s own development.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th William M. Byland Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2014.03.25&quot;]
[Round &quot;3&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Edward Dean&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2136&quot;]
[ECO &quot;D11&quot;]
[TimeControl &quot;G/120d5&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nbd2 Bf5 5. Nh4 e6 $5 { Not an unknown idea in the Slav: Black gives up the Bishop pair but gets to control the e4 square.} 6. Nxf5 exf5 7. e3 Ne4 $2 { Falling behind in development, for no gain.} 8. Qb3 { Trying to disrupt Black&apos;s normal development.} 8… b6 $4 { Black is really positionally lost already after this move.} ( 8… Qd7 9. Bd3 { White develops normally with an advantage, but Black is solid.} ) ( 8… Qb6 9. cxd5 Qxb3 10. Nxb3 Bb4+ 11. Ke2 cxd5 12. f3 { White has the Bishop pair and better Pawn structure and can look forward to a comfortable Queenless middlegame.} ) 9. cxd5 Qxd5 { Forced.} ( 9… cxd5 $4 10. Bb5+ { White wins.} ) 10. Bc4 Qd7 11. Nxe4 { Black&apos;s Knight has moved around just to be traded off.} 11… fxe4 12. O-O { White has two pieces developed, aimed at Black&apos;s King, is castled, and is about to open the f-file. Black only has a Queen developed, and is nowhere near castling, and the remaining Knight will not be developing anytime soon.} 12… Bd6 13. f3 ( 13. Qc2 { Even stronger.} ) 13… b5 14. Be2 Qc7 $2 ( 14… exf3 15. Rxf3 O-O 16. a4 { Black is positionally lost, unable to complete development of the Queen side, but at least this is better than what happened in the game.} ) 15. fxe4 $1 { Now White has a Pawn center mass.} ( 15. h3 { Protecting the h-Pawn was also possible but I felt that grabbing the Pawn center was stronger.} ) 15… Bxh2+ 16. Kh1 O-O $4 ( 16… Bg3 { Getting the Bishop back to safety immediately at least would have allowed Black&apos;s Queen to make it to e7 and Knight to d7.} 17. e5 Qe7 18. Bg4 ) 17. e5 Bg3 18. e4 Bh4 19. Bf4 ( 19. e6 $1 { Won immediately, but I used a slow plan of just developing to win.} 19… Qe7 20. exf7+ Kh8 { White is just a solid Pawn ahead.} ( 20… Rxf7 $4 21. Bh5 g6 22. Bg4 { And Black will lose the pinned Rook on f7 after Be6.} ) ) 19… Qd7 20. Rad1 { Again, simple development.} ( 20. d5 { Immediate Pawn action was also winning.} ) ( 20. a4 { Another win, ripping apart Black&apos;s Queen side.} ) ( 20. Qh3 { Another win, just trading the Queens into an ending. White&apos;s center Pawns are unstoppable.} ) 20… Bd8 { Loses, but there are no good moves for Black at all.} ( 20… Na6 { Trying to develop the Knight just leaves everything hanging.} 21. d5 { Black will start losing material on the Queen side.} ) 21. d5 { White has all kinds of threats, including e6 and dxc6.} 21… g5 { Last-ditch effort to gain some kind of play.} 22. e6 { Attacking the Queen and the f7 Pawn as well as opening the way for the dark-squared Bishop.} 22… Qe7 ( 22… Qe8 23. Bh5 { White will come in on f7, game over.} ) ( 22… Qb7 23. Bd6 { Black will lose the Rook on f8.} ) 23. Qg3 { Good enough.} ( 23. exf7+ { Computer loves this win.} 23… Rxf7 24. Bxb8 ) 23… cxd5 24. exd5 f5 25. Bd6 { Good enough to force resignation. Black will lose the exchange will White also continues to attack and will win more material. Black&apos;s Queen side will still not develop!} ( 25. Bxb8 { Also wins, but why bother with weird complications?} 25… Rxb8 26. Qxb8 { Black is a Rook down, but cannot mate White&apos;s King.} ) 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>A few sights from the Iron Grate Trail in Frick Park</title><link>https://franklinchen.com/blog/2014/04/06/a-few-sights-from-the-iron-grate-trail-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/06/a-few-sights-from-the-iron-grate-trail-in-frick-park/</guid><pubDate>Sun, 06 Apr 2014 22:41:58 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I did a leisurely hike in Frick Park near home, exploring a trail that I don&apos;t usually run on, the Iron Grate Trail, because it is a &lt;a href=&quot;https://www.mtbproject.com/trail/3003110&quot;&gt;favorite trail for mountain bikers&lt;/a&gt;, and therefore tends to have muddy ruts that are not so pleasant for pedestrians, and also someone on a mountain bike could always come out of nowhere. But we were careful to keep our eyes and ears open, and share the trail, yielding to mountain bikers when perceiving them coming along.&lt;/p&gt;
&lt;p&gt;An advantage of occasionally checking out these trails is simply that they are quieter, in terms of fewer pedestrians and dogs, and also, you get to see parts of the park that you wouldn&apos;t otherwise see.&lt;/p&gt;
&lt;p&gt;The Iron Grate Trail briefly became infamous in the local news a year ago because of reports of a &lt;a href=&quot;https://foresthills-regentsquare.patch.com/groups/police-and-fire/p/frick-park-visitors-on-edge-after-reports-of-violence&quot;&gt;&quot;hatchet-wielding&quot; person&lt;/a&gt; attacking someone on the trail, but I think that was an isolated incident.&lt;/p&gt;
&lt;h2&gt;Photo&lt;/h2&gt;
&lt;p&gt;Here&apos;s an amusing photo I took of Abby finding a hiding place along the trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-hiding.jpg&quot; alt=&quot;Abby hiding in a tree&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I didn&apos;t take any photos of the new-looking signs reading &quot;Iron Grate Trail&quot; that we saw, but I just found out that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pittsburghparks.org/PTAGworkday04052014&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pittsburghparks.org/PTAGworkday04052014&quot;&amp;gt;they were put up just days ago thanks to volunteers for the Pittsburgh Trail Advocacy Group&amp;lt;/span&amp;gt;. We did notice that the trail showed other evidence of having been maintained recently. Very nice work and thank you!&lt;/p&gt;
&lt;p&gt;We also saw some chickens running around in someone&apos;s back yard, from a section of the trail behind a residential area.&lt;/p&gt;
&lt;h2&gt;Video&lt;/h2&gt;
&lt;p&gt;Here is a random video I found of someone riding into and along the Iron Grate Trail:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/x-FxY3BoHag&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Review of edX 8.01x: Jazz Appreciation</title><link>https://franklinchen.com/blog/2014/04/04/review-of-edx-8-dot-01x-jazz-appreciation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/04/04/review-of-edx-8-dot-01x-jazz-appreciation/</guid><pubDate>Sat, 05 Apr 2014 02:13:47 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.edx.org/sites/default/files/course/image/banner/jazz_608x211.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.edx.org/sites/default/files/course/image/banner/jazz_608x211.jpg&quot;&amp;gt;[image: Course banner]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;By coincidence, it is now &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.smithsonianjazz.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.smithsonianjazz.org/&quot;&amp;gt;Jazz Appreciation Month&amp;lt;/span&amp;gt;, which is observed every April. So it is fitting that I just completed the free MOOC from &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.edx.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.edx.org/&quot;&amp;gt;edX&amp;lt;/span&amp;gt; on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.edx.org/course/utaustinx/utaustinx-ut-8-01x-jazz-appreciation-1149&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.edx.org/course/utaustinx/utaustinx-ut-8-01x-jazz-appreciation-1149&quot;&amp;gt;&quot;Jazz Appreciation&quot;, UT.8.01X&amp;lt;/span&amp;gt;, through UT Austin, taught by Jeffrey Hellmer.&lt;/p&gt;
&lt;p&gt;Intro video:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/dp9I1cM0fGA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;There was good and bad in this course.&lt;/p&gt;
&lt;h2&gt;A survey&lt;/h2&gt;
&lt;p&gt;This course was a low-stress way to get a little survey of jazz. I&apos;ve never formally studied jazz nor systematically read up on its history, so all that I know comes purely from random personal listening, more than anything else. I don&apos;t consider myself a &quot;true&quot; jazz aficionado; I know a whole lot more about classical music.&lt;/p&gt;
&lt;p&gt;I thought it was a good idea to start with 1950s hard bop rather than go in chronological order through history, and then work backwards and forwards from there, because of the accessibility and typicality of the jazz from this era.&lt;/p&gt;
&lt;p&gt;I liked how the instructor illustrated concepts at the piano, and brought up issues of artistic differences without judgment and getting into controversies that still exist today. He basically said, you don&apos;t have to like everything you hear in this course, but know how to identify and compare the stylistic features and goals. There&apos;s a reason musicians chose to go in the directions they did.&lt;/p&gt;
&lt;h2&gt;Cerego quizzes&lt;/h2&gt;
&lt;p&gt;The Cerego quiz platform was the most annoying thing about the course. I thought it was counterproductive busywork. In fact, I can&apos;t believe I tolerated it just to complete the course; it was a waste of time to have done so.&lt;/p&gt;
&lt;p&gt;You had to demonstrate &quot;mastery&quot; of isolated facts, through identifying musical snippets, classifying the eras of musicians, memorizing what instruments they played, etc. I can see some point in some mastery of some facts, but the sheer repetition and shallowness of the concept bothered me. It got to the point where I made a game of identifying a musical selection based on hearing the first quarter second of its audio.&lt;/p&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;p&gt;Overall, I didn&apos;t learn that much from the course, because I&apos;ve already done my share of listening to jazz. I filled in a few gaps, but not in any deep way. Unfortunately, a course like this must be shallow. You might learn a few names, hear some musical snippets, and then it&apos;s purely up to you to go investigate more if you want to.&lt;/p&gt;
&lt;h2&gt;The drawback of a survey course&lt;/h2&gt;
&lt;p&gt;I&apos;m not sure whether to recommend a course like this if you&apos;re interested in learning more about jazz. I believe it may be more enjoyable and instructive to simply pick a few favorite artists and listen deeply. A shallow survey simply cannot do much. I feel this way about survey courses on any subject, whether ballroom dancing, programming languages, or cooking. It&apos;s best to just go deep, and then later fill in gaps.&lt;/p&gt;
&lt;h2&gt;My followup&lt;/h2&gt;
&lt;p&gt;Actually, one thing I did do as a result of this course was that the instructor mentioned resources such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://tedgioia.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://tedgioia.com/&quot;&amp;gt;Ted Gioia&amp;lt;/span&amp;gt;&apos;s writings on jazz, and so I went and read his book from 1988, &lt;a href=&quot;https://web.archive.org/web/20230930165227/http://tedgioia.com/TheImperfectArt.html&quot;&gt;&quot;The Imperfect Art&quot;&lt;/a&gt;. I loved it, and it clarified for me some things I had been thinking about regarding the nature of jazz. I may write about this later.&lt;/p&gt;
&lt;p&gt;I don&apos;t actually read much music criticism any more, but if you want to read about jazz, Ted Gioia is definitely one guy to read. For example, check out his recent article &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thedailybeast.com/articles/2014/03/18/music-criticism-has-degenerated-into-lifestyle-reporting.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thedailybeast.com/articles/2014/03/18/music-criticism-has-degenerated-into-lifestyle-reporting.html&quot;&amp;gt;&quot;Music criticism has degenerated into lifestyle reporting&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
</content:encoded></item><item><title>My third year of celebrating Johann Sebastian Bach&apos;s birthday: who was this guy anyway?</title><link>https://franklinchen.com/blog/2014/03/31/my-third-year-of-celebrating-johann-sebastian-bachs-birthday-who-was-this-guy-anyway/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/31/my-third-year-of-celebrating-johann-sebastian-bachs-birthday-who-was-this-guy-anyway/</guid><pubDate>Tue, 01 Apr 2014 01:23:31 GMT</pubDate><content:encoded>&lt;p&gt;This is my third year of celebrating the birthday of Johann Sebastian Bach. I did this &lt;a href=&quot;/blog/2012/03/21/flute-update-celebrating-bachs-birthday/&quot;&gt;in 2012&lt;/a&gt; and &lt;a href=&quot;/blog/2013/03/21/my-second-year-of-celebrating-johann-sebastian-bachs-birthday/&quot;&gt;in 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first year, I consciously chose to play some of his music rather than read about it (or about his life). The second year, I played some more of his music, on flute.&lt;/p&gt;
&lt;p&gt;This year, I did something different.&lt;/p&gt;
&lt;p&gt;First of all, I learned that I had gotten his birthday &quot;wrong&quot; in the past two years! This year I decided to celebrate the actual birthday (in terms of passing of time) rather than his birth date (which was March 21 according to the old Julian calendar). A minor detail, but symbolic of my intention.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/bach-gardiner.jpg&quot; alt=&quot;Bobblehead and Gardiner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This photo is of &lt;a href=&quot;/blog/2012/09/20/my-first-bobblehead-doll-guess-who/&quot;&gt;my Bach bobblehead&lt;/a&gt; next to a new book about Bach by John Eliot Gardiner that I just got out of the Carnegie Library today; I had decided that for this year, I would learn more about Bach, the man.&lt;/p&gt;
&lt;h2&gt;A brand new book about Johann Sebastian Bach&lt;/h2&gt;
&lt;p&gt;A couple of months ago, I came across an interview &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2013/10/25/240780499/bach-unwigged-the-man-behind-the-music&quot;&gt;&quot;Bach unwigged: the man behind the music&quot;&lt;/a&gt; with &lt;a href=&quot;https://en.wikipedia.org/wiki/John_Eliot_Gardiner&quot;&gt;John Eliot Gardiner&lt;/a&gt;, who had finally come out with his long-awaited book about Johann Sebastian Bach, &quot;Bach: Music in the Castle of Heaven&quot;.&lt;/p&gt;
&lt;p&gt;(Gardiner has been one of my favorite conductors for a quarter of a century; some of the very first CDs I bought in the late 1980s and early 1990s were of his recordings of Mozart&apos;s music with the English Baroque Soloists; I still have them.)&lt;/p&gt;
&lt;p&gt;I learned that Gardiner tried to get inside the mind of Bach, through his music as well as texts, exploring the possible contradictions within them, and what that might mean about Bach&apos;s inner thoughts and feelings about things. Obviously, this is a somewhat subjective exercise, but definitely an intriguing one. Also, Gardiner examined facts about Bach&apos;s actual life, including arguments and disputes with authorities, and his basically crazy busy existence in all his professional and personal roles.&lt;/p&gt;
&lt;p&gt;When I saw that interview transcript, I was a little curious, but not enough to rush out and get the book. But then I kept on seeing links to reviews of the book, and most recently, last month, after reading &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nybooks.com/articles/archives/2014/feb/20/why-bach-moves-us/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nybooks.com/articles/archives/2014/feb/20/why-bach-moves-us/&quot;&amp;gt;this one&amp;lt;/span&amp;gt;, I thought, hmm, maybe sensationalist, but maybe worth checking out: Bach as &quot;&lt;em&gt;reformed teenage thug&lt;/em&gt;&quot;?!&lt;/p&gt;
&lt;p&gt;I put the book on hold at the Carnegie Library and picked it up today. I haven&apos;t started reading it yet, but...&lt;/p&gt;
&lt;h2&gt;&quot;Bach: A Passionate Life&quot;, a BBC documentary (free to watch online)&lt;/h2&gt;
&lt;p&gt;I started with a &quot;shortcut&quot; to the book: I found a documentary online that Gardiner was involved in. It&apos;s still quite long (an hour and a half), but at least you get to see scenery, see musical excerpts being performed, and it&apos;s not a 600-page book!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/SOO8IC8_VaY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Playing his music&lt;/h2&gt;
&lt;p&gt;Of course, I had to play some of his music to celebrate also. I pulled out my flute and ran some of his flute sonatas&apos; movements along with keyboard backing tracks.&lt;/p&gt;
&lt;h2&gt;A favorite musical selection to end the day: &lt;a href=&quot;https://en.wikipedia.org/wiki/Partita_for_Violin_No._2_%28Bach%29&quot;&gt;Chaconne from partita for violin no. 2&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Maybe one day I&apos;ll write more about Bach&apos;s Chaconne, but for today all I will say is, this is my favorite music of all time of any kind, and what I would hope to leave this world with.&lt;/p&gt;
&lt;p&gt;And here is my favorite performance, by the wonderful violinist &lt;a href=&quot;https://en.wikipedia.org/wiki/Gidon_Kremer&quot;&gt;Gidon Kremer&lt;/a&gt;. It&apos;s way intense:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/DBJPVnJ8m-Y&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m generally more interested in the artistic output of people rather than their life stories, but thanks to the positive and somewhat sensationalist coverage of Gardiner&apos;s new book, I took the bait!&lt;/p&gt;
</content:encoded></item><item><title>Life: cooking, eating with friends, music jamming, dancing</title><link>https://franklinchen.com/blog/2014/03/29/life-cooking-eating-with-friends-music-jamming-dancing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/29/life-cooking-eating-with-friends-music-jamming-dancing/</guid><pubDate>Sun, 30 Mar 2014 03:38:31 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to a French potluck dance party at Lisa&apos;s, the first one we&apos;ve attended together in &lt;a href=&quot;/blog/2013/05/25/learning-the-congo-de-captieux-traditional-french-dance/&quot;&gt;ten months&lt;/a&gt; (although I went to one without Abby &lt;a href=&quot;/blog/2013/09/14/back-to-french-dance-potluck-and-party/&quot;&gt;half a year ago&lt;/a&gt; when she was out of town).&lt;/p&gt;
&lt;p&gt;It was a wonderful experience, one that we&apos;ve missed for two months, since we have not gone out to a party with friends since Abby got a new job and we&apos;ve had to adapt to that big change in our lives.&lt;/p&gt;
&lt;p&gt;Although we still had to leave early, I was reminded of what I really enjoy in life, deep down: nothing fancy, just getting together and having fun and being creative.&lt;/p&gt;
&lt;h2&gt;Music jamming&lt;/h2&gt;
&lt;p&gt;I hadn&apos;t done French music jamming in months, so when Abby and I arrived, and dinner was still being prepared, and John said &quot;hey, let&apos;s play&quot;, I pulled out my flutes (both my standard Boehm flute and my wooden Irish flute) and went at it with him on melodeon. We hadn&apos;t played together in half a year! Susan joined in at some point, also on melodeon.&lt;/p&gt;
&lt;p&gt;We played mazurka and Schottische and other music for about half an hour, from John&apos;s memory, as I tried to follow along by ear. I realized how much I miss French music jamming. Lisa&apos;s been hosting it again recently, but there have been schedule conflicts for me, but it looks like we&apos;ll be getting on a schedule that works for me. I&apos;m coming back!&lt;/p&gt;
&lt;p&gt;While I was taking a break, John played a multi-section hanter dro that Fabien and Lisa started dancing to, and I joined them in their line and picked it up. Again, something I hadn&apos;t done in a while, and almost forgotten the unique pleasure of!&lt;/p&gt;
&lt;h2&gt;Potluck&lt;/h2&gt;
&lt;p&gt;This seemed to me the biggest French potluck party yet, with almost twenty people present, I believe. We met some new people as well as old friends.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/dinner.jpg&quot; alt=&quot;At dinner&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I baked a butternut squash to bring. I only very, very lightly seasoned it, to not detract from the natural flavor of the squash:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;butternut squash, sliced in half, placed in roasting pan&lt;/li&gt;
&lt;li&gt;salt&lt;/li&gt;
&lt;li&gt;pepper&lt;/li&gt;
&lt;li&gt;cayenne pepper&lt;/li&gt;
&lt;li&gt;butter&lt;/li&gt;
&lt;li&gt;extra virgin olive oil&lt;/li&gt;
&lt;li&gt;brown sugar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/squash.jpg&quot; alt=&quot;Butternut squash&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby made a kale and mushroom dish:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/kale.jpg&quot; alt=&quot;Kale&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The other guests all brought a lot of great homemade food, and Lisa and Alex provided tasty and filling entrees and desserts. A fantastic meal!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/food1.jpg&quot; alt=&quot;Food&quot; /&gt;
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/food2.jpg&quot; alt=&quot;Food&quot; /&gt;
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/food3.jpg&quot; alt=&quot;Food&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yes, there were &lt;a href=&quot;/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/&quot;&gt;Brussels sprouts, and I enjoyed them&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/brussels-sprouts.jpg&quot; alt=&quot;Brussels sprouts&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Cookies (and other desserts)&lt;/h3&gt;
&lt;p&gt;In accordance with &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;my rule&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Music-themed cookies homemade from molds:
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/musical-cookies.jpg&quot; alt=&quot;Musical cookies&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ate one, of a dancing couple:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/dance-cookie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A slice of yummy chocolatey thing:
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/chocolatey.jpg&quot; alt=&quot;Chocolatey&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A slice of chocolate cake:
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/chocolate-cake.jpg&quot; alt=&quot;Chocolate cake&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Unfortunately, I think I should have cut myself a smaller slice, instead of accepting a precut slice.)&lt;/p&gt;
&lt;p&gt;A tiny piece of a very rich, buttery thing:
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/another-dessert.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A non-homemade cookie from a box (I didn&apos;t need to eat this):
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/box-cookie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Dancing&lt;/h2&gt;
&lt;p&gt;After dinner, Lisa and Fabien started off the dancing portion of the evening, by re-teaching the &quot;Congo de Captieux&quot; set dance that Lisa and Lynn had taught &lt;a href=&quot;/blog/2013/05/25/learning-the-congo-de-captieux-traditional-french-dance/&quot;&gt;ten months ago&lt;/a&gt;. It had been so long that Abby and I barely remembered it and were practically learning it from scratch again.&lt;/p&gt;
&lt;p&gt;All of eventually got through it! I got sweaty again.&lt;/p&gt;
&lt;p&gt;After that, there was a break, and since it was already &quot;late&quot; (for Abby and me on our current schedule), we had to say goodbye, just as the &quot;regular&quot; French dance portion of the evening was about to begin (bourrées, waltzes, mazurkas, hanter dro, more music jamming, etc.)&lt;/p&gt;
&lt;p&gt;Some photos of dancing that I took before we left early:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/dancing1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/dancing2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/french-potluck-2014-03-29/dancing3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was a beautiful evening that filled my belly and soul. It&apos;s been such a blessing to have been brought into this world of French traditional dance and music through the enthusiasm and generosity of Lisa &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/&quot;&gt;two years ago&lt;/a&gt; and many others. I feel like my life has been immeasurably enriched.&lt;/p&gt;
&lt;p&gt;If you&apos;re in the Pittsburgh area and want to join in, we always welcome more dancers and musicians. (Or even if you&apos;re not in the Pittsburgh area, as we&apos;ve had visitors from further away.)&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Back to basics: mere development</title><link>https://franklinchen.com/blog/2014/03/27/the-chess-improver-back-to-basics-mere-development/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/27/the-chess-improver-back-to-basics-mere-development/</guid><pubDate>Thu, 27 Mar 2014 11:25:52 GMT</pubDate><content:encoded>&lt;p&gt;I wrote &quot;Back to basics: mere development&quot; for The Chess Improver blog.&lt;/p&gt;
&lt;p&gt;Unfortunately, the original article at &lt;code&gt;https://chessimprover.com/back-to-basics-mere-development/&lt;/code&gt; could not be recovered from the Wayback Machine or any other archive. We apologize that this content has been lost.&lt;/p&gt;
</content:encoded></item><item><title>&quot;Time to Taste the World&quot;: thoughts on expanding my food tastes as an adult</title><link>https://franklinchen.com/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/21/time-to-taste-the-world-thoughts-on-expanding-my-food-tastes-as-an-adult/</guid><pubDate>Sat, 22 Mar 2014 01:37:07 GMT</pubDate><content:encoded>&lt;p&gt;This evening, right after work, I attended an event called &quot;Time to Taste the World&quot;, organized by Carnegie Mellon University&apos;s &lt;a href=&quot;https://web.archive.org/web/20210723034707/https://www.cmu.edu/dietrich/modlang/student-organizations/mlsac.html&quot;&gt;Modern Languages Student Advisory Council&lt;/a&gt; for the Department of Modern Languages. It was an informal event featuring some food selections followed by a German film that I opted not to watch, since I needed to go home.&lt;/p&gt;
&lt;p&gt;There were three tables of food, one for &quot;Asian&quot;, another for &quot;Mediterranean&quot;, and another for &quot;European&quot;. Obviously, only a very tiny fraction of the world was actually represented in this event, and the selections were mostly not very exciting, but it was interesting and even jarring going from one table to another.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/mediterranean.jpg&quot; alt=&quot;Mediterranean&quot; /&gt;
&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/asian.jpg&quot; alt=&quot;Asian&quot; /&gt;
&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/european.jpg&quot; alt=&quot;European&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Note that standard CMU catering cookies were also provided.&lt;/p&gt;
&lt;p&gt;I did try a bit of everything, including stuff I less frequently encounter. Unexpectedly, the experience of hopping from one table to another, and sampling every single item, led me to reflect on how unfamiliar some of these items were to me until later in life, and how my taste in food has expanded considerably in my &lt;em&gt;30s and 40s&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Linking my history of eating to &quot;Time to Taste the World&quot;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Most of what I like to eat now is what I never ate or knew existed before I was 30 years old&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This probably goes against &lt;a href=&quot;https://www.theguardian.com/lifeandstyle/wordofmouth/2013/jan/29/changing-tastes-food-and-aging&quot;&gt;most people&apos;s eating histories&lt;/a&gt;, but heck, I&apos;m a late bloomer, because for various reasons, I had very limited life experiences until my 30s and even more so, my 40s.&lt;/p&gt;
&lt;p&gt;For fun, I decided to think back about when it was that I first ate or even encountered, each of the items I sampled in &quot;Time to Taste the World&quot;.&lt;/p&gt;
&lt;h3&gt;Mediterranean table&lt;/h3&gt;
&lt;p&gt;Pita bread: OK, I suppose I probably encountered this first in college, when the dorm cafeteria provided it and I used it to eat with tuna fish.&lt;/p&gt;
&lt;p&gt;Grape leaves stuffed with rice: first time encountered and eaten was as a grad student at CMU in 1997, age 27, from Sree&apos;s food truck, actually.&lt;/p&gt;
&lt;p&gt;Hummus: also discovered in Pittsburgh upon arrival in 1997.&lt;/p&gt;
&lt;p&gt;Baba ghanoush: also discovered in Pittsburgh upon arrival in 1997.&lt;/p&gt;
&lt;p&gt;Today, I still love grape leaves and hummus. Baba ghanoush I still find a bit harsh and biting, but happily eat it in small quantities at a time. By the way, I should note that I discovered olive oil in 1997 also. At first its strong taste and appearance were confusing to me, but I got used to them, and have been using olive oil since as part of my everyday cooking, in fact.&lt;/p&gt;
&lt;h3&gt;Asian table&lt;/h3&gt;
&lt;p&gt;OK, my parents were immigrants from Taiwan, so these foods have never been unfamiliar to me!&lt;/p&gt;
&lt;p&gt;Spring rolls: my mother makes them sometimes, and of course much better than the commercial frozen ones.&lt;/p&gt;
&lt;p&gt;Chicken wings: some of my favorite childhood food memories involve my mother&apos;s chicken wings with soy sauce and ginger. Still my favorite flavor of wings!&lt;/p&gt;
&lt;p&gt;Noodle dishes: again, my mother makes this stuff.&lt;/p&gt;
&lt;p&gt;Note that &lt;a href=&quot;https://www.npr.org/2011/08/08/139033757/babys-palate-and-food-memories-shaped-before-birth&quot;&gt;our initial food tastes are actually formed in the womb&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;European table&lt;/h3&gt;
&lt;p&gt;OK, this is the stuff that I&apos;m least familiar with, find overall least appealing, and still encounter surprises.&lt;/p&gt;
&lt;p&gt;There was some &lt;a href=&quot;https://en.wikipedia.org/wiki/Gorgonzola&quot;&gt;gorgonzola&lt;/a&gt; cheese appetizer thing that I&apos;ve had before, and I had some here, but it&apos;s not really my thing. I don&apos;t think I ever ate something like this until my 30s. The taste and texture is interesting. Not my favorite thing to eat, but I could have a little bit now and then.&lt;/p&gt;
&lt;p&gt;There was also &lt;a href=&quot;https://en.wikipedia.org/wiki/Prosciutto&quot;&gt;prosciutto&lt;/a&gt; wrapped around some cheesy stuff, something I think I never tried until my 40s. Again, it still tastes weird to me, but I can eat it if I have to. It&apos;s not revolting.&lt;/p&gt;
&lt;p&gt;The main thing is that I have historically &lt;em&gt;fundamentally&lt;/em&gt; disliked all dairy. I emerged into the world seemingly hating milk: I don&apos;t like the taste, I don&apos;t like the smell. I was forced to drink milk as a toddler and basically accepted that I was supposed to drink it, and that it was the only thing to go with cereal, so I tolerated it all the way till I went to college. Then in freshman year in college, I came down with severe puzzling health problems, and finally found out by accident (upon missing breakfast for a couple of days) that cutting out my usual breakfast cereal with milk completely solved my problems: I was simply &lt;a href=&quot;https://en.wikipedia.org/wiki/Lactose_intolerance&quot;&gt;lactose intolerant&lt;/a&gt;. I cut down significantly on dairy consumption (which for me was only milk for cereal, and cheese on pizza).&lt;/p&gt;
&lt;p&gt;At some point in my late 30s, I found that my lactose intolerance had let up, and with care I could eat some forms of dairy without having problems. Cheese on pizza is OK, if it&apos;s not &quot;extra thick&quot;. Cheese in a serving of lasagna is typically not OK, in the quantities provided. Also, in my late 30s I began developing a taste for hard cheeses, which smell less bad to me, and happen to also have far less lactose, and so I do enjoy eating some hard cheeses occasionally: my favorite is &lt;a href=&quot;https://en.wikipedia.org/wiki/Gruy%C3%A8re_cheese&quot;&gt;Gruyère&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is some food awkwardness at home, because I&apos;m married to Abby, who comes from the &lt;a href=&quot;https://www.nature.com/news/archaeology-the-milk-revolution-1.13471&quot;&gt;dairy-loving peoples&lt;/a&gt;. I&apos;m perpetually having to tolerate the odor of dairy of all kinds at home. This is &lt;em&gt;quite difficult&lt;/em&gt; for me, but such is life.&lt;/p&gt;
&lt;h2&gt;Notes on more recent food adventures&lt;/h2&gt;
&lt;p&gt;I explored a tremendous amount of new food when I went vegetarian (for several months) at age 29, and got serious for the first time in my life, about cooking for myself. All kinds of bean, lentils, unfamiliar nuts, spices, herbs, vegetables such as kale, etc. Although I didn&apos;t stay vegetarian long, that phase of my life resulted in the biggest explosion in my food taste diversity ever.&lt;/p&gt;
&lt;p&gt;However, I didn&apos;t even touch beets until my mid-30s, when I was &quot;forced&quot; to because they came in my &lt;a href=&quot;https://www.kretschmannfarm.com/&quot;&gt;farm subscription box&lt;/a&gt;. A whole bunch of other unfamiliar vegetables have come my way through my annual subscription since I began it. The latest was celeriac, which I had never even heard of until it started showing up in our farm box last year. I figured out stuff to do with it, and I like it! It&apos;s fantastic continuing to discover new stuff to cook and eat. Life is not boring.&lt;/p&gt;
&lt;p&gt;I&apos;m even learning to eat &lt;a href=&quot;https://en.wikipedia.org/wiki/Brussels_sprout&quot;&gt;Brussels sprouts&lt;/a&gt;. My initial experiences in my 30s made me want to vomit, but there are ways to cook these to make them much more palatable, and in the past couple of years, I have enough tolerable experiences that I can see myself trying them more.&lt;/p&gt;
&lt;h2&gt;Cookies&lt;/h2&gt;
&lt;p&gt;I did eat some cookies at the event, but only three, in accordance with &lt;a href=&quot;/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/&quot;&gt;my recent findings about how many I should eat at a time&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/cookie1.jpg&quot; alt=&quot;Cookie 1&quot; /&gt;
&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/cookie2.jpg&quot; alt=&quot;Cookie 2&quot; /&gt;
&lt;img src=&quot;../../assets/images/time-to-taste-the-world-2014/cookie3.jpg&quot; alt=&quot;Cookie 3&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s never too late to try new foods. You might be surprised and enjoy something new. And if you don&apos;t like it, you don&apos;t have to keep eating it.&lt;/p&gt;
&lt;p&gt;I&apos;m very grateful to have had the opportunity to try new foods now and then, and add to my enjoyment of life.&lt;/p&gt;
&lt;p&gt;Many thanks to the Modern Languages Department at CMU for sponsoring this little event! I hope many of the students attending it got some exposure to new foods that they will remember for the rest of their lives.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: A scrappy example of psychology and luck in an ending</title><link>https://franklinchen.com/blog/2014/03/20/the-chess-improver-a-scrappy-example-of-psychology-and-luck-in-an-ending/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/20/the-chess-improver-a-scrappy-example-of-psychology-and-luck-in-an-ending/</guid><pubDate>Thu, 20 Mar 2014 11:05:28 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;A scrappy example of psychology and luck in an ending&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the sixth (and final) round of the Pittsburgh Chess Club Championship, I played one of those unfortunately scrappy games I have been playing recently. From an easily winning position, I carelessly threw away the win to reach an ending that (to me) was obviously a draw. However, I kept playing for a win, hoping for a swindle, aided by the fact that my opponent had very little time on the clock and appeared to have spent a lot of energy earlier, and now appeared to be still nervous (indicating that he was not certain, unlike me, that the ending was a dead draw). Our subsequent play was sloppy, to say the least, but I got the win (aided by my incessant blitzing that left him in fact losing on time in the final position), and ended up just catching the leader to tie for first place in the tournament, to become one of two 2014 Pittsburgh Chess Club co-champions. I am happy that I achieved this, but know full well that I got there with a lot of luck in all the rounds that I aim to replace in the future with new skill (for example, every ending that I didn&apos;t do right, I have studied after the fact).&lt;/p&gt;
&lt;p&gt;Flaws aside, I think it&apos;s useful to see how, amidst imperfect play, having a possible swindling winning idea is useful, because with luck it might actually work out. We are human beings, not computers, so there will always be some luck involved in human chess. I&apos;d like to think there is a little bit of skill in pursuing a swindling idea, latching onto interesting aspects of a position and trying to make use of them.&lt;/p&gt;
&lt;p&gt;In the sport of chess you have to do what you can even after misplaying an earlier part of the game. The swindle involved making moves that were risky or had obvious (to me) defenses, but part of the art of swindling involves trying to guess that your opponent might not see what you see and setting possible traps.&lt;/p&gt;
&lt;h2&gt;The ending&lt;/h2&gt;
&lt;p&gt;We reached a position with equal material: Two Rooks and one Bishop and four Pawns on each side. As White, I had a single b-Pawn and three King side Pawns. Black had an a-Pawn and b-Pawn but a fragmented King side with an f-Pawn and h-Pawn. So I concentrated on hoping to make something of Black&apos;s weak King side before Black&apos;s Queen side majority became a factor.&lt;/p&gt;
&lt;p&gt;So one observation I immediately made was that perhaps I could make progress by getting my f-Pawn to f6 to make Black&apos;s King inactive, and also to semi-trap it and bring my Rooks over to the half-open g-file, or even to try to win the h6 Pawn. Or try to round up the f7 Pawn. Meanwhile, having the move, I had an opportunity to block Black&apos;s a-Pawn on a7 and artificially isolate the b5 Pawn. So I played Ra6, an active-looking move attacking Black&apos;s h6 Pawn. I did this even though I knew Black could play the simple and effective …Bb6, because I had to try something. I gambled that my opponent would not want to move the centralized Bishop on d4 &quot;backwards&quot; as defense, but would want to keep it there to attack my undefended b2 Pawn. Yes, psychology at work.&lt;/p&gt;
&lt;p&gt;I gambled further by &lt;em&gt;not&lt;/em&gt; taking the offered h6 Pawn in return for my b2 Pawn, because simplification, even though objectively this was clearly the &quot;best&quot; move, because the &quot;best&quot; move doesn&apos;t mean much if it only reduces swindling opportunities in a dead draw, and again because of psychology: my opponent had not played …Bb6 in the previous move, and probably would not play it again, and therefore would be playing the passive …Kg7 instead. And that happened. And I continued with advancing my f-Pawn to f5.&lt;/p&gt;
&lt;p&gt;There was some risk in playing these suboptimal moves: a good defense would have left me fighting on the worse end of a draw. But I needed to win this game, and had plenty of time on the clock, so I was willing to fall back on defending a draw if anything did not work out.&lt;/p&gt;
&lt;p&gt;Then I offered to trade our opposite-colored Bishops, by unprotecting my Bishop while moving my Rook up to &quot;threaten&quot; to come to the g-file. There was no real threat, but as I hoped, my opponent eagerly swapped Bishops, thinking (correctly) that this would neutralize the &quot;attack&quot;. However, objectively, the trade only benefited me. I got rid of a strong Bishop and lost my weak one.&lt;/p&gt;
&lt;p&gt;A couple more gambles, and I made progress, losing my b-Pawn in return for his a-Pawn but now having one Rook on the g-file and one Rook on the 7th rank. Optically it looks a little scary, but that&apos;s an illusion. Nevertheless, when an opponent is short on time, creating illusions can be useful.&lt;/p&gt;
&lt;p&gt;After more passive moves by Black, I achieved my final dream position: Pawn on f6, Rook on a7, Rook on g7, about to win the f7 Pawn. It&apos;s amazing how this fantasy position I had imagined early on actually came about. Still a draw, of course. But Black remained passive, and after a trade of Rooks, we actually ended in a Rook and Pawn ending that was winning for me. Unfortunately, at move 42, with the win in sight, I hastily made a passive move myself (Rg4) that threw away my win. I realized a few move later that the game was a truly dead draw. But I kept playing. A few seconds before his flag fell, my opponent made the only losing move, trading Rooks into a lost King and Pawn ending (two Pawns to one). Tragic, but in this tournament, where none of us were Masters, and endgame knowledge is weak, this stuff happens.&lt;/p&gt;
&lt;p&gt;The moral of the story:&lt;/p&gt;
&lt;p&gt;Endgame knowledge is &lt;em&gt;very important&lt;/em&gt;. I&apos;m not going to lie: I&apos;m currently remedying my defects in the endgame (better late than never). I&apos;m tired of displaying my games in which my weakness is obvious.
Even if you know an ending should be a draw, press on because you might get lucky.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.02.25&quot;]
[Round &quot;6&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Robert Atwell&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2008&quot;]
[ECO &quot;D31&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 d5 2. c4 e6 3. Nc3 Be7 4. cxd5 exd5 5. Bf4 Nf6 6. e3 Bd6 $2 { Wastes time.} 7. Bg5 $5 { I decided to avoid exchanges for now.} ( 7. Bxd6 { Exchanging was fine.} 7… Qxd6 ) 7… c6 8. Bd3 h6 9. Bh4 Qe7 $2 { The Queen will just remain in a pin here.} 10. Qc2 $5 Na6 $2 11. a3 $6 { I decided not to go for the Pawn-structure wrecking complications that I later did go into.} ( 11. Bxa6 bxa6 12. Bxf6 gxf6 13. Rc1 { Keeps an advantage even though White has two Knights against two Bishops, because of Black&apos;s wrecked Pawns.} ( 13. Nxd5 $2 cxd5 14. Qc6+ Qd7 15. Qxa8 Qb5 { White&apos;s Queen is mysteriously trapped!} ) ) 11… Nc7 { Now Black&apos;s Knight is very good at c7.} 12. Nge2 $6 { I should have reverted to a classical setup with Nf3.} 12… b5 $4 { A terrible weakening move.} 13. Bxf6 $5 { Not best.} ( 13. e4 { Strongest.} 13… g5 14. Bg3 Bxg3 15. Nxg3 dxe4 16. Ncxe4 Bd7 ) 13… gxf6 $4 ( 13… Qxf6 { Best even though it loses a Pawn.} 14. e4 { Both my opponent and I had assumed this was terrible for Black, but it turns out that Black could do worse.} 14… Qd8 15. exd5 cxd5 16. Nxd5 O-O { White has won a Pawn but at the expense of the Bishop pair.} ) 14. O-O $6 { I decided to castle before proceeding further, but I could have been more direct.} ( 14. e4 { Super strong.} ) ( 14. Ng3 { Most clear and strongest. Black is positionally lost.} ) 14… Be6 $2 15. e4 ( 15. Na2 { I considered this way of hitting at the c Pawn.} ) ( 15. Ng3 { I also considered this powerful move.} ) ( 15. Nf4 { I also considered this.} ) ( 15. Rfc1 { This was another obvious option. There were too many good choices, and my mind started to wander as a result of the paradox of choice.} ) 15… Qd7 16. f4 dxe4 17. Nxe4 Be7 { At this point, I knew I had a won position, but my mind totally wandered.} 18. a4 $6 { Still winning, but starting to get sloppy.} ( 18. Rac1 Bd5 19. N4c3 { Black is totally lost here.} ) 18… Nd5 19. Nc5 { Good enough to win.} ( 19. axb5 { I did look at the exchange sacrifice, but thought I didn&apos;t need to play it.} 19… Ne3 20. Qxc6 Qxc6 21. bxc6 Nxf1 22. Kxf1 { White is winning easily.} ) ( 19. f5 { I was originally going to play this tactic, but somehow mixed up my move order in my thinking and suddenly thought it didn&apos;t work!!} 19… Bxf5 20. Nxf6+ ( 20. Rxf5 $4 Ne3 ) 20… Nxf6 21. Bxf5 { Black is as good as dead.} ) 19… Ne3 20. Nxd7 $6 { Still winning, but not necessary.} ( 20. Qc1 Bxc5 21. Qxe3 Be7 22. axb5 cxb5 23. Ra5 { Black is dead.} ) 20… Nxc2 21. Nxf6+ $4 { Throwing away the win without thought.} ( 21. Bxc2 Bxd7 22. axb5 cxb5 23. Be4 Rd8 24. Rxa7 { Black is dead, not only one Pawn down but with weaknesses everywhere.} ) 21… Bxf6 22. Bxc2 O-O 23. axb5 Bc4 24. Rfe1 Bxe2 25. Rxe2 Bxd4+ 26. Kf1 cxb5 { Objectively this is obviously a drawn position, but here I started looking for swindling ideas against Black&apos;s partially exposed King.} 27. Ra6 $5 { Aggressive-looking but harmless.} 27… Rac8 $6 ( 27… Bb6 { This stops White, but I gambled that my opponent would not play this &quot;retreating&quot; move but try to keep the Bishop attacking my b Pawn instead.} ) 28. b3 $5 { Another gamble.} 28… Kg7 $6 { The position is still equal, but there was no need to help White.} ( 28… Bb6 ) 29. f5 $5 { The big swindling idea.} 29… Rc7 $6 ( 29… Bb6 ) 30. Re4 $5 Rxc2 $2 ( 30… Bb6 { White is the one in trouble if Black just defends properly.} ) 31. Rxd4 $5 ( 31. Rg4+ { Objectively better, but I didn&apos;t want to give away my swindling idea.} ) 31… Rb2 $2 { Falling for the swindle.} ( 31… Rfc8 ) ( 31… h5 ) 32. Rg4+ Kh7 33. Rxa7 $6 { Gambling that Black would be passive and fear losing the f Pawn.} ( 33. Rh4 { Actually strongest, collecting the h6 Pawn.} 33… Rb1+ 34. Ke2 ) 33… Rxb3 34. h4 $5 { Still gambling. Making an escape square for the King on h2.} 34… Kh8 $2 ( 34… Rc3 { Black could just come around to defend with the Rook for the draw.} ) 35. f6 $5 Rb2 $2 ( 35… Rb1+ 36. Kf2 Rg8 { White is completely stopped.} ) 36. Rg7 Rc8 $2 ( 36… b4 { Black could just get rolling with the passed b Pawn.} ) 37. Kg1 Rf8 38. Raxf7 { White has no choice now but to go into the Rook and Pawn ending.} 38… Rxf7 39. Rxf7 Rb4 $2 ( 39… Rc2 { Black should activate the Rook.} ) 40. g3 $2 ( 40. Rf8+ { Better move order.} 40… Kh7 41. g3 ) 40… Rb2 $4 { A losing move.} ( 40… Rg4 { This should be an easy draw.} ) 41. Rg7 { Locking up Black&apos;s King.} 41… Rc2 42. Rg4 $4 { Throwing away the win.} ( 42. g4 b4 43. g5 hxg5 44. hxg5 Rc6 45. Kh2 b3 46. Rb7 { Game over. Rook and two connected passed Pawns wins.} ) 42… Rc7 43. Rf4 Rf7 44. g4 Kh7 45. h5 $5 { Since the game is a draw anyway.} ( 45. g5 $4 hxg5 46. hxg5 Kg6 { Instant draw.} ) 45… b4 $2 ( 45… Kg8 ) 46. Rxb4 Rxf6 47. Rb7+ Kg8 48. Kg2 Ra6 49. Kg3 Kh8 50. Re7 Kg8 51. Kf4 Ra4+ 52. Kf5 Ra5+ 53. Re5 Rxe5+ $4 { Somehow forgetting a basic fact about King and Pawn endgames. This is a book win for White, who can win the h6 Pawn at will.} ( 53… Ra4 { Almost any move keeps the draw.} ) 54. Kxe5 Kg7 55. Ke6 { And Black&apos;s flag fell.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Steel City Ukuleles: navigating a challenging playlist</title><link>https://franklinchen.com/blog/2014/03/19/steel-city-ukuleles-navigating-a-challenging-playlist/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/19/steel-city-ukuleles-navigating-a-challenging-playlist/</guid><pubDate>Thu, 20 Mar 2014 01:32:31 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-2014-03-19.jpg&quot; alt=&quot;Group photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Two weeks ago, I &lt;a href=&quot;/blog/2014/03/05/thoughts-on-returning-to-ukulele-after-almost-two-months-off/&quot;&gt;returned to attending Steel City Ukuleles meetings&lt;/a&gt; after almost two months off, and I &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/158392572/&quot;&gt;attended again tonight&lt;/a&gt;; my habit since starting out last summer has been to attend the regular first and third Wednesday meetings in Regent Square. Although I have been thinking of cutting back to attending once a month instead of twice a month, I was intrigued by the rather ambitious playlist Adam created for this week, so I couldn&apos;t resist going, even though it meant conflicting with a newly revived regular &lt;a href=&quot;/categories/french-dance/&quot;&gt;French dance music jam&lt;/a&gt; that I haven&apos;t attended in half a year.&lt;/p&gt;
&lt;p&gt;Adam started off with some easy blues, but soon we were launching into songs with pauses or other &quot;irregularities&quot;; these are always tricky because many of us don&apos;t necessarily actually know the songs before we try to play and sing them and cannot guess right off the bat where they might be or follow along at the first attempt through. Also, there were songs that simply were very fast (meaning fast chord changes) or had complex chords and progressions. Very challenging, but I enjoy that.&lt;/p&gt;
&lt;h2&gt;How to handle sight reading and singing harder music&lt;/h2&gt;
&lt;p&gt;After the past half year since beginning on ukulele, I&apos;ve figured out how to tackle hard music in Steel City Ukuleles readings. The thing to remember is that we always repeat a song at least once, and often more than once, and that within a song, there is usually a good deal of repetition as well.&lt;/p&gt;
&lt;p&gt;The trick is to never get held up on anything that you can&apos;t do. &lt;em&gt;Never pause&lt;/em&gt;. Always keep going, even if means just keeping track of where everyone is (or getting back on track) while not playing or singing for a while. Strum the easy, important chords. Also, given that many songs I simply have not heard before, I usually don&apos;t start singing until I&apos;ve heard someone else do a section. And since I can never fully remember the exact pitches of a melody on first listening, I like to just go with the chords and make up a new inner (or lower, since there tend to be more women than men at meetings!) voice harmonically. That&apos;s especially fun when the chords are more complex; I&apos;ve decided that &lt;em&gt;singing in harmony&lt;/em&gt; is now actually my favorite thing to do as part of the group. This goes along with my &lt;a href=&quot;/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/&quot;&gt;recent focus on playing tenor and bass recorders with the Pittsburgh Pittsburgh Recorder group&lt;/a&gt; (rather than soprano and alto, which were my main focus during my first two years on recorder).&lt;/p&gt;
&lt;p&gt;That said, there&apos;s a benefit to going back home to really &quot;master&quot; a song. I don&apos;t like operating in perpetual &quot;sight reading&quot; mode. That&apos;s part of why I like to sign up for performances sometimes, to really work on getting something down better. But I don&apos;t think I&apos;ll have time to perform again for a couple more months.&lt;/p&gt;
&lt;h2&gt;Nostalgia&lt;/h2&gt;
&lt;p&gt;Some of the songs triggered deep nostalgia in me. We did two songs by the great &lt;a href=&quot;https://en.wikipedia.org/wiki/Stevie_Wonder&quot;&gt;Stevie Wonder&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Isn%27t_She_Lovely&quot;&gt;&quot;Isn&apos;t She Lovely?&quot;&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/For_Once_in_My_Life&quot;&gt;&quot;For Once in My Life&quot;&lt;/a&gt;. I totally love these classic songs: great melodies, rhythmic clarity, harmonic movement. It&apos;s always a joy to revisit these songs. We also did &lt;a href=&quot;https://en.wikipedia.org/wiki/America_%28Simon_%26_Garfunkel_song%29&quot;&gt;&quot;America&quot;&lt;/a&gt; by Simon and Garfunkel: a much sadder, wistful song that has a special meaning to me because I listened to it in my childhood, without necessarily grasping the words and the narrative, but absorbing the story just from the harmonic changes and the tone of voice in the singing.&lt;/p&gt;
&lt;p&gt;As we were all packing up to leave, Jack said we needed a group photo because it had been a while, so he got two in. Actually, I was sort of a de facto photographer for us since I joined last year, but I had disappeared for two months this year. (I did take photos two weeks ago when I returned, but Jack didn&apos;t make it to that meeting.) I&apos;ll continue taking photos as I attend Steel City Ukuleles events. I think it does encourage people to join when they see what a good time we&apos;re having!&lt;/p&gt;
&lt;p&gt;After I got home, I realized my left fingertips were so sore that I could barely type at the computer. I was OK, but that was a really intense two-hour meetup! I&apos;m still getting all my callouses back.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-2014-03-19-fingers.jpg&quot; alt=&quot;My fingers&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Recorder Society: Something new recently: recording our practice sessions</title><link>https://franklinchen.com/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/16/pittsburgh-recorder-society-something-new-recently-recording-our-practice-sessions/</guid><pubDate>Sun, 16 Mar 2014 22:39:46 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/group.jpg&quot; alt=&quot;Pittsburgh Recorder Society&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I forgot to mention in my post about &lt;a href=&quot;/blog/2014/02/16/pittsburgh-recorder-society-7-part-gabrieli-and-coconut-chocolate-cookies/&quot;&gt;last month&apos;s Pittsburgh Recorder Society&apos;s meeting&lt;/a&gt; that Fred has started recording our sessions; he&apos;s set up a tripod and an audio recorder. I kind of didn&apos;t pay attention because it was not emphasized and nobody talked much about it.&lt;/p&gt;
&lt;p&gt;Today was a different story.&lt;/p&gt;
&lt;h2&gt;Recording&lt;/h2&gt;
&lt;p&gt;There was more mention of recording than in the past, and Fred made jokes about checking out what we did and how it would be useful for us to listen and see how we progress. Interestingly, this seemed to have quite an effect on what we did. I definitely felt a lot more serious and alert. Although I already always do take our meetings seriously, I will confess right now that whenever Fred said, &quot;OK, now let&apos;s do this again, and with recording&quot;, I really perked up and gave it my all, trying to play as musically as possible, paying attention to intonation, articulation, ensemble balance, and even that terrible habit many of us have of sucking our recorders after the end of a piece.&lt;/p&gt;
&lt;p&gt;Fred is right: it doesn&apos;t really make sense, &lt;em&gt;logically&lt;/em&gt;, to goof off during rehearsal and then expect to play well in actual performance. In practice, we should do the reverse: play it as well as we can in rehearsal, so that when we perform, which is usually in less than ideal circumstances (anxiety, unusual location or acoustics, or being hectic in getting somewhere, or any number of other unexpected glitches), our performance might be &lt;em&gt;worse&lt;/em&gt; than what we did, but it will still be good. On the other hand, if we don&apos;t give it our all in practice, then what miracle can get us even better in performance?&lt;/p&gt;
&lt;p&gt;In any case, the recording of our work was not at all some kind of grim task. I enjoyed the additional seriousness and care, and I think we&apos;re sounding better and better every month. Amusingly, the most noticeable thing is that when we know we are being recorded, we end pieces much better, and then &lt;em&gt;dead silence&lt;/em&gt;. No rustling, no recorder sucking. Wow. I really enjoy that unity.&lt;/p&gt;
&lt;h2&gt;Tenor and bass&lt;/h2&gt;
&lt;p&gt;This is the first recorder meeting in my three years in which I did not play soprano or alto recorder once! I have been much preferring to play tenor and bass, to provide inner or bottom voices, and letting the newer members of the group play the soprano and alto voices.&lt;/p&gt;
&lt;h2&gt;Snacks&lt;/h2&gt;
&lt;p&gt;People brought in snacks to share, as usual, for the mid-meeting break.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/snacks.jpg&quot; alt=&quot;Snacks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And of course, this being St. Patrick&apos;s Day weekend, Helen had to bring special Irish-themed snacks to share. In addition to Irish cheese, she also brought homemade brownies that she said were from an actual Irish recipe! These were &lt;em&gt;fantastic brownies&lt;/em&gt;: chocolate, cocoa, good stuff. I had to eat them, again and again.&lt;/p&gt;
&lt;p&gt;In accordance with my &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;promise about &quot;cookies&quot;&lt;/a&gt;, here is a photo of each individual one I ate.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/brownie1.jpg&quot; alt=&quot;Brownie 1&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/brownie2.jpg&quot; alt=&quot;Brownie 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Someone brought in a box of castle cookies. I ate one:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/castle-cookie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;While I was packing up to leave, I couldn&apos;t resist temptation and ate my third Helen brownie:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2014-03-16/brownie3.jpg&quot; alt=&quot;Brownie 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In retrospect, &lt;strong&gt;this was a big mistake&lt;/strong&gt;. After getting home, I felt burdened by this third brownie. I would have been fine just eating the first two and the one cookie (along with some cheese and nuts that I also had).&lt;/p&gt;
&lt;p&gt;I&apos;ve noticed that I have a problem when I eat a &quot;one more for the road&quot; cookie at events. I&apos;ve decided to consciously watch out and &lt;em&gt;not&lt;/em&gt; do that in the future. I should only eat as much as I can handle, and leave it at that.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-04-27)&lt;/h3&gt;
&lt;p&gt;By popular demand, &lt;a href=&quot;/blog/2014/04/27/pittsburgh-recorder-society-palestrina-gombert-and-dolly-parton-cookies/&quot;&gt;the following month, Helen brought in the recipe for these brownies&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Two positional Pawn sacrifices: one accidental</title><link>https://franklinchen.com/blog/2014/03/13/the-chess-improver-two-positional-pawn-sacrifices-one-accidental/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/13/the-chess-improver-two-positional-pawn-sacrifices-one-accidental/</guid><pubDate>Thu, 13 Mar 2014 11:29:55 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Two positional Pawn sacrifices: one accidental&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the fifth (of six) round of the Pittsburgh Chess Championship, I had an interesting game as White in which there were bouts of material inequality.&lt;/p&gt;
&lt;h2&gt;The accidental sacrifice&lt;/h2&gt;
&lt;p&gt;Out of the opening, my opponent lost a Pawn that I went hunting for.&lt;/p&gt;
&lt;p&gt;In retrospect, I should have chosen not to go hunting for that Pawn in the first place: it was a doubled c-Pawn on c5 that was not worth the trouble of going into contortions to win. It turns out that winning the Pawn did leave me with a large advantage, but one that required alert play to maintain.&lt;/p&gt;
&lt;p&gt;What happened was that my opponent tried to get long-term defensive chances by forcing a trade of his Bishop for my Knight on c3 resulting in my having an isolated a-Pawn as well as isolated, doubled c-Pawns on c2 and c3, so that basically, I won a doubled c-Pawn at the cost of having my own doubled c-Pawn.&lt;/p&gt;
&lt;p&gt;Objectively, I had a large advantage and there were many ways for me to proceed, but I faltered, became passive, and Black ended up getting huge compensation, pressuring both my a-Pawn as well as my terrible c-Pawn on c3, that made the initial Pawn loss almost feel like an accidental &lt;em&gt;positional sacrifice&lt;/em&gt;! In fact, Black could have regained the Pawn with a great game, but also faltered, resulting in a time-scramble of a scrappy ending that led to my swindling a winning ending but then not having enough mental reserves left to finish the job (that ending may be the subject of a separate post).&lt;/p&gt;
&lt;h2&gt;The unplayed sacrifice&lt;/h2&gt;
&lt;p&gt;The interesting thing is that after the game, we both agreed that I missed a great chance to immediately &lt;em&gt;sacrifice a Pawn back&lt;/em&gt; for a huge advantage. I had definitely considered it during the game, but in a turn of mental passivity I had thought that I might as well play more quietly (which could have sufficed, but I made further errors). It was a psychological as well as technical error.&lt;/p&gt;
&lt;p&gt;The sacrifice c4 would have been very strong. Here&apos;s why, in terms of general principles as well as the concrete situation on the board:&lt;/p&gt;
&lt;p&gt;Whether Black takes the Pawn with the Queen or the b5 Pawn, the result (after a Queen trade if appropriate) is that Black&apos;s retaking Pawn on b5 would have been diverted into a weak doubled c-Pawn on c4, and also give White a very strong outside passed a-Pawn.
Giving up the useless c-Pawn on c3 would have opened up lines for White&apos;s dark-squared Bishop, especially important since Black no longer had any Bishops.
Opening up the b-file would also have been advantageous to White, who was well ahead in development and ready to swing the King Rook over to the Queen side if appropriate.
If Black did not take with the Queen, the situation is even worse for Black, because with the Queens still on the board, Black&apos;s Queen becomes tied to defending the regained c-Pawn while the Black King remains in danger, uncastled and unable to castle.
Since it&apos;s just giving a Pawn back, it&apos;s not even &quot;really&quot; a sacrifice anyway.
It&apos;s almost certain that White will regain this weak Pawn on c4 anyway that is either unprotected (in the case of a Queen trade) or barely protected (by just the Queen).&lt;/p&gt;
&lt;p&gt;There was only up side, no down side, to this sacrifice.&lt;/p&gt;
&lt;p&gt;It is unfortunate to report that despite knowing all this, I did not play this positional Pawn sacrifice that was crying out to be played, but chess life goes on. I hope that if you encounter a position like this in one of your own games, and consider the points made above, you will not think twice before happily giving up a terrible Pawn for a great position!&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.02.18&quot;]
[Round &quot;5&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Edward Dean&quot;]
[Result &quot;1/2-1/2&quot;]
[BlackElo &quot;2125&quot;]
[ECO &quot;B31&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 Nc6 3. Bb5 g6 4. O-O Bg7 5. Re1 a6 $6 { Just forcing White to do what he wanted.} 6. Bxc6 dxc6 7. d3 Be6 $6 { Trying to get c4 in to dissolve the doubled Pawns, but this plan is faulty.} 8. Ng5 $5 { Not really necessary at this point.} ( 8. Nc3 { Ordinary development was fine.} 8… c4 $2 9. Ng5 ) 8… Qd7 $6 { Consistent with the plan, but retreating was best.} 9. Nc3 { Black&apos;s Queen side dark squares look weak: c5 Pawn and b6 square.} ( 9. Nd2 { Preventing c4 was also good.} ) 9… Bg4 $5 ( 9… c4 10. Na4 ) 10. f3 Bd4+ 11. Kh1 Be6 $2 ( 11… f6 { Best, losing a different Pawn, but with compensation.} 12. fxg4 fxg5 13. Bxg5 ) 12. Na4 $5 { In retrospect, I made a mistake by being impatient to carry out the Na4 idea.} ( 12. Ne2 { Very simple way to keep an advantage. Both of Black&apos;s Bishops are doing nothing useful and will be taken or pushed back.} ) ( 12. Qd2 { This was a good way to prepare Na4.} ) ( 12. Qe2 { Also possible and good.} ) 12… c4 13. dxc4 $6 { Wrong move order.} ( 13. Nxe6 { The correct move order.} 13… Qxe6 14. dxc4 Rd8 15. Qe2 { Transposes to the actual game.} ) 13… Rd8 $4 ( 13… Bxc4 { Black can actually survive in this move order.} 14. c3 Ba7 15. Qxd7+ Kxd7 16. b3 h6 ) 14. Qe2 $5 ( 14. Re2 { Threatening Rd2 was quite strong and probably winning.} 14… Bf6 15. Rd2 Qxd2 16. Bxd2 Bxg5 17. Bxg5 Rxd1+ 18. Rxd1 Nf6 19. Nc5 Bc8 20. Bxf6 exf6 21. a4 { White has a probably technically won game, being a Pawn up and with a good Knight versus a bad Bishop.} ) 14… b5 15. Nxe6 Qxe6 16. cxb5 axb5 17. Nc3 Bxc3 $5 { A good practical try, destroying White&apos;s Pawn structure. It worked in this game.} 18. bxc3 Ra8 19. a3 $2 { Too passive.} ( 19. c4 $1 { I missed a great chance. I did consider giving the Pawn back as a positional sacrifice, and my opponent after the game said he was afraid of this move.} 19… bxc4 $2 ( 19… Qxc4 { Black has to trade Queens.} 20. Qxc4 bxc4 21. a4 Kd7 ( 21… Nf6 22. Rd1 ) 22. a5 Nf6 23. Be3 { Black&apos;s defense looks very difficult. White will likely win the c4 Pawn to remain one Pawn up.} ) 20. a4 { Now White has an outside passed Pawn, and Black is still behind in development, with the King Rook out of play.} 20… Nf6 21. Bh6 Nd7 22. a5 f6 23. f4 { Similar to the actual game, but White at the cost of a Pawn has a won game. Note that the c4 Pawn is now a target for White.} 23… c5 24. Qf1 { Threatening f5.} 24… Kf7 { Threatening f5.} 25. a6 $1 { Now threatening f5 to win the c4 Pawn.} 25… Rxa6 $4 26. f5 { Game over.} ) 19… Nf6 20. Bh6 { Trying to prevent Black&apos;s King Rook from entering play.} 20… Nd7 21. Qe3 $6 { The point was to discourage …Ne5, but this is a defensive mind set.} ( 21. f4 { I could have immediately begun my f Pawn plan that I was late to implement in the actual game.} ) ( 21. e5 { Another option was to advance the e Pawn to cramp Black.} ) 21… f6 ( 21… Rg8 ) 22. Qd4 $4 { A nonsensical move throwing away all advantage. I just totally missed …Ra4. I had wanted to get to b4.} ( 22. f4 { This was my original intention and is good.} ) 22… Ra4 { At this point, I realized I might have to fight for the draw, because Black will almost certainly win the a3 Pawn.} 23. Qf2 Kf7 ( 23… g5 { May be best, but is risky.} 24. f4 ) 24. Be3 Rha8 { It is clear that White has to lose a Pawn back.} 25. Bd4 $6 { A feint to confuse Black, as we were both playing very quickly now on the clock.} 25… Rc4 $5 { Trying to maintain tension, a good practical decision given the time situation.} ( 25… Rxa3 { Was fine.} 26. Rxa3 Rxa3 27. f4 Kg8 { Black is fine and has a slight advantage.} ) 26. f4 $5 { I have to create complications to gain some time on the clock.} 26… Kg8 $6 { Playing safe.} ( 26… c5 { Best but results in complications.} 27. f5 Qc6 28. e5 cxd4 29. e6+ Kf8 30. exd7 Qxd7 31. fxg6 hxg6 32. Qd2 { Black is better, but the position has opened up.} ) 27. f5 Qf7 28. Qg3 $6 ( 28. Qf3 { Better, protecting the e4 Pawn.} ) 28… c5 ( 28… e5 ) 29. Bf2 ( 29. e5 { My original plan, but I chickened out and decided to play safe. Black can hold anyway.} 29… cxd4 30. e6 Qe8 31. exd7 Qxd7 32. cxd4 Qxf5 33. Rxe7 Rxd4 ) ( 29. Bg1 { Also possible.} ) 29… Ne5 30. h4 $2 { An active-looking but weakening move.} ( 30. h3 { A much better way of creating space for the King.} ) 30… Qg7 { Safe.} ( 30… Raa4 { Strong.} ) 31. Re3 $6 gxf5 ( 31… Qh6 ) 32. exf5 Qxg3 $6 { I was very happy to see this release of tension. Now I felt I had a chance to draw this game.} ( 32… Qg4 ) 33. Bxg3 Nc6 $2 { Too passive, throwing away winning chances.} ( 33… Nf7 ) 34. Re6 { White is finally getting active.} 34… Rc8 ( 34… Ra6 35. Rb1 ) 35. Re3 { Offering a draw by repetition, of course.} 35… Kf7 36. Rb1 b4 37. cxb4 $6 ( 37. axb4 { There were ways to try to keep the game alive.} 37… cxb4 38. Be1 ) 37… cxb4 38. axb4 Nxb4 39. Rbe1 Nd5 40. Rd3 Rc3 $2 { This was the last move we recorded. Less than 5 minutes left on the clock.} ( 40… R8c5 { And Black will regain the Pawn on c2 with a slightly better position because of the strong Knight and White&apos;s loose Pawn structure.} ) 41. Rxd5 Rxg3 42. Rd7 Re8 { Now White is still a Pawn up. The position is nevertheless drawn, because it is not really possible to make progress.} 43. Kh2 Rc3 44. Re2 ( 44. g4 { Trying to make progress on the King side also does not work.} 44… Rxc2+ 45. Kg3 h5 46. g5 Rc4 ) 44… Rc5 ( 44… h5 ) 45. g4 h5 46. gxh5 $6 { Trying to create complications.} 46… Rxf5 47. h6 $6 Rh5 48. Kh3 Rxh6 49. c4 { The whole point of that bizarre giving up of the f5 Pawn was to try to advance the c Pawn.} 49… f5 50. Rc7 $6 ( 50. Rd5 ) 50… Kf6 ( 50… Ra6 ) 51. c5 e5 $5 { It&apos;s worth trying to make progress even in a drawn ending.} ( 51… Rg6 ) 52. Rc6+ Re6 53. Rc8 ( 53. Rxe6+ { Obviously a draw.} 53… Kxe6 54. c6 ) 53… e4 { Trying for a win.} 54. c6 Ke5 ( 54… Kf7 { White cannot really Queen the c Pawn.} ) 55. c7 Rc6 $4 { Overlooking the check and Queening!} ( 55… Re7 56. Rc2 Rhh7 57. Rc5+ Kf4 58. Rxf5+ Ke3 59. Rc5 { A draw.} ) 56. Re8+ Rhe6 $4 { Missing the win of White&apos;s h Pawn, without which it does not look like White can win.} ( 56… Kf4 57. c8=Q Rxh4+ 58. Kg2 { Black gets rid of White&apos;s remaining Pawn.} 58… Rxc8 59. Rxc8 ) 57. c8=Q Rxc8 58. Rxc8 { Magically, White has a winning ending now.} 58… f4 { Time was so short now that I wasn&apos;t actually playing for a win any more, but just trying to finish the game with a draw.} 59. Ra8 $2 ( 59. Re1 { White can wait for Black to advance his Pawns and gradually push the h Pawn.} 59… f3 60. Rf8 { Black can make no progress.} 60… Kd5 ( 60… Kd4 $4 61. Rxf3 ) 61. Rf5+ Kd6 62. h5 { It&apos;s hopeless. White will Queen the h Pawn, after possibly sacrificing one of the Rooks.} ) 59… f3 60. Rb2 $2 ( 60. Re1 f2 61. Rea1 e3 62. Kg2 { White&apos;s King can hold off the pair of Pawns.} ) 60… Kf4 ( 60… e3 61. Kg3 f2 62. Rb5+ Ke4 63. Kg2 ) 61. Ra5 $2 ( 61. Rf8+ Ke3 62. Kg4 Rg6+ 63. Kf5 { White will win the e4 Pawn.} ) 61… Rg6 62. h5 Rg3+ 63. Kh4 $4 ( 63. Kh2 { Stops the checks.} 63… Rg4 64. Rb7 { Black cannot manage to Queen.} 64… Rh4+ 65. Kg1 Rh3 66. Re7 Rg3+ 67. Kh2 Rg2+ 68. Kh1 Rb2 69. h6 f2 70. Rf7+ Ke3 71. Kg2 { It&apos;s over: Black cannot hold the Pawns.} ) 63… Rg4+ $4 ( 63… Rg1 { Actually draws.} 64. Kh3 Rh1+ 65. Rh2 Rg1 66. h6 Rg6 ) 64. Kh3 Rg3+ 65. Kh4 Rg4+ 66. Kh3 Rg3+ 67. Kh4 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Thoughts on attending the Duquesne Young Artist Performance Awards Winners Showcase</title><link>https://franklinchen.com/blog/2014/03/08/thoughts-on-attending-the-duquesne-young-artist-performance-awards-winners-showcase/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/08/thoughts-on-attending-the-duquesne-young-artist-performance-awards-winners-showcase/</guid><pubDate>Sat, 08 Mar 2014 22:01:35 GMT</pubDate><content:encoded>&lt;p&gt;It turns out that a ten-year-old boy I currently give private chess lessons to is also passionate about music, and his piano teacher had him submit a recording for the annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cmcpgh.org/competitions/performanceAwards.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cmcpgh.org/competitions/performanceAwards.aspx&quot;&amp;gt;Duquesne Young Artist Performance Awards&amp;lt;/span&amp;gt; competition, and his entry happened to be one of the around thirty chosen, ranging from ages 7-16, so he gave a performance at the Winners Showcase at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.duq.edu/academics/schools/music/facilities/pnc-recital-hall&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.duq.edu/academics/schools/music/facilities/pnc-recital-hall&quot;&amp;gt;PNC Recital Hall&amp;lt;/span&amp;gt; of the Mary Papper School of Music of Duquesne University.&lt;/p&gt;
&lt;p&gt;I&apos;d seen him perform informally before, but was curious to see him on stage, and also to see other kids and where they were in their musical development and personal style, so I told his parents that I was going to attend to watch.&lt;/p&gt;
&lt;p&gt;I&apos;d never been to an event like this before, a gathering of kids who had proven at least some level of ability by winning an award. I&apos;m a latecomer to classical music, not having had much to do with it until I went to college. My younger sister did take up violin in junior high school and I went one or two of her performances with my parents, but to be frank, I was not very interested in or understanding of classical music then, so I remember almost nothing of what happened and must have snored through; all I really remember is &quot;Please let this be over&quot;.&lt;/p&gt;
&lt;p&gt;The young performers collectively actually played a decent variety of music of different eras and styles. The selections were mostly quite short, as they had to be of course because there were about thirty performers to go through in the space of less than two hours. One came up after another, with no break. It was pretty intense, actually.&lt;/p&gt;
&lt;p&gt;I enjoyed getting a taste of what all these different kids had to offer musically, and I hope it was a positive experience for all of them. There was a lot of nervousness on display, but also some really touching resolve and mature calmness as well. I was happy to see my chess student get up there and play that grand piano with flair.&lt;/p&gt;
&lt;h2&gt;Reception&lt;/h2&gt;
&lt;p&gt;Afterwards, cookies at a reception. I was hungry. I could not &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;resist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cookies-2014-03-08/cupcake.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cookies-2014-03-08/cookie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Happy 300th birthday, Carl Philipp Emanuel Bach: still underappreciated after all these years!</title><link>https://franklinchen.com/blog/2014/03/08/happy-300th-birthday-carl-philipp-emanuel-bach/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/08/happy-300th-birthday-carl-philipp-emanuel-bach/</guid><pubDate>Sat, 08 Mar 2014 17:00:49 GMT</pubDate><content:encoded>&lt;p&gt;So, today is the &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2014/03/08/267603200/a-kid-named-carl-stirs-up-the-bach-musical-dynasty&quot;&gt;300th birthday&lt;/a&gt; of &lt;a href=&quot;https://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach&quot;&gt;CPE Bach&lt;/a&gt;, one of the sons of the much more famous Johann Sebastian Bach.&lt;/p&gt;
&lt;p&gt;Unless you&apos;re a Western art music history buff, or are specifically interested in the Baroque and Classical eras, you may not even have heard of CPE Bach, which is somewhat ironic because he was actually more well-known and respected in his day than his father.&lt;/p&gt;
&lt;p&gt;Why is this composer so little recognized today? What is fascinating is that he so much influenced other composers who respected him, such as Mozart and Beethoven, but himself has kind of faded in public awareness.&lt;/p&gt;
&lt;p&gt;There is such a huge difference between Johann Sebastian Bach&apos;s music, which is so well-known now, and that of his son Carl Philipp Emanuel. The son&apos;s music was &lt;em&gt;radical&lt;/em&gt; at the time, going completely against his father&apos;s style. He privileged bizarreness, extremes of emotion, restlessness. You get the feeling that it was experimental, and it still feels that way today. I think that history does not know what to do with someone whose life work was so relentlessly experimental.&lt;/p&gt;
&lt;h2&gt;Sonata in A minor for solo flute&lt;/h2&gt;
&lt;p&gt;To celebrate CPE Bach&apos;s birthday, I made another attempt at reading through his sonata in A minor for solo flute, the second movement of which &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;I performed almost two years ago at a party&lt;/a&gt;. At the time, I was uncomfortable with how to interpret the first, slow movement, not knowing what to do with this very free music, but now, I feel liberated and happy to play this first movement, the way that I &lt;em&gt;feel&lt;/em&gt; it in the moment. I&apos;d like to think that CPE Bach would have approved the evolution of my emotional openness.&lt;/p&gt;
&lt;p&gt;I also rewatched a fine video performance of the final Allegro movement of this sonata, by Emmanuel Pahud:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/SeGcyPu-hNY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I have no clip to share of the first movement because I don&apos;t like any of the performances I&apos;ve been able to find online.&lt;/p&gt;
&lt;h2&gt;How I originally discovered CPE Bach: Freie Fantasie in F-sharp minor&lt;/h2&gt;
&lt;p&gt;I have to confess how I originally discovered CPE Bach in the first place. It happened in college, when I would regularly browse the &quot;new recordings&quot; section of one of the campus libraries. One day I spotted on the shelf a CD by &lt;a href=&quot;https://www.andreas-staier.de/&quot;&gt;Andreas Staier&lt;/a&gt; of &lt;a href=&quot;https://www.allmusic.com/album/cpe-bach-sonatas-fantasies-mw0001969795&quot;&gt;selected CPE Bach sonatas and fantasies&lt;/a&gt;. I didn&apos;t know the first thing about CPE Bach at that point, other than that he was a son of Johann Sebastian. But I noticed that the CD advertised that not only a harpsichord, but also a &lt;a href=&quot;https://en.wikipedia.org/wiki/Fortepiano&quot;&gt;fortepiano&lt;/a&gt; was used in the recording. I wanted to hear some fortepiano playing, so I checked out the CD. Up till then, I had only seen and heard the fortepiano once before, played by my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.workspacestrategies.com/bio.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.workspacestrategies.com/bio.html&quot;&amp;gt;music TA&amp;lt;/span&amp;gt; during a section meeting of a music appreciation course I took freshman year, &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;&quot;Piano Music of the 19th Century&quot;&lt;/a&gt;, when she played sections of a Brahms intermezzo on the instrument.&lt;/p&gt;
&lt;p&gt;It turned out the fortepiano was used for a particular piece on the album that caught my fancy, the Freie Fantasie (free fantasy) in F-sharp minor, which he himself titled &quot;CPE Bachs Empfindungen&quot;, or &quot;CPE Bach&apos;s feelings&quot;. As you might expect, this is a really personal, expressive piece, and I still remember finding it bewildering and bewitching in its strange harmonic changes and emotional gestures.&lt;/p&gt;
&lt;p&gt;Thanks to the miracle of YouTube, you can actually listen to the exact recording that I first discovered a quarter of century ago by Andreas Staier, right here. I&apos;ve set it to start playing at the beginning of this piece, since the entire video is actually the whole album (which is quite worth listening to, because of the brilliant harpsichord playing of the other pieces). The piece lasts from 38:35 to 49:15, just over ten minutes.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Yy9MfX1mQs0?t=38m35s&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I have heard other performances of this piece but I still think Staier&apos;s is the best, in his really getting into the improvisational and free spirit of the fantasy. By the way, I recommend Staier&apos;s recordings of all kinds of keyboard works before and after CPE Bach: I love everything I have heard from him, from Johann Sebastian Bach to Schubert. For example, here he is live, playing Schubert on a fortepiano. Check out the fantastical outburst that is part of this sonata movement (starting around 3:04).&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/TE4RNdwrWxM&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you haven&apos;t explored the music of CPE Bach, please take advantage of the &quot;publicity&quot; of his 300th birthday to check out some of his work. It still sounds daring and bold today.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: A fantasy game, move by move: White opens with fifteen pawn moves in a row!</title><link>https://franklinchen.com/blog/2014/03/06/the-chess-improver-a-fantasy-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/06/the-chess-improver-a-fantasy-game/</guid><pubDate>Thu, 06 Mar 2014 12:29:14 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;A fantasy game, move by move: White opens with fifteen pawn moves in a row!&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The 18th century chess pioneer &lt;a href=&quot;https://en.wikipedia.org/wiki/Fran%C3%A7ois-Andr%C3%A9_Danican_Philidor&quot;&gt;Philidor&lt;/a&gt; famously said, &quot;The Pawns are the soul of chess&quot;. I love my Pawns and admit to a fondness for pushing them, although the balance between aggression and overextension can be tricky.&lt;/p&gt;
&lt;p&gt;Recently, I was daydreaming when an imaginary chess game started forming in my mind, in which White started off by playing six Pawn moves in a row. Intrigued, I came up with the best plausible fantasy game I could invent that featured as many Pawn moves in a row by White as possible that were not complete garbage leading to a terrible position. I made it to fifteen moves. I thought it would be fun to share this fantasy game here. Here is a blow-by-blow summary, with the full annotated game following. I&apos;ve provided two narratives: one is move by move but the other is &lt;em&gt;Pawn by Pawn&lt;/em&gt;, telling the story from each Pawn&apos;s perspective.&lt;/p&gt;
&lt;p&gt;Reminder: this game fragment is for entertainment purposes. Don&apos;t go out and start all your games by playing fifteen Pawn moves in a row!&lt;/p&gt;
&lt;h2&gt;Move by move&lt;/h2&gt;
&lt;h3&gt;1 d4&lt;/h3&gt;
&lt;p&gt;A good opening move, gaining space and controlling the central e5 square as well as the c5 square, and enabling developing of the dark Bishop.&lt;/p&gt;
&lt;h3&gt;2 c4&lt;/h3&gt;
&lt;p&gt;A logical followup to d4, controlling the central square d5.&lt;/p&gt;
&lt;h3&gt;3 f3&lt;/h3&gt;
&lt;p&gt;An aggressive way to prepare to play e4 with a lock on the entire center because of the double control of d5.&lt;/p&gt;
&lt;h3&gt;4 d5&lt;/h3&gt;
&lt;p&gt;Invading Black&apos;s territory, gaining space.&lt;/p&gt;
&lt;h3&gt;5 e4&lt;/h3&gt;
&lt;p&gt;Completing the large center. White has made only Pawn moves but stands better in this Benoni formation.&lt;/p&gt;
&lt;h3&gt;6 cxd5&lt;/h3&gt;
&lt;p&gt;The standard aggressive recapture. exd5 was also possible.&lt;/p&gt;
&lt;h3&gt;7 g4!?&lt;/h3&gt;
&lt;p&gt;White should have started developing pieces here, to maintain a clear advantage. The threat to push back Black&apos;s Knight is not dangerous to Black.&lt;/p&gt;
&lt;p&gt;Black&apos;s Pawn move …h5 was poor and justified White&apos;s play.&lt;/p&gt;
&lt;h3&gt;8 g5&lt;/h3&gt;
&lt;p&gt;Attacking the Knight as planned.&lt;/p&gt;
&lt;h3&gt;9 h4?!&lt;/h3&gt;
&lt;p&gt;There was no reason for White to enter defensive mode and doubly protect the g5 Pawn, which was not under threat. White should have begun developing pieces.&lt;/p&gt;
&lt;h3&gt;10 a4&lt;/h3&gt;
&lt;p&gt;A standard defensive move to prevent Black&apos;s …b5 in the Benoni.&lt;/p&gt;
&lt;h3&gt;11 f4?!&lt;/h3&gt;
&lt;p&gt;White is out of control, continuing to try to attack, now aiming to go to f5 and f6.&lt;/p&gt;
&lt;p&gt;I gave Black a dubious move …a5 in order to illustrate what can happen if Pawn advances are not dealt with.&lt;/p&gt;
&lt;h3&gt;12 f5!&lt;/h3&gt;
&lt;p&gt;White continues, planning to push back Black&apos;s Bishop with f6.&lt;/p&gt;
&lt;p&gt;Black should already start thinking about possibly sacrificing a piece for two Pawns in order to forge further ahead in development as compensation.&lt;/p&gt;
&lt;h3&gt;13 exf5&lt;/h3&gt;
&lt;p&gt;Recapture.&lt;/p&gt;
&lt;p&gt;I made Black play poorly with …Na6 to give White more Pawn moves. The interesting thing is that even if Black played well at this point, White is not actually lost despite the extravagant play.&lt;/p&gt;
&lt;h3&gt;14 f6&lt;/h3&gt;
&lt;p&gt;Attacking Black&apos;s Bishop on g7. If the Bishop retreats to f8, White has a totally won game already.&lt;/p&gt;
&lt;h3&gt;15 gxf6&lt;/h3&gt;
&lt;p&gt;And after having won a Knight for two Pawns, White has run out of reasonable Pawn moves. The only Pawn that can move is the b Pawn, but it is obviously not going anywhere.&lt;/p&gt;
&lt;p&gt;Miraculously, White has a slight advantage after playing nothing but Pawn moves for fifteen moves in a row. This is not typical, but I hope Philidor would have been amused.&lt;/p&gt;
&lt;h2&gt;The lives of the eight White Pawns&lt;/h2&gt;
&lt;h3&gt;a-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced to a4 to discourage Black&apos;s b-Pawn from advancing to b5.&lt;/p&gt;
&lt;h3&gt;b-Pawn&lt;/h3&gt;
&lt;p&gt;I stayed home and did nothing.&lt;/p&gt;
&lt;h3&gt;c-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced to c4 to control the d5 center square, and I protected my neighboring d-Pawn who advanced to d5.&lt;/p&gt;
&lt;h3&gt;d-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced to d4 to control the e5 center square, and I advanced to d5 to attack more squares in enemy territory (c6 and e6).&lt;/p&gt;
&lt;h3&gt;e-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced to e4 to control the d5 center square, and further protect my neighboring d-Pawn when it advanced to d5. I helped my neighboring f-Pawn advance to f5.&lt;/p&gt;
&lt;h3&gt;f-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced all the way to f5, then with the help of my neighboring g-Pawn, made it to f6, attacking Black&apos;s Bishop on g7 and getting very close to Black&apos;s King.&lt;/p&gt;
&lt;h3&gt;g-Pawn&lt;/h3&gt;
&lt;p&gt;I advanced all the way to g5 to attack Black&apos;s Knight on f6, then helped my neighboring e-Pawn get to f6.&lt;/p&gt;
&lt;h3&gt;h-Pawn&lt;/h3&gt;
&lt;p&gt;I provided extra support to my neighboring g-Pawn on g5.&lt;/p&gt;
&lt;h2&gt;The annotated fantasy game fragment&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Franklin&apos;s imagination&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;Invented&quot;]
[Black &quot;Invented&quot;]
[Result &quot;*&quot;]
[ECO &quot;E60&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 g6 3. f3 c5 4. d5 e6 ( 4... d6 ) 5. e4 exd5 ( 5... Nxe4 $2 6. fxe4 Qh4+ 7. Ke2 Qxe4+ 8. Kf2 { White is winning. Black got two Pawns for the Knight but that&apos;s not enough here.} ) 6. cxd5 d6 7. g4 $5 ( 7. Ne2 { Could transpose into Anand-Gelfand.} ) 7... h5 $2 ( 7... Bg7 { Normal development is reasonable for Black but allows White a good game.} ) ( 7... Nfd7 $1 { Most disruptive to White, because of the threat of Qh4+.} 8. h4 ( 8. Nh3 Qh4+ 9. Nf2 Bg7 10. Na3 { A totally bizarre position. Both sides have chances.} ) 8... h5 { Tranposes into the actual game.} ) 8. g5 Nfd7 9. h4 $6 { Unnecessary waste of time here.} ( 9. Nc3 { White has a solid advantage, I&apos;d say.} ) 9... a6 ( 9... Bg7 { Black could reserve the a6 square for a Nac6, Nc7 maneuver to truly support b5.} ) 10. a4 Bg7 11. f4 $6 ( 11. Nh3 { White should develop, with a loose but still decent position.} ) 11... a5 $6 { Trying to get the Knight to a6 and then perhaps to b4.} ( 11... O-O { Develop! Natural and good.} ) 12. f5 $1 { Aiming for f6.} ( 12. Nc3 { Develop!} ) 12... gxf5 ( 12... O-O $6 { Black could just develop and sacrifice a piece for two Pawns. Miraculously, it looks like White may be able to hold.} 13. f6 Nxf6 14. gxf6 Bxf6 15. Nf3 Bg4 16. Nbd2 Na6 17. Ra3 ) 13. exf5 { A critical position.} 13... Na6 $2 { Hey, this is a fantasy game, so I made Black play poorly.} ( 13... Qe7+ 14. Qe2 f6 15. Nf3 { White looks very overextended, but miraculously, may be able to hold.} ) 14. f6 Nxf6 { Black has to sacrifice a piece.} ( 14... Bf8 $4 15. Bb5 Qc7 16. Nf3 { Black is completely paralyzed and lost.} 16... Nb4 17. g6 $1 { Cute clearance sacrifice.} 17... fxg6 18. Ng5 { And f7+ and it&apos;s all over.} ) 15. gxf6 Bxf6 16. Nf3 { White has no more reasonable Pawn moves and starts developing, but has only a small advantage because Black has compensation for the lost Knight.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Thoughts on returning to ukulele after almost two months off: returning to piano was the reason</title><link>https://franklinchen.com/blog/2014/03/05/thoughts-on-returning-to-ukulele-after-almost-two-months-off/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/03/05/thoughts-on-returning-to-ukulele-after-almost-two-months-off/</guid><pubDate>Thu, 06 Mar 2014 02:32:59 GMT</pubDate><content:encoded>&lt;p&gt;I finally made it again to the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/158392272/&quot;&gt;latest Steel City Ukuleles meetup&lt;/a&gt;, after an absence of almost two months! What happened?&lt;/p&gt;
&lt;p&gt;Part of what happened was that after the last meeting in mid-January, I had some battles with illness and fatigue and also got very busy. For whatever reason, I just plain lost interest in playing ukulele. It was like a switch flipped off. And each time a meetup came, I kind of intended to attend anyway, in hope of rekindling my interest, but it always turned out that something came up that was more important and so I missed two meetings in February that I otherwise did sign up for but canceled at the last minute.&lt;/p&gt;
&lt;h2&gt;Piano&lt;/h2&gt;
&lt;p&gt;But on a deeper level, what happened was that in mid-January, right before the last meetup I attended, I learned that a boy I have been giving private chess lessons to was progressing rapidly in piano; his mother had sent me some video clips, and he played various pieces that were dear to me. This really shook my world, because I had &quot;given up&quot; on piano many times in my life, and never studied or practiced it seriously. &lt;a href=&quot;/blog/2011/11/13/back-to-piano-too/&quot;&gt;Over two years ago, I wrote a little about this.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In particular, seeing a kid playing pieces that I never mastered made me feel deep regret that I had not stuck to teaching myself piano or getting professional instruction at some point in my life. So almost immediately upon learning about what he was up to, I decided to give piano a shot again. As a result, I completely dropped ukulele and flute, and focused my limited music time on recorder (in maintenance mode mostly) and piano.&lt;/p&gt;
&lt;p&gt;I got from the library not only the Alfred adult piano course again, but also the fantastic &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.carlhumphries.com/piano-books.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.carlhumphries.com/piano-books.html&quot;&amp;gt;Carl Humphries &quot;Piano Handbook&quot; as well as &quot;Piano Workbook&quot;&amp;lt;/span&amp;gt;. They are really good. I wish this kind of self-teaching material had existed two or three decades ago. I would have snapped it up.&lt;/p&gt;
&lt;p&gt;Anyway, I have been making more progress on piano than I ever did twenty years ago when I last really tried. This has been exciting.&lt;/p&gt;
&lt;h2&gt;Ukulele influence on piano playing&lt;/h2&gt;
&lt;p&gt;The interesting thing is that even before I started practice, I was already instantly better than ever before. I was initially surprised, but then realized that everything I&apos;ve done on ukulele has magically helped me at piano even without my touching the instrument. In particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;left hand strength and coordination came simply from playing ukulele&lt;/li&gt;
&lt;li&gt;awareness of harmonic changes and coordination with melody came from the multitasking and partial improvisation of singing and strumming simultaneously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I&apos;ve been delighted that once again, improving at one musical instrument is helping me with other instruments as well.&lt;/p&gt;
&lt;h2&gt;Piano influence on ukulele playing&lt;/h2&gt;
&lt;p&gt;All through February, I wasn&apos;t in the mood to play ukulele at all. But by March, I suddenly felt the itch to pick up the instrument again, and I did, and magically found that I was playing &lt;em&gt;much better&lt;/em&gt; than I had ever before. Again, I was initially surprised. But maybe I should not have been:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;left hand precision and flexibility was considerably improved, leading to better chord changes (with less sight) as well as much better barring and also finally nailing certain hard chords such as the basic E chord&lt;/li&gt;
&lt;li&gt;spatial awareness of moving up the fret board was improved&lt;/li&gt;
&lt;li&gt;singing and sight-reading chord changes simultaneously became much easier&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Returning to the meetup&lt;/h2&gt;
&lt;p&gt;I was having so much fun working on some songs for myself on ukulele while singing much better than ever, that I was happy to return to the Steel City Ukuleles meetup to do this with others. (Also, during the winter I confess to feeling somewhat antisocial and not excited about driving through cold, snow, and ice to meetups, frankly.)&lt;/p&gt;
&lt;p&gt;I had a great time! I especially enjoyed, in the final minutes of the session, when it was request time, that I requested &lt;a href=&quot;https://en.wikipedia.org/wiki/My_Favorite_Things_%28song%29&quot;&gt;&quot;My Favorite Things&quot;&lt;/a&gt; and we went through it. I love that song (and this was also when I noticed that I could play an E chord without much effort, actually).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scu-2014-03-05/group.jpg&quot; alt=&quot;Steel City Ukuleles&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Cookies&lt;/h3&gt;
&lt;p&gt;Someone told me that in February, she had brought in Chinese cookies from Hong Kong that her son had given her, to share with me for Chinese New Year, but I had not showed up. It was touching that I was missed.&lt;/p&gt;
&lt;p&gt;Apparently the New Year party featuring wine and snacks was so popular that every meeting since then has involved wine and snacks (including this time a bottle of wine brought by a guy whose father makes wine)!&lt;/p&gt;
&lt;p&gt;I was really hungry and ate some cookies, so here are photos according to &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;my rule&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scu-2014-03-05/cookie1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/scu-2014-03-05/cookie2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The following turned out not to really be a cookie, but was some kind of bread with cheese or something. It was not my thing, and if I had known, I would not have taken it, but once I bit into it, I had to finish it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scu-2014-03-05/cookie3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s still going to hard to juggle practicing all the instruments I have, but it&apos;s encouraging that working intensively on one seems to transfer benefits to playing another. So I&apos;m going to keep working on piano while also maintaining ukulele. I have to confess it&apos;s hard to do much with recorder or flute at the moment though. They&apos;ve been put on the back burner.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The human problem of not mentally switching gears during a long game</title><link>https://franklinchen.com/blog/2014/02/27/the-chess-improver-the-human-problem-of-not-mentally-switching-gears-during-a-long-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/27/the-chess-improver-the-human-problem-of-not-mentally-switching-gears-during-a-long-game/</guid><pubDate>Thu, 27 Feb 2014 12:04:31 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The human problem of not mentally switching gears during a long game&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;On a dark Tuesday evening, in the fourth round of the ongoing Pittsburgh Chess Club Championship, I played and won a four-hour game that I have to confess to being more embarrassed about than many of my losses.&lt;/p&gt;
&lt;p&gt;Unfortunately, sometimes that happens, to all of us. I could write it off fatalistically as &quot;it happens&quot;, but this is supposed to be The Chess Improver, and I believe that all of us can in fact continue to improve our play, myself included!&lt;/p&gt;
&lt;p&gt;Sometimes we fool ourselves and don&apos;t want to take responsibility for our poor play. Yes, there is such a thing as fatigue or a random brain glitch, but what about if we are systematically falling short? I think that as in marathon running, the late stages of a chess game, precisely when we are most tired, our true weaknesses reveal themselves. When we are feeling strong, our weaknesses may be masked. So I am taking a particular interest in correcting problems that occur in a long game.&lt;/p&gt;
&lt;h2&gt;Outline of the game&lt;/h2&gt;
&lt;p&gt;The game started out with my playing reasonably well, achieving what seemed to be a slight advantage as Black, defending an attack on my King in an Open Sicilian. At move 18, I had three choices to consider to begin a counterattack. I spent considerable energy looking at the options. One of the real drawbacks of playing the Sicilian as Black, I have found, is that to avoid getting killed you really have to do a lot of calculations, and unfortunately, as in this game, that left me with diminished mental reserves later in the game.&lt;/p&gt;
&lt;p&gt;My 18th move was actually fine, but at move 19, I panicked and decided I had enough of defending and wanted to bail out with a Queen trade. To my surprise, my opponent did not enter what would have been a favorable Queen trade for him, but tried to continue the attack! He lashed out with a series of sacrifices that were all unsound and the result was a dead lost position an exchange and Pawn down.&lt;/p&gt;
&lt;p&gt;Here&apos;s when I started playing really strangely. I was unable to switch gears into &quot;winning mode&quot;. At the very moment at which I knew I had a won game, after 29 moves, I let down my guard and somehow stayed in &quot;defensive mode&quot;. I started worrying about various things, like defending my unimportant f7 Pawn, and my time starting to run low on the clock. I played totally aimlessly and horribly, and quickly found myself in a lost position after move 33.&lt;/p&gt;
&lt;p&gt;Then in a freak stroke of luck, as I kept playing anyway, my opponent walked straight into a position in which I had an obvious perpetual check if I wanted it (and I would have taken it): except he then refused to allow the perpetual check and deviated into a horrific blunder, losing the game instantly. (I should also note that my opponent had really bad luck, as at the moment when he was drifting mentally and seemed to be taking a strange amount of time on his clock, he received a phone call, being the tournament director in charge of the chess club phone, which rang at the critical moment, distracting him for a couple of seconds as he buzzed someone into the entrance of the building!)&lt;/p&gt;
&lt;h2&gt;The main lesson&lt;/h2&gt;
&lt;p&gt;Based on my observations, we human beings have a problem with switching gears when the nature of a position changes. These are the moments when we must collect ourselves and deal with the new reality (whether it is knowing that one is now winning, or one is now losing). My belated playing on even when dead lost somehow did pay off, after all. But we must strive for better. I have thought hard about ways to improve my play and will experiment with them and share my progress (or lack of it) here in the future.&lt;/p&gt;
&lt;p&gt;Chess engines don&apos;t have this problem: give them a won position and they will easily convert. But we humans need special discipline in order to be able to stay focused during a long game.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.02.11&quot;]
[Round &quot;4&quot;]
[White &quot;Kurt Wallnau&quot;]
[Black &quot;Franklin Chen&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;2161&quot;]
[ECO &quot;B33&quot;]
[EventDate &quot;2014.02.11&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2076&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Qb6 5. Nb3 Nf6 6. Nc3 e6 7. Bd3 Be7 8. O-O d6 9. Kh1 a6 10. f4 O-O 11. Qe1 Qc7 12. a4 $6 { Weakens the b4 square as well as the Knight on b3. Later in the game we see why this is important.} 12… b6 $5 ( 12… Nb4 { Jumping into b4 immediately is more accurate.} ) 13. Qg3 { With a standard threat of f5 and Bh6.} 13… Kh8 14. Be3 Bb7 15. Rae1 Nd7 { Fighting for the e5 square and preparing Bf6 taking control of the dark diagonal.} 16. Qh3 { Threatening e5, but this can be parried.} 16… Nb4 17. f5 e5 ( 17… Ne5 { I considered giving up the e6 Pawn in return for picking up White&apos;s c Pawn. But I saw that it led to massive simplification and allows White to equalize.} 18. fxe6 Nbxd3 19. cxd3 Nxd3 20. Rb1 fxe6 21. Qxe6 Rfe8 ) 18. Rf3 $201 { White has a primitive but very annoying threat of possibly eventually getting the Rook to h3 to threaten mate. This is a critical position where Black has to decide how to press for an advantage.} 18… Nf6 { Aiming for a fully prepared d5 break.} ( 18… d5 { Thematic d5 break, but opens things up too soon to retain an advantage.} 19. Nxd5 Bxd5 20. exd5 Nxd3 21. cxd3 Nf6 { Black has survived the attack so far, and stands well, but there has been a lot of simplification.} ) ( 18… b5 { The other Pawn break was another attempt at advantage.} 19. axb5 $2 ( 19. Rg3 { Trying to continue some kind of King side attack.} 19… Nxd3 ( 19… Nf6 20. Bg5 $1 { Idea as in the actual game: remove the defender of h7.} 20… Nxd3 21. cxd3 Ne8 22. Bxe7 Qxe7 23. Na5 { Black should be able to hold, but the position is a bit scary-looking.} ) 20. cxd3 b4 ( 20… Nf6 21. Bg5 ) 21. Ne2 Qd8 { Black has to defend accurately, but it appears that he should be able to keep a small advantage because he can hold on the King side while continuing operations on the Queen side.} ) 19… Nxd3 20. cxd3 axb5 { And the b5 Pawn cannot be taken, because of White&apos;s undefended Knight on b3.} 21. Nxb5 $2 Qc2 { Black has invaded the Queen side successfully.} ) 19. Bg5 { WIth a threat of Qhf4, Rh3, Bxf6, Rxh7 mate.} 19… Qd8 $2 { I panicked and decided I wanted to bail out with a Queen trade.} ( 19… Ng8 20. Bxe7 Qxe7 { This was the obvious way to deal with the threat while retaining some advantage.} ) 20. Qh4 Ng8 21. f6 $2 { A completely unsound sacrifice.} ( 21. Bxe7 Qxe7 22. Qxe7 Nxe7 23. f6 Ng6 { White has an advantage after the Queens are off.} ) 21… Bxf6 22. Bxf6 Nxf6 23. Ref1 $2 ( 23. g4 { At least this would not continue to lose material.} ) 23… Bc8 { Preventing White&apos;s Rook from getting to h3. White&apos;s attack is over and Black has a won position.} 24. Rxf6 $4 { Going crazy in an already lost position.} 24… gxf6 { Now Black is an exchange and Pawn up.} 25. Rxf6 Be6 26. Nd5 Bxd5 $6 { Unnecessarily giving White chances. But I did not mentally switch gears, and simply reflexively traded while ahead.} ( 26… Rg8 { Taking advantage of the pin to try to remove White&apos;s Rook was the easy to way to win.} 27. Qh5 Rg7 { And then after this trade everything off.} ) 27. exd5 Nxd3 28. cxd3 Rg8 29. Qf2 { OK, Black has a totally won position. Unfortunately, at this point I breathed a sigh of relief at having weathered the King side attack, and ran out of mental energy and focus, and began to play bizarrely.} 29… Rg7 $6 { Good enough to win, but reflected a deteriorating mindset.} ( 29… Rc8 { It was best to just start active counterplay, rather than defend the useless f7 Pawn.} 30. Rxf7 $2 Rf8 { Forces a trade and easy win.} ) 30. h3 Ra7 $4 { Makes no sense to continue to defend the f7 Pawn. The Pawn means nothing, and in fact opening lines by giving it up actually benefits Black.} ( 30… Rc8 { Still wins easily with a threat of Rc2.} ) 31. Nd2 { This Knight is going to be crazy strong at e4. All of a sudden I realized the win was probably already gone.} 31… Rd7 $6 { Passive defense.} ( 31… Rg6 { Defend the d6 Pawn another way.} 32. Ne4 Rc7 { White has good drawing chances here.} ) 32. Ne4 Qa8 $4 { Not even calculating or thinking any more. Embarrassing.} ( 32… b5 ) 33. Qf5 $5 { Playing for the win.} ( 33. Nxd6 Qxd5 34. Ne8 { Dropping the d5 Pawn was playable and equal.} 34… Rg8 35. Rxb6 Rxe8 36. Qf6+ Kg8 37. Qg5+ { Draw by perpetual check.} ) 33… Rc7 $4 { Suddenly changing mind about defense and wanting to attack.} ( 33… Qd8 { Black could still defend.} ) 34. Rxd6 { A free Pawn.} 34… Re7 $4 { Random nonsense move because the original plan was obviously losing.} ( 34… Rc1+ 35. Kh2 { And there is no sensible continuation for Black.} ) 35. Rxb6 $2 ( 35. Rc6 { Game over. The Knight will come to d6 and win.} ) 35… Rc7 { Random garbage, with little time left on the clock.} 36. Qxe5 ( 36. Qf6 { More decisive.} ) 36… Qd8 37. Rd6 $4 ( 37. Rxa6 { Black doesn&apos;t actually have any threats.} ) 37… Rc1+ $4 { Pure swindling attempt.} ( 37… Qh4 { Was actually a way to possibly hold the game, with a threat of sacrificing the Queen for perpetual check with the Rook!} ) 38. Kh2 Qb8 { Hoping to make something of the pin. Now, at this point, White, the tournament director, got a phone call for the chess club. He still had ten minutes on the clock ( Black was down to about two minutes and was no longer keeping score ) , but was distracted for about ten seconds to answer the call to buzz someone into the building.} 39. h4 $6 ( 39. Ng3 { Breaking the pin won instantly.} ) 39… Rc2 40. Qf6 $4 { Apparently thinking the position warranted trying to bail out with a Queen trade with Qd8+.} 40… Rxg2+ 41. Kh3 $4 { Avoiding the perpetual check.} ( 41. Kh1 Rg1+ 42. Kh2 { Being short of time, as Black I would have taken the perpetual check here for a draw.} 42… Rg6 { I was not even going to try a winning continuation.} 43. Qd8+ Rg8 44. Qxb8 Rxb8 ) 41… Qc8+ { White looked at the board with utter disgust.} 42. Re6 fxe6 43. dxe6 Rg6 44. Qe5 Qxe6+ { Even with almost no time left on the clock this is a trivial win for Black using the 5 second time delay.} 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>OpenHack Pittsburgh: working on a private project</title><link>https://franklinchen.com/blog/2014/02/24/openhack-pittsburgh-working-on-a-private-project/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/24/openhack-pittsburgh-working-on-a-private-project/</guid><pubDate>Mon, 24 Feb 2014 23:46:39 GMT</pubDate><content:encoded>&lt;p&gt;Last month at OpenHack Pittsburgh, I had a rather &lt;a href=&quot;/blog/2014/01/27/openhack-pittsburgh-a-great-place-to-share-and-learn/&quot;&gt;social time&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/163727212/&quot;&gt;This month&lt;/a&gt;, I kept entirely to myself. I didn&apos;t even speak up to say what I was working on. I was in a somber mood, and didn&apos;t really want to talk. I worked on a private project that I will share when I am ready.&lt;/p&gt;
&lt;p&gt;It did feel consoling to be around other people, even while keeping to myself. Sometimes I just need to know that I am not alone.&lt;/p&gt;
</content:encoded></item><item><title>Cake is the same as cookie in my book so here is a photo of birthday cake</title><link>https://franklinchen.com/blog/2014/02/22/cake-is-the-same-as-cookie-in-my-book-so-here-is-a-photo-of-birthday-cake/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/22/cake-is-the-same-as-cookie-in-my-book-so-here-is-a-photo-of-birthday-cake/</guid><pubDate>Sun, 23 Feb 2014 01:44:59 GMT</pubDate><content:encoded>&lt;p&gt;Since I consider cake to be in the same category as cookies for &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;my rule&lt;/a&gt;, I had to take a photo of this slice of birthday cake.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/birthday-cake-2014-02-22.jpg&quot; alt=&quot;Slice of birthday cake&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was difficult for me to say no to a bit of cake mainly because Abby&apos;s parents had us over for dinner and this cake was for a delayed joint celebration of Abby&apos;s birthday and her father&apos;s birthday.&lt;/p&gt;
&lt;p&gt;Based on how I felt when we got home, I still think that it&apos;s best for me to avoid cake in general.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Your mission, should you choose to accept it: total restriction of activity</title><link>https://franklinchen.com/blog/2014/02/20/the-chess-improver-your-mission/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/20/the-chess-improver-your-mission/</guid><pubDate>Thu, 20 Feb 2014 12:28:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Your mission, should you choose to accept it: total restriction of activity&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In round 3 of the Pittsburgh Chess Club championship, I won a game in which the theme was total restriction of opponent activity. I have rarely played a game in which activity was so squashed, and thought it would be instructive to point out places where my opponent could have played more actively.&lt;/p&gt;
&lt;h2&gt;The opening struggle could have been sharper&lt;/h2&gt;
&lt;p&gt;The opening was a Trompowsky in which I as White got in an early d5 in response to c5, preparing for a Benoni Pawn structure &lt;em&gt;bind&lt;/em&gt; against Black. The thematic mission for White against a Black Benoni structure: restrict all activity on all wings, and eventually launch a decisive King side attack.&lt;/p&gt;
&lt;h3&gt;A Benoni Pawn structure&lt;/h3&gt;
&lt;p&gt;Black made the mistake of passively agreeing to enter the Benoni Pawn structure, rather than taking advantage of White&apos;s nonexistent piece development at move 9 by rapidly developing his Bishop to d6, which would have created a sharp struggle. White&apos;s Pawn at d5 could have been treated as a &lt;em&gt;target&lt;/em&gt; in this line.&lt;/p&gt;
&lt;h3&gt;Black&apos;s Qb4+ and b5 idea&lt;/h3&gt;
&lt;p&gt;At move 11, I made an inaccurate move, but consistent with the theme of trying to restrict Black&apos;s piece activity: I played Bd3 preventing Black&apos;s light-squared Bishop from reaching f5. But I should have allowed that possibility, because that Bishop would have been a &lt;em&gt;target&lt;/em&gt; for kicking around anyway. Instead, developing my own Bishop out early made it a potential target: Black could have immediately aimed to place a Knight on e5. I would have prevented this with f4, but at the cost of allowing Black to play Qb4+ making way for a b5 break attacking the still-fragile White c4 and d5 Pawn &lt;em&gt;targets&lt;/em&gt;. In that case, I would have chosen to forfeit castling in order to keep the &lt;em&gt;bind&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Note that if Black had played Qb4+ at move 11, not move 12 after the time-wasting f4, I would have allowed the b5 break and given up the d5 Pawn in exchange for superior development while Black wastes time with the Queen. It&apos;s very interesting how tradeoffs change depending on the deletion of a pair of moves (White playing f4 and Black developing an additional piece with Nd7).&lt;/p&gt;
&lt;p&gt;At move 13, I played f4, despite still lagging behind in development, because of the value of restricting Black from getting a Knight to e5. Again, Black could have played the Qb4+ idea, and again, forfeiting castling seems best, to neutralize the b5 threat.&lt;/p&gt;
&lt;h3&gt;Tactical oversight&lt;/h3&gt;
&lt;p&gt;I made an embarrassing tactical oversight on move 14, when I castled into a discovered check tactic with Black&apos;s Nxd5! that would have left me with a worse position. But my opponent did not see it, and on the next pair of moves, we both missed it again.&lt;/p&gt;
&lt;p&gt;My explanation is that I was in a hurry to castle. Recently, I have been punished for &lt;a href=&quot;/blog/2013/10/18/the-chess-improver-the-strange-pleasure-of-drawing-a-lost-game/&quot;&gt;mindlessly developing&lt;/a&gt; and &lt;a href=&quot;/blog/2014/02/06/the-chess-improver-how-not-to-play-with-the-bishop-pair/&quot;&gt;mindlessly castling&lt;/a&gt; rather than playing precisely in the face of concrete situations.&lt;/p&gt;
&lt;p&gt;As for h3, there my idea was again to prevent Black&apos;s light-squared Bishop from developing, to g4, but as mentioned before, it is not actually to Black&apos;s benefit to develop this Bishop only to have it be traded off anyway. In fact, in this particular kind of position, the Bishop is doing fine on c8 as a defensive piece.&lt;/p&gt;
&lt;h2&gt;Beginning the attack, risking losing the bind?&lt;/h2&gt;
&lt;p&gt;After the opening phase, as I finally developed the Knight to c3, it was clear that Black had a very difficult game. I shut down Black&apos;s Queen side play with a4 and a5.&lt;/p&gt;
&lt;p&gt;On move 20, the question was, how to proceed? The problem in chess is that when you attack, invading your opponent&apos;s territory, you risk two things:&lt;/p&gt;
&lt;p&gt;Overextending with Pawn advances, creating holes that allow your opponent&apos;s pieces to come back to life.
Allowing piece exchanges that are freeing and reduce your forces.&lt;/p&gt;
&lt;p&gt;I calculated that immediate invasion with Nf5 was tactically justified. This freed Black a little bit, but it looked accurate to strike immediately rather than attempt to &quot;prepare&quot; further with invasion, because Black always had the option of seeking counterplay on the Queen side with b6 or b5. The tactical justification for the invasion was that the most natural way for Black to try freeing his position with Nd7 and Nh4 led to a forced sequence in which the temporary Pawn sacrifice f5 gave White a favorable position.&lt;/p&gt;
&lt;p&gt;Was Nf5 the best idea, however? I don&apos;t know exactly. But my perception was that to prepare more forces for the initial invasion required me to activate the undeveloped dark-squared Bishop and the Queen Rook, but trying to use these would allow Black to proceed with b6 or b5. Then again, the resulting position would also have been favorable to me on the half-open a-file and the game would have shifted to the Queen side. I chose to fight it out immediately on the King side instead.&lt;/p&gt;
&lt;h2&gt;I made a slip, and the bind could have disappeared!&lt;/h2&gt;
&lt;p&gt;By move 25, the win was in sight, but instead of maintaining the winning bind with the nice h4 sacrifice (which cannot be accepted), I played a &quot;preparatory&quot; move Qg4.&lt;/p&gt;
&lt;p&gt;Timing is critical during an attack. Once in, you have to go all in. After having advanced my Pawn to g5, I risked having my f4 Pawn bind on e5 diverted, and in fact, Qg4 allowed Black the possibility of breaking free from the bind and establishing a Knight on e5. The resulting position would have been still difficult for Black, but the forced win would have been gone for White.&lt;/p&gt;
&lt;h2&gt;The final bind&lt;/h2&gt;
&lt;p&gt;Look at the position after 30 Nd5. I&apos;ve rarely played a game that resulted in a position like this. Black&apos;s pieces and Pawns can hardly move at all. Black&apos;s Bishop on e7 cannot move, period. In the game, Black blundered in one move, but supposing Black just marked time and waited, you can see that White can just calmly play Bd2, Bc3, Qh5, Qf7, and pick off Black&apos;s Pawn on f6 for victory. There is nothing Black can do to stop this plan, because of the total bind on the Queen side, center, and King side.&lt;/p&gt;
&lt;p&gt;Mission accomplished (but not without cooperation from Black)!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Chess being a dynamic game, it is instructive to find the critical points during a game that seemingly features total domination. There was a tactical blunder by White in the opening, and also very interesting forcing lines, and at one point in the game, a slip by White could have let Black regroup with a difficult defense, rather than lose immediately.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.01.28&quot;]
[Round &quot;3&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Vassil Prokhov&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;1873&quot;]
[ECO &quot;A45&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. Bg5 Ne4 3. Bf4 c5 4. f3 Qa5+ 5. c3 Nf6 6. d5 Qb6 7. Bc1 e6 8. e4 $1 ( 8. c4 $5 { Allows Black an interesting sacrifice.} 8... exd5 9. cxd5 c4 ) 8... exd5 9. exd5 d6 $2 ( 9... Bd6 { Black&apos;s best try to remain active.} ) 10. c4 { White is behind in development but potentially has a restricting bind.} 10... Be7 11. Bd3 $5 { I was obsessed with preventing Black development, so I stopped Bf5.} ( 11. Nc3 { Getting the Knight out already was most precise.} 11... Bf5 $2 { Developing the Bishop was not actually so good for Black anyway.} ( 11... Nbd7 $2 12. f4 { This time there are no Qb4+/b5 possibilities for Black.} ) ( 11... O-O 12. Bd3 { Black is still in a bind.} ) 12. Nge2 { While will kick back Black&apos;s Bishop anyway.} ) 11... O-O $2 { Castling is a reflex that can be dangerous when more forceful measures are called for.} ( 11... Nbd7 { Aiming straight for e5.} 12. f4 Qb4+ $1 { Aiming for a b5 break.} 13. Kf1 { Forfeiting castling was possible, neutralizing the b5 break.} ( 13. Bd2 { Possible was sacrificing the b2 Pawn for development, as in some other variations of the Trompowsky.} 13... Qxb2 14. Nc3 ) ( 13. Nc3 $2 b5 { White&apos;s center is crumbling.} ) 13... b5 14. Bd2 Qa4 15. Qxa4 bxa4 16. Nc3 { White is better.} ) ( 11... Qb4+ { An immediate b5 break does not benefit Black.} 12. Nc3 b5 13. a3 Qa5 14. cxb5 Nxd5 15. Ne2 ) 12. Ne2 Nbd7 ( 12... Qb4+ 13. Nbc3 ) 13. f4 { Preventing Ne5.} 13... Re8 $2 { Unchallenging.} ( 13... Qb4+ $1 14. Kf2 $5 { It may well be worth forfeiting castling to avoid the b5 break, because eventually Black will have to retreat the Queen anyway and White can &quot;castle by hand&quot;.} ( 14. Nbc3 b5 15. a3 Qa5 16. b3 { Black can try stuff here, but White may be able to retain a bind.} ) 14... b5 $2 15. Bd2 ) 14. O-O $2 { Sloppy move order mistake.} ( 14. Nbc3 Bf8 { Black&apos;s only real chance, I think, is to redevelop the dark Bishop.} 15. O-O g6 16. h3 Bg7 17. g4 Qd8 { Black is not lost yet.} ) 14... Nf8 $2 ( 14... Nxd5 ) 15. h3 $2 { Still missing the Nxd5 tactic, and also too much of a rush to prepare for a future g4.} ( 15. Nbc3 ) 15... Qd8 $2 ( 15... Nxd5 ) 16. Nbc3 { White&apos;s development is almost complete. Black has a very difficult game ahead.} 16... a6 17. a4 Rb8 { Queen side counterplay is going to be too slow, but it&apos;s hard to suggest something else.} 18. Ng3 { Beginning the attack on Black&apos;s King.} 18... Bd7 19. a5 { Not necessary right away, but a prophylactic move immediately restricting Black&apos;s activity seemed a good idea. Black does not have good moves. I avoid committing to a particular plan for my dark Bishop. Also, ideas of a possible Bd2 and Na4, or Bc2 and Ba4.} 19... Ng6 20. Nf5 { Getting underway quickly on the King side.} ( 20. Bd2 { I considered completing development before proceeding further, but had some concerns about wasting time weakening the b2 square and letting Black take the half-open b file.} 20... b5 21. axb6 Qxb6 ) 20... Bxf5 21. Bxf5 Nh4 $2 { A total waste of time. Black already has a lost game here!} ( 21... Nd7 { Aiming to activate the Bishop to f6.} 22. Ne4 $1 { Maintaining a bind on Black&apos;s position.} 22... Nh4 23. Bxd7 Qxd7 24. f5 $1 Nxf5 25. Qg4 g6 26. Ng3 h5 27. Nxh5 { Black&apos;s King side is falling apart.} 27... Rbd8 28. Bg5 Ng7 29. Bxe7 gxh5 30. Qxd7 Rxd7 31. Bf6 { Looks strong for White.} ) 22. Bc2 Ng6 { Else f5 will lock out the Knight.} 23. g4 Nd7 24. g5 { Locking Black out of f6.} 24... f6 25. Qg4 $2 { One slip and the bind should have disappeared.} ( 25. h4 $1 { Maintains the bind.} 25... Nxh4 $4 ( 25... Ngf8 26. Qg4 { White can complete preparing the final Pawn attack and go for it. Black can do nothing.} ) 26. Qg4 Ng6 27. Bxg6 hxg6 28. Qe6+ Kf8 29. Kg2 { With an unstoppable threat of swing the Rook over to h1 and mating on h8.} ) 25... Ndf8 $4 { Now the game is over.} ( 25... fxg5 26. Ba4 Ngf8 27. fxg5 Ne5 28. Qe4 Nfd7 29. h4 { Black is surviving for now.} ) 26. h4 Nd7 27. Bf5 Ngf8 28. Be6+ Nxe6 $2 ( 28... Kh8 29. Bf7 { White wins the exchange and the game anyway.} ) 29. dxe6 Nf8 30. Nd5 { Black is paralyzed now.} 30... Qc8 $4 ( 30... Kh8 { Suppose Black just marks time.} 31. f5 Kg8 32. Bd2 { Finally developing the Bishop!} 32... Kh8 33. Bc3 Ra8 34. Qh5 Rb8 35. Qf7 { Black&apos;s f6 Pawn is falling. Game over.} ) 31. gxf6 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Pittsburgh Recorder Society: 7-part Gabrieli and coconut chocolate cookies</title><link>https://franklinchen.com/blog/2014/02/16/pittsburgh-recorder-society-7-part-gabrieli-and-coconut-chocolate-cookies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/16/pittsburgh-recorder-society-7-part-gabrieli-and-coconut-chocolate-cookies/</guid><pubDate>Sun, 16 Feb 2014 22:41:04 GMT</pubDate><content:encoded>&lt;p&gt;Because so many people are now regularly attending the Pittsburgh Recorder Society monthly meetings, we have enough critical mass to work on larger ensemble pieces. Fred pulled out a 7-part &lt;a href=&quot;https://en.wikipedia.org/wiki/Giovanni_Gabrieli&quot;&gt;Gabrieli&lt;/a&gt; piece for us from the 16th century. Fun! I look forward to continuing working on this in March.&lt;/p&gt;
&lt;p&gt;We also continued work on other pieces we started earlier in the season. Fred&apos;s guidance is as inspiring as ever. I feel that every meeting of our group is a wonderful opportunity to grow as a musician.&lt;/p&gt;
&lt;p&gt;After going home I found a trumpet ensemble performance of the Gabrieli online:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PlfvhJPNuTE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Snacks&lt;/h2&gt;
&lt;p&gt;People brought in snacks to share, as usual, for break time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-2014-02-16/snacks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Helen made super-tasty-looking &quot;cookies&quot; (I asked if they counted as cookies, and she said yes). Coconut plus coconut plus homemade equals &lt;em&gt;difficult to resist&lt;/em&gt;!!&lt;/p&gt;
&lt;p&gt;According to &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;my new rule&lt;/a&gt;, here are the three cookies I ate.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-2014-02-16/cookie1.jpg&quot; alt=&quot;My first cookie&quot; /&gt;
&lt;img src=&quot;../../assets/images/recorder-2014-02-16/cookie2.jpg&quot; alt=&quot;My second cookie&quot; /&gt;
&lt;img src=&quot;../../assets/images/recorder-2014-02-16/cookie3.jpg&quot; alt=&quot;My third cookie&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I stopped at three, which was a good thing, because after I went home, I did feel a little bloated. I should really have eaten only two, I think. I did take one home for Abby to enjoy.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: Implicits</title><link>https://franklinchen.com/blog/2014/02/13/pittsburgh-scala-meetup-implicits/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/13/pittsburgh-scala-meetup-implicits/</guid><pubDate>Fri, 14 Feb 2014 02:45:59 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; met with Justin presenting on &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/146581402/&quot;&gt;&quot;Implicits&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Implicits&lt;/h2&gt;
&lt;p&gt;Implicits are a novel and fantastically important feature of Scala. I wish there were a comprehensive and concise single resource about them out there, but I don&apos;t actually know of one.&lt;/p&gt;
&lt;p&gt;I&apos;ve been doing stuff with implicits lately. Not long ago, I wrote a blog post that involved &lt;a href=&quot;/blog/2013/12/26/tostring-considered-harmful-part-2/&quot;&gt;using Scala implicits to avoid relying on the inherited Java &lt;code&gt;toString&lt;/code&gt; method&lt;/a&gt;. More recently, for this meetup I posted some code that I hoped someone would comment on, in which &lt;a href=&quot;https://github.com/franklinchen/test-specs2-matchers&quot;&gt;I used implicits to try to simplify a DSL&lt;/a&gt;. I&apos;m not sure this is the right design choice, but it was an experiment.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;Around 7 of us showed up.&lt;/p&gt;
&lt;p&gt;Justin did some live coding using the Scala Worksheet to demonstrate various uses of implicits.&lt;/p&gt;
&lt;p&gt;One use is to define an &quot;implicit function&quot; that can convert of a value of one type to another. This can be overused badly, unfortunately.&lt;/p&gt;
&lt;p&gt;Another is to define an &quot;implicit parameter&quot; for a function so that you don&apos;t have to explicitly pass a parameter to the function, if there is an implicit value in scope.&lt;/p&gt;
&lt;p&gt;Scala 2.10 greatly improved implicits by encapsulating the &quot;conversion&quot; pattern by means of an &quot;implicit class&quot;. Strangely, Scala Worksheet seemed to get confused when we played around and defined an implicit class that also had an implicit parameter. This led to some interesting detective work as we examined the generated JVM byte code to figure out what was going on! I thought it was useful for us to dig into this level; often it is useful to understand what something compiles to in order to better understand and appreciate a high-level language construct.&lt;/p&gt;
&lt;p&gt;Finally, we briefly discussed the type class pattern, which is arguably the most important use of implicits. This was too big a topic to get into here though.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;I posted some good resources that have popped up on my radar on Scala implicits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A fine &lt;a href=&quot;http://like-a-boss.net/2013/03/29/polymorphism-and-typeclasses-in-scala.html&quot;&gt;tutorial on type classes in Scala&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://typelevel.org/blog/2014/01/18/implicitly_existential.html&quot;&gt;Scary stuff with implicits&lt;/a&gt; that I don&apos;t understand (yet).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Justin gave a nice introduction to implicits. I think the live coding and experimentation is a great way to involve people in code suggestions and discussion of what things mean and do. It was a fun time.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: A tale of three discovered attacks: a Zwischenzug feast!</title><link>https://franklinchen.com/blog/2014/02/13/the-chess-improver-a-tale-of-three-discovered-attacks-a-zwischenzug-feast/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/13/the-chess-improver-a-tale-of-three-discovered-attacks-a-zwischenzug-feast/</guid><pubDate>Thu, 13 Feb 2014 12:12:39 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;A tale of three discovered attacks: a Zwischenzug feast!&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is a tale of three discovered attacks in a short game of mine: two that might have happened but didn&apos;t, and one that did. The two that &lt;em&gt;did not occur&lt;/em&gt; are most interesting; the one that did was trivial. Often, the most interesting and critical moments of the game are when an idea is seen but rejected after thought. Looking at only the moves played or only the final result misses the true beauty of chess. So don&apos;t be fooled by mismatched miniatures: there could still be something deep to learn from positions in these games!&lt;/p&gt;
&lt;h2&gt;Discovery 1: the fianchettoed Bishop discovery trick&lt;/h2&gt;
&lt;p&gt;Recently I wrote an &lt;a href=&quot;/blog/2014/01/23/the-chess-improver-giving-up-a-fianchettoed-bishop-to-win-a-pawn-may-not-be-worthwhile/&quot;&gt;article about the fianchettoed Bishop&lt;/a&gt;, a very important way of developing the Bishop that can be surprisingly powerful.&lt;/p&gt;
&lt;p&gt;Interestingly, I found myself playing a game as Black in the Dragon Sicilian in which at move 8, I had the opportunity to play the fianchetto discovery trick of attempting to win a Pawn by sacrificing a Knight at White&apos;s Pawn on e4, to win a White Knight back on d4 because of the discovered attack from the Bishop.&lt;/p&gt;
&lt;p&gt;To my surprise, I ended up spending an unusual amount of time looking at the position, and I decided that it was not worth playing this trick. I chose &lt;em&gt;not&lt;/em&gt; to go into the complications I saw. I didn&apos;t actually need to spent so much time on a decision, from a practical point of view, but I was enjoying the moment of exploration, since this was a game I knew I would win anyway: indeed, the actual game result was an anticlimactic and quick win, because I was playing against an opponent rated almost 700 ELO points lower than me, this being the second round of a tournament after a big first round upset in which I was held to a draw because &lt;a href=&quot;/blog/2014/02/06/the-chess-improver-how-not-to-play-with-the-bishop-pair/&quot;&gt;I didn&apos;t use my Bishops properly&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The trick doesn&apos;t always win a Pawn&lt;/h3&gt;
&lt;p&gt;Sometimes the discovery trick wins a Pawn, when the only choice is to capture the suicidal Knight and lose the piece on the discovered-attacked piece in return, or retreat the Queen from the discovery and just lose that captured Pawn without a fight.&lt;/p&gt;
&lt;p&gt;But in some cases, such as this one, a &lt;a href=&quot;https://en.wikipedia.org/wiki/Zwischenzug&quot;&gt;Zwischenzug&lt;/a&gt; can cause a cascade of rampant suicidal captures by both sides on opposite ends of the board. In particular, White has the resource 9 Nxc6 moving the attacked Knight and capturing the Black Knight on c6, attacking Black&apos;s Queen. Now Black has to go all in or lose a piece, and both sides capture the other&apos;s Queen, and finally Black&apos;s suicidal Knight has to keep going and capture a piece (White&apos;s Bishop on f1), White&apos;s suicidal Knight captures a random Pawn (Black&apos;s f7 Pawn), and then both Knights are captured. The result is that material is then even. Black has a slightly better position at the end, but nothing exciting. (Note that if not for Black&apos;s f7 Pawn, this continuation would indeed have won Black a Pawn.)&lt;/p&gt;
&lt;p&gt;Obviously, in a game against someone of equal or higher strength, if this continuation were forced, I would have gone for it, obviously. I saw this sequence in just a matter of seconds. So why did I spend half an hour thinking?&lt;/p&gt;
&lt;h3&gt;The Pawn may not be worth the loss of time and King protection&lt;/h3&gt;
&lt;p&gt;Because there was another option, clearly the one I would have played if I were White. This involved deliberately giving up the Pawn, in exchange for clear compensation, by following up with Bh6, preventing Black from castling King side. I was fascinated by this continuation and studied it even though I knew I was not going to enter it.&lt;/p&gt;
&lt;h2&gt;Discovery 2: the Queen trade Knight discovery trick&lt;/h2&gt;
&lt;p&gt;The second discovery that did not happen was one that White could conceivably used, if I as Black had walked into it. This is the Queen trade Knight discovery trick, in which White has a Queen on d2 and Black has a Queen on a5, and White plays Nd5 discovering an attack on Black&apos;s Queen and therefore forces either a trade or a Queen retreat back to d8. The discovery trick is actually usually strongest when White&apos;s King is on b1, because then a Queen trade happens without check and allows White in some cases a Zwischenzug of either Nxe7+ winning a Pawn (when Black does not have Kf8 attacking the Knight) or Nxf6+, which in some cases may be advantageous.&lt;/p&gt;
&lt;p&gt;Here, the discovery trick simply allows White to equalize. So I didn&apos;t play 10…Qa5.&lt;/p&gt;
&lt;h2&gt;Discovery 3: on the Queen&lt;/h2&gt;
&lt;p&gt;11…Nd5 won the game, as White had not removed his Queen from the potential discovered attack earlier. The forced Queen retreat allowed Black to destroy White&apos;s King protection by removing the Knight on c3 and also destroying the Pawn structure.&lt;/p&gt;
&lt;p&gt;Note that sometimes a discovery like this does not actually win. It is a question of the exact Zwischenzug opportunities and concrete position on the board. In this case, careful calculation was required before playing the discovery, in order to make sure that it won!!&lt;/p&gt;
&lt;p&gt;Look at what happens if White had played the best move, ignoring the attack on the Queen. 12 Nxd5 picks up a Black Knight. Then Black takes the Queen. But then the Zwischenzug Nxe7+ is interesting.&lt;/p&gt;
&lt;h3&gt;Black could lose!&lt;/h3&gt;
&lt;p&gt;If Black sacrifices the Queen back to regain the lost Knight, the problem is that White ends up with a double attack on Black&apos;s Bishop on d4 as well as Rook on f8, and Black is the one who is losing!! Black can save the Bishop with a Zwischenzug check …Be3+, but then White just ends up two Pawns up anyway with a won game.&lt;/p&gt;
&lt;h3&gt;But White loses&lt;/h3&gt;
&lt;p&gt;But Black can force White to win the Queen back, by calmly playing …Kg7. Then White has to do the suicidal discovery Nf5+ in order to win the Black Queen. The result is that Blacks regains the Knight, then loses back the Queen. All even, right? Wrong! Black unleashes the Zwischenzug check …Be3+ and ends up saving the Bishop while taking White&apos;s Bishop on d8.&lt;/p&gt;
&lt;h2&gt;Annotated game&lt;/h2&gt;
&lt;p&gt;In the actual game, none of the interesting discovery-generated Zwischenzug exchanges actually happened. But I had to calculate each possible sequence in order to play correctly in case they did happen. All the real action in this game happened in variations that never happened: in the first two cases, I chose not to enter a situation because it was not going to be favorable to me, and in the final case, I had to calculate that it was really going to win.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.01.21&quot;]
[Round &quot;2&quot;]
[White &quot;Kevin Kennedy&quot;]
[Black &quot;Franklin Chen&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;2161&quot;]
[ECO &quot;B70&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;1500&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 d6 3. d4 Nf6 4. Nc3 cxd4 5. Nxd4 g6 6. Bg5 Bg7 7. Qd2 Nc6 8. O-O-O $2 Nxd4 { Black is already better.} ( 8… Nxe4 $6 9. Nxe4 { White gives up the Pawn.} ( 9. Nxc6 { Alternatively, White can regain the Pawn.} 9… Nxd2 10. Nxd8 Nxf1 11. Nxf7 Kxf7 12. Rhxf1 { Black is obviously a bit better, but after the simplification, White can play for the draw. Black&apos;s Pawns are split over three islands, and the King is somewhat exposed, while White&apos;s Rooks can easily become active.} ) 9… Bxd4 ( 9… Nxd4 10. Bh6 Bxh6 11. Qxh6 Ne6 { Black will not be castling King side. White has full compensation for the Pawn down.} ) 10. Bh6 { Black is not castling King side.} ) ( 8… O-O { Perfectly reasonable.} 9. Nxc6 bxc6 10. e5 $2 Nd5 $1 { White is in serious trouble, his castled King being very unsafe.} ) 9. Qxd4 O-O 10. f3 $2 ( 10. e5 Qa5 11. f4 dxe5 12. Qxe5 Qxe5 13. fxe5 Ng4 14. Bxe7 Re8 { And Black will regain the Pawn while keeping the Bishop pair.} ) 10… Be6 ( 10… Qa5 $6 { Playable, but allows White Nd5 tricks.} 11. Qd2 Be6 12. a3 Rfc8 13. Nd5 { A classic Knight discovery trick that takes the wind out of Black&apos;s attack.} 13… Qd8 ( 13… Qxd2+ ) 14. Nxf6+ exf6 { Black will lose the d Pawn for compensation.} ) 11. h4 $4 { Loses instantly.} ( 11. Qb4 { Keeping the Queen active while leaving the diagonal was best.} ) ( 11. Qd2 Rc8 { Black has a fine position and already has a Queen side attack coming.} ) 11… Nd5 { Finally a discovered attack on White&apos;s Queen.} 12. Qd2 $4 ( 12. Nxd5 Bxd4 13. Nxe7+ Kg7 ( 13… Qxe7 $4 14. Bxe7 Be3+ 15. Kb1 Rfe8 16. Bxd6 { Black is lost, two Pawns down.} ) 14. Nf5+ { White gets the Queen back!} 14… gxf5 15. Bxd8 Be3+ 16. Kb1 Rfxd8 { The dust has cleared and Black is up a Bishop for a Pawn.} ) 12… Nxc3 13. bxc3 Qa5 14. Bxe7 Qa3+ { It&apos;s mate in 2.} 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Many faces of the bolero &quot;Dos Gardenias&quot;</title><link>https://franklinchen.com/blog/2014/02/10/many-faces-of-the-bolero-dos-gardenias/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/10/many-faces-of-the-bolero-dos-gardenias/</guid><pubDate>Tue, 11 Feb 2014 02:43:12 GMT</pubDate><content:encoded>&lt;p&gt;I encountered an intriguing article &lt;a href=&quot;https://www.npr.org/2014/02/10/274687110/brazils-maria-rita-rediscovers-her-mother-through-music&quot;&gt;&quot;Brazil&apos;s Maria Rita Rediscovers Her Mother Through Music&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Maria Rita&lt;/h2&gt;
&lt;p&gt;The name &lt;a href=&quot;https://en.wikipedia.org/wiki/Maria_Rita&quot;&gt;&quot;Maria Rita&quot;&lt;/a&gt; was familiar to me for only one reason: exactly one year ago, by coincidence, right after &lt;a href=&quot;/blog/2013/02/10/attending-j-jam-in-squirrel-hill-but-not-playing-music-in-it/&quot;&gt;attending a music performance&lt;/a&gt;, I was looking up performances of the bolero &lt;a href=&quot;https://www.pbs.org/buenavista/music/songs/dos_gardenias.html&quot;&gt;&quot;Dos Gardenias&quot;&lt;/a&gt; on YouTube, in order to see what was out there, and also to find a &quot;karaoke&quot; version I could use to practice singing to and playing the flute to (I ended up &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;playing the piece on flute a month later at a party&lt;/a&gt;), and one of the performances that struck me as notable and unusual was hers.&lt;/p&gt;
&lt;p&gt;It turns out that in this NPR program, when asked to choose a musical selection to end the program with, Maria Rita chose her recording of &quot;Dos Gardenias&quot;. You can watch a video of a live performance of hers &lt;a href=&quot;https://www.youtube.com/watch?v=4DoBORm4iyE&quot;&gt;here&lt;/a&gt; (sorry, the provider did not allow it to be embeddable). Do watch it: I found it strangely mesmerizing. It is understated compared to &quot;normal&quot; bolero style, yet expressive in its own way. Also, this video has her moving to the music while singing, eyes closed.&lt;/p&gt;
&lt;p&gt;Anyway, it turns out that Maria Rita&apos;s mother was the famous Brazilian singer &lt;a href=&quot;https://en.wikipedia.org/wiki/Elis_Regina&quot;&gt;Elis Regina&lt;/a&gt;, who died at 36. The interview was interesting because it brought up the issue of what it&apos;s like being the child of a famous musician, because if you&apos;re a musician also, then there are always comparisons and questions.&lt;/p&gt;
&lt;p&gt;But what I want to return to my real topic, which is the bolero &quot;Dos Gardenias&quot;, one of my favorite boleros ever.&lt;/p&gt;
&lt;h2&gt;Love on first listen: Ibrahim Ferrer, 1999&lt;/h2&gt;
&lt;p&gt;I first encountered &quot;Dos Gardenias&quot; through Ibrahim Ferrer&apos;s performance in &lt;a href=&quot;https://en.wikipedia.org/wiki/Buena_Vista_Social_Club_%28album%29&quot;&gt;Buena Vista Social Club&lt;/a&gt;, the film and the CD, which I came across in 2000, shortly after it came out.&lt;/p&gt;
&lt;p&gt;I still love this live performance by Ibrahim Ferrer:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/mz_01le5pMs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Here he is from the CD:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/5pKW7qvYSHU&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why I love this song&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://lyricstranslate.com/en/dos-gardenias-two-gardenias.html&quot;&gt;lyrics&lt;/a&gt; are singable and comprehensible.&lt;/p&gt;
&lt;p&gt;The harmonic structure is distinctive, because it uses both the natural minor and the altered harmonic minor (raised 7th). This gives the song both an exotic and unstable feeling, corresponding to the emotional content of the lyrics. Check out when the 7th is raised and when it is not. In addition, the 4th is augmented. All this chromaticism drives well the song&apos;s emotional content, implying various different modal regions coinciding with changes in the narrative.&lt;/p&gt;
&lt;p&gt;The melody has a good dramatic range, and has varying intervals in motion.&lt;/p&gt;
&lt;h2&gt;Antonio Machin, 1947&lt;/h2&gt;
&lt;p&gt;I&apos;m always interested in alternate performances of songs, both new and old. So I went back to the source, the great &lt;a href=&quot;https://en.wikipedia.org/wiki/Antonio_Mach%C3%ADn&quot;&gt;Antonio Machin&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/OPq2ye7hJQg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;This is faster than Ferrer&apos;s rendition. If you examine the history of bolero performance in general, you will find that things have gotten slower and more sentimental over the years.&lt;/p&gt;
&lt;p&gt;I find that there are pluses and minuses to different styles and speeds. I rather like the clarity and drama of the older faster tempo and style, but also like the room for more emotional expressiveness and freedom when slower.&lt;/p&gt;
&lt;h2&gt;Omara Portuondo, 2010&lt;/h2&gt;
&lt;p&gt;It turns out that Abby and I went to a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://trustarts.culturaldistrict.org/production/25334&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://trustarts.culturaldistrict.org/production/25334&quot;&amp;gt;concert by Omara Portuondo here in Pittsburgh on November 7, 2010&amp;lt;/span&amp;gt;, in which she performed &quot;Dos Gardenias&quot;. And someone captured that:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/9QjS2MnAfR0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;This was an interesting, very free rendition, without the usual full rhythmic backup, but instead featuring some subtle guitar accompaniment. It was different, but I did not like it so much. I think the regular structure of the song, the way the lyrics fit into the movement, makes it work better when the original motoric bolero rhythm is maintained, with the harmonic motion driving the narrative.&lt;/p&gt;
&lt;h2&gt;Lucrecia, 1996&lt;/h2&gt;
&lt;p&gt;Here&apos;s a random other performance I found. I didn&apos;t like it at all. The phrasing seems all weird and distorted, and the song&apos;s been reharmonized strangely also.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/zgoEHFgwGes&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Sertab Erener, 2007&lt;/h2&gt;
&lt;p&gt;I liked the performance of this Turkish pop singer Sertab Erener. She includes some distinctive middle Eastern styling that are unusual for this Cuban music, but her musicality cannot be denied. (Unfortunately, the &quot;dance&quot; sequences in this video are not at all bolero. Ignore the video.)&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/d-0SKj7AjZg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;What can I say, I&apos;m obsessed with this beautiful bolero. However you like this song interpreted, it&apos;s a must-listen.&lt;/p&gt;
&lt;p&gt;I haven&apos;t sung it outside my home yet, but I guess I should get around to it, maybe at a party in the near future.&lt;/p&gt;
&lt;h2&gt;Postscript on Elis Regina&lt;/h2&gt;
&lt;p&gt;Check out Maria Rita&apos;s mother, Elis Regina, singing the famous bossa nova song &quot;Triste&quot; in 1976:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/5wiJPgmEqR0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: How not to play with the Bishop pair</title><link>https://franklinchen.com/blog/2014/02/06/the-chess-improver-how-not-to-play-with-the-bishop-pair/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/06/the-chess-improver-how-not-to-play-with-the-bishop-pair/</guid><pubDate>Thu, 06 Feb 2014 12:04:58 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;How not to play with the Bishop pair&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the first round of the annual Pittsburgh Chess Club Championship, I played a game as White in which my aim out of the opening was to acquire the Bishop pair against the Nimzo-Indian and nurse it to victory, as I have done many times successfully before. Unfortunately, I played carelessly and ended up drawing against an opponent 500 ELO points lower than me! (Rounds 2 and 3 have been played, and featured higher-quality chess, thankfully.)&lt;/p&gt;
&lt;p&gt;On the principle that poorly played games can be instructive, I decided to write about how &lt;em&gt;not&lt;/em&gt; to play with the Bishop pair. More accurately, I&apos;ll show that although White had a clear advantage during much of the game, White missed many chances to increase or maintain the advantage, for various reasons.&lt;/p&gt;
&lt;p&gt;I&apos;ve also included the game score for a very recent interesting game from the Gibraltar Masters 2014 featuring the use of the Bishop pair, so that you can look at it and make comparisons, point by point, with the themes in question. This was a game in which White got the Bishop pair and built up an overwhelming position but also lost the thread.&lt;/p&gt;
&lt;h2&gt;Falling behind in development&lt;/h2&gt;
&lt;p&gt;One important theme when deliberately playing for the Bishop pair is that of falling behind in development. Nothing comes for free in chess; everything is a matter of tradeoffs. The Qc2 variation of the Nimzo-Indian is particularly extreme, in that White chooses to spend three moves to get the Bishop pair without getting a weakened Pawn structure: Qc2 protects the Knight on c3, a3 causes the Black Bishop to capture the Knight, and then Qxc3 recaptures with the Queen. Three moves is a lot to invest for obtaining a long-term advantage of the Bishop pair.&lt;/p&gt;
&lt;h2&gt;Close or open the position?&lt;/h2&gt;
&lt;p&gt;There is a principle that is often taught, that open positions favor the Bishop pair, and closed positions favor Knights. However, this assumes that one&apos;s King is safe. If one&apos;s King is not safe, then an open position may well be &quot;good&quot; for a Bishop but bad for the King! Often, the correct thing to do when one has the Bishop pair but is behind in development is to keep the Pawn structure semi-closed, to buy time to complete development and King safety before then proceeding to open up the way for the Bishops.&lt;/p&gt;
&lt;p&gt;Unfortunately, in this game I played carelessly and on autopilot to hasten to complete development and castle, rather than attend to the &lt;em&gt;immediate&lt;/em&gt; situation on the board. After Black&apos;s slow b6 development, not only was there a tactical shot I missed against c7, but even beside that, there were opportunities to &lt;em&gt;fix Black&apos;s Pawn structure&lt;/em&gt; with cxd5 in order to close off the activity of Black&apos;s remaining Bishop, before proceeding with King side development. This would have guaranteed a very solid advantage.&lt;/p&gt;
&lt;h2&gt;Being pushed back to save the Bishop pair&lt;/h2&gt;
&lt;p&gt;After all the inaccuracies, the position after 17 Be1 is still instructive, because this type of position actually does occur frequently when one side does what it takes to keep the Bishop pair. Often it is correct to retreat, even as far back as the back rank, with a Bishop, to save it. Part of playing with the Bishop pair means being patient, temporarily losing the initiative and becoming defensive, in order to wait until your opponent&apos;s activity runs out, and then spring back out.&lt;/p&gt;
&lt;h2&gt;Loss of patience&lt;/h2&gt;
&lt;p&gt;Unfortunately, in this game, I lost patience at move 21, when I decided on a plan to &quot;free&quot; my position by opening it up with e4. This was a mistake that resulted in a prematurely open position where Black already had more active pieces. It doesn&apos;t matter whether you have the Bishop pair or not if your own pieces are not all active and coordinated.&lt;/p&gt;
&lt;h2&gt;Accuracy&lt;/h2&gt;
&lt;p&gt;Inaccuracies by both sides after the position opened up show how potentially powerful even a Bishop against Knight can be in the late stages of a game. 29 Qe4 for White would have protected vulnerable squares and really showcased the latent power of White&apos;s remaining Bishop against Black&apos;s Knight.&lt;/p&gt;
&lt;p&gt;In conclusion, although this was quite an uneven game, I think it is instructive to look at the turning points in order to consolidate lessons on how &lt;em&gt;not&lt;/em&gt; to squander the advantage of the Bishop pair.&lt;/p&gt;
&lt;h2&gt;Two complete games&lt;/h2&gt;
&lt;h3&gt;My game&lt;/h3&gt;
&lt;p&gt;My complete game is below (and also features some egregious errors in the time scramble at the end, which luckily still led to a Rook vs. Queen fortress draw).&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2014 Pittsburgh Chess Club Championship&quot;]
[Site &quot;Pittsburgh&quot;]
[Date &quot;2014.01.14&quot;]
[Round &quot;1&quot;]
[White &quot;Franklin Chen&quot;]
[Black &quot;Finn Overlie&quot;]
[Result &quot;1/2-1/2&quot;]
[BlackElo &quot;1637&quot;]
[ECO &quot;E32&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2161&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 O-O 5. a3 Bxc3+ 6. Qxc3 d5 7. Bg5 h6 8. Bh4 Nbd7 $6 { Passive.} 9. e3 { Maintaining the center tension.} ( 9. cxd5 { Fixing the Pawn structure immediately was possible but did not seem to offer much.} ) 9… b6 $2 { This loses a Pawn.} 10. Nf3 $2 { Allows Black a reasonable game.} ( 10. cxd5 { I saw this move, but for some reason, missed Bg3.} 10… exd5 11. Qc6 Rb8 12. Bg3 ( 12. Rc1 $2 { This was the move I looked at, and it seemed not to win, so I abandoned the whole cxd5 idea.} 12… Bb7 13. Qxc7 $4 Rc8 14. Qxd8 Rxc1+ 15. Kd2 Rxf1 { And Black wins!} ) ) 10… Bb7 11. Be2 $6 { Too passive.} ( 11. cxd5 { This was the last chance to try to achieve something out of the opening by fixing the Pawns.} ) 11… Qe8 $6 12. O-O $6 { White was in a hurry to simply complete development. This has been achieved but was not the best plan.} ( 12. cxd5 ) 12… c5 $6 ( 12… Ne4 { Activating the Knight first was best.} ) 13. dxc5 $2 ( 13. Nd2 { Preventing Black&apos;s Ne4 would have saved a lot of trouble.} ) 13… Ne4 14. Qc2 bxc5 $2 { There was no need to create a weak c5 Pawn and a weak a7 Pawn.} ( 14… Ndxc5 15. b4 Na4 { Black is active and fine.} ) 15. Nd2 $201 { After a lot of inaccuracies by both sides, White is finally better and consolidating the Bishop pair advantage.} 15… f5 $6 { Maintaining the Knight on e4 for now, but creating some serious positional weaknesses.} 16. f3 { Ambitious and good but not best.} ( 16. Nxe4 { Removing the Knight was possible and fine.} ) 16… Qh5 $5 { Totally unexpected.} 17. Be1 { Preserving the Bishop pair.} ( 17. fxe4 { It was possible to simply enter the complications and win a Pawn, but I did not feel like that.} 17… Qxe2 18. cxd5 exd5 19. Rae1 ) 17… Nxd2 18. Bxd2 Rf7 $201 { White has a clearly better position, with the Bishop pair. This is a dream position for the White side of the Nimzo-Indian.} 19. b4 Rc8 20. cxd5 cxb4 { Where to move the Queen?} 21. Qd1 $6 { Too passive. The idea was to play e4, but that only opened up weakness in White&apos;s dark squares.} ( 21. Qb2 Bxd5 22. axb4 Nb6 23. Rfc1 { White dominates. Black&apos;s Knight activity has been contained, and eventually White&apos;s dark-squared Bishop will become very important, possibly going to c3, or possibly to b4 after b5, or even Be1 then Bg3.} ) ( 21. Qa4 Bxd5 22. Qxb4 Nb6 ) 21… Bxd5 22. axb4 Nb6 23. e4 { The whole idea behind Qd1.} 23… Bc4 24. exf5 Qxf5 $201 { White&apos;s advantage is slipping.} 25. Ra5 $2 { Slipping into an even but dangerous position.} ( 25. Rf2 Nd5 ) 25… Bxe2 $6 ( 25… Qf6 ) 26. Qxe2 Qf6 27. Be3 Nd5 $201 { A critical moment in the game. The right thing to do was allow the Queen side Pawns to drop, and retain some advantage with the Bishop versus the Knight, but winning chances were looking slim.} 28. Bc5 $2 { I totally missed the d4 tactic here.} ( 28. Bxa7 Nxb4 29. Bf2 Nd5 30. Bg3 Qd4+ 31. Kh1 Qc4 { I did not see winning chances here.} ) 28… Rfc7 $2 ( 28… Nxb4 ) 29. Re1 $2 ( 29. Qe4 { White could have covered the d4 square with a large advantage.} ) 29… Nxb4 { Oops, Black saw the tactic. Now it&apos;s clearly a draw.} 30. Bxb4 Qd4+ 31. Kf1 Qxb4 $2 $201 ( 31… Rc2 32. Bd2 Qxd2 33. Rxa7 { This is clearly a draw.} ) 32. Rxa7 $2 { Wrong move order.} ( 32. Qxe6+ Kh7 33. Rxa7 Qb5+ 34. Re2 $201 { I was aiming for this position, with at least some winning chances being a Pawn up ( but it really is a draw anyway ) .} ) 32… Rc1 $5 { Refusing the draw.} ( 32… Qxe1+ 33. Qxe1 Rc1 34. Qxc1 Rxc1+ 35. Kf2 $201 { Draw.} ) 33. Qxe6+ Kh8 34. Re7 $2 ( 34. Ra1 { Protects everything, for the draw.} ) 34… Qb5+ 35. Qe2 $4 { Crazy blunder hanging the Queen.} ( 35. Kf2 R8c2+ 36. Re2 Qc5+ 37. Kg3 Rxe2 38. Re8+ Kh7 39. Qxe2 Qg5+ 40. Kh3 { Draw.} ) 35… Rxe1+ 36. Kxe1 Qb1+ 37. Kf2 Rc2 38. Qxc2 { I offered a draw with this move.} ( 38. h3 { There was no need to take the Rook.} ) 38… Qxc2+ 39. Re2 Qc5+ 40. Kg3 $4 { Careless.} ( 40. Kf1 ) 40… g5 ( 40… Qd6+ { This causes White a lot more trouble.} 41. Kh3 g5 42. g4 ) 41. h3 { Now the fortress is easy.} 41… Kg7 42. Re4 { Fortress established.} 42… h5 43. Kh2 Kf6 44. Kh1 Kf5 45. Kh2 Qd6+ 46. Kg1 g4 $4 47. hxg4+ hxg4 48. Rxg4 { I offered a draw again.} 48… Qd1+ 49. Kf2 Qd2+ 50. Kg1 Qe1+ 51. Kh2 Qf2 52. Kh1 Qf1+ 53. Kh2 Kf6 54. Kg3 Qh1 55. Kf2 Qh2 56. Ke3 { Black offered a draw, accepted.} 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Agdestein vs. Tan Zhongyi, Gibraltar Masters 2014&lt;/h3&gt;
&lt;p&gt;In this game, White fell behind in development upon acquiring the Bishop pair but kept the position closed, until Black riskily opened it, after which White caught up, starting with 23 Ne3, rapidly mobilized the last developed piece, the dark-squared Bishop, and then had a win in sight but blew it.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Gibraltar Masters 2014&quot;]
[Site &quot;Caleta ENG&quot;]
[Date &quot;2014.01.30&quot;]
[Round &quot;3.13&quot;]
[White &quot;Agdestein,S&quot;]
[Black &quot;Tan Zhongyi&quot;]
[Result &quot;1/2-1/2&quot;]
[WhiteElo &quot;2627&quot;]
[BlackElo &quot;2483&quot;]
[ECO &quot;B30&quot;]
[EventDate &quot;2014.01.28&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 Nc6 3. Bb5 d6 4. O-O Bd7 5. Re1 Nf6 6. c3 a6 7. Bf1 Bg4 8. h3 Bxf3 9. Qxf3 e6 10. Qg3 Nh5 11. Qe3 Be7 12. Na3 O-O 13. Nc2 Bg5 14. Qe2 Nf6 15. g3 d5 16. h4 Bh6 17. e5 Nd7 18. f4 c4 19. d4 cxd3 20. Qxd3 Nc5 21. Qf3 f6 22. exf6 Qxf6 23. Ne3 Ne5 24. Qh5 Nf7 25. Ng4 Qd8 26. Bg2 Kh8 27. Be3 Nd3 28. Bd4 Bxf4 29. Rxe6 Bxg3 30. Nf6 Nh6 31. Rf1 Bf4 32. Rxf4?? (32. Nxh7! { Wins with unstoppable threats against the Knight on h6. }) Nxf4 33. Qxh6 Rxf6 34. Bxf6 Nxe6 35. Bxd8 gxh6 36. Bf6+ Kg8 37. Bxd5 Kf7 38. Be5 Rg8+ 39. Kf2 b5 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Celebrating the Lunar New Year at Tram&apos;s Kitchen</title><link>https://franklinchen.com/blog/2014/02/01/celebrating-the-lunar-new-year-at-trams-kitchen/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/02/01/celebrating-the-lunar-new-year-at-trams-kitchen/</guid><pubDate>Sun, 02 Feb 2014 04:34:15 GMT</pubDate><content:encoded>&lt;p&gt;Welcome to the year of the horse!&lt;/p&gt;
&lt;p&gt;Although Abby and I don&apos;t regularly celebrate &lt;a href=&quot;https://en.wikipedia.org/wiki/Lunar_New_Year&quot;&gt;Lunar New Year&lt;/a&gt; (most prominently called &lt;a href=&quot;https://en.wikipedia.org/wiki/Chinese_New_Year&quot;&gt;Chinese New Year&lt;/a&gt;), I figured that we might as well do something this time around, by going out to eat Asian food.&lt;/p&gt;
&lt;h2&gt;Lawrenceville&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/lawrenceville.jpg&quot; alt=&quot;Lawrenceville&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Since it was warm out (over 40 degrees Fahrenheit!), I decided we should go out for an urban hike and end with a meal. We drove to Lawrenceville, where I planned for us to check out a Thai place we hadn&apos;t been to before, &lt;a href=&quot;https://www.pusadeesgarden.com/&quot;&gt;Pusadee&apos;s Garden&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We walked around a bit, and saw a strange amount of abandoned footwear. Some samples:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/footwear1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/footwear2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;p&gt;When we went to Pusadee&apos;s Garden, we found that the place was closed for vacation (I think it&apos;s time to remember to call a restaurant before going out to it)! So we came up with an alternate plan and went to &lt;a href=&quot;https://web.archive.org/web/20130920143149/https://plus.google.com/112255117327511933462/about&quot;&gt;Tram&apos;s Kitchen&lt;/a&gt;, which I&apos;ve gone to periodically since moving to Pittsburgh over fifteen years ago, when it was the only Vietnamese place in town (there are more now, some of which we&apos;ve sampled). It&apos;s a hole-in-the-wall place that still doesn&apos;t have its own Web site!&lt;/p&gt;
&lt;p&gt;We shared a pho (noodle soup) and a large vegetable/meat appetizer. Filling and pretty good.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/horses.jpg&quot; alt=&quot;Horses&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/pho.jpg&quot; alt=&quot;Pho&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/trams-kitchen-2014-02-01/appetizer.jpg&quot; alt=&quot;Appetizer&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>First time in my life not eating cookies or cake at a party</title><link>https://franklinchen.com/blog/2014/01/31/first-time-in-my-life-not-eating-cookies-or-cake-at-a-party/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/31/first-time-in-my-life-not-eating-cookies-or-cake-at-a-party/</guid><pubDate>Sat, 01 Feb 2014 04:11:21 GMT</pubDate><content:encoded>&lt;p&gt;I was at a birthday party. There were cookies of various varieties around. Also, there was a birthday cake. I did not eat the cookies or the cake.&lt;/p&gt;
&lt;p&gt;I have to say this was a first for me. Usually, my rule at parties is &quot;anything goes&quot;. But it was time to admit that this rule caused many problems. If I load up on junk food at a party, I end up feeling crappy afterwards: maybe bloated, maybe sleepy, but in any case, I end up being a &lt;em&gt;worse guest&lt;/em&gt; to be around. And after going home I don&apos;t feel well either.&lt;/p&gt;
&lt;p&gt;This is exactly what happened to me just two days ago at a party where &lt;a href=&quot;/blog/2014/01/29/my-no-cookie-rule-a-photo-update/&quot;&gt;I ate two cookies unnecessarily&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Good food to drive out the bad&lt;/h2&gt;
&lt;p&gt;There was plenty of good, healthy food at the party: the hosts provided great appetizers and entrees, and guests made and brought in delicious contributions also. There was no reason to pig out on the junk.&lt;/p&gt;
&lt;p&gt;For example, a salad Abby assembled when we arrived at the party:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/abby-salad.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Future&lt;/h2&gt;
&lt;p&gt;My job is not yet done. It turns out that at the party, although I mostly ate healthy food, I also ate pita chips and similar bready items along with hummus that left me not feeling optimal.&lt;/p&gt;
&lt;p&gt;So I&apos;m extending my rule to these bready chip things also. Note that I have not yet banned potato chips or corn tortilla chips!&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: 9 lessons to learn from Bill Gates&apos; 9 move loss to Magnus Carlsen</title><link>https://franklinchen.com/blog/2014/01/30/the-chess-improver-9-lessons-to-learn-from-bill-gates-9-move-loss-to-magnus-carlsen/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/30/the-chess-improver-9-lessons-to-learn-from-bill-gates-9-move-loss-to-magnus-carlsen/</guid><pubDate>Thu, 30 Jan 2014 12:15:35 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;9 lessons to learn from Bill Gates&apos; 9 move loss to Magnus Carlsen&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Recently a video went viral online of Bill Gates losing a blitz chess game in nine moves to the new World Chess Champion Magnus Carlsen, getting checkmated quickly:&lt;/p&gt;
&lt;h2&gt;The truth is deeper than it seems&lt;/h2&gt;
&lt;p&gt;Non-chess-playing friends of mine enjoyed forwarding me links to this. Their general impression was, ha, of course the nine-move checkmate makes sense given the gross mismatch in strength between Bill Gates and the world champion! You can also look at the YouTube video&apos;s comments to get an idea of what a lot of people thought of the video.&lt;/p&gt;
&lt;p&gt;I watched the game and noticed some very interesting features, on multiple levels, and came up with the idea of &quot;9 lessons for 9 moves&quot;, because it is hard to get an accurate picture of what serious chess is like through typical media portrayal that shows moves being made, and maybe plays up drama, but does not &lt;em&gt;explain&lt;/em&gt; what happened, or what &lt;em&gt;could have happened instead&lt;/em&gt;, or what players were thinking: all this is left invisible. This Gates-Carlsen encounter is no exception. The comments from non-chess-playing friends made me feel the need to give a deeper picture. The main misconception that bothered me was that a world champion should be able to win a game against someone in nine moves. But it&apos;s not so simple. In fact, I found amazing depths in the truth of what happened.&lt;/p&gt;
&lt;p&gt;This article will actually be directed at three different audiences, simultaneously, through a separation of levels of observation:&lt;/p&gt;
&lt;p&gt;Those who do not play chess or vaguely know the rules but do not play regularly
Those who do play regularly and have chess tournament experience, but are below an expert level
Those who are at expert or master level&lt;/p&gt;
&lt;p&gt;The entire game, along with supporting variations, is embedded here so that you can click through what happened as well as what could have happened but didn&apos;t. My detailed explanations follow after this embedded interactive board.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;?&quot;]
[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;Bill Gates&quot;]
[Black &quot;Magnus Carlsen&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;B00&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 Nc6 { An unusual reply for Black, the Nimzovich Defense, usually considered not very good, and not played often.} 2. Nf3 { OK, but not most challenging.} ( 2. d4 { Grabbing the center is the most challenging reply.} ) 2… d5 { Entering a type of Scandinavian Defense.} 3. Bd3 $2 { A poor move that defends the attacked e4 Pawn but blocks the d Pawn and also makes the Bishop a target for attack.} 3… Nf6 $6 ( 3… Nb4 { The best reply for Black is to immediately take advantage of White&apos;s poorly placed Bishop, not only winning the Bishop pair by force, but also ruining White&apos;s Pawn structure.} ) 4. exd5 ( 4. e5 Nd7 5. Bb5 a6 6. Bxc6 bxc6 7. d4 e6 ) 4… Qxd5 { Actually the best recapture in this particular situation.} ( 4… Nxd5 { Also reasonable.} ) 5. Nc3 Qh5 $1 { This is trappy move, hoping White will castle King side and allow an attack there.} ( 5… Qd6 { A safer retreat square, resulting in a more normal middle game typical of the Scandinavian Defense.} ) 6. O-O ( 6. Nb5 { White could have tried to punish Black for the Queen being away from defense of the c7 Pawn.} 6… Nd5 $1 ( 6… Kd8 $2 { Black gives up castling.} ) 7. c4 Nf4 8. Bf1 Bg4 9. d4 e5 { With huge complications in which Black seems fine and has winning chances.} ( 9… O-O-O { A safer option in which Black looks OK but I think I&apos;d rather be White.} 10. Bxf4 e5 11. Be2 exf4 12. O-O ) 10. Nxc7+ Kd8 11. Nb5 ( 11. Nxa8 $2 { Snatching the Rook is bad.} 11… e4 ) 11… Bb4+ 12. Nc3 Bxf3 13. Qxf3 Qxf3 14. gxf3 exd4 15. Bxf4 dxc3 16. O-O-O+ Ke7 ) ( 6. Be2 { Immediately unblocking the d Pawn to continue development was probably best.} ) 6… Bg4 { Black clearly has a good game now, with smooth development, pressure on White&apos;s King side, and Queen side castling to come.} 7. h3 $2 ( 7. Be2 { Best, to prevent doubled f Pawns and break the pin of the Knight.} ) 7… Ne5 $4 { A losing move that an aggressive beginner might play.} ( 7… Bxf3 { Doubling White&apos;s f Pawns gave Black a clear advantage.} 8. Qxf3 Qxf3 9. gxf3 O-O-O ) 8. hxg4 ( 8. Be4 Nxf3+ 9. Bxf3 Bxf3 10. Qxf3 ) 8… Nfxg4 { White has won a Bishop for a Pawn. Black&apos;s only hope is to remove White&apos;s Knight from defending the mating square on h2.} 9. Nxe5 $4 { White falls for the trap.} ( 9. Re1 { There is no mate for Black on h2, because White&apos;s King can escape to f1 and then e2. With a piece up, White has a won game.} 9… Nxf3+ 10. Qxf3 Qh2+ 11. Kf1 Qh1+ 12. Ke2 { Oops, White&apos;s King has escaped! Black is completely dead. I show a complete plausible continuation for the sake of those of you who are not so familiar with chess and want to see how a won game is won.} 12… Qh5 { Protecting the Knight on g4.} 13. Bb5+ c6 ( 13… Kd8 $4 { Loses instantly to forced mate.} 14. Qd3+ Kc8 15. Qd7+ Kb8 16. Qd8# ) 14. Bxc6+ { A combination that wins a Rook and three Pawns for one Bishop.} 14… bxc6 15. Qxc6+ Kd8 16. Qxa8+ Kd7 17. Qxa7+ Kd8 18. Qa8+ Kd7 19. f3 { Preventing a discovered check and attacking Black&apos;s Knight.} 19… Nf6 20. Qb7+ Kd8 21. Nb5 { Threatening mate in 2 with Qc7+ and Qc8#.} 21… Qc5 { Protecting the c7 square to avoid mate.} 22. Na7 { Threatening a mate with Nc6+ and if …Ke8, then Qc8#.} 22… Qc7 { Giving the Black King an escape square d7.} 23. Nc6+ Kd7 24. Ne5+ Kd8 25. Nxf7+ { Forking the King and the Rook on h8.} 25… Kd7 26. Qxc7+ Kxc7 27. Nxh8 { And White is up by two Rooks and three Pawns. The game is effectively over. It may take 20 more moves to force checkmate, but it is inevitable.} ) 9… Qh2# 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Lesson 1: Why Carlsen played a bad chess opening&lt;/h2&gt;
&lt;p&gt;The first observation to make is that Bill Gates probably knows how to play a basic chess opening as White. Very popular, for example, is to play 1 e4, as Gates in fact did (the late Bobby Fischer&apos;s favorite), and then if Black symmetrically plays 1…e5, White plays 2 Nf3 attacking Black&apos;s Pawn, then Black usually defends with 2…Nc6, and then White plays 3 Bb5 attacking that Knight. This would be the famous &lt;a href=&quot;https://en.wikipedia.org/wiki/Ruy_Lopez&quot;&gt;Spanish Opening&lt;/a&gt;, also known as the &quot;Ruy Lopez&quot;, after the Spanish priest of the 16th century (yes, chess wisdom goes way back!) who made a systematic study of this opening.&lt;/p&gt;
&lt;p&gt;Carlsen plays both colors of this opening: in the recent World Championship match against Anand, for example, he played the Black side repeatedly with success in three games, drawing two and winning one.&lt;/p&gt;
&lt;p&gt;But in this game against Gates, he did not play this opening. Instead, he played an opening that is usually considered unusual and not so good, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Nimzowitsch_Defence&quot;&gt;Nimzovich Defense&lt;/a&gt;. Why?&lt;/p&gt;
&lt;p&gt;The short answer: because by &lt;em&gt;playing the best moves&lt;/em&gt;, Carlsen would have risked taking &lt;em&gt;much longer&lt;/em&gt; to win a game against Gates. If you are a seasoned chess player, especially if you play blitz, you understand this. If you are not a chess player, or do not know much beyond the rules, this may puzzle you: how could playing better lead to winning much more slowly? The answer is that games are not won so much as lost.&lt;/p&gt;
&lt;p&gt;Here&apos;s an analogy. Suppose you find yourself being attacked by someone and you need to defend yourself. Do you put up your best blocks, and attack back with proper form, making sure to stay safe? Or do you do one of those risky roundhouse kicks you see in the movies, where you could get in a lot of trouble if you failed? Doing the &quot;right&quot; thing does not make for entertaining and short action movie scenes. So that&apos;s what happened in this game: Carlsen gambled that Gates would not know how to play properly, and played an opening with an intention of possibly unleashing that roundhouse kick.&lt;/p&gt;
&lt;h2&gt;Lesson 2: Chess is psychological warfare&lt;/h2&gt;
&lt;p&gt;Gates seemed confused by the Nimzovich Defense. On move 2, he makes a perfectly good move, but the move Carlsen clearly had wanted to see. Gates was on autopilot, playing the Knight out to f3 as though Carlsen had played 1…e5 instead. There were other options. 2 d4 would also have allowed Carlsen to continue his game plan of advancing with 2…d5, but 2 Nc3 would have stopped that plan and made the game probably much, much longer.&lt;/p&gt;
&lt;p&gt;Contrary to the popular misconception of chess as pure logic, it is actually primarily a psychological sport, in which knowing how the opponent might react is a valuable part of being competitive. This is true at the highest levels as well as in casual blitz chess. Carlsen won his world title last year largely on the basis of thwarting Anand psychologically, refusing to play &quot;good&quot; openings that he knew Anand would be prepared for, and playing bland openings instead. Here, in a flashy game against Gates, he took the opposite approach, deliberately playing a &quot;bad&quot; opening that expected Gates not to be prepared for.&lt;/p&gt;
&lt;h2&gt;Lesson 3: Refusing to play the best move because it may win too slowly&lt;/h2&gt;
&lt;p&gt;Gates played a poor move 3, being defensive in a position in which he could have seized an &lt;em&gt;advantage&lt;/em&gt; aggressively by capturing Black&apos;s Pawn on d5.&lt;/p&gt;
&lt;p&gt;However, Carlsen refused to punish this poor move. The obvious punishing move, that most club players would see and play, is 3…Nb4, attacking the White Bishop, and in fact winning it in exchange for the Knight, because if the Bishop moves, then White loses the Pawn on e4 that the Bishop is defending.&lt;/p&gt;
&lt;p&gt;Again, this goes back to psychology. If Carlsen had played the obvious and best move, the game could have taken much longer to win. It would have been a matter of gaining a permanent advantage by winning the Bishop pair and ruining White&apos;s Pawn structure on the d file, and then pressing further until victory.&lt;/p&gt;
&lt;p&gt;If you look back at the video, you can see Carlsen hesitating before playing the &quot;worse&quot; move. In a real game against a real opponent, there is no doubt he would have instantly whipped out the strong 3…Nb4, no hesitation.&lt;/p&gt;
&lt;h2&gt;Lesson 4: The appeal of open vs. closed games&lt;/h2&gt;
&lt;p&gt;The gamble worked, because Gates took the Pawn on d5 on move 4, and Carlsen brought out his Queen, as he had intended from the very moment he played his very first opening move!&lt;/p&gt;
&lt;p&gt;Note that Gates could have played e5 &lt;em&gt;closing&lt;/em&gt; the position, to reach a perfectly decent game for White. In fact, I believe many club players would have instinctively played e5, in analogy with fundamental positions in the French Defense. Click through the embedded game board for a logical continuation of the game if Gates had played e5. Note that after White gets in d4 and Black gets in e6, the resulting French Defense setup is very closed and it will take a very long time for Black to win the game.&lt;/p&gt;
&lt;p&gt;Closed games may not be as flashy and media-friendly as open games, but they are very strategically rich and beautiful to play and watch. It would have been interesting if Gates had gone into this French Defense setup and Carlsen had to patiently attack White&apos;s center with f6, get the half-open f file, swing the dark Bishop against White&apos;s King side, free the light-squared Bishop also, and bring the Queen around to the King side via Qe8, etc. There might even have been a thematic exchange sacrifice on f3 to break up White&apos;s King side.&lt;/p&gt;
&lt;p&gt;But this would not have been a nine-move media spectacle.&lt;/p&gt;
&lt;h2&gt;Lesson 5: The unexpected complexity of chess&lt;/h2&gt;
&lt;p&gt;On move 5, Gates correctly attacked Carlsen&apos;s Queen with his Knight, and Carlsen played the Queen over to the King side. Although a thematic plan in this opening, under circumstances where Black has already played the light-squared Bishop out to g4 and is preparing to castle Queen side, this move actually looked to me like a blunder! But upon looking at it more, with the help of the computer, I saw that it was not.&lt;/p&gt;
&lt;p&gt;(The following discussion is mainly for those of expert or master strength.)&lt;/p&gt;
&lt;p&gt;The reason Qh5 looked like a blunder was because it seemed that White could play the very strong-looking Nb5, threatening to win the Pawn on c7 with check and also pick up Black&apos;s Rook. Black could defend by Kd8, but that forfeits castling and guarantees White an advantage. Nd5 to defend instead looks possible, but then c4 chasing the Knight looks strong. After Black&apos;s Nf4, White retreats the Bishop to defend, but renews the threat. However, after Black plays Bg4, the position then becomes a bit crazy, with Black having huge threats against White&apos;s Knight on f3 and offering to give up both castling and the Rook on a8 for a big attack against White. After White plays d4, attacking Black&apos;s Knight on f4, things look bad for Black.&lt;/p&gt;
&lt;p&gt;It turns out that Black can castle Queen side, abandoning the Knight but then creating threats with e5 in order to regain the piece. So far, so good: an expert or master player could see all this because of the forced nature of the calculations.&lt;/p&gt;
&lt;p&gt;But when I ran the position through a chess engine, the computer spit out a completely different approach, having Black not castle Queen side, but instead play e5 immediately, still offering to give up the the Pawn on c7, castling rights, and the Rook on a8. I did &lt;em&gt;not&lt;/em&gt; see this possibility. Nor have I analyzed the full ramifications. All I know is that yet again, chess engines reveal the surprising complexity of chess, one that the top world human players grapple with regularly. As an amateur, I am still repeatedly surprised by how intricate chess positions can be. If you are curious, you may wish to work out the possible continuations after the crazy-looking 9…e5.&lt;/p&gt;
&lt;p&gt;It would have been fascinating if Gates had seen Nb5 and played it, forcing Carlsen to enter into these wild complications.&lt;/p&gt;
&lt;h2&gt;Lesson 6: Playing a good move can lead to losing quickly, but it&apos;s not the fault of the good move&lt;/h2&gt;
&lt;p&gt;On move 6, Gates castled King side. This was a good move. A general principle that chess novices often neglect is King safety. Many games in chess are lost because one side did not protect the King by castling in time. Beginners are taught to castle as early as possible, as a rule of thumb. It is usually a great principle to follow, and it was in this game.&lt;/p&gt;
&lt;p&gt;Yet, it was because Gates castled King side that he lost so quickly. Paradox? Yes. What happened was that he lost because of things that he did wrong &lt;em&gt;after&lt;/em&gt; castling. If he had played a &lt;em&gt;worse&lt;/em&gt; plan, bringing the Bishop back to e2, then developing the Queen side with d3, and castling Queen side, the game would have been considerably longer for sure.&lt;/p&gt;
&lt;p&gt;Sometimes it is tempting for a less experienced chess player to attribute a loss of a game to a move that was actually a good move, instead of noticing the true blunder that happened well after the good move. In particular, it would be very tempting to reason, &quot;Black&apos;s Queen is already aiming at my King side, so I shouldn&apos;t have castled there into the attack.&quot;&lt;/p&gt;
&lt;p&gt;This happens in real life all the time: it is the logical fallacy of &lt;a href=&quot;https://en.wikipedia.org/wiki/Post_hoc_ergo_propter_hoc&quot;&gt;&lt;em&gt;post hoc, propter hoc&lt;/em&gt;&lt;/a&gt;, or &quot;after this, therefore because of this&quot;. For example, someone might hear about a runner dying of a heart attack and wrongly conclude that running is bad for your health, or someone else might hear about a runner losing weight and recovering from diabetes and wrongly conclude that running lots of marathons is the key to health.&lt;/p&gt;
&lt;p&gt;Chess is a game in which, in the long run, you cannot succeed if you fall into the trap of logical fallacies: all psychology aside, it is still a game of logic, in which if someone plays a trick on you, you can learn the truth from it for the next time you face that same opponent or a different one, and perform better. That is the beauty of the game.&lt;/p&gt;
&lt;h2&gt;Lesson 7: The appalling practice of playing a terrible move in hope that your opponent doesn&apos;t see how bad it is&lt;/h2&gt;
&lt;p&gt;On move 7, Gates played h3, attacking Black&apos;s Bishop on g4. The obvious and good move is to exchange the attacked Bishop with White&apos;s Knight on f3, trading Queens after White retakes with the Queen, and wrecking White&apos;s King side Pawn structure to obtain a clear advantage. The average club player would play this continuation without hesitation since it is obviously good and best.&lt;/p&gt;
&lt;p&gt;Unfortunately, with the Queens off the board, it would then have taken probably another thirty moves for Black to win the game.&lt;/p&gt;
&lt;p&gt;Instead, &lt;em&gt;Carlsen played a shockingly bad, losing move&lt;/em&gt;: he ignored the threat to his Bishop on g4 and simply offered a sacrifice, while making an unjustified aggressive gesture with his Knight to d5 against White&apos;s pinned Knight on f3.&lt;/p&gt;
&lt;p&gt;I was not happy to see him do this, because I believe many people believed this was an authentically and well-played chess game, rather than media fluff, and because many chess players actually deliberately engage in this practice in serious games, and I would like to discourage it. I wrote this article largely because of this howlingly bad move. I wrote this article for my friends who were wowed by this &quot;daring&quot; attack but need to know the truth.&lt;/p&gt;
&lt;p&gt;The truth is that this was not a serious game in which Carlsen played well. It was one of those games you might see played in urban parks by hustlers (I have played with such hustlers before; they typically let you win one and then try to get you to play them for more money and then start playing more and more for real). Carlsen played like a hustler in this game. Granted, it&apos;s fun to do this sometimes, as long as everyone is in on the joke and knows what is going on. But this game has been forwarded around with no disclaimer that it was for entertainment purposes only.&lt;/p&gt;
&lt;h2&gt;Lesson 8: The right plan is more important than the right move; but what about the importance of failure?&lt;/h2&gt;
&lt;p&gt;Gates accepted the sacrifice. Again, it is important to emphasize that even though he got checkmated just one move later, it wasn&apos;t because he was foolhardy in doing the right thing by accepting the sacrifice to achieve a &lt;em&gt;winning position&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;He played the right move. But he didn&apos;t play the right &lt;em&gt;followup&lt;/em&gt; move. He clearly had not calculated the implications of his move, however right the move was. If you do the right thing, but without really understanding why it was right, you can get into trouble. This is as true in chess as it is in regular life. It is important to make a move not in isolation, but in full context of what might happen afterwards.&lt;/p&gt;
&lt;p&gt;For example, if you are stuck in the wilderness, and you know which direction the main road is, the right thing to do may well be to start moving in that direction. But this assumes that you have already seen that you are not walking toward a deep rift, or that you have seen a barrier but know you have the resources to overcome it. If you have not at least figured out some kind of plan, it may be safer not to head to the main road, but to head in a different direction toward terrain that looks less unpredictable, even if the route will take longer to traverse.&lt;/p&gt;
&lt;p&gt;Should Gates have taken another path, instead of accepting the sacrifice? This is a hard question to answer. An improving player should always at least experiment with trying to play the best move possible, even if not perfectly equipped for the followup; you learn by failing while doing the right thing. But as a practical matter, there are good reasons to argue that failing too drastically may not help learning, and that playing more safely is a more incremental way of learning. I think it&apos;s a hard judgment call sometimes.&lt;/p&gt;
&lt;p&gt;For example, here, Gates could have done some meta-thinking, &quot;Hmm, Carlsen wouldn&apos;t be offering this free piece to me if he didn&apos;t have some trick to play on me, so I should play it safe and decline to accept it, and instead play safely with 8 Be4 to simply defend my attacked Knight on f3.&quot; If he had in fact done that, Carlsen&apos;s trick would have been halted, because there are no more pieces he can bring in against the Knight on f3. Again, objectively the best for Black would be to trade everything down on f3, giving White doubled, isolated f Pawns, but this is the route to a very long game.&lt;/p&gt;
&lt;p&gt;Unfortunately, I see this kind of meta-reasoning happen too often in club level chess, where a weaker player is afraid that the stronger opponent must have had a reason when playing a seemingly bad move, and therefore does not play the correct continuation against it. I think there is a fuzzy line between being pragmatic about one&apos;s limitations and being too timid to dare to question a poor move and try to prove it wrong. This psychological tension is definitely an important part of the game, and can be a vehicle for developing self-awareness, trust in one&apos;s own mind (rather than trust in the authority of those better than you), and continuous learning in case of making the wrong call.&lt;/p&gt;
&lt;p&gt;I advocate erring on the side of &lt;a href=&quot;http://www.bulletproofmusician.com/how-making-mistakes-can-accelerate-learning/&quot;&gt;learning from one&apos;s mistakes&lt;/a&gt; by going out on a limb at least sometimes.&lt;/p&gt;
&lt;h2&gt;Lesson 9: Carlsen was really lost; life and death can depend on only one detail&lt;/h2&gt;
&lt;p&gt;In the final move of the game, Gates played a move that would be very good except for one flaw: it allowed instant checkmate.&lt;/p&gt;
&lt;p&gt;But we cannot entirely blame him. Ignoring the checkmate oversight, the move was actually a &lt;em&gt;fantastic&lt;/em&gt; one. White takes the Knight on e5:&lt;/p&gt;
&lt;p&gt;If Black recaptures with the Knight, White wins the Queen on h5.
If Black recaptures with the Queen, White capture the Knight on g4, left unguarded because of the deflection of the Queen that had protected it on h5.&lt;/p&gt;
&lt;p&gt;So it looks like a brilliant move, &lt;em&gt;forcing&lt;/em&gt; the win of a piece. With Black two pieces down, victory would be in sight for White.&lt;/p&gt;
&lt;p&gt;Unfortunately, there&apos;s that checkmate.&lt;/p&gt;
&lt;p&gt;In chess, you can do everything right, have everything figured out but one detail, and lose horribly. In fact, many high-level games actually go this way. What are analogies in real life? There are many.&lt;/p&gt;
&lt;p&gt;In warfare, missing one vital piece of information could mean losing an entire &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Thermopylae&quot;&gt;battle&lt;/a&gt;. The &lt;a href=&quot;https://en.wikipedia.org/wiki/Space_Shuttle_Challenger_disaster&quot;&gt;Challenger tragedy&lt;/a&gt;. &lt;a href=&quot;http://www.ima.umn.edu/~arnold/disasters/ariane.html&quot;&gt;Mission-critical&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Therac-25&quot;&gt;computer software&lt;/a&gt;. Professions such as surgery, race car driving hinge on detail. Competitive sprinting and hurdling.&lt;/p&gt;
&lt;h3&gt;Carlsen was really lost&lt;/h3&gt;
&lt;p&gt;Gates could have maintained a winning advantage by playing 9 Re1. This provides an escape route for his King in case Black came down to h2 with the Queen by first trading off White&apos;s defensive Knight on f3. White&apos;s King can escape to f1, e2, and then d1 as needed. Retaining a piece advantage, objectively White should win the game.&lt;/p&gt;
&lt;p&gt;Of course, in practice, even if Gates had played correctly, I doubt he would have won. Carlsen would probably have castled Queen side and continued playing tricky moves while waiting for blunders, likely because of the blitz time format. It would have definitely been entertaining hustler-style blitz chess by Carlsen in any case.&lt;/p&gt;
&lt;p&gt;For the benefit of those who want to see how quickly White can win, after Re1, if Black insists on trying to check White&apos;s King to oblivion (which Carlsen would not have done), I have provided a sample forcing continuation by White.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That was an entertaining game.&lt;/p&gt;
&lt;p&gt;But I felt I needed to point out to the wider public that in fact this was the diametric opposite of the brutally logical play that won him the World Champion title just months ago! He won here in nine moves not because he played the logical, correct moves, but because he resorted to every element of hustler psychology to try to create a quick decisive outcome. I hope that this article helps explain what happened.&lt;/p&gt;
</content:encoded></item><item><title>My no-cookie rule: a photo update</title><link>https://franklinchen.com/blog/2014/01/29/my-no-cookie-rule-a-photo-update/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/29/my-no-cookie-rule-a-photo-update/</guid><pubDate>Thu, 30 Jan 2014 02:50:22 GMT</pubDate><content:encoded>&lt;p&gt;Two weeks ago &lt;a href=&quot;/blog/2014/01/16/a-system-for-quitting-eating-cookies/&quot;&gt;I vowed never to eat a cookie again, unless I took a photo of it and posted it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was at a party tonight, and originally saw no cookies, so I thought I was safe.&lt;/p&gt;
&lt;p&gt;I was wrong. After hours of eating a lot of pretty good food, I saw that cookies were brought out and place next to the coffee in back. I paused, remembering my promise, but then thought, &quot;what the heck&quot;, and &quot;carefully&quot; chose just two cookies, photographed them, and ate them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cookie1.jpg&quot; alt=&quot;Cookie&quot; /&gt;
&lt;img src=&quot;../../assets/images/cookie2.jpg&quot; alt=&quot;Cookie&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Consequences&lt;/h2&gt;
&lt;p&gt;My first observation was that it was actually not so easy to choose two cookies to take. Visually, on close inspection, I did not actually believe that any of the cookies were really going to be so tasty. In fact, the more deliberate I was, the more I visualized that these things as assembled sugar, fat, and wheat bombs serving no useful purpose for my body.&lt;/p&gt;
&lt;p&gt;I could have just stopped there, and chosen not to take any cookies, but habit or curiosity caused me to take two anyway.&lt;/p&gt;
&lt;p&gt;It turned out that I didn&apos;t really enjoy the cookies. They weren&apos;t so good. Also, they seemed much bigger when I started eating them, in that I had enough and wanted to stop but felt like I should finish what I started.&lt;/p&gt;
&lt;p&gt;Then I proceeded to feel bloated and sleepy. I went home really thinking about the stupid thing that I did, and the fact that I was going to have to write about my experience.&lt;/p&gt;
&lt;h2&gt;Future&lt;/h2&gt;
&lt;p&gt;I suspect that I will eventually break my habit of eating cookies at social occasions where they present themselves. I had a really bad experience tonight. Because I documented it, I will remember it.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-31)&lt;/h2&gt;
&lt;p&gt;Check out what happened &lt;a href=&quot;/blog/2014/01/31/first-time-in-my-life-not-eating-cookies-or-cake-at-a-party/&quot;&gt;two days later&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>OpenHack Pittsburgh: a great place to share and learn</title><link>https://franklinchen.com/blog/2014/01/27/openhack-pittsburgh-a-great-place-to-share-and-learn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/27/openhack-pittsburgh-a-great-place-to-share-and-learn/</guid><pubDate>Tue, 28 Jan 2014 03:38:48 GMT</pubDate><content:encoded>&lt;p&gt;Another month, another &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/158236852/&quot;&gt;meeting of OpenHack Pittsburgh&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The project I worked on was writing a blog post on the controversial subject of &lt;a href=&quot;https://twitter.com/BillLaboon/status/427525236406243328&quot;&gt;unit testing private methods&lt;/a&gt;. I ended up not finishing the post, not only because there&apos;s a lot to say, but also because I got sidetracked (in a good way) because of discussions with people while at OpenHack!&lt;/p&gt;
&lt;p&gt;There were many good points that were made and so I had to reconsider some of my arguments. My overall viewpoint is still that the distinction between &quot;public&quot; and &quot;private&quot; is fluid, and that anything that seems significant enough that it feels like it should be tested should in fact be tested, ignoring the artifacts of how it is currently classified. One of the main counterpoints was that if you need to test it, then it should be factored out and made its own unit so that in essence, the rule against testing the private is maintained.&lt;/p&gt;
&lt;p&gt;Anyway, I will put up my post once I actually collect all my thoughts together and finish it.&lt;/p&gt;
</content:encoded></item><item><title>My first time at an English country dance music jam</title><link>https://franklinchen.com/blog/2014/01/25/my-first-time-at-english-country-dance-music-jam/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/25/my-first-time-at-english-country-dance-music-jam/</guid><pubDate>Sun, 26 Jan 2014 00:39:03 GMT</pubDate><content:encoded>&lt;p&gt;Relatively recently, a new English country dance music jam in the Pittsburgh area has been organized by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.amarillismusic.com/aboutus.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.amarillismusic.com/aboutus.html&quot;&amp;gt;Maro Avakian&amp;lt;/span&amp;gt;, whom I first met through joining in playing for the Holiday Ball &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;two years ago&lt;/a&gt;. I was unable to make it to the first couple of meetings, but finally, on a nasty snowy Saturday, my schedule happened to be open, so I went.&lt;/p&gt;
&lt;p&gt;I&apos;m not completely new to English country dance music. It was almost two years ago when I first encountered it, &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/&quot;&gt;as a dancer&lt;/a&gt;. As has happened several times now in my life, becoming familiar with the dance got me interested in the &lt;em&gt;music&lt;/em&gt; and in the idea of actually playing the music.&lt;/p&gt;
&lt;p&gt;It turns out that I&apos;d already played some of this kind of music for myself as a result of my study of the Baroque flute, because method books I have for the instrument include a good amount of dance music from the era. In any case, the book we use for many tunes is the volume by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.canispublishing.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.canispublishing.com/&quot;&amp;gt;Peter Barnes&amp;lt;/span&amp;gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://mysite.verizon.net/peterabarnes/books.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://mysite.verizon.net/peterabarnes/books.htm&quot;&amp;gt;&quot;The Barnes Book of English Country Dance Tunes&quot;&amp;lt;/span&amp;gt;, a fine anthology. Actually, I ordered my copy only last week and was lucky it arrived in the mail just in time!&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://mysite.verizon.net/peterabarnes/Book1.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://mysite.verizon.net/peterabarnes/Book1.jpg&quot;&amp;gt;[image defunct]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h2&gt;Instruments&lt;/h2&gt;
&lt;p&gt;We had a pretty good turnout given the weather. Apart from Maro on piano, we had people playing flute, Baroque flute, recorders, ukulele, mandolin, percussion.&lt;/p&gt;
&lt;p&gt;I&apos;d brought my flute, Baroque flute, and soprano, alto, tenor recorders, but since there were already two others on modern flute and soprano recorder, I ended up playing just the Baroque flute, alto recorder, and tenor recorder. The Baroque flute is pretty hard to play in some of the keys, and also is kind of soft, so I mostly played the alto and tenor recorders. I gradually gravitated toward improvising inner voices with the tenor recorder. I think I will do that in the future also. In addition, I should bring my bass recorder, to add a yet lower instrument to our group.&lt;/p&gt;
&lt;h2&gt;Improvisation&lt;/h2&gt;
&lt;p&gt;We had great discussions about tips and tricks for improvising lines and filling out chords. Needless to say, I was botching up a lot of stuff as I experimented, but you can&apos;t learn if you don&apos;t try!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It looks like I have a new musical outlet, English country dance music. I hope to continue participating in it. As with French traditional dance music, I like the improvisational nature of working with a tune with repetition.&lt;/p&gt;
</content:encoded></item><item><title>How Pittsburgh meetups changed my life</title><link>https://franklinchen.com/blog/2014/01/24/how-pittsburgh-meetups-changed-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/24/how-pittsburgh-meetups-changed-my-life/</guid><pubDate>Sat, 25 Jan 2014 02:15:30 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://img2.meetupstatic.com/9602342981488429316/img/header/logo.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://img2.meetupstatic.com/9602342981488429316/img/header/logo.png&quot;&amp;gt;[image: Meetup logo]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Recently, I was informed by the message board of the Pittsburgh hiking meetup group that there was a recent &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/lifestyles/morelifestyles/5356571-74/meetup-group-internet&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/lifestyles/morelifestyles/5356571-74/meetup-group-internet&quot;&amp;gt;local article about Pittsburgh meetups&amp;lt;/span&amp;gt;, and it quoted one of the organizers of the hiking meetup, Jennifer Braun (who happens to be one of us participating in a &lt;a href=&quot;/blog/2014/01/01/happy-new-year-with-a-boyce-mayview-park-hike-wetlands/&quot;&gt;beautiful New Year hike&lt;/a&gt; led by Gary Byrdman that Abby and I went on):&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;People should try new things, because it can change their life,&quot; she says. &quot;It sounds kind of happy sunshine, but hiking changed my life. And I never knew until someone told me to try it. Find the thing that you love -- hiking, biking, quilting -- it&apos;s just everything you could think of. Once you&apos;re in one group and start looking around, you can really meet new people and do new things and get more out of life.&lt;/p&gt;
&lt;p&gt;&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I was really moved by what she said, because my own immediate thought also when thinking about &lt;a href=&quot;https://meetup.com/&quot;&gt;Meetup&lt;/a&gt; is that &lt;strong&gt;it changed my life&lt;/strong&gt;. How so?&lt;/p&gt;
&lt;h2&gt;Life before Meetup&lt;/h2&gt;
&lt;p&gt;Yes, there was life before &lt;a href=&quot;https://meetup.com/&quot;&gt;Meetup&lt;/a&gt;, which I joined over six years ago, on December 28, 2007.&lt;/p&gt;
&lt;p&gt;I did manage to find out about things to do, people to meet, etc., through friends who were already involved in various activities.&lt;/p&gt;
&lt;p&gt;I also did this by myself through Web searches, such as finding out about the Pittsburgh Chess Club in 2005 by discovering its own Web site, and finding out about the Pittsburgh Recorder Society also through its own Web site.&lt;/p&gt;
&lt;h2&gt;Transitions to Meetup&lt;/h2&gt;
&lt;p&gt;Some activities I participated in before Meetup existed became more popular and drew more people as a result. For example, I had been hiking with many of the people in the Pittsburgh hiking meetup group for a couple of years, through the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://alleghenysc.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://alleghenysc.org/&quot;&amp;gt;Sierra Club Allegheny Group&amp;lt;/span&amp;gt; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://alleghenysc.org/?cat=13&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://alleghenysc.org/?cat=13&quot;&amp;gt;outing listings&amp;lt;/span&amp;gt;, before Meetup existed and before these wonderful volunteers joined Meetup and started advertising hikes there as organizers. Also, I personally witnessed the explosion in popularity of the &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/&quot;&gt;Pittsburgh Ruby&lt;/a&gt; and &lt;a href=&quot;https://www.meetup.com/pghpython/&quot;&gt;Pittsburgh Python&lt;/a&gt; groups when they joined Meetup.&lt;/p&gt;
&lt;p&gt;I think this illustrates the power of there being a common platform that everyone uses and therefore can get &quot;suggestions&quot; (based on what you put down as areas of interest in your profile) and notifications that one&apos;s friends has joined a newly created meetup group. I have definitely joined many meetup groups that were not on my radar until I got notified through the Meetup platform.&lt;/p&gt;
&lt;h2&gt;My Meetup life&lt;/h2&gt;
&lt;p&gt;I just checked and it looks like &lt;a href=&quot;https://www.meetup.com/members/5977224/&quot;&gt;I&apos;m currently a member of forty (!) meetup groups&lt;/a&gt;. This is a pretty extreme number, but in reality, of course, many of these groups are groups I&apos;ve never actually attended an event of, and some groups I participate in much more than others. On average, however, I&apos;d say I attend an average of &lt;em&gt;one Meetup event a week&lt;/em&gt;. For example, this month of January so far, I&apos;ve already attended four Meetup events, and am already scheduled to attend another one next week, still this month, and there may be others I will attend in addition as well (for example, I&apos;m currently considering attending an event on Sunday).&lt;/p&gt;
&lt;p&gt;Multiply that by six years and that&apos;s probably around &lt;em&gt;three hundred Meetup events&lt;/em&gt; I&apos;ve been to, apparently, since joining. Meetup is clearly a pretty substantial part of my life.&lt;/p&gt;
&lt;p&gt;One benefit of Meetup is that even if I&apos;m not interested in or as devoted to something &lt;em&gt;right now&lt;/em&gt;, I know that if I wanted to, there is a community out there for it. The sense of not being alone is really reassuring, in a world in which I had found it difficult, as an introvert, to stay up to date with what&apos;s going on locally that I might find of interest. For example, if I ever wanted to learn Japanese or explore Japanese culture more (to pick a random topic), I am pretty sure that I could find a Japanese meetup group and join and find out what they&apos;re doing, and basically be encouraged to show up at an event and start meeting people. The Meetup platform allows me to check something out without investing a lot into it up front; and because the events are publicized, and signing up puts a name and profile to your face, there is a sense in which the situation just feels far less anxious than if you were to show up somewhere and not have any idea how many people were going or even exactly where to meet. The Meetup platform provides so much information that really decreases the risks or anxieties I&apos;ve sometimes had before Meetup.&lt;/p&gt;
&lt;p&gt;Before Meetup, it took a lot of time and energy just to maintain connections with particular communities of interests and activities, and therefore I think one had to be much more limited. Now, I can explore a much wider set of interests, if I choose to. (It turns out, ironically, that I explored extremely widely in the past two or three years, but have deliberately been pruning back considerably in favor of more depth and also more personal time at home.)&lt;/p&gt;
&lt;p&gt;Abby and I have also done things on our own that were &lt;em&gt;inspired&lt;/em&gt; by official Meetup events that we could not or did not attend. Basically, you can find out about places to visit, restaurants to eat at, concerts to attend, and all kinds of other stuff, just by watching what goes on through Meetup.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Meetup has been a permanent part of my life since I joined in 2007. It is a fantastic concept whose success is totally deserved. I tell all my friends, when they relocate, or even think about moving somewhere, to check out local Meetup groups and join them. There&apos;s no better way to quickly get started in meeting new people who share your interests or values, or explore outside your current circle. I am grateful to founders of Meetup for helping to socially connect people in a world that often seems too big and fragmented.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You are not alone.&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t believe the hype about not believing the hype</title><link>https://franklinchen.com/blog/2014/01/23/dont-believe-the-hype-about-not-believing-the-hype/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/23/dont-believe-the-hype-about-not-believing-the-hype/</guid><pubDate>Fri, 24 Jan 2014 00:09:04 GMT</pubDate><content:encoded>&lt;p&gt;An article came my way with the title, &lt;a href=&quot;https://qz.com/169605/dont-believe-the-hype-about-behavorial-economics/&quot;&gt;&quot;Don&apos;t believe the hype about behavioral economics&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&apos;t have any comments on the article itself. Instead, I have a comment about the article title.&lt;/p&gt;
&lt;p&gt;I don&apos;t like it when people tell me &quot;don&apos;t believe the hype about X&quot;. I find this way of speaking to be problematic on many levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is often a disguised way of saying &quot;believe this other thing Y&quot;, and in fact very often is a disguised way of saying &quot;believe what I consider to be the correct, the status quo before this new kid on the block arrived&quot;.&lt;/li&gt;
&lt;li&gt;It is patronizing, assuming that the reader should &quot;believe&quot; or &quot;not believe&quot; something, rather than, maybe, actually &lt;em&gt;reason&lt;/em&gt; about pros and cons of some idea.&lt;/li&gt;
&lt;li&gt;I don&apos;t actually care whether there is &quot;hype&quot; or not about something. I only care whether it&apos;s true or useful. Sometimes something &quot;hyped&quot; is in fact correct; sometimes it is incorrect. I don&apos;t care about the &quot;hype&quot; part, only about the truth part. So don&apos;t drag in irrelevant matters such as whether someone out there is promoting something, and whether you&apos;re promoting it or opposing the promoting of it. I don&apos;t want to see articles with titles like &quot;Don&apos;t believe the hype about the earth going around the sun&quot; or &quot;Don&apos;t believe the hype about the sun going around the earth&quot;. If you have something substantial to say, choose a more informative title.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I don&apos;t care whether something is new or old, a fad or hyped. Don&apos;t try to appeal to me on that debased emotional level when trying to sell me something. Show me whether something works or doesn&apos;t, and I&apos;ll pay attention. Not all old ideas are bad, not all new ideas are bad. But hype about hype is more annoying than hype itself.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Giving up a fianchettoed bishop to win a pawn may not be worthwhile</title><link>https://franklinchen.com/blog/2014/01/23/the-chess-improver-giving-up-a-fianchettoed-bishop-to-win-a-pawn-may-not-be-worthwhile/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/23/the-chess-improver-giving-up-a-fianchettoed-bishop-to-win-a-pawn-may-not-be-worthwhile/</guid><pubDate>Thu, 23 Jan 2014 12:50:24 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Giving up a fianchettoed bishop to win a pawn may not be worthwhile&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I&apos;ve been having a student study the classic game collection anthology by Irving Chernev, &quot;Logical Chess: Move by Move&quot;. Although there are flaws in this anthology, I still believe it is very instructive, if supplemented with close discussion and correction where appropriate: in fact, many times my student has asked good questions that provide an opportunity to refine or correct what is explained in the book. Here is one of the games in the book where questions were raised: game 12, Pitschak-Flohr, Liebwerda 1934, featuring a Reverse Dragon in which Chernev made it seem as though Black had the upper hand the whole way, when in fact, in some critical positions, White could have played better, illustrating the power of the fianchettoed Bishop.&lt;/p&gt;
&lt;h2&gt;The first missed opportunity&lt;/h2&gt;
&lt;p&gt;The first poor choice for White was when he failed to open up the center and unleash the power of the fianchettoed Bishop on g2 at no risk. This was after Black&apos;s 11…Qd7, when White could have played g4 and then d4, resulting in both Bishops aiming at Black&apos;s Queen side. Chernev did not mention this possible continuation for White.&lt;/p&gt;
&lt;h2&gt;The second missed opportunity&lt;/h2&gt;
&lt;p&gt;The second poor choice was subtle, occurring after White had given Black an opportunity to win the h3 Pawn with 13…Qxh3. White immediately regained a Pawn by giving up the fianchettoed Bishop by exchanging it for a Knight on c6 and then taking the c6 Pawn. Chernev does correctly indicate that White should have retained the Bishop, but suggested a defensive move Bg2, giving the impression that White needed to be in defensive mode.&lt;/p&gt;
&lt;p&gt;But the reality is that by giving up his light-squared Bishop for the sake of winning a Pawn, Black was actually giving White good chances for an attack on Black&apos;s Queen side. White could have played &lt;em&gt;actively&lt;/em&gt; with 14 Nc5 Bxc5 15 Rxc5, securing the Bishop pair while retaining pressure against Black&apos;s Queen side as well as the e5 Pawn, and plan to regain the Pawn only under advantageous conditions. In fact, Black has to play accurately or else face grave danger. Passive play will allow White to launch a ferocious attack against Black&apos;s Knights and Pawns on the Queen side with ideas such as a4 or b4 aiming for a5 or b5, along with bringing the Queen over and doubling the Rooks on the c file, for example. Regaining the Pawn immediately was not as important as generating active piece play.&lt;/p&gt;
&lt;p&gt;Granted, Chernev&apos;s point in this game was to illustrate Black&apos;s King side attack, but the instructive nature of this game was diminished by its not being as thoroughly one-sided as most of the other games in the anthology.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Liebwerda&quot;]
[Site &quot;&quot;]
[Date &quot;1934&quot;]
[Round &quot;?&quot;]
[White &quot;Pitschak, Rudolf&quot;]
[Black &quot;Flohr, Salomon&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;A29&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;c4 e5 2. Nc3 Nf6 3. g3 d5 4. cxd5 Nxd5 5. Bg2 Nb6 6. Nf3 Nc6 7. O-O Be7 8. d3 O-O 9. Be3 Bg4 10. h3 $2 Bh5 11. Rc1 Qd7 $2 12. Na4 $2 ( 12. g4 $1 Bg6 13. d4 exd4 14. Nxd4 Nxd4 15. Bxd4 $201 ) 12… Bxf3 $6 { Grabbing the Pawn.} ( 12… f6 ) 13. Bxf3 Qxh3 14. Bxc6 $2 ( 14. Nc5 Bxc5 15. Rxc5 ) 14… bxc6 15. Rxc6 $2 Nd5 16. Qe1 $4 f5 17. Bc5 f4 18. Bxe7 fxg3 19. fxg3 Ne3 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Cold but pretty winter hike in Wingfield Pines</title><link>https://franklinchen.com/blog/2014/01/18/cold-but-pretty-winter-hike-in-wingfield-pines/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/18/cold-but-pretty-winter-hike-in-wingfield-pines/</guid><pubDate>Sun, 19 Jan 2014 01:10:22 GMT</pubDate><content:encoded>&lt;p&gt;Less than three weeks ago, Abby and I went on a &lt;a href=&quot;/blog/2014/01/01/happy-new-year-with-a-boyce-mayview-park-hike-wetlands/&quot;&gt;great hike in Boyce-Mayview Park in Upper St. Clair, led by Gary Byrdman&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today we went on &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/160997422/&quot;&gt;another hike with Gary, very close to the Boyce-Mayview Park, but in a neighboring park&lt;/a&gt;, the Wingfield Pines.&lt;/p&gt;
&lt;h2&gt;Cold!&lt;/h2&gt;
&lt;p&gt;It was a beautiful day, clear sky.&lt;/p&gt;
&lt;p&gt;But it was pretty freaking cold, hovering around 10F, I think, maybe a bit higher. I was slightly underdressed, and paid the price. I should have worn my thicker gloves and also long underwear. After getting home, it took a long time for my body to return to normal. The problem is that in previous winters of my life, I have not gone out hiking when the temperature is below 20F, so this was a first for me. Now I know better what I need to wear.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/wingfield-pines-abby-franklin.jpg&quot; alt=&quot;Wingfield Pines&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;About the park&lt;/h2&gt;
&lt;p&gt;We parked across the street from the park entrance because the parking area at the entrance is pretty small. Across the street is a large parking lot for the community center.&lt;/p&gt;
&lt;p&gt;There were just six of us braving the cold for this hike. Gary and others being locals, told us a lot about the history of the park. It was really fascinating. The land has undergone many changes of ownership and restoration over the years. I looked online after the hike and found useful information.&lt;/p&gt;
&lt;p&gt;The land is currently owned by the Allegheny Land Trust and here is the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.alleghenylandtrust.org/properties/wingfield/overview/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.alleghenylandtrust.org/properties/wingfield/overview/&quot;&amp;gt;official site of the area&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;We had a leisurely hike, going about five miles in two and a half hours, stopping often to check out the sights. One of us brought her dog along. She lives nearby and walks her dog twice a day here! What she really loves is that it&apos;s officially a legal off-leash area for dogs. So this place is great for dog lovers who want their dogs to truly get their exercise! We bumped into some happy-looking dogs and their owners during the hike.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://web.archive.org/web/20101201202951/http://www.hedinenv.com:80/projectpages/wingfieldpines.htm&quot;&gt;water treatment system&lt;/a&gt; is pretty interesting.&lt;/p&gt;
&lt;h3&gt;Photos&lt;/h3&gt;
&lt;p&gt;I didn&apos;t take many photos because every time I took off my gloves to be able to use my phone camera, my fingers got super cold, so I gave up.&lt;/p&gt;
&lt;p&gt;But photos some others of us took are available &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/photos/19589162&quot;&gt;here&lt;/a&gt;. Julie took particularly detailed and beautiful photos of cardinals, bluebirds, woodpeckers, and ducks that we saw.&lt;/p&gt;
&lt;h2&gt;Coming back in spring and summer&lt;/h2&gt;
&lt;p&gt;Abby and I will definitely come back in spring and summer. The park is lovely in winter, but it will be even more gorgeous in spring and summer, quite obviously.&lt;/p&gt;
&lt;p&gt;To get an idea of what the place is like when it&apos;s not winter, here is a sample link I found to &lt;a href=&quot;https://upperstclair.patch.com/groups/around-town/p/wingfield-pines-shines-on-a-wet-afternoon&quot;&gt;local coverage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A video:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/4KmHnkG4Enc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Check out Wingfield Pines, in Upper St. Clair. It&apos;s less than a half-hour drive from Pittsburgh. It&apos;s beautiful.&lt;/p&gt;
</content:encoded></item><item><title>Hiroo Onoda and the Six Million Dollar man: what does it mean to know how to die or live?</title><link>https://franklinchen.com/blog/2014/01/17/hiroo-onoda-and-the-six-million-dollar-man/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/17/hiroo-onoda-and-the-six-million-dollar-man/</guid><pubDate>Sat, 18 Jan 2014 03:50:24 GMT</pubDate><content:encoded>&lt;p&gt;A news article just came my way that fascinated me: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/world/asia_pacific/hiroo-onoda-japanese-soldier-who-hid-in-philippine-jungle-for-29-years-dies-at-91/2014/01/17/7016d806-7f8b-11e3-93c1-0e888170b723_story.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/world/asia_pacific/hiroo-onoda-japanese-soldier-who-hid-in-philippine-jungle-for-29-years-dies-at-91/2014/01/17/7016d806-7f8b-11e3-93c1-0e888170b723_story.html&quot;&amp;gt;&quot;Hiroo Onoda, Japanese soldier who hid in Philippine jungle for 29 years, dies at 91&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Of course, I had long heard of &quot;stragglers&quot; who did not realize that a war or persecution was over and kept fighting or fleeing, away from &quot;civilization&quot;, unaware of how the rest of the world was changing. The most recent case of that I read about was a really moving story, astonishing and sad, about an Old Believer &lt;a href=&quot;https://www.smithsonianmag.com/history/for-40-years-this-russian-family-was-cut-off-from-all-human-contact-unaware-of-world-war-ii-7354256/&quot;&gt;Russian family that hid out for forty years&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But in the case of this Japanese soldier, although I had not earlier read about his particular story, I instantly remembered an old TV episode I watched as a young child that was an astoundingly memorable episode, whose details are etched in my mind. This was &lt;a href=&quot;https://bionic.wikia.com/wiki/The_Last_Kamikaze&quot;&gt;&quot;The Last Kamikaze&quot;&lt;/a&gt;, an episode of &quot;The Six Million Dollar Man&quot; TV series that I watched religiously back in the day. This episode was about a Japanese straggler from World War II. &lt;strong&gt;It changed my life forever.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;The Last Kamikaze&lt;/h2&gt;
&lt;p&gt;Amazingly, I found the &lt;a href=&quot;https://www.dailymotion.com/video/xtp86d_the-six-million-dollar-man-the-last-kamikaze-jan-19-1975_shortfilms&quot;&gt;whole episode online&lt;/a&gt;. You may want to watch this episode before reading my spoilers below.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe frameborder=&quot;0&quot; width=&quot;480&quot; height=&quot;270&quot; src=&quot;https://www.dailymotion.com/embed/video/xtp86d&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;a href=&quot;https://www.dailymotion.com/video/xtp86d_the-six-million-dollar-man-the-last-kamikaze-jan-19-1975_shortfilms&quot; target=&quot;_blank&quot;&amp;gt;The Six Million Dollar Man--The Last Kamikaze...&amp;lt;/a&amp;gt; &amp;lt;i&amp;gt;by &amp;lt;a href=&quot;https://www.dailymotion.com/dwyerjoss&quot; target=&quot;_blank&quot;&amp;gt;dwyerjoss&amp;lt;/a&amp;gt;&amp;lt;/i&amp;gt;&lt;/p&gt;
&lt;h2&gt;Discussion, with spoilers&lt;/h2&gt;
&lt;p&gt;It made a profound impact on me when I watched it over 30 years ago. First, there was the exciting action aspect, of course (all the booby traps in the jungle). But mostly, it was in some sense my first exposure to something from Japanese culture, in particular regarding notions of &quot;honor&quot;.&lt;/p&gt;
&lt;p&gt;OK, it was just TV, and American 1970s TV at a time when there weren&apos;t a lot of Asians even being portrayed at all, but in retrospect, it wasn&apos;t bad at all. I was confused by the attempted &lt;a href=&quot;https://en.wikipedia.org/wiki/Seppuku&quot;&gt;seppuku&lt;/a&gt;, and my parents had to explain what that was about (not being Japanese, but actually living during World War II in Taiwan under Japanese rule and remembering the Allies defeating Japan).&lt;/p&gt;
&lt;h3&gt;Death and life&lt;/h3&gt;
&lt;p&gt;But the real climax of the episode was when Steve Austin intervenes in the attempt and saves the character Kuroda, saying &quot;You have shown that you know how to die. Now for the sake of your enemies, show me that you know how to live.&quot; I reflected on what it might mean to &quot;know how to die&quot; or to &quot;know how to live&quot;. In that moment of the TV episode, &lt;em&gt;my life was changed forever&lt;/em&gt;. I was around seven years old at the time. I suppose you could say I lost my &quot;innocence&quot; at that exact moment in time; I became a philosopher then.&lt;/p&gt;
&lt;p&gt;I thought a lot about life and death after that episode. What is the meaning of life, or of death? And most of all, what do we choose, and why do we choose? What is honor?&lt;/p&gt;
&lt;p&gt;My questioning may have begun at seven, but it has not yet ended. I do not have the final answer.&lt;/p&gt;
&lt;p&gt;But that one TV episode got me started on a lifelong philosophical journey. When I was older, I studied the Christian Bible, which is all about exploring what it means to live and die: Jesus dying and living again, and the command to be &lt;a href=&quot;https://www.biblegateway.com/passage/?search=Romans%206&quot;&gt;dead to sin but alive in Christ&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, there is also the controversial choice of &lt;a href=&quot;https://en.wikipedia.org/wiki/Socrates&quot;&gt;Socrates&lt;/a&gt; to commit suicide, which I read various conflicting opinions about: when I had just finished high school, the book &lt;a href=&quot;https://www.ifstone.org/trial_of_socrates.php&quot;&gt;&quot;The Trial of Socrates&quot; by I.F. Stone came out&lt;/a&gt; that was very provocative and turned me against Socrates, whom I had earlier considered a hero, from reading Plato&apos;s dialogues about him.&lt;/p&gt;
&lt;p&gt;I was also bothered but fascinated by the lore that &lt;a href=&quot;https://en.wikipedia.org/wiki/Gautama_Buddha&quot;&gt;Gautama Buddha&lt;/a&gt; deliberately ate rotting food in order not to offend his host, and died as a result.&lt;/p&gt;
&lt;p&gt;And what of the controversial mass suicide by Jews at &lt;a href=&quot;https://en.wikipedia.org/wiki/Masada&quot;&gt;Masada&lt;/a&gt;? Or that of &lt;a href=&quot;https://en.wikipedia.org/wiki/Self-immolation&quot;&gt;self-immolating&lt;/a&gt; Buddhist monks in Vietnam?&lt;/p&gt;
&lt;p&gt;In college, I took a philosophy course by &lt;a href=&quot;https://web.archive.org/web/20210514235320/https://philosophy.columbia.edu/directories/faculty/frederick-neuhouser&quot;&gt;Frederick Neuhouser&lt;/a&gt; and studied Nietzsche, who had his character Zarathustra say, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://4umi.com/nietzsche/zarathustra/21&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://4umi.com/nietzsche/zarathustra/21&quot;&amp;gt;&quot;Die at the right time&quot;&amp;lt;/span&amp;gt;. I was profoundly affected by the challenges that Nietzsche threw at his readers. That course changed my life.&lt;/p&gt;
&lt;p&gt;Very recently, Stoicism has become popularized as a living philosophy for today, with proponents such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ttbook.org/book/transcript/transcript-william-irvine-stoic-life&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ttbook.org/book/transcript/transcript-william-irvine-stoic-life&quot;&amp;gt;William Irvine&amp;lt;/span&amp;gt;, who talks about &quot;contemplation of death&quot;. I very much enjoyed his book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://global.oup.com/academic/product/a-guide-to-the-good-life-9780195374612&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://global.oup.com/academic/product/a-guide-to-the-good-life-9780195374612&quot;&amp;gt;&quot;A Guide to the Good Life: the Ancient Art of Stoic Joy&quot;&amp;lt;/span&amp;gt; not long after it came out; reading it in early 2011, I changed the course of my life. (Don&apos;t forget that &lt;a href=&quot;https://en.wikipedia.org/wiki/Seneca_the_Younger&quot;&gt;Seneca&lt;/a&gt; was also forced to commit suicide.)&lt;/p&gt;
&lt;p&gt;I am fascinated by deliberate, reasoned decisions about life and death.&lt;/p&gt;
</content:encoded></item><item><title>A system for quitting eating cookies?</title><link>https://franklinchen.com/blog/2014/01/16/a-system-for-quitting-eating-cookies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/16/a-system-for-quitting-eating-cookies/</guid><pubDate>Fri, 17 Jan 2014 01:29:33 GMT</pubDate><content:encoded>&lt;p&gt;I decided last night, after eating too many cookies at the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/154668232/&quot;&gt;Steel City Ukuleles meetup&lt;/a&gt;, that I have to stop eating cookies. I cannot justify them on the grounds of health (and how crappy I sometimes feel after eating them).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scu-desserts.jpg&quot; alt=&quot;Steel City Ukuleles after new year party&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My &quot;creative&quot; idea that I shared with Abby: I will never eat a cookie again in my life unless I take a photo of it.&lt;/p&gt;
&lt;p&gt;In other words, the cookie has somehow appeal to me so much that I bother to pause, &lt;em&gt;deliberately&lt;/em&gt; take a photo, and risk social embarrassment (and better yet, explain my system to people so they know I&apos;m not supposed to eat cookies).&lt;/p&gt;
&lt;p&gt;Also, I must post publicly any cookie that I eat.&lt;/p&gt;
&lt;p&gt;We&apos;ll see how well this system works. I can sense cookie opportunities coming up already!&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-29)&lt;/h2&gt;
&lt;p&gt;Check out what happened &lt;a href=&quot;/blog/2014/01/29/my-no-cookie-rule-a-photo-update/&quot;&gt;two days later&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-31)&lt;/h2&gt;
&lt;p&gt;Check out what happened &lt;a href=&quot;/blog/2014/01/31/first-time-in-my-life-not-eating-cookies-or-cake-at-a-party/&quot;&gt;four days later&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Current updates)&lt;/h2&gt;
&lt;p&gt;For current updates, just check out the &lt;a href=&quot;/categories/cookies/&quot;&gt;cookies category&lt;/a&gt; to find out when I last mentioned cookies.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: What if your opponent just gives you twelve free moves?</title><link>https://franklinchen.com/blog/2014/01/16/the-chess-improver-what-if-your-opponent-just-gives-you-twelve-free-moves/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/16/the-chess-improver-what-if-your-opponent-just-gives-you-twelve-free-moves/</guid><pubDate>Thu, 16 Jan 2014 12:20:43 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;What if your opponent just gives you twelve free moves?&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Not long ago, I wrote a post about &lt;a href=&quot;/blog/2013/11/28/the-chess-improver-imagining-that-you-can-play-ten-moves-in-a-row/&quot;&gt;imagining that you can play ten moves in a row&lt;/a&gt; from the initial opening position. I never thought I would be writing about this same theme from the point of view of starting from a non-opening position.&lt;/p&gt;
&lt;p&gt;But I just saw an astounding game fragment in the January 2014 issue of &quot;Chess Life&quot;, in the column by GM Andy Soltis. He gave a position in the game between GM Ulf Andersson and IM Michael Basman in Hastings, 1974-75, in which after many moves, Basman (Black) had his pieces &lt;em&gt;exactly&lt;/em&gt; where they were at the beginning of the sequence. And Soltis indicated that Basman won this game, without adding more details.&lt;/p&gt;
&lt;p&gt;Upon seeing this game fragment, of course I had to see the rest of the game, so I looked it up. It turned out that Black&apos;s pieces after his move 23 were &lt;em&gt;exactly&lt;/em&gt; where they were after his move 11!!&lt;/p&gt;
&lt;p&gt;So how could White, with &lt;em&gt;twelve free moves&lt;/em&gt;, actually &lt;em&gt;worsen&lt;/em&gt; rather than &lt;em&gt;improve&lt;/em&gt; his position? How did he lose, when all intuition would suggest that he must have had a forced win?&lt;/p&gt;
&lt;h2&gt;Returning to the theme of &quot;imagining you have ten moves in a row&quot;&lt;/h2&gt;
&lt;p&gt;Before reading my analysis of what happened and what could have happened, you might want to take a look at the critical position after move 11, and come up with a plan (or multiple possible plans) for White:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={&lt;code&gt;[Event &quot;Hastings 7475&quot;] [Site &quot;Hastings&quot;] [Date &quot;1974&quot;] [Round &quot;11&quot;] [White &quot;Ulf Andersson&quot;] [Black &quot;Michael John Basman&quot;] [FEN &quot;1n1q1rk1/rbp1bpp1/pp3n1p/3pN3/3P1B2/2N3P1/PP2PPBP/2RQ1RK1 w - - 0 12&quot;]&lt;/code&gt;} /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Finding a suitable plan&lt;/h2&gt;
&lt;p&gt;Here are some thoughts on this position. First, it is a classical fixed Pawn structure arising often from a Queen&apos;s Gambit Declined or Queen&apos;s Indian Defense, in which White has exchanged the c Pawn for Black&apos;s e Pawn. Black has a natural plan of possibly playing for Queen side counterplay c5, which might lead to a hanging Pawn structure. White has a natural plan of possibly playing for e4.&lt;/p&gt;
&lt;p&gt;In any case, in order to break through Black&apos;s position, it is clear that White has to get a Pawn storm in somehow, to further restrict Black&apos;s pieces and to open lines.&lt;/p&gt;
&lt;h3&gt;e4 then e5&lt;/h3&gt;
&lt;p&gt;Now, there are subtleties concerning an e4 break by White. First of all, if White plays e4 without the support of f3, he might end up with an isolated d Pawn and get blocked up. Also, if White does play e4 without f3 support, it might be that the position is open enough to justify the isolated d Pawn. And playing a preparatory f3 has its drawbacks: White&apos;s Bishop is temporarily locked in, pressure on d5 temporarily drops, and Black might strike back with c5.&lt;/p&gt;
&lt;p&gt;Finally, it is almost certainly bad for Black in the long run to allow White to play e4 and then e5, because then f4 and f5 will follow, with a strong King side attack.&lt;/p&gt;
&lt;h3&gt;b4 then b5&lt;/h3&gt;
&lt;p&gt;As mentioned, White needs to restrain Black from playing a possibly freeing c5. Often in these kinds of positions (especially in the Tartakower Defense of the Queen&apos;s Gambit Declined), White may play the minority-attack b4 to try to restrain c5, and also have idea of playing a4 and b5 against Black&apos;s c6 square (or Pawn if Black moved there). But sometimes this plan, which weakens c4, might give Black the possibility of playing c6, b5, a Knight to b6 and c4 for counterplay.&lt;/p&gt;
&lt;p&gt;The other thematic restraining idea by White is to play Qb3 and Rfd1.&lt;/p&gt;
&lt;h3&gt;g4 then g5&lt;/h3&gt;
&lt;p&gt;Finally, another possible plan for White is a flank plan, aiming for g4 and g5 to pry apart Black&apos;s King side.&lt;/p&gt;
&lt;h2&gt;What actually happened&lt;/h2&gt;
&lt;p&gt;What actually happened was that White began the restraining process against Black&apos;s Queen side, and so Black decided to simply shuffle pieces around, having nothing better to do than to &lt;em&gt;wait&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Then White switched to the other wing and embarked on the g4 plan. This in itself was not actually terrible. In fact, at some points White had a won game with an eventual threat of g5 dislodging Black&apos;s Knight defending d5.&lt;/p&gt;
&lt;p&gt;Unfortunately, White made the mistake of instead overextending on the King side while exposing his own King. As a result, Black actually ended up freeing himself. Then after a number of errors, White further exposed his King and got into more danger.&lt;/p&gt;
&lt;p&gt;Nevertheless, it took one final blunder before White lost the game by force, as a result of an exposed King combined with invasion by Black&apos;s Queen and Rook.&lt;/p&gt;
&lt;p&gt;It took quite a few errors in judgment for White to end up losing this game, but all of us have lost games in which we had a huge advantage and lost the thread, first losing the advantage and then losing the drawable endgame!&lt;/p&gt;
&lt;h2&gt;Looking for a breakthrough myself&lt;/h2&gt;
&lt;p&gt;While analyzing this position, I came to the conclusion that a combination of playing on the Queen side and center and King side was a good way to go. My plan, with some variations, is in the annotations below. First, make sure that to watch d5 square, and make sure that c5 and c6 are always bad for Black. Second, tie Black down on the Queen side and get control of the critical c6 square, by a3, b4, a4, b5. Third, advance on the King side (I chose h4) to restrain Black there. Finally, I believe White can then, after acquiring so much space, gang up on black&apos;s c7 Pawn and d5 Pawn.&lt;/p&gt;
&lt;p&gt;I invite you to work out other plans of winning, whether variations of Andersson&apos;s g5 idea or an f3/e4 idea. I think it&apos;s instructive to try out these different plans.&lt;/p&gt;
&lt;h2&gt;Unseen tactics&lt;/h2&gt;
&lt;p&gt;Black&apos;s shuffling around actually left open some tactics both player missed, such as a decisive 21 g5 breaking through on d5 as well as on g6 and the g file. This illustrates that even in a position in which seemingly quiet maneuvers are being performed, there could be moves that completely change the nature of the position.&lt;/p&gt;
&lt;h2&gt;The full game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Hastings 7475&quot;]
[Site &quot;Hastings&quot;]
[Date &quot;1974&quot;]
[Round &quot;11&quot;]
[White &quot;Ulf Andersson&quot;]
[Black &quot;Michael John Basman&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;E18&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 b6 2. g3 Bb7 3. Bg2 e6 4. O-O d5 5. c4 Nf6 6. d4 Be7 7. Nc3 O-O 8. Ne5 h6 9. Bf4 { Here&apos;s where Basman started just waiting around.} 9… a6 $5 { The beginning of an unusual purely defensive plan.} 10. Rc1 Ra7 { Protecting the Bishop on b7 and forcing White to do something about the c4 Pawn.} 11. cxd5 { Fixing the Pawn structure.} 11… exd5 $201 12. Qb3 { A thematic move to restrain Black by applying pressure to the Pawn on d5, and prepare for even more pressure with Rfd1 and then think about the e4 break.} 12… Ba8 $5 { Starting to shuffle around waiting.} ( 12… c5 $2 13. dxc5 bxc5 $2 14. Rfd1 { And Black will lose one of the weak hanging Pawns. This was the point of Qb3.} ) 13. Rfd1 Kh7 $5 { Very provocative, asking for e4.} ( 13… Bb7 ) 14. h3 { The beginning of an ambitious plan to play g4, Kg3, and h4, to prepare for g6.} ( 14. e4 { The thematic center break has to be looked at. Andersson must have thought it was not good enough for a win.} 14… c6 ( 14… dxe4 $2 15. Nxf7 ) 15. Nd3 ( 15. Na4 b5 16. Nc5 ) 15… dxe4 ( 15… Kg8 16. e5 { Allowing e5 is surely a mistake.} ) 16. Ne5 Kg8 17. Nxe4 Nd5 18. Bd2 $201 { The position looks fine for White, but Black has a fantastic Knight on d5 and it is not clear how White can make progress.} ) ( 14. f3 { Aiming for e4 supported by f3 is perfectly reasonable.} 14… c5 { Black can try for counterplay with c5. White is OK but why let this happen?} ) ( 14. a3 { Let&apos;s say White fortified the Queen side with a3 and b4, shutting down c5 and preparing a minority attack in case Black ever plays c6.} 14… Kg8 15. Qa2 Kh7 16. b4 Kg8 17. Qb3 Bb7 ( 17… Kh7 $2 $201 18. e4 c6 19. b5 { White breaks through.} ) 18. a4 Ba8 ( 18… c6 $201 19. b5 { Black&apos;s center and Queen side are about to be shattered.} ) 19. b5 a5 20. h4 { Restraining Black on both wings, and then building up against the c7 Pawn and d5 Pawn, looks effective to me.} ) 14… Kg8 15. Kh2 { In retrospect, it seems that bringing the King into the action was a mistaken plan.} 15… Kh7 16. g4 Kg8 17. Bg3 Bb7 18. e3 Ba8 19. a3 Bb7 $201 20. f4 Ba8 $4 $201 { Missing the power of g5.} 21. Rd2 $2 ( 21. g5 hxg5 22. fxg5 Nh5 23. g6 fxg6 24. Nxd5 Bxd5 25. Bxd5+ { Black is lost.} 25… Kh7 26. Rg1 ) 21… Qd6 $2 ( 21… c6 ) 22. f5 $2 ( 22. Bf3 { White could have maintained control of e5 and g5 by leaving the Pawn on f4. g5 is coming soon and Black is lost.} ) 22… Qd8 23. Bf4 Bb7 $201 { Black&apos;s pieces are back where they were 12 moves ago!! But White&apos;s position is actually a bit looser now than it was 12 moves ago.} 24. Rg1 $2 { Still going for g5.} 24… c6 25. Bf3 $2 ( 25. e4 ) 25… Nh7 { So much for White&apos;s g5.} ( 25… Nfd7 ) 26. Rc1 Bd6 27. Na4 $2 ( 27. e4 { White always had this possibility, which always was at least advantageous even if not winning.} ) 27… Bc7 28. Kg3 $2 { Not seeing the danger of King exposure.} ( 28. e4 ) 28… Nf6 29. h4 $2 Nfd7 30. Nxd7 $2 ( 30. Qc3 ) 30… Nxd7 31. Re2 Re8 $201 { What a remarkable turn of events. White is defending now.} 32. Kh3 Bxf4 33. exf4 Rxe2 34. Bxe2 Qe7 35. Bf3 b5 36. Nc5 $201 Bc8 $2 ( 36… Nxc5 37. Rxc5 { All of a sudden Black&apos;s King side is falling apart.} 37… h5 { White is still OK if holding onto the e5 outpost.} ) 37. Qd3 $2 ( 37. Nd3 { Rerouting the Knight to e5 was strong.} ) 37… h5 38. gxh5 $2 { Not seeing the danger to the King.} ( 38. Nxd7 hxg4+ 39. Bxg4 Bxd7 ) 38… Qf6 $2 ( 38… Nxc5 39. Rxc5 { Looks defensible by White despite the isolated and doubled f Pawns. The Rook on c1 is ready to defend as needed.} 39… Qf6 40. Kg4 ( 40. Bg4 $2 Re7 { White is under pressure.} ) 40… g6 ) 39. Kg3 $2 { It&apos;s a mistake letting Black&apos;s Bishop become active.} ( 39. Nxd7 Bxd7 40. Bg4 ) 39… Nxc5 40. Rxc5 Bxf5 41. Qc3 Bd7 42. Qd3 Ra8 ( 42… Qe6 ) 43. Rc1 Re8 44. Qc3 $201 { Now it looks like Black cannot break through for a win.} 44… c5 $5 { A pure swindling move.} 45. Qxc5 $4 { The big losing move in the game.} ( 45. dxc5 d4 { White is easily OK.} 46. Qd2 Re3 47. Re1 ) 45… Qf5 { Black&apos;s Queen is coming in on h3, and Black&apos;s Rook is coming down the e file.} 46. Qxd5 Qh3+ 47. Kf2 Qh2+ 48. Bg2 Qxf4+ 49. Bf3 Bg4 { Black&apos;s Bishop, which had been passive for so much of the game, is now critically useful.} 50. Rc3 Qh2+ 51. Bg2 Qxh4+ 52. Kg1 Re1+ 53. Bf1 Bh3 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: Introduction to Reactive</title><link>https://franklinchen.com/blog/2014/01/09/pittsburgh-scala-meetup-introduction-to-reactive/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/09/pittsburgh-scala-meetup-introduction-to-reactive/</guid><pubDate>Fri, 10 Jan 2014 02:29:20 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; met with Josh presenting an &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/146581352/&quot;&gt;&quot;Introduction to Reactive&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was great.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Pre-meetup dinner&lt;/h2&gt;
&lt;p&gt;A couple of us (Justin, Josh, Chris, me) had an early dinner at Everyday Noodles before the meetup. Very filling!&lt;/p&gt;
&lt;h2&gt;Turnout&lt;/h2&gt;
&lt;p&gt;Ten of us showed up for this meeting.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;h3&gt;What is &quot;reactive&quot; anyway?&lt;/h3&gt;
&lt;p&gt;In case you didn&apos;t hear about it in the media, the term &quot;reactive&quot; has been popularized in recent months, and I &lt;a href=&quot;/blog/2013/12/31/review-of-the-free-coursera-course-principles-of-reactive-programming/&quot;&gt;reviewed the free Coursera course &quot;Principles of Reactive Programming&quot;&lt;/a&gt; that some of us in the Pittsburgh Scala group just completed, so check out my post for more on &quot;reactive&quot;.&lt;/p&gt;
&lt;h3&gt;Futures&lt;/h3&gt;
&lt;p&gt;Josh did a live SBT session reviewing futures and promises.&lt;/p&gt;
&lt;p&gt;He noted that futures have limitations as a component of reactive systems. (This had become apparent when &lt;a href=&quot;https://franklinchen.com/blog/2013/03/25/openhack-pittsburgh-exploring-scala-odds-and-ends/&quot;&gt;I started using futures last year in my personal projects&lt;/a&gt; and then &lt;a href=&quot;/blog/2013/08/02/pittsburgh-ruby-python-social/&quot;&gt;for work&lt;/a&gt;.) By themselves, futures do not support cancellation or &lt;a href=&quot;https://en.wikipedia.org/wiki/Back_pressure&quot;&gt;back pressure&lt;/a&gt;. Futures are a low-level, limited mechanism that are the right tool only if you have a pipeline all the way through forward, no back channel.&lt;/p&gt;
&lt;p&gt;An alternative to futures, of course, is to go all out and use Akka actors. But the drawback I&apos;ve found with that is that this is a heavyweight mechanism for problems that don&apos;t need the full power of actors. I&apos;ve wanted something more structured and lightweight than using actors directly. I find it tricky to program using actors, because it is very easy to start writing spaghetti code that is spread out everywhere (which is what happened to me in the final project for the Coursera course).&lt;/p&gt;
&lt;p&gt;It turns out, according to Josh, that Typesafe is working on precisely this problem! Nice. He&apos;ll tell us more when it comes out.&lt;/p&gt;
&lt;h4&gt;(Update of 2014-07-10)&lt;/h4&gt;
&lt;p&gt;Half a year later, the promise was realized, as the Pittsburgh Scala Meetup had Josh gave a talk on the new API called Reactive Streams!&lt;/p&gt;
&lt;h3&gt;Play&lt;/h3&gt;
&lt;p&gt;Josh demonstrated &lt;a href=&quot;http://typesafe.com/activator&quot;&gt;Typesafe Activator&lt;/a&gt;, the cool new Web browser-based platform for using Scala. He showed an app using Play that looks at blogs simultaneously and uses &lt;code&gt;recoverWith&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Random other questions and discussions&lt;/h2&gt;
&lt;p&gt;What I like about the Pittsburgh Scala Meetup is that even when we have a presentation, discussion often wanders off to related topics (or unrelated topics). Anything goes, and I usually learn a lot.&lt;/p&gt;
&lt;p&gt;Someone asked about support for channels as in Go or Clojure&apos;s &lt;a href=&quot;https://github.com/clojure/core.async&quot;&gt;&lt;code&gt;core.async&lt;/code&gt;&lt;/a&gt;. Josh said they&apos;re working on this sort of thing with support for back pressure.&lt;/p&gt;
&lt;p&gt;Someone asked about how to connect &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.playframework.com/documentation/2.0/Iteratees&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.playframework.com/documentation/2.0/Iteratees&quot;&amp;gt;iteratees&amp;lt;/span&amp;gt; with actors. Josh said, you can feed from an iteratee to an actor, and then just let the actor do stuff. However, there is some controversy about the whole iteratee thing in Play.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This was a great Pittsburgh Scala Meetup session. I felt that a lot of questions that had built up in my mind after having gotten into reactive programming are being addressed with continuing work.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The subtleties of time-consuming knight maneuvers</title><link>https://franklinchen.com/blog/2014/01/09/the-chess-improver-the-subtleties-of-time-consuming-knight-maneuvers/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/09/the-chess-improver-the-subtleties-of-time-consuming-knight-maneuvers/</guid><pubDate>Thu, 09 Jan 2014 12:18:45 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The subtleties of time-consuming knight maneuvers&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The Knight must be the most fascinating piece in the game of chess. It moves and attacks in a funny direction at a short distance. Recently The Chess Improver published a post &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://chessimprover.com/knight-moves/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://chessimprover.com/knight-moves/&quot;&amp;gt;&quot;Knight moves&quot;&amp;lt;/span&amp;gt; discussing the special issues that the Knight raises when it comes to visualizing what it can do and how it can do it. Today, I expand on the theme of Knight moves, by beginning a discussion of subtleties in planning and in the flow of a chess game that arise because of the special way that Knights move.&lt;/p&gt;
&lt;p&gt;Because of the fixed and odd (vs. even) parity of its movement, a Knight often has to make at least two moves to radically reorient itself to protect or attack particular squares. The time-consuming nature of such maneuvers means that deciding to redeploy a Knight involves considering the tradeoffs of the loss of time:&lt;/p&gt;
&lt;p&gt;In a closed position, there may be enough time to redeploy without falling victim to a sustained attack that may prevent the successful completion of the maneuver.
In a more open position, the loss of time may be just enough to allow the opposing side to force a radical and advantageous reconfiguration of the position (often on the area of the board where the Knight has vacated control).&lt;/p&gt;
&lt;p&gt;This sounds abstract, so I&apos;ll give some examples of both situations.&lt;/p&gt;
&lt;h2&gt;Closed Positions&lt;/h2&gt;
&lt;p&gt;In the position below, taken from Jeremy Silman&apos;s book &quot;The Amateur&apos;s Mind&quot; (p. 66), the position is rather closed. Black is obviously very passive and surely must be lost. The interesting thing is, if you give this position to a chess engine, it may take a while to figure out a way to actually win for White, because its evaluation function may simply have White just shuffle pieces around aimlessly rather than aim for a breakthrough sacrifice. As humans, I believe that we can more naturally generate an entire plan to win, and then calculate it out to determine that in fact it works.&lt;/p&gt;
&lt;p&gt;I give a sample winning continuation (there are clearly many other ways to win, including breaking through on b6 instead) in which White calmly takes the time to maneuver a Knight &lt;em&gt;backward&lt;/em&gt; from d3 to e1, then &lt;em&gt;forward&lt;/em&gt; to f3, and then sacrifice the heroic Knight for two Pawns enabling White&apos;s Bishop get to g5, and then with White&apos;s major pieces coming in on the open h file, the game is basically over.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Result &quot;1-0&quot;]
[FEN &quot;rnb2qr1/2p1nkb1/ppPp1p1p/3PpPp1/PP2P1PP/2NN2Q1/4BK1R/2B4R w - - 0 1&quot;]
[Setup &quot;1&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ne1 Ke8 2. Nf3 Qf7 3. hxg5 hxg5 4. Rh7 Rf8 5. Qh2 Kd8 6. Nxg5 fxg5 7. Bxg5 *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Open Positions&lt;/h2&gt;
&lt;p&gt;The tricky thing in an open position is that temporarily redeploying your Knight by having it go backward or sideways is that your opponent does not have to stand still and do nothing in return while you improve your position. Very often, a Knight maneuver temporarily &lt;em&gt;worsens&lt;/em&gt; your position, in some sense. I believe that this is what makes chess so fascinating. Pawns never move backward. Queens, Rooks, and Bishops can move &quot;backward&quot;, but the kind of backward that they move is such that they still keep their eye on what was forward (or diagonal or sideways): a Queen retreating from d4 to d1 still aims all the way down the d file, but a Knight that retreats from d3 to e1 relinquishes control of c5 and e5.&lt;/p&gt;
&lt;p&gt;In some previous posts, I already gave examples of slow Knight maneuvers that took time away from development and allowed the other side to come up with disruptive threats.&lt;/p&gt;
&lt;p&gt;A post about &lt;a href=&quot;/blog/2013/11/14/the-chess-improver-whether-an-interesting-opening-idea-is-good-or-bad-depends-on-context/&quot;&gt;a Knight maneuver in the opening&lt;/a&gt; showed how an early redeployment by Black of a Knight from c6 to e7 to g6 resulted in tactical disaster, but required White to be aggressive in punishing the maneuver: if White played &quot;normally&quot;, then Black got a quite decent position.&lt;/p&gt;
&lt;h2&gt;Both Sides Manoeuvering Knights, Maintaining A Rough Balance&lt;/h2&gt;
&lt;p&gt;In the recent Anand-Carlsen FIDE World Chess Championship match, we saw examples of Knight maneuvers that did not lead to much. This does not necessarily mean that they should not have been tried: in chess, when the position may well be balanced, one has opportunities to try something. And often, one tries to improve a Knight&apos;s position. But sometimes, an idea is just too slow.&lt;/p&gt;
&lt;p&gt;For example, in round 6, Anand tried to reposition both of his Knight to point to Black&apos;s King side (Black&apos;s Knight on f6 as well as the d5 and f5 light squares) with Nh2 to Nhg4, and Ndf1 to Ne3, but this took so much time that Carlsen easily neutralized the plan, by doing a Queen maneuver to e7 and then to e6.&lt;/p&gt;
&lt;p&gt;The interesting thing is that in this game, Carlsen also played a time-consuming Knight maneuver, a thematic Nb8 to Nbd7, which is a solid defensive setup. Anand could have taken advantage of the time to play b4, for example, instead of also engaging in Knight maneuvers. So the question of whether a Knight maneuver is good is subtle, and I think is one of the most interesting aspects of human chess. It&apos;s not that b4 is a winning plan or a great one; it&apos;s just that Knight maneuvers often allow a possible transofrmation of a position (in this case, the Knight no longer being on c6 led to weakening a5, for example).&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;WCh 2013&quot;]
[Site &quot;Chennai IND&quot;]
[Date &quot;2013.11.16&quot;]
[Round &quot;6&quot;]
[White &quot;Anand, Viswanathan&quot;]
[Black &quot;Carlsen, Magnus&quot;]
[Result &quot;0-1&quot;]
[WhiteTitle &quot;GM&quot;]
[BlackTitle &quot;GM&quot;]
[WhiteElo &quot;2775&quot;]
[BlackElo &quot;2870&quot;]
[ECO &quot;C65&quot;]
[Opening &quot;Ruy Lopez&quot;]
[Variation &quot;Berlin defence&quot;]
[WhiteFideId &quot;5000017&quot;]
[BlackFideId &quot;1503014&quot;]
[EventDate &quot;2013.11.09&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. c3 O-O 6. O-O Re8 7. Re1 a6 8. Ba4 b5 9. Bb3 d6 10. Bg5 Be6 11. Nbd2 h6 12. Bh4 Bxb3 13. axb3 Nb8 14. h3 ( 14. b4 { Aiming at Queen side play looks completely natural and good, but Anand must have thought there were no immediate prospects there.} ) 14… Nbd7 15. Nh2 Qe7 16. Ndf1 Bb6 17. Ne3 Qe6 18. b4 a5 19. bxa5 Bxa5 20. Nhg4 Bb6 21. Bxf6 Nxf6 22. Nxf6+ Qxf6 23. Qg4 Bxe3 24. fxe3 Qe7 25. Rf1 c5 26. Kh2 c4 27. d4 Rxa1 28. Rxa1 Qb7 29. Rd1 Qc6 30. Qf5 exd4 31. Rxd4 Re5 32. Qf3 Qc7 33. Kh1 Qe7 34. Qg4 Kh7 35. Qf4 g6 36. Kh2 Kg7 37. Qf3 Re6 38. Qg3 Rxe4 39. Qxd6 Rxe3 40. Qxe7 Rxe7 41. Rd5 Rb7 42. Rd6 f6 43. h4 Kf7 44. h5 gxh5 45. Rd5 Kg6 46. Kg3 Rb6 47. Rc5 f5 48. Kh4 Re6 49. Rxb5 Re4+ 50. Kh3 Kg5 51. Rb8 h4 52. Rg8+ Kh5 53. Rf8 Rf4 54. Rc8 Rg4 55. Rf8 Rg3+ 56. Kh2 Kg5 57. Rg8+ Kf4 58. Rc8 Ke3 59. Rxc4 f4 60. Ra4 h3 61. gxh3 Rg6 62. c4 f3 63. Ra3+ Ke2 64. b4 f2 65. Ra2+ Kf3 66. Ra3+ Kf4 67. Ra8 Rg1 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;A Bad Knight Manoeuver&lt;/h2&gt;
&lt;p&gt;Finally, an example of Knight maneuvers that have to be classified as strange and unwarranted. This is from round 4 of Anand-Carlsen. Anand wasted a lot of time moving Knights around and was in danger in this game. Ne1 &quot;undefended&quot; e5, and then after Nd3 that Knight didn&apos;t do much and ended ignominiously on c1. The other Knight also did not fare well, after going to e2 and allowing the a2 Pawn to be lost. It was not a good game for the knight pair.&lt;/p&gt;
&lt;p&gt;(But, in case this post gives the wrong impression, Anand has historically been one of the great players of the two Knights. Future posts may explore examples.)&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;WCh 2013&quot;]
[Site &quot;Chennai IND&quot;]
[Date &quot;2013.11.13&quot;]
[Round &quot;4&quot;]
[White &quot;Anand, Viswanathan&quot;]
[Black &quot;Carlsen, Magnus&quot;]
[Result &quot;1/2-1/2&quot;]
[WhiteTitle &quot;GM&quot;]
[BlackTitle &quot;GM&quot;]
[WhiteElo &quot;2775&quot;]
[BlackElo &quot;2870&quot;]
[ECO &quot;C67&quot;]
[Opening &quot;Ruy Lopez&quot;]
[Variation &quot;Berlin defence, open variation&quot;]
[WhiteFideId &quot;5000017&quot;]
[BlackFideId &quot;1503014&quot;]
[EventDate &quot;2013.11.09&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Nd6 6. Bxc6 dxc6 7. dxe5 Nf5 8. Qxd8+ Kxd8 9. h3 Bd7 10. Rd1 Be7 11. Nc3 Kc8 12. Bg5 h6 13. Bxe7 Nxe7 14. Rd2 c5 15. Rad1 Be6 16. Ne1 Ng6 17. Nd3 b6 18. Ne2 Bxa2 19. b3 c4 20. Ndc1 cxb3 21. cxb3 Bb1 22. f4 Kb7 23. Nc3 Bf5 24. g4 Bc8 25. Nd3 h5 26. f5 Ne7 27. Nb5 hxg4 28. hxg4 Rh4 29. Nf2 Nc6 30. Rc2 a5 31. Rc4 g6 32. Rdc1 Bd7 33. e6 fxe6 34. fxe6 Be8 35. Ne4 Rxg4+ 36. Kf2 Rf4+ 37. Ke3 Rf8 38. Nd4 Nxd4 39. Rxc7+ Ka6 40. Kxd4 Rd8+ 41. Kc3 Rf3+ 42. Kb2 Re3 43. Rc8 Rdd3 44. Ra8+ Kb7 45. Rxe8 Rxe4 46. e7 Rg3 47. Rc3 Re2+ 48. Rc2 Ree3 49. Ka2 g5 50. Rd2 Re5 51. Rd7+ Kc6 52. Red8 Rge3 53. Rd6+ Kb7 54. R8d7+ Ka6 55. Rd5 Re2+ 56. Ka3 Re6 57. Rd8 g4 58. Rg5 Rxe7 59. Ra8+ Kb7 60. Rag8 a4 61. Rxg4 axb3 62. R8g7 Ka6 63. Rxe7 Rxe7 64. Kxb3 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Using the Knights effectively is tricky in chess. I really enjoy trying to make my Knights work together, and seeing how other players do it. What is most interesting is that most of the time, a Knight maneuver involves a lot of interesting tradeoffs that must be weighed, in terms of use of time and control of important squares.&lt;/p&gt;
</content:encoded></item><item><title>Happy New Year with a Boyce-Mayview Park hike: wetlands, creeks, beavers, woodpeckers, waterfalls...</title><link>https://franklinchen.com/blog/2014/01/01/happy-new-year-with-a-boyce-mayview-park-hike-wetlands/</link><guid isPermaLink="true">https://franklinchen.com/blog/2014/01/01/happy-new-year-with-a-boyce-mayview-park-hike-wetlands/</guid><pubDate>Thu, 02 Jan 2014 00:57:07 GMT</pubDate><content:encoded>&lt;p&gt;Happy New Year 2014!&lt;/p&gt;
&lt;p&gt;Abby and I started off this new year with a lovely &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/157809022&quot;&gt;hike with the Pittsburgh hiking meetup group&lt;/a&gt;, led by Gary Byrdman. It was in Boyce-Mayview Park, a park we&apos;d never been to before &lt;a href=&quot;https://www.twpusc.org/rec-leisure/parks-fields&quot;&gt;in Upper St. Clair&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/break.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was a beautiful day, not too cold (over 20F), and mostly not too muddy or icy either, thankfully. Abby and I did each use a pair of hiking poles, and many of us used &lt;a href=&quot;https://kahtoola.com/product/microspikes/&quot;&gt;MICROSpikes&lt;/a&gt; or &lt;a href=&quot;https://www.yaktrax.com/&quot;&gt;Yaktrax&lt;/a&gt; also during the hike, but it turned out that the spikes were actually something of a hassle because snow accumulated under them for people. If it had been more icy out, I would have used spikes, however.&lt;/p&gt;
&lt;p&gt;I was originally hoping to wear my relatively new minimalist New Balance Minimus Zero trail running shoes for this hike, but quickly decided that this would be a bad idea mainly because of the risk of getting my feet cold and wet, so I wrote my old Montrail Rockridge trail running shoes, which I haven&apos;t worn in years because they have gotten a bit small for me, requiring me to wear very thin socks (which I did on this hike). Far from minimalist, but in the winter in the face of water dangers (and indeed, we had a couple of stream crossings in which I got a little wet), I don&apos;t have a true minimalist shoe yet.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s7d5.scene7.com/is/image/ColumbiaSportswear/S11_GM2098_654_f?$MTR_pdp_lg$&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s7d5.scene7.com/is/image/ColumbiaSportswear/S11_GM2098_654_f?$MTR_pdp_lg$&quot;&amp;gt;[image: Montrail Rockridge]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;The hike lasted about two and a half hours.&lt;/p&gt;
&lt;p&gt;We had a great group of people, and Gary even brought breakfast to share with us. After the hike, I eagerly sampled his treats. What a guy! During the hike, he pointed out interesting features, such as beaver dams, woodpecker holes (and we heard woodpeckers too), places that are great for birding in the spring, and a nice waterfall that was partially iced but running.&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;If you&apos;re a member of the &lt;a href=&quot;https://www.meetup.com/pittsburghhikers&quot;&gt;Pittsburgh hiking meetup group&lt;/a&gt;, you have access to the event page and the &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/photos/19309272/&quot;&gt;photo page for the hike&lt;/a&gt;, where I uploaded a couple dozen photos.&lt;/p&gt;
&lt;p&gt;I&apos;m posting just a few here, to whet your appetite for this park. There was such varied terrain and so much to see!&lt;/p&gt;
&lt;p&gt;Parking at the trail head:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/trail-parking.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Breakfast by Gary:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/gary-breakfast.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A beaver was at this tree:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/beaver-tree.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Stream crossing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/stream-crossing.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On a trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/trail.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Waterfall:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/waterfall.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going uphill:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/uphill.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Short break:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/break.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the meadows we crossed:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/meadow.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-mayview-2014-01-01/up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Abby and I really enjoyed this hike. We promised ourselves that we would return to it next spring and summer. There&apos;s clearly so much to enjoy and explore in Boyce-Mayview Park.&lt;/p&gt;
&lt;p&gt;If you want to check it out yourself, the Pittsburgh Meetup group often has hikes in this park.&lt;/p&gt;
&lt;p&gt;I love living in Western Pennsylvania. There is so much to see around here. I will never get bored here. I feel blessed to be living here in Pittsburgh.&lt;/p&gt;
</content:encoded></item><item><title>Review of the free Coursera course &quot;Principles of Reactive Programming&quot;</title><link>https://franklinchen.com/blog/2013/12/31/review-of-the-free-coursera-course-principles-of-reactive-programming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/31/review-of-the-free-coursera-course-principles-of-reactive-programming/</guid><pubDate>Wed, 01 Jan 2014 02:29:39 GMT</pubDate><content:encoded>&lt;p&gt;At long last, I have officially completed the free Coursera course &lt;a href=&quot;http://www.coursera.org/course/reactive&quot;&gt;&quot;Principles of Reactive Programming&quot;&lt;/a&gt;, receiving my &quot;Statement of Accomplishment&quot;.&lt;/p&gt;
&lt;p&gt;This was an intense course, a lot of work, actually, and made the last two month s of my life (November and December) challenging as I juggled many activities. But it was worth the effort. I would definitely recommend this course to anyone who has completed the introductory course &lt;a href=&quot;http://www.coursera.org/course/progfun&quot;&gt;&quot;Principles of Functional Programming in Scala&quot;&lt;/a&gt; (or has the equivalent background). (See my &lt;a href=&quot;https://franklinchen.com/blog/2012-11-15-review-of-courseras-fall-2012-functional-programming-principles-in-scala/&quot;&gt;review of that course as offered in fall of 2012&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;I took this course along with a bunch of local friends who are also members of the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;What is &quot;Reactive&quot;?&lt;/h2&gt;
&lt;p&gt;&quot;Reactive&quot; is a fairly new buzzword, popularized recently by the &lt;a href=&quot;http://www.reactivemanifesto.org/&quot;&gt;Reactive Manifesto&lt;/a&gt; to urge consideration of four traits modern applications may need to have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;responsive&lt;/li&gt;
&lt;li&gt;scalable&lt;/li&gt;
&lt;li&gt;resilient&lt;/li&gt;
&lt;li&gt;event-driven&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Instructors and topics&lt;/h2&gt;
&lt;p&gt;Each instructor was responsible for covering a key technology.&lt;/p&gt;
&lt;h3&gt;Martin Odersky&lt;/h3&gt;
&lt;p&gt;Martin Oderksy, the inventor of Scala and instructor for the previously mentioned &quot;Principles of Functional Programming in Scala&quot; course, focused on covering more advanced usage of Scala.&lt;/p&gt;
&lt;p&gt;He immediately introduced monads, which are key to many of the concepts and libraries used throughout this course. Scala&apos;s support for monads through the syntax of for-comprehensions is very helpful. He introduced the property-based testing framework &lt;a href=&quot;http://www.scalacheck.org/&quot;&gt;ScalaCheck&lt;/a&gt; (which uses monads for generation of data), and the first assignment involved working with the framework. (By the way, I gave a &lt;a href=&quot;https://franklinchen.com/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/&quot;&gt;talk on property-based testing using ScalaCheck&lt;/a&gt; eight months ago.)&lt;/p&gt;
&lt;p&gt;Then he discussed modeling event simulation in Scala using mutable objects. I felt that this unit was not in the spirit of the others, because there was so much uncontrolled mutable state running around. My friends and I agreed that the assignment for this unit was burdensome and not really useful. I thought to myself, in fact, that I would never solve the problems in this way.&lt;/p&gt;
&lt;h3&gt;Erik Meijer&lt;/h3&gt;
&lt;p&gt;Erik Meijer is a very energetic and humorous speaker. I really enjoyed his lectures.&lt;/p&gt;
&lt;p&gt;In his first unit, he introduced asynchronous programming using Scala&apos;s &lt;a href=&quot;http://docs.scala-lang.org/overviews/core/futures.html&quot;&gt;&lt;code&gt;Future&lt;/code&gt; monad (backed by a &lt;code&gt;Promise&lt;/code&gt;)&lt;/a&gt;, as well as the cool new &lt;a href=&quot;https://github.com/scala/async&quot;&gt;macro-based &lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt; library&lt;/a&gt;, which greatly simplifies writing code. Our assignment, which was instructive and interesting, was to implement a baby version of Node.js in Scala, ha!&lt;/p&gt;
&lt;p&gt;Then he introduced &lt;a href=&quot;https://rxscala.github.io/&quot;&gt;&lt;code&gt;RxScala&lt;/code&gt;&lt;/a&gt;, a Scala adaptor for &lt;a href=&quot;https://github.com/Netflix/RxJava&quot;&gt;&lt;code&gt;RxJava&lt;/code&gt;&lt;/a&gt;, which is a Java port of Microsoft&apos;s &quot;reactive extensions&quot; &lt;code&gt;Rx&lt;/code&gt; framework. I enjoyed this unit a lot, and appreciated the great documentation available (the &quot;marble diagrams&quot; are particularly useful). One nitpick I suppose I must have with his presentation is that I&apos;m not sure that, for a non-theory-oriented audience, the discussions of &quot;duality&quot; were necessary. The assignment was very practically-oriented, gathering data asynchronously and displaying it and allowing user interaction. It was enjoyable and showcased the power of using a framework like Rx.&lt;/p&gt;
&lt;h3&gt;Roland Kuhn&lt;/h3&gt;
&lt;p&gt;Roland Kuhn covered the most complex section of the course, introducing actors by means of the &lt;a href=&quot;http://akka.io/&quot;&gt;Akka&lt;/a&gt; framework.&lt;/p&gt;
&lt;p&gt;The first assignment was fairly straightforward, on implemented a distributed binary tree with actors.&lt;/p&gt;
&lt;p&gt;The second assignment I found quite difficult, and not only because it was crunch time at the end of December before holiday season! It was a distributed key-value store with multiple levels of possible failure. There is no way I would have successfully and correctly completed this assignment without the helpful discussions I found on the online Coursera forums. To really figure out what was going on required (for me) turning on logging in various places and writing a lot of tests using Akka&apos;s &lt;a href=&quot;http://doc.akka.io/docs/akka/snapshot/scala/testing.html&quot;&gt;&lt;code&gt;TestKit&lt;/code&gt;&lt;/a&gt;. I realized eventually that my code was ugly and not entirely clean and idiomatic, but it was definitely a worthwhile learning experience on a realistic problem to solve.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I learned quite a lot from this course. It is a very practical course on &quot;reactive&quot; programming. I felt after completing this course that I was ready to use the concepts and technologies covered in real problems. I am grateful to the instructors (who were active on the forums, by the way) for sharing their theoretical and practical knowledge as a free Coursera course.&lt;/p&gt;
</content:encoded></item><item><title>Beechview urban hike: funky steps, Canton Avenue climb, delicious pizza at Slice on Broadway</title><link>https://franklinchen.com/blog/2013/12/28/beechview-urban-hike/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/28/beechview-urban-hike/</guid><pubDate>Sun, 29 Dec 2013 00:07:00 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I wanted to go out on a hike together, but the trails tend not to be so much to hike on these winter days, so we decided to do an exploratory urban hike.&lt;/p&gt;
&lt;p&gt;I randomly chose for us to explore &lt;a href=&quot;https://en.wikipedia.org/wiki/Beechview_(Pittsburgh)&quot;&gt;Beechview&lt;/a&gt;, which is actually still part of the city of Pittsburgh even though it is south, across the Monongahela River. We&apos;d never been to this neighborhood before.&lt;/p&gt;
&lt;p&gt;Actually, the choice wasn&apos;t quite random.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/mural.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Canton Avenue&lt;/h2&gt;
&lt;p&gt;I originally thought of checking this place out because of recently hearing about &lt;a href=&quot;https://en.wikipedia.org/wiki/Canton_Avenue&quot;&gt;Canton Avenue&lt;/a&gt;, which is used in the annual &lt;a href=&quot;https://en.wikipedia.org/wiki/Dirty_Dozen_%28bicycle_competition%29&quot;&gt;Dirty Dozen&lt;/a&gt; bike competition (see &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dannychew.com/dd.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dannychew.com/dd.html&quot;&amp;gt;Danny Chew&apos;s site&amp;lt;/span&amp;gt;). Canton Avenue is the &quot;steepest officially recorded public street in the United States&quot;. I know some people who did the &lt;a href=&quot;https://www.npr.org/2013/12/01/248090521/hill-after-hill-hundreds-crank-away-in-pittsburgh-bike-race&quot;&gt;Dirty Dozen this year (2013)&lt;/a&gt;, so Canton Avenue was fresh in my mind.&lt;/p&gt;
&lt;p&gt;I have no intention of ever biking up Canton Avenue, but its existence got me curious and I thought, why not check out a new neighborhood and walk up this street as part of a hike.&lt;/p&gt;
&lt;h2&gt;Pizza&lt;/h2&gt;
&lt;p&gt;I was also craving some pizza. So I checked to see if there was any interesting pizza place in Beechview. It turned out that there was a fairly new place called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://sliceonbroadway.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://sliceonbroadway.com/&quot;&amp;gt;Slice on Broadway&amp;lt;/span&amp;gt; in Beechview! So it was settled. We&apos;d walk around the neighborhood, check out Canton Avenue, and eat at Slice on Broadway.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;We did that and had a good time. And the pizza was actually quite good: a relatively thin crust, the way I like it. We were so hungry that we each ate an antipasto salad (pretty good) before the large specialty pizza was ready (well, yes, we did take home leftovers).&lt;/p&gt;
&lt;p&gt;One thing we didn&apos;t do was navigate all the steps we saw, because of the residual ice that obviously made things dangerous. Maybe we&apos;ll come back later in the spring and take a tour of the steps. We find the &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;steps of Pittsburgh&lt;/a&gt; fascinating, but still have not explored all the neighborhoods that have such steps.&lt;/p&gt;
&lt;h2&gt;Some photos&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/steps-view.jpg&quot; alt=&quot;Steps and view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/steps-street.jpg&quot; alt=&quot;Steps for sidewalk&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s pretty hilly in Beechview:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/hilly.jpg&quot; alt=&quot;Hilly streets&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We braved this staircase that involved a little bit of snow:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/steps-snowy.jpg&quot; alt=&quot;Steps with snow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was this weird short trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/trail.jpg&quot; alt=&quot;Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Emerging from the trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/after-trail.jpg&quot; alt=&quot;After trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Well, this is the view going up Canton Avenue. It&apos;s steep but short:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/canton-avenue.jpg&quot; alt=&quot;Canton Avenue&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some steps along a street:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/steps-sloping-street.jpg&quot; alt=&quot;Steps sloping on a street&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The trolley in action:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/trolley.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The station where the trolley had come from:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/station.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;More steps, but we were getting hungry, and so we did not follow them:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/steps-to-where.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/mural.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pizza! I almost forgot to take a photo as we already started devouring the pizza:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beechview-2013-12-28/pizza.jpg&quot; alt=&quot;Pizza&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Are you familiar with the Nutcracker story? Check out ETA Hoffmann&apos;s other creepy tales!</title><link>https://franklinchen.com/blog/2013/12/27/are-you-familiar-with-the-nutcracker-story-check-out-eta-hoffmanns-other-creepy-tales/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/27/are-you-familiar-with-the-nutcracker-story-check-out-eta-hoffmanns-other-creepy-tales/</guid><pubDate>Sat, 28 Dec 2013 00:15:36 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s the season when many of us either watch for the first time a production of the ballet &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Nutcracker&quot;&gt;&quot;The Nutcracker&quot;&lt;/a&gt;, or remember having seen it at some point, or remember some non-ballet production of the story (I personally still remember seeing some children&apos;s adaptation of it when I was young).&lt;/p&gt;
&lt;p&gt;But how many of you have actually read the original story by the &lt;a href=&quot;https://en.wikipedia.org/wiki/German_Romanticism&quot;&gt;German Romantic&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/E._T._A._Hoffmann&quot;&gt;ETA Hoffmann&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Nutcracker_and_the_Mouse_King&quot;&gt;&quot;The Nutcracker and the Mouse King&quot;&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.press.uchicago.edu/dms/ucp/books/jacket/0226/34/0226347893.jpeg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.press.uchicago.edu/dms/ucp/books/jacket/0226/34/0226347893.jpeg&quot;&amp;gt;[image: Tales of ETA Hoffmann]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h2&gt;ETA Hoffmann, a forgotten writer?&lt;/h2&gt;
&lt;p&gt;I was reminded of the creepy tales of Hoffmann when this &lt;a href=&quot;https://www.npr.org/2013/12/25/257139160/the-dark-roots-of-the-nutcracker-and-the-man-who-wrote-it&quot;&gt;article about him came my way&lt;/a&gt;. It suggested that people don&apos;t know about him any more. I don&apos;t know how true that is, but because he is one of my all-time favorite writers, I decided to do my part to help promote the work of this fascinating 19th century writer. He wrote not only amazing fiction, but also wrote on philosophy and music: in particular, as this article notes, he was one of the first critics who welcomed the strange figure of Ludwig van Beethoven when Beethoven came on the scene and freaked everyone out with his revolutionary new music.&lt;/p&gt;
&lt;h2&gt;First encounter&lt;/h2&gt;
&lt;p&gt;The first time I heard of ETA Hoffmann was purely a result of hearing a musical excerpt from &lt;a href=&quot;https://en.wikipedia.org/wiki/Jacques_Offenbach&quot;&gt;Jacques Offenbach&lt;/a&gt;&apos;s opera, &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Tales_of_Hoffmann&quot;&gt;&quot;Les contes d&apos;Hoffmann&quot; (&quot;The tales of Hoffmann&quot;)&lt;/a&gt;. This was when I was in high school.&lt;/p&gt;
&lt;p&gt;OK, I have never watched this opera or listened to it, except for the famous &lt;a href=&quot;https://en.wikipedia.org/wiki/Belle_nuit,_%C3%B4_nuit_d%27amour&quot;&gt;Barcarolle&lt;/a&gt;. So basically, I only knew that there was someone whose name was Hoffmann and wrote some &quot;tales&quot; that were used in an opera. That was all.&lt;/p&gt;
&lt;h2&gt;Second encounter&lt;/h2&gt;
&lt;p&gt;My second encounter was when I was in college and learning to like the music of Mozart and Beethoven. I came across the &lt;a href=&quot;/blog/2012/12/10/rip-charles-rosen/&quot;&gt;book by the late Charles Rosen, &quot;The Classical Style&quot;&lt;/a&gt;, and early on in the book, Rosen mentioned this music critic who so loved Mozart that he changed one of his names from &quot;Friedrich&quot; to &quot;Amadeus&quot; (hence our knowing him as ETA Hoffmann rather than ETF Hoffmann)! So that was intriguing. I looked at some of his writing.&lt;/p&gt;
&lt;h2&gt;A fine English translation of selected stories&lt;/h2&gt;
&lt;p&gt;As I immersed myself more in the music of the era, I grew increasingly interested in the philosophy developing that would later be called &lt;a href=&quot;https://en.wikipedia.org/wiki/German_Romanticism&quot;&gt;German Romanticism&lt;/a&gt;. I began reading Fichte, Schlegel, Jean Paul, Kleist, Hölderlin, Jean Paul, Hegel, Goethe, and other figures of the period. I even took a course in German. And of course I ran into ETA Hoffmann again.&lt;/p&gt;
&lt;p&gt;I bought &lt;a href=&quot;https://web.archive.org/web/20260206005056/https://press.uchicago.edu/ucp/books/book/chicago/T/bo3627741.html&quot;&gt;this really good English translation of selected stories of his&lt;/a&gt; and was not disappointed.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.press.uchicago.edu/dms/ucp/books/jacket/0226/34/0226347893.jpeg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.press.uchicago.edu/dms/ucp/books/jacket/0226/34/0226347893.jpeg&quot;&amp;gt;[image: Tales of ETA Hoffmann]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I looked online and there are more recent English translations since my college days.&lt;/p&gt;
&lt;p&gt;The stories are really surreal, raising many questions about humanity and reality. And yes, they are pretty disturbing too: I will confess to having had nightmares based on the stories.&lt;/p&gt;
&lt;p&gt;If you&apos;ve read Edgar Allan Poe, think of Hoffmann the fiction writer as a much, much superior German analogue.&lt;/p&gt;
&lt;h3&gt;The Golden Pot&lt;/h3&gt;
&lt;p&gt;If you read only one story by Hoffmann, I suppose it would have to be &quot;The Golden Pot&quot;. It&apos;s long and vivid, although in the end I could not really make coherent sense of it. It&apos;s a weird fantasy and has a lot of funny elements.&lt;/p&gt;
&lt;p&gt;Here&apos;s an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://gutenberg.net.au/ebooks06/0605801h.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://gutenberg.net.au/ebooks06/0605801h.html&quot;&amp;gt;English translation online&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;The Sandman&lt;/h3&gt;
&lt;p&gt;The story that really got under my skin, however, was &quot;The Sandman&quot;. Very dark.&lt;/p&gt;
&lt;p&gt;Here&apos;s an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://germanstories.vcu.edu/hoffmann/sand_e.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://germanstories.vcu.edu/hoffmann/sand_e.html&quot;&amp;gt;English translation online&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was interesting to be reminded of the stories of ETA Hoffmann at this time of year. Check some out if you haven&apos;t read any before. I have to confess they&apos;re not for everyone, and at this point in my life I am less interested in (and more wary of) this kind of Romantic literature, because I consider it &quot;unhealthy&quot;, frankly, along with other aspects of German Romanticism in general, but I can&apos;t deny the guy was a genius.&lt;/p&gt;
&lt;h2&gt;Questions for you&lt;/h2&gt;
&lt;p&gt;If you&apos;ve read some of Hoffmann&apos;s stories before, which ones are your favorites? Why? Do you think they&apos;re still as interesting now as when coming out from a mindset of the beginnings of Romanticism in the 19th century, or do they feel dated to you?&lt;/p&gt;
</content:encoded></item><item><title>toString considered harmful, part 3</title><link>https://franklinchen.com/blog/2013/12/27/tostring-considered-harmful-part-3/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/27/tostring-considered-harmful-part-3/</guid><pubDate>Fri, 27 Dec 2013 22:03:00 GMT</pubDate><content:encoded>&lt;p&gt;This is part 3 of a series of articles, &quot;&lt;code&gt;toString&lt;/code&gt; considered harmful&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Languages without the &lt;code&gt;toString&lt;/code&gt; problem&lt;/h2&gt;
&lt;p&gt;There actually are quite a few languages that don&apos;t have the &lt;code&gt;toString&lt;/code&gt; problem, or at least have it to a lesser degree.&lt;/p&gt;
&lt;h3&gt;C&lt;/h3&gt;
&lt;p&gt;There is no friendly generic conversion to a string (uh, really just a pointer to a null-terminated chunk of &lt;code&gt;char&lt;/code&gt;) in C. The closest thing is using the type-unsafe &lt;code&gt;printf&lt;/code&gt; family of functions, but you have to do almost all the work if you have some complicated &lt;code&gt;struct&lt;/code&gt; and want to turn it into a C string.&lt;/p&gt;
&lt;h3&gt;C++&lt;/h3&gt;
&lt;p&gt;C++ introduced iostreams, where f you follow certain conventions and overload &lt;code&gt;operator&amp;lt;&amp;lt;&lt;/code&gt; for every domain class of interest, you can build up decent looking strings, without using inheritance.&lt;/p&gt;
&lt;p&gt;Or you could do the object-oriented thing and set up a hierarchy with a &lt;code&gt;ToString&lt;/code&gt; abstract base class. But C++ does not come with everything already inheriting from an &lt;code&gt;Object&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Haskell&lt;/h3&gt;
&lt;p&gt;Haskell does not force a &lt;code&gt;toString&lt;/code&gt; on everything, but provides a &lt;a href=&quot;https://www.haskell.org/tutorial/stdclasses.html&quot;&gt;&lt;code&gt;Show&lt;/code&gt; type class&lt;/a&gt; for convenience in the standard prelude. It is easy (and convenient for debugging) to just tack on &lt;code&gt;deriving Show&lt;/code&gt; and then call &lt;code&gt;show&lt;/code&gt; to convert stuff to a string. This means that one can get lazy and fall into the same design traps as mentioned in the very first code example above. Again, the solution is to refuse to abuse &lt;code&gt;show&lt;/code&gt;, and to use a different name instead for converting something to a string for a particular purpose.&lt;/p&gt;
&lt;h3&gt;Go&lt;/h3&gt;
&lt;p&gt;Go was invented at Google as a modernized C. It does not have classes, but does have &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://research.swtch.com/interfaces&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://research.swtch.com/interfaces&quot;&amp;gt;dynamic interfaces&amp;lt;/span&amp;gt;. All that is required for a user-defined type to satisfy an interface is to implement the method &lt;code&gt;String()&lt;/code&gt; returning a &lt;code&gt;string&lt;/code&gt;. Basically, this makes the type implement the interface &lt;a href=&quot;https://web.archive.org/web/20210703223518/https://golang.org/pkg/fmt/&quot;&gt;fmt.Stringer&lt;/a&gt;. Again, if you don&apos;t implement &lt;code&gt;String() string&lt;/code&gt; for your type, then you will get a compile-time error when trying to treat it as a string.&lt;/p&gt;
&lt;p&gt;Superficially, this sounds like Haskell type classes, but it&apos;s much more limited, because Go does not have generics and Go is only single dispatch. Go&apos;s interfaces really implement a kind of structural subtyping.&lt;/p&gt;
&lt;h3&gt;Standard ML&lt;/h3&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.standardml.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.standardml.org/&quot;&amp;gt;Standard ML&amp;lt;/span&amp;gt; does not have the &lt;code&gt;toString&lt;/code&gt; problem. It does, by convention, supply a &lt;code&gt;toString&lt;/code&gt; function in many modules in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.standardml.org/Basis/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.standardml.org/Basis/&quot;&amp;gt;Standard ML Basis Library&amp;lt;/span&amp;gt;, such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.standardml.org/Basis/integer.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.standardml.org/Basis/integer.html&quot;&amp;gt;Int&amp;lt;/span&amp;gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.standardml.org/Basis/real.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.standardml.org/Basis/real.html&quot;&amp;gt;Real&amp;lt;/span&amp;gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.standardml.org/Basis/bool.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.standardml.org/Basis/bool.html&quot;&amp;gt;Bool&amp;lt;/span&amp;gt;, but these are just conventions and do not participate in any kind of unified conversion to string. If you want to convert anything besides a primitive type to a string, you have to write the conversion function yourself.&lt;/p&gt;
&lt;p&gt;Furthermore, Standard ML, as a rather opinionated and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://mitpress.mit.edu/books/definition-standard-ml&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://mitpress.mit.edu/books/definition-standard-ml&quot;&amp;gt;&quot;purist&quot; language&amp;lt;/span&amp;gt;, designed specifically for static simplicity, semantic minimalism, and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://mlton.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://mlton.org/&quot;&amp;gt;runtime efficiency&amp;lt;/span&amp;gt;, does not believe in type classes, so there is no way to write a function that at runtime is generic over what can be turned into a string.&lt;/p&gt;
&lt;p&gt;The best you can do is write something that is functorized, but then you have to apply it in a statically known context:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;signature TO_STRING =
  sig
    type t
    val toString : t -&amp;gt; string
  end

functor DoStuff(ToString : TO_STRING) =
  struct
    fun doubleString (stuff: ToString.t) =
      let
        val s = ToString.toString stuff
      in
        s ^ s
      end
  end

structure MyStuff : TO_STRING =
  struct
    type t = int * bool
    fun toString (i, b) =
      &quot;(&quot; ^ Int.toString i ^ &quot;, &quot; ^ Bool.toString b ^ &quot;)&quot;
  end

structure DoMyStuff = DoStuff(MyStuff)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DoMyStuff.doubleString (42, true)
(* result is the string &quot;(42, true)(42, true)&quot; *)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since the Standard ML ecosystem is so minimalist, it&apos;s hard to fall into the &lt;code&gt;toString&lt;/code&gt; trap, because you would have to set it all up yourself.&lt;/p&gt;
&lt;h3&gt;OCaml&lt;/h3&gt;
&lt;p&gt;OCaml, like Standard ML, does not provide a generic &lt;code&gt;toString&lt;/code&gt; out of the box, but the OCaml ecosystem is much more practically oriented.&lt;/p&gt;
&lt;p&gt;There is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Camlp4&quot;&gt;pre-processor for OCaml&lt;/a&gt; that can be used to generate convenient printers for types, &lt;a href=&quot;https://github.com/ocsigen/deriving&quot;&gt;&lt;code&gt;deriving&lt;/code&gt;&lt;/a&gt;. There is also an S-expression based generator, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://realworldocaml.org/v1/en/html/data-serialization-with-s-expressions.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://realworldocaml.org/v1/en/html/data-serialization-with-s-expressions.html&quot;&amp;gt;Sexplib&amp;lt;/span&amp;gt;. But these are mechanically generated, rather than part of something generic at runtime.&lt;/p&gt;
&lt;p&gt;Of course, one could also use the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://caml.inria.fr/pub/docs/manual-ocaml-4.01/objectexamples.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://caml.inria.fr/pub/docs/manual-ocaml-4.01/objectexamples.html&quot;&amp;gt;object-oriented part of OCaml&amp;lt;/span&amp;gt; to make a generic &quot;to string&quot; hierarchy starting with a suitable interface:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class type convert_to_string =
  object
    method to_string : string
  end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But I don&apos;t actually know many people who use the object-oriented features of OCaml!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;An annoying bug I temporarily created in my code led me to take stock of the state of &lt;code&gt;toString&lt;/code&gt; design choices in various programming languages, and also consider how we can better escape fragility in our code, independent of whatever language we are using.&lt;/p&gt;
</content:encoded></item><item><title>toString considered harmful, part 2</title><link>https://franklinchen.com/blog/2013/12/26/tostring-considered-harmful-part-2/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/26/tostring-considered-harmful-part-2/</guid><pubDate>Thu, 26 Dec 2013 22:03:00 GMT</pubDate><content:encoded>&lt;p&gt;This is part 2 of a series of articles, &quot;&lt;code&gt;toString&lt;/code&gt; considered harmful&quot;. [Part 1] introduced the problem in the context of a common design flaw present in object-oriented languages, and proposed a simple workaround.&lt;/p&gt;
&lt;p&gt;In part 2, we look at advanced ways to organize &quot;stringable&quot; data, using either an object-oriented or functional style. Examples are in Scala because it equally supports either style.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Object-oriented vs. functional&lt;/h2&gt;
&lt;p&gt;The fix presented was in &lt;em&gt;object-oriented&lt;/em&gt; style, adding a method &lt;code&gt;toUrlString&lt;/code&gt; to a class. The other solution is the &lt;em&gt;functional&lt;/em&gt; style, leaving the &lt;code&gt;Id&lt;/code&gt; class alone, and writing an external function instead:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  case class Id(id: Int)

  def toUrlString(id: Id) = id.toString
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    id match {
      case None =&amp;gt; println(&quot;No id found!&quot;)
      case Some(n) =&amp;gt; getUrl(makeUrl(toUrlString(n)))
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are advantages and disadvantages to either solution.&lt;/p&gt;
&lt;h2&gt;More advanced OO&lt;/h2&gt;
&lt;p&gt;It would be very natural, given a whole set of domain classes in addition to &lt;code&gt;Id&lt;/code&gt;, to want all of them to have a &lt;code&gt;toUrlString&lt;/code&gt;. Then the natural thing to do is to create a mini-universe (parallel to the &lt;code&gt;toString&lt;/code&gt; universe) by creating a hierarchy:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  trait UrlString {
    def toUrlString: String
  }

  case class Id(id: Int) extends UrlString {
    override def toUrlString = id.toString
  }

  case class ...(...) extends UrlString {
    override def toUrlString = ...
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Advanced string interpolation with OO&lt;/h2&gt;
&lt;p&gt;In fact, Scala and other languages with advanced string interpolation facilities allow yet another refactoring by making sure that what gets into a URL isn&apos;t just an arbitrary string in the first place!&lt;/p&gt;
&lt;p&gt;Below we define a string interpolator that only operates on objects of classes that implement the trait &lt;code&gt;UrlString&lt;/code&gt;, and therefore does away with an explicit call to &lt;code&gt;toUrlString&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  implicit class UrlHelper(val sc: StringContext) extends AnyVal {
    def url(args: UrlString*): String = {
      val strings = sc.parts.iterator
      val expressions = args.iterator
      val buf = new StringBuffer(strings.next)
      while (strings.hasNext) {
        buf append expressions.next.toUrlString
        buf append strings.next
      }
      buf.toString
    }
  }

  /** Only ever use UrlString to create a URL. */
  def makeUrl(id: UrlString): String = url&quot;http://service.com?id=$id&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    id match {
      case None =&amp;gt; println(&quot;No id found!&quot;)
      case Some(n) =&amp;gt; getUrl(makeUrl(n))
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This may or may not be overengineering.&lt;/p&gt;
&lt;h2&gt;Advanced string interpolation with FP&lt;/h2&gt;
&lt;p&gt;The functional approach doesn&apos;t like inheritance in the domain classes. We can implement it with &lt;a href=&quot;https://en.wikipedia.org/wiki/Type_class&quot;&gt;type classes&lt;/a&gt; (a concept first pioneered in Haskell in the late 1980s) by means of implicits in Scala, in order to implement &lt;code&gt;toUrlString&lt;/code&gt; outside of a class hierarchy but also allow it to be used in a constrained generic way. A full discussion of this is outside the scope of this post, but the basic point is that with type classes, one can write code that does &lt;em&gt;not&lt;/em&gt; depend on an inheritance hierarchy. If you&apos;re used to monkey-patching in dynamic languages, think of it as compile-time monkey-patching.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  // A type class
  trait UrlString[A] {
    def toUrlString(a: A): String
  }

  // Wrapper class
  case class Id(id: Int)

  // Implement the type class UrlString for Id
  implicit object IdToUrlString extends UrlString[Id] {
    override def toUrlString(a: Id) = a.id.toString
  }

  implicit class UrlHelper(val sc: StringContext) extends AnyVal {
    def url[A: UrlString](args: A*): String = {
      val strings = sc.parts.iterator
      val expressions = args.iterator
      val buf = new StringBuffer(strings.next)
      while (strings.hasNext) {
        buf append implicitly[UrlString[A]].toUrlString(expressions.next)
        buf append strings.next
      }
      buf.toString
    }
  }

  /** Anything &quot;viewable&quot; as UrlString can be used to create a URL. */
  def makeUrl[A: UrlString](id: A): String = url&quot;http://service.com?id=$id&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The final string gotcha&lt;/h2&gt;
&lt;p&gt;You may have noticed that there is still primitive obsession in this sample code: URLs are presented as &lt;code&gt;String&lt;/code&gt; for simplicity. In real life, I use builders such as &lt;code&gt;URIBuilder&lt;/code&gt; and &lt;code&gt;HttpGet&lt;/code&gt; (Java &lt;a href=&quot;http://hc.apache.org/&quot;&gt;Apache HttpComponents&lt;/a&gt;) or more sophisticated Scala-specific libraries such as &lt;a href=&quot;http://spray.io/&quot;&gt;Spray&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I thought it would useful to compare an object-oriented and a functional approach to unifying data that share a domain-consistent notion of conversion to a string. Scala is a language that allows easy expression of both.&lt;/p&gt;
&lt;p&gt;In part 3, we will look at languages that just don&apos;t have the &lt;code&gt;toString&lt;/code&gt; problem at all.&lt;/p&gt;
</content:encoded></item><item><title>Watching &quot;Hable con ella&quot; (&quot;Talk to her&quot;) (2002): thoughts on art, crime, and ethics</title><link>https://franklinchen.com/blog/2013/12/26/hable-con-ella-talk-to-her-thoughts-on-art/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/26/hable-con-ella-talk-to-her-thoughts-on-art/</guid><pubDate>Thu, 26 Dec 2013 15:38:33 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20170114082604/https://upload.wikimedia.org/wikipedia/en/4/43/Talk_to_Her_English_movie_poster_fairuse.jpg&quot; alt=&quot;Talk to her&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After a decade of putting it off, I finally watched &lt;a href=&quot;https://en.wikipedia.org/wiki/Pedro_Almod%C3%B3var&quot;&gt;Pedro Almodóvar&lt;/a&gt;&apos;s 2002 film, &lt;a href=&quot;https://en.wikipedia.org/wiki/Talk_to_Her&quot;&gt;&quot;Hable con ella&quot; (&quot;Talk to her&quot;)&lt;/a&gt;. I was actually on the verge of going to a local movie theater to watch it a decade ago when circumstances in my life changed and I put it on hold. But Abby and I just watched it together, partially because Almodóvar has been on my mind since &lt;a href=&quot;/blog/2013/12/19/appreciating-the-unique-singer-la-lupe/&quot;&gt;I re-listened to some music sung by La Lupe a couple of days ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It turned out to be a fantastic film, totally gripping and moving, no slow or pointless moments, really tight. One of my favorite films of all time, surely.&lt;/p&gt;
&lt;p&gt;It was also disturbing on many levels, as great art often is. Abby and I had some conversations about some of the issues, but there was even more still on my mind, so I decided to share them here.&lt;/p&gt;
&lt;p&gt;Note: there are some serious &lt;strong&gt;spoilers&lt;/strong&gt; in this post, so if you haven&apos;t watched the film yet, please stop reading now and &lt;em&gt;go watch it&lt;/em&gt; first. In any case, I am skipping important plot elements in order to focus on particular themes.&lt;/p&gt;
&lt;h2&gt;The rape&lt;/h2&gt;
&lt;p&gt;Let&apos;s cut to the chase. In this film, a really weird guy, Benigno, who is depicted as unhealthily obsessed with a young woman ends up being one of her primary caretakers (he is a nurse) in the hospital when she slips into a coma after an accident. When we encounter him in the story, he&apos;s already been taking care of her for four years. We see him bathing her and massaging her in a way that might be considered loving and caring, but also creepy and too intimate, especially given how he had secretly stalked her before the whole accident. Everyone thinks he&apos;s gay (he lied to fool her father), so nobody seems to seriously question his care of her.&lt;/p&gt;
&lt;p&gt;At the end of the story, we are led to believe (it was not depicted) that during the course of the story, he raped her and got her pregnant. Miraculously, at some point after her pregnancy was discovered, she woke from her four-year coma, but the child was stillborn.&lt;/p&gt;
&lt;h3&gt;My reaction&lt;/h3&gt;
&lt;p&gt;You can go online and see a lot of reactions to this rape, say, the IMDB forums. Some disbelieve, some try to justify her awakening as making up for his crime, others say they refuse to watch the film because they heard what the story is.&lt;/p&gt;
&lt;p&gt;Myself, I disbelieved at first, despite the very clear signal straight from the film director himself. I thought, maybe it was the other main character, or the other man besides him. I thought this even though I knew it could not be. I found it &lt;em&gt;very interesting&lt;/em&gt; that despite the obvious (except that I didn&apos;t see it happen), I &lt;em&gt;did not want to believe&lt;/em&gt; that his man, even though he was clearly weird and inappropriately obsessed with the comatose woman, did this. I examined myself and asked why I did not want to believe. One reason was that other being all weird, he came across as being very gentle and caring, both towards her (taking care of her inert body) and to the other main character Marco, who became a close friend of his. For all we knew, he was still a virgin. And she hadn&apos;t gotten pregnant after four years of his care.&lt;/p&gt;
&lt;p&gt;Of course, my &quot;reasoning&quot; was completely ridiculous. How did I know that he wasn&apos;t molesting her for four years, and just being careful about it, and only accidentally slipping up one night after watching that silent film he talked to her about?&lt;/p&gt;
&lt;p&gt;So, I was very uncomfortable that aspects of his personality and behavior that made me feel sympathetic to him &lt;em&gt;in general&lt;/em&gt; led me to doubt that he was capable of something horrible. This brought up memories of being confused and cynical in the light of revelations in recent years that some people&apos;s heroes were in fact very flawed: for example, the big Penn State scandal involving &lt;a href=&quot;https://en.wikipedia.org/wiki/Jerry_Sandusky&quot;&gt;Jerry Sandusky&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Joe_Paterno&quot;&gt;Joe Paterno&lt;/a&gt;&apos;s apparent role in concealing Sandusky&apos;s repeated sexual abuse of young boys. Or &lt;a href=&quot;https://en.wikipedia.org/wiki/Lance_Armstrong&quot;&gt;Lance Armstrong&lt;/a&gt; finally confessing to being a drug doper in sport. Or the history of sexual abuse by priests and other leaders in many religious institutions.&lt;/p&gt;
&lt;p&gt;It turned out that I was detached from all those cases, not having any emotional involvement with the &quot;heroes&quot; in question, so it was easy for me to scoff at those who went out of their way to demonize the victims and proclaim their heroes innocent. So I was pretty disturbed that just through skillful storytelling, the film director here was able, for a split second, to cause me to doubt the obvious.&lt;/p&gt;
&lt;h2&gt;Bullfighting and respect for different cultures&lt;/h2&gt;
&lt;p&gt;Another thing that disturbed me was the &lt;a href=&quot;https://en.wikipedia.org/wiki/Bullfighting&quot;&gt;bullfighting&lt;/a&gt;. I am hardly a member of &lt;a href=&quot;https://www.peta.org/issues/animals-in-entertainment/animals-used-entertainment-factsheets/bullfighting-tradition-tragedy/&quot;&gt;PETA&lt;/a&gt;, but I find bullfighting frightening and perverse.&lt;/p&gt;
&lt;p&gt;Of course, I am slightly ambivalent about this attitude. But only slightly. OK, it&apos;s an important cultural institution in Spain, and I am definitely not one to lightly dismiss long-standing traditions that clearly have served a purpose of some kind over centuries, even millennia. But I&apos;m not a relativist who thinks everything&apos;s OK somewhere. For example, there are long traditions of human slavery that &quot;we&quot; (in, say, the US where I live and grew up) consider &lt;em&gt;not&lt;/em&gt; to be OK, and &quot;we&quot; believe that women should have the right to vote, that &lt;a href=&quot;https://en.wikipedia.org/wiki/Female_genital_mutilation&quot;&gt;female genital mutilation&lt;/a&gt; is unacceptable, that the ancient Chinese &lt;a href=&quot;https://en.wikipedia.org/wiki/Foot_binding&quot;&gt;foot binding&lt;/a&gt; of women was an atrocity, etc.&lt;/p&gt;
&lt;p&gt;You could argue that it&apos;s just sheer cultural conditioning that I happen to believe in what &quot;we&quot; believe, but nevertheless, I feel justified in my judgment and can&apos;t apologize for it. So if you&apos;re reading this and you&apos;re Spanish and offended, I don&apos;t know how to sugarcoat it, but bullfighting freaks me out. The best I can say is, there are probably things I believe in or do that you find disgusting also.&lt;/p&gt;
&lt;h3&gt;Cognitive dissonance and hypocrisy?&lt;/h3&gt;
&lt;p&gt;The weird thing is, even as I felt disgust at seeing all the blood during the bullfighting scenes in the film, I felt unease at my participating in a very sanitized version of the whole thing.&lt;/p&gt;
&lt;p&gt;I&apos;m talking about the ballroom dance &lt;a href=&quot;https://en.wikipedia.org/wiki/Pasodoble&quot;&gt;&quot;paso doble&quot;&lt;/a&gt;, which is a kind of weird, transformed re-enactment of a bullfight theme. I have never actually danced paso doble in competition, but have practiced basic steps and movements, and have &lt;em&gt;fantasized&lt;/em&gt; about being some kind of macho bullfighter. See, in most of the standard ballroom dances, the focus of display and movement is almost entirely on the follower, the woman. In &lt;em&gt;only&lt;/em&gt; the paso doble, the man is really the focus, being the bullfighter. (The follower is, bizarrely, his cape: the bull is invisible and only implied.)&lt;/p&gt;
&lt;p&gt;I still periodically do a paso doble &lt;a href=&quot;/blog/2011/12/13/video-review-dancing-with-the-stars-cardio-dance-2006/&quot;&gt;dance workout&lt;/a&gt;. When I do this dance workout, you can bet I&apos;m not thinking about bloody bulls or the possibility of being gored to death. Somehow the whole thing has been sanitized. I feel slightly weird about this &quot;Anglo&quot; appropriation of a cultural tradition. I would say I feel slightly weird about the other sanitized and standardized Latin ballroom dances too (rumba, cha cha, samba) that have &quot;authentic&quot; roots from, for example, Cuba and Brazil.&lt;/p&gt;
&lt;p&gt;But I feel only &quot;slightly&quot; weird, because cultural borrowing and appropriation is something that has always happened. I don&apos;t think we can or ought to stop it, any more than I can go around sniffing that a lot of &quot;Chinese food&quot; in American restaurants is not much like what I know to be more &quot;authentic&quot;. The best I can do is &lt;em&gt;know the difference&lt;/em&gt;, rather than reject evolution or borrowing of traditions. So, for example, I have watched videos of Cuban salsa, which differs from urban North American studio or club salsa. I did study &quot;Argentine tango&quot; after engaging in the heavily stylized and very different ballroom tango. I think these can all reasonably coexist, as long as one knows what each is and not pretend something is what it is not.&lt;/p&gt;
&lt;h2&gt;Gender roles&lt;/h2&gt;
&lt;p&gt;And then somehow everything brought me to the issue of &lt;a href=&quot;https://en.wikipedia.org/wiki/Gender_role&quot;&gt;gender roles&lt;/a&gt;. In the film, the bullfighter main character is a woman, Lydia. Unusual. That led me to think about other weird issues I have dealt with concerning ballroom dancing, and couple dancing in general where there is a clear separation between leader and follower. Are these dances a weird kind of anachronism? I have definitely met women who rejected or were openly uneasy about taking part in this kind of dancing, but obviously, as Abby and I have gone out dancing, we know of plenty of women who are OK with it. In fact, we often see women dancing the leader role, and admittedly less often, men dancing the follower role. I tend to think there&apos;s not really a problem with this kind of dancing, given that people really can and do switch roles these days.&lt;/p&gt;
&lt;h2&gt;Do the ends justify the means?&lt;/h2&gt;
&lt;p&gt;Some final thoughts: what happens when we accept that something is disturbing? Especially when we rationalize away our discomfort?&lt;/p&gt;
&lt;p&gt;For example, why did Almodóvar tell a story about a rapist who some would like to say possibly &quot;helped&quot; a comatose woman awake? What if that were true? Does it make his crime any less bad? And what about intent? Does intent matter in an action? Fodder for your philosophy classes.&lt;/p&gt;
&lt;p&gt;And what about the film itself? What is the response to those who refuse to watch this film because of a rape? Has Almodóvar committed a crime by making the character a sympathetic, tragic one? Or is this &quot;only&quot; art? Or is it because it is high art that it is justified?&lt;/p&gt;
&lt;p&gt;And that reminds me of the controversy over &lt;a href=&quot;https://en.wikipedia.org/wiki/Roman_Polanski&quot;&gt;Roman Polanski&lt;/a&gt;, many of whose beautiful, profound films I have enjoyed through my life? He fled the US in 1977 after statutory rape of a 13-year-old girl. In 2009 there was controversy after the US tried to extradite him, and a lot of film fans apparently came to his defense. Were they making the mistake of making an allowance for a great film maker that they would not have made for some random guy? Is my continuing to watch his films a crime? Should I be boycotting his films?&lt;/p&gt;
&lt;p&gt;A lot of questions, and I think no easy answers. Of course, our actions reveal our implicit answers. What we say does not matter. What we do does.&lt;/p&gt;
&lt;h2&gt;The science (added 2014-01-05)&lt;/h2&gt;
&lt;p&gt;One thing I forgot to discuss was the matter of whether people in vegetative states are actually aware of what is going on around them. Assuming they have some awareness, that makes a lot of what happened in the film kind of creepy (but also, what happens in real life in hospitals).&lt;/p&gt;
&lt;p&gt;Here&apos;s a recent post about &lt;a href=&quot;https://www.spring.org.uk/2014/01/patients-in-vegetative-state-can-respond-emotionally-to-loved-ones.php&quot;&gt;emotional awareness in patients in a vegetative state&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-04-27)&lt;/h3&gt;
&lt;p&gt;A great article on &lt;a href=&quot;https://web.archive.org/web/20230223041255/https://mosaicscience.com/story/mind-readers/&quot;&gt;vegetative states&lt;/a&gt; just came my way, reminding me of the discomfort I felt when watching this film.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For me, a great film is one that somehow makes me think about life and humanity in the broadest possible ways, even though I didn&apos;t really want to. I guess Pedro Almodóvar struck a home run with this film.&lt;/p&gt;
&lt;p&gt;Not the kind of film I want to watch every night, because then I end up spending hours thinking about stuff. But there it is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you find this kind of film too disturbing to watch or to think about? Are you concerned by inaccurate scientific portrayals in film? Are you concerned about films that make you sympathetic toward someone who is not only disturbed but also a criminal?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Imagining how a game position arose</title><link>https://franklinchen.com/blog/2013/12/26/the-chess-improver-imagining-how-a-game-position-arose/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/26/the-chess-improver-imagining-how-a-game-position-arose/</guid><pubDate>Thu, 26 Dec 2013 13:02:57 GMT</pubDate><content:encoded>&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Imagining how a game position arose&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;Recently I had a student start working through one of those chess puzzle books that contain positions drawn from actual games. The positions capture the state of games in any of the phases, from the early opening to the endgame. While discussing his attempts at solution, I couldn&apos;t help notice that many of the positions were such that one could easily deduce what opening led to them, or which class of possible openings could have led to them, because of features such as Pawn structure and piece placement.&lt;/p&gt;
&lt;p&gt;It turns out that I have deliberately omitted any opening theory training for this student so far, because in my experience (unfortunately including my own as a youth), until one reaches a certain level, that way lies madness. But I got the idea that &lt;em&gt;working backwards&lt;/em&gt; from typical positions would be a good way to begin introducing opening ideas, because of the concrete context of puzzles where there is a clear tactical or positional error made by someone.&lt;/p&gt;
&lt;p&gt;So I got the idea of an interesting fantasy game: given a chess position, try to imagine how the game arose, such as what might have been the previous couple of moves leading to the position, assuming some kind of logical progression of threats and counter-threats, or more longer-term plans. Often in chess we are trying to think &lt;em&gt;forwards&lt;/em&gt;, like aiming for a position. But how about if we also work &lt;em&gt;backwards&lt;/em&gt;? For entertainment, one could even &quot;reconstruct&quot; an entire sequence of plausible moves leading to a given position that is still not too deep into the middle game. I am sure many of us have informally engaged in this speculation when being a spectator of a game already in progress, and we think, &quot;How did this position arise?&quot; I am suggesting that it might be worth exploring this fantasy more deeply.&lt;/p&gt;
&lt;p&gt;What is particularly instructive, I think, is when there are multiple plausible paths to a position. Seeing this connects ups the elements that different openings may have in common, so that when one is learning a new opening, it is not in isolation, but can be related to something else with similar static and dynamic features.&lt;/p&gt;
&lt;p&gt;One nice thing about this exercise is that one can enjoy it at any level, to any depth. There are no wrong answers, but there are more plausible and subtle ones. It is not necessary to know the names of different openings. I think it is a fun ice breaker for discussion about a chess position and the hidden history behind it that continue to drive the possibilities in it during a real game.&lt;/p&gt;
&lt;p&gt;A final note: obviously, for games that are sufficiently high-profile to be in one of the big databases, it is possible to find out what really happened to reach a position. But I think it can be fun enough to fantasize without knowing the answer, although a hardcore student may want to study a given position more in depth.&lt;/p&gt;
&lt;h2&gt;Examples&lt;/h2&gt;
&lt;h3&gt;First example&lt;/h3&gt;
&lt;p&gt;Here&apos;s one example that seems fairly &quot;easy&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3r1k1/1b3p1p/p2p1np1/1pqPp3/P1p1Pb2/2P2NNP/1PB1QPP1/RR4K1 w - - 0 1&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It seems plausible enough that this game was a closed Ruy Lopez: the general Pawn structure and the minor piece placements point to this. White played d5 at some point. Possibly White had a Bishop at e3 that traded with a Black Knight on c5 (it doesn&apos;t look likely that a black Knight made it to f4). Black is trying to do something with otherwise locked out dark-squared Bishop, hence it ending up on f4. The middle game looks complex, although it looks like Black has gotten a head start with Queen side expansion and White&apos;s loss of the dark Bishop is not going to help with an attack on Black&apos;s King side.&lt;/p&gt;
&lt;p&gt;But: one should also be aware that these kinds of positions can arise from a Rossolimo Sicilian, or a Modern Defense, through a different move order. Both sides have many ways to reach this kind of position.&lt;/p&gt;
&lt;h3&gt;Second example&lt;/h3&gt;
&lt;p&gt;Here&apos;s a position that has undergone more dynamic changes:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2B1k2r/4bp1p/pq1p1p2/1pn1p3/4P3/2P1N3/PP1N1PPP/1K1R1R2 b k - 0 1&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;First, it would be reasonable to look at the missing Pawns on both sides and conclude this was a Sicilian. Somehow, White lost a Queen, but presumably won a Rook and Bishop on c8 on the half-open c file. The Bishop on e7 and the doubled f Pawns (from Bg5 and Bxf6 trading Black&apos;s Knight on f6) and White&apos;s castling Queen side suggest a Richter-Rauzer in which Black played some tactic involved moving the Pawn from e6 to e5. Maybe White&apos;s Queen was trapped?&lt;/p&gt;
&lt;p&gt;If only the Pawn structure was looked at, one would probably think a Sveshnikov Sicilian. But because of where the minor pieces are, that seems unlikely for this position. Then again, how did Black&apos;s Knight get to c5? That&apos;s a stretch for a Richter-Rauzer also, but at least there, one can imagine the Knight going from c6 to e5 to d7 and then to c5. Or was this a funny Najdorf in which the Knight went to d7 and then to c5? But then why would the f Pawns be doubled?&lt;/p&gt;
&lt;p&gt;I don&apos;t have an answer to these questions. Here&apos;s a case where maybe if I were given the answer, I would learn something useful about the maneuvering possibilities of Black&apos;s Knight that ended up on c5, and by extension, learn something new about particular Sicilian Defense opening variations.&lt;/p&gt;
&lt;p&gt;So you see how one could really get into trying to extrapolate backwards in a chess position!&lt;/p&gt;
</content:encoded></item><item><title>toString considered harmful, part 1</title><link>https://franklinchen.com/blog/2013/12/23/tostring-considered-harmful-part-1/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/23/tostring-considered-harmful-part-1/</guid><pubDate>Mon, 23 Dec 2013 23:54:00 GMT</pubDate><content:encoded>&lt;p&gt;It is easy to rant about the problems or unexpected subtleties involving the use of &lt;a href=&quot;https://en.wikipedia.org/wiki/String_%28computer_science%29&quot;&gt;strings&lt;/a&gt; in programming languages. This post, however, is not so much a rant about strings as about design and meaning, with &lt;code&gt;toString&lt;/code&gt; only as an obvious example.&lt;/p&gt;
&lt;p&gt;I&apos;ll describe a pitfall that came up in my code, and a solution, and make observations about how different programming languages address or avoid this problem.&lt;/p&gt;
&lt;p&gt;This is part one of a series.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;A bug when evolving my code&lt;/h2&gt;
&lt;p&gt;My example code is in Scala, but the problem illustrated actually extends to many (most?) other currently popular object-oriented languages as well, including Java (which Scala inherited &lt;code&gt;Object.toString&lt;/code&gt; from), C# (&lt;code&gt;Object.ToString&lt;/code&gt; stolen from Java), Ruby (&lt;code&gt;Object#to_s&lt;/code&gt;), Python (&lt;code&gt;str&lt;/code&gt;, which uses &lt;code&gt;object.__str__&lt;/code&gt; in case of an object). (Later in the post, I discuss languages without this specific feature.)&lt;/p&gt;
&lt;h3&gt;First working code&lt;/h3&gt;
&lt;p&gt;Here&apos;s the first version of the code, which is a simplification of logic in a real application. A name is looked up to find an ID, then the ID is used to construct a URL to submit to a Web service.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;object Example {
  type Id = Int

  /**
    @param name User name to look up
    @return ID of user
    */
  def findId(name: String): Id =
    if (name == &quot;name&quot;) {
      42
    } else {
      0
    }

  def makeUrl(id: Id): String = s&quot;http://service.com?id=$id&quot;

  /** Simulate making the Web request. */
  def getUrl(url: String): Unit = println(url)

  def main(args: Array[String]): Unit = {
    val id = findId(&quot;name&quot;)
    getUrl(makeUrl(id))
    // output: http://service.com?id=42
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this code, everything seems fine. This was the situation in my application when it was certain that finding an ID would succeed.&lt;/p&gt;
&lt;p&gt;If you don&apos;t know Scala, just note that &lt;code&gt;s&quot;...$id&quot;&lt;/code&gt; is just Scala&apos;s string interpolation syntax that behind the scenes calls &lt;code&gt;id.toString&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Non-working code&lt;/h3&gt;
&lt;p&gt;It turned out that finding an ID could fail, so I changed &lt;code&gt;findId&lt;/code&gt; to return the type &lt;code&gt;Option[Id]&lt;/code&gt; instead of &lt;code&gt;Id&lt;/code&gt;. To get the code to compile, I had to change the type of the parameter to &lt;code&gt;makeUrl&lt;/code&gt; also:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  /**
    @param name User name to look up
    @return Some(ID of user) if found, else None
    */
  def findId(name: String): Option[Id] =
    if (name == &quot;name&quot;) {
      Some(42)
    } else {
      None
    }

  // Oops, now this has an unintended bug!
  def makeUrl(id: Option[Id]): String = s&quot;http://service.com?id=$id&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But this resulted in a bug (thankfully caught by my test suite that actually went over the Web to fetch stuff)! The bug was that the URL constructed was nothing resembling what I ever wanted to construct: &lt;code&gt;http://service.com?id=Some(42)&lt;/code&gt; was being requested.&lt;/p&gt;
&lt;p&gt;Furthermore, in the case of an ID not found, the URL constructed is &lt;code&gt;http://service.com?id=None&lt;/code&gt;. How many of you have seen applications or Web sites or emails in which something was clearly missing and the text contained either an empty space or the string &quot;null&quot; or &quot;nullvalue&quot; such as&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Dear NULL,&lt;/p&gt;
&lt;p&gt;You ordered NULL items.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Yup, you guessed it: someone wrote crappy code like what I just showed you, and frightening thing is, &lt;em&gt;it could have been me&lt;/em&gt; and &lt;em&gt;it could have been you&lt;/em&gt;.&lt;/p&gt;
&lt;h4&gt;What&apos;s the big deal?&lt;/h4&gt;
&lt;p&gt;You might think, &quot;Big deal, you changed your code, ran your test, and immediately found the bug, so what&apos;s the problem?&quot;&lt;/p&gt;
&lt;p&gt;The problem is that I have higher standards than that. I don&apos;t want to rely on my tests to find my bugs. In fact, the test that went over the Web to do stuff was an &lt;em&gt;integration test&lt;/em&gt;, not a &lt;em&gt;unit test&lt;/em&gt;. The bug only manifested itself when the actual Web request failed. And as we see in real life, many apps are not sufficiently tested to root out all possible accidental string generations.&lt;/p&gt;
&lt;p&gt;So although I caught the bug quickly, I caught it far less quickly than I wanted. I didn&apos;t want to even construct an obviously garbage URL like &lt;code&gt;http://service.com?id=Some(42)&lt;/code&gt; at all. I prefer to have the type checker catch stupid design-level bugs up front. So I was furious at myself that I wrote code that the compiler was perfectly happy with but was obviously wrong. I had gotten lazy in more ways than one, and had been punished accordingly.&lt;/p&gt;
&lt;h2&gt;A symptom of bad design&lt;/h2&gt;
&lt;p&gt;There were a couple of things wrong with my original code that made it not evolve well.&lt;/p&gt;
&lt;h3&gt;Don&apos;t use &lt;code&gt;toString&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;First, by using string interpolation at all, I was relying on the implicit &lt;code&gt;toString&lt;/code&gt; method of all objects. String interpolation is an admittedly very convenient feature that I use extensively, but now I consider it rather dangerous.&lt;/p&gt;
&lt;p&gt;But even if I hadn&apos;t used string interpolation, I would have had to build up strings myself anyway, and would have called &lt;code&gt;toString&lt;/code&gt; &lt;em&gt;explicitly&lt;/em&gt;, and I would have had the same problem: changing the type of something from &lt;code&gt;Id&lt;/code&gt; to &lt;code&gt;Option[Id]&lt;/code&gt; does not get rid of &lt;code&gt;toString&lt;/code&gt;. In fact, in object-oriented languages where &lt;code&gt;toString&lt;/code&gt; is defined way up at the top, &lt;em&gt;everything&lt;/em&gt; has &lt;code&gt;toString&lt;/code&gt;, whether you like it or not! The best you can do is override &lt;code&gt;toString&lt;/code&gt;. (Actually, Scala &quot;helpfully&quot; generates a nice &lt;code&gt;toString&lt;/code&gt; override for you when you use case classes, hence the output of &lt;code&gt;Some(42)&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;I consider this &lt;em&gt;global infection&lt;/em&gt; a flaw in object-oriented languages that impose a set of methods on all objects whether you want them or not. &lt;code&gt;toString&lt;/code&gt; is hardly the worst offending method, actually, but I&apos;ll save my complaints about others for later.&lt;/p&gt;
&lt;p&gt;First step in cleaning up the code: make &lt;code&gt;toString&lt;/code&gt; explicit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  /** Only ever use a String to create a URL. */
  def makeUrl(id: String): String = s&quot;http://service.com?id=$id&quot;

  def main(args: Array[String]): Unit = {
    val id = findId(&quot;name&quot;)
    getUrl(makeUrl(id.toString))
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(Later in the post, I will discuss alternatives to this explicit &lt;code&gt;toString&lt;/code&gt;.)&lt;/p&gt;
&lt;h3&gt;Primitive obsession&lt;/h3&gt;
&lt;p&gt;Another design smell was that of using&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type Id = Int
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;in the first place. This is a well-known lazy practice called &lt;a href=&quot;http://c2.com/cgi/wiki?PrimitiveObsession&quot;&gt;primitive obsession&lt;/a&gt;. I know better than that.&lt;/p&gt;
&lt;p&gt;The solution to primitive obsession is easy: create a new wrapper type. Hence, the original code, even before the possibly failing ID lookup, should have been&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  case class Id(id: Int)

  /**
    @param name User name to look up
    @return ID of user
    */
  def findId(name: String): Id =
    if (name == &quot;name&quot;) {
      Id(42)
    } else {
      Id(0)
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that this still &lt;em&gt;would not&lt;/em&gt; have solved the &lt;code&gt;toString&lt;/code&gt; problem, since the output would simply have been &lt;code&gt;http://service.com?id=Some(Id(42))&lt;/code&gt; or the dreaded &lt;code&gt;http://service.com?id=None&lt;/code&gt;!&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;toString&lt;/code&gt; is a problematic concept anyway&lt;/h3&gt;
&lt;p&gt;The real problem is one that transcends programming language design. (Later in this post I&apos;ll show languages that don&apos;t have &lt;code&gt;toString&lt;/code&gt; but still easily allow a similar problem.)&lt;/p&gt;
&lt;p&gt;The real problem is that strings are used for &lt;em&gt;multiple&lt;/em&gt; purposes. Some are used just for debugging, showing an internal representation of data. Some are used for &quot;human&quot; reading. In fact, many languages distinguish between these two purposes: Lisp has &lt;a href=&quot;http://www.lispworks.com/documentation/HyperSpec/Body/f_wr_pr.htm&quot;&gt;&lt;code&gt;write&lt;/code&gt;, &lt;code&gt;prin1&lt;/code&gt;, &lt;code&gt;print&lt;/code&gt;, &lt;code&gt;pprint&lt;/code&gt;&lt;/a&gt;; Scheme has &lt;a href=&quot;http://www.scheme.com/tspl3/io.html&quot;&gt;&lt;code&gt;write&lt;/code&gt; and &lt;code&gt;display&lt;/code&gt;&lt;/a&gt;; Ruby has &lt;a href=&quot;http://ruby-doc.org/core-2.0.0/Object.html&quot;&gt;&lt;code&gt;to_s&lt;/code&gt; and &lt;code&gt;to_str&lt;/code&gt;&lt;/a&gt;; Python has &lt;a href=&quot;http://docs.python.org/2/library/functions.html&quot;&gt;&lt;code&gt;repr&lt;/code&gt; and &lt;code&gt;str&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One is often directed to override the &quot;human-oriented&quot; version of these mechanisms (implementing one&apos;s own special non-default format). In Java and Scala, that&apos;s &lt;code&gt;toString&lt;/code&gt;. But this is precisely the problem. We are &lt;em&gt;encouraged&lt;/em&gt; to abuse this built-in mechanism for getting a string from an object that is supposed to mean something in the &lt;em&gt;context of an application&lt;/em&gt;. Yes, &lt;code&gt;Some(Id(42))&lt;/code&gt; is a useful human-readable string, but it&apos;s not what I want to put into a URL for an ID parameter!&lt;/p&gt;
&lt;h4&gt;Different names for different contexts&lt;/h4&gt;
&lt;p&gt;Suppose you had a &lt;code&gt;Name&lt;/code&gt; class, and it had fields such as &lt;code&gt;first&lt;/code&gt; and &lt;code&gt;middle&lt;/code&gt; and &lt;code&gt;last&lt;/code&gt;. It&apos;s nonsensical to expect a single &lt;code&gt;toString&lt;/code&gt; override to express all the different contexts in which you might want to get a single string from a full name. Sometimes you might want to generate &lt;code&gt;Franklin Chen&lt;/code&gt;; other times, &lt;code&gt;Franklin Ming Chen&lt;/code&gt;; other times, &lt;code&gt;Franklin M. Chen&lt;/code&gt;; other times, &lt;code&gt;FMC&lt;/code&gt;. The point is that there should really be a method for each of these. &lt;code&gt;toString&lt;/code&gt; should be treated really as a debugging device.&lt;/p&gt;
&lt;p&gt;Instead of piggybacking on &lt;code&gt;toString&lt;/code&gt;, we should call a spade a spade, and define our own methods whose name is actually informative and tells us for what &lt;em&gt;purpose&lt;/em&gt; we are asking for a string.&lt;/p&gt;
&lt;p&gt;Let&apos;s refactor the code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  // Wrapper class
  case class Id(id: Int) {
    // Special method for turning to URL string fragment
    def toUrlString = id.toString
  }

  /**
    @param name User name to look up
    @return Some(ID of user) if found, else None
    */
  def findId(name: String): Option[Id] =
    if (name == &quot;name&quot;) {
      Some(Id(42))
    } else {
      None
    }

  /** Only ever use a String to create a URL. */
  def makeUrl(id: String): String = s&quot;http://service.com?id=$id&quot;

  /** Simulate making the Web request. */
  def getUrl(url: String): Unit = println(url)

  def main(args: Array[String]): Unit = {
    val id = findId(&quot;name&quot;)
    // Will not compile because Option[Id] does not have toUrlString
    //getUrl(makeUrl(id.toUrlString))
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the code that was creating a junk URL will no longer compile: &lt;code&gt;id&lt;/code&gt; is of type &lt;code&gt;Option[Id]&lt;/code&gt; but that type does &lt;em&gt;not&lt;/em&gt; have a &lt;code&gt;toUrlString&lt;/code&gt; method. Mission accomplished!&lt;/p&gt;
&lt;p&gt;To fix the code to get it compile, we handle both the case in which the ID is not found and the case in which it is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    // Will not compile because Option[Id] does not have toUrlString
    //getUrl(makeUrl(id.toUrlString))

    id match {
      case None =&amp;gt; println(&quot;No id found!&quot;)
      case Some(n) =&amp;gt; getUrl(makeUrl(n.toUrlString))
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Simple!&lt;/p&gt;
&lt;h2&gt;The final string gotcha (to be discussed later)&lt;/h2&gt;
&lt;p&gt;You may have noticed that there is still primitive obsession in this sample code: URLs are presented as &lt;code&gt;String&lt;/code&gt; for simplicity. In real life, I use builders such as &lt;code&gt;URIBuilder&lt;/code&gt; and &lt;code&gt;HttpGet&lt;/code&gt; (Java &lt;a href=&quot;http://hc.apache.org/&quot;&gt;Apache HttpComponents&lt;/a&gt;) or more sophisticated Scala-specific libraries.&lt;/p&gt;
&lt;p&gt;However, at some point, data has to be turned into strings: this simply is how the Web works. It is at that point where one has to watch out. I will discuss that boundary in another post. String injection attacks are precisely a result of being sloppy about crossing that boundary.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I gave a small taste of what the &lt;code&gt;toString&lt;/code&gt; problem is about, and some initial steps toward solving it through better design even if the programming language encourages us to be sloppy.&lt;/p&gt;
&lt;p&gt;In part 2 of this series, I will expand on different design choices even in the situation we just examined, especially in the face of continued evolution in which there are multiple domain classes to be turned into strings.&lt;/p&gt;
&lt;p&gt;Finally, there actually are quite a few languages that don&apos;t have this particular &lt;code&gt;toString&lt;/code&gt; problem, but some have analogues to a lesser degree. Part 3 of this series will discuss the different design choices in the languages or in the standard libraries or idioms. Examples will be drawn from C, C++, Haskell, Go, Standard ML, OCaml, Rust, and JavaScript.&lt;/p&gt;
</content:encoded></item><item><title>A favorite poem to share as 2013 comes to an end</title><link>https://franklinchen.com/blog/2013/12/22/a-favorite-poem-to-share-as-2013-comes-to-an-end/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/22/a-favorite-poem-to-share-as-2013-comes-to-an-end/</guid><pubDate>Mon, 23 Dec 2013 01:12:54 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/immortal-poems.jpg&quot; alt=&quot;Immortal Poems of the English Language&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For a party last night, hostess Gina announced some weeks ahead of time that we were to bring &lt;em&gt;&quot;a favorite quote, poem, lyric or inspired thought to share as we look forward to 2014 with gratitude&quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I thought this was a really good theme for an end-of-year holiday party. At first I thought maybe I should write a new poem of my own, for the occasion. But I got cold feet and bailed out of that plan. Maybe for another party next year.&lt;/p&gt;
&lt;p&gt;After thinking for a while, I decided I would return to an old favorite: the poetry of &lt;a href=&quot;https://en.wikipedia.org/wiki/William_Blake&quot;&gt;William Blake&lt;/a&gt;. I picked one of my (favorite) poems by him, and planned to recite it and say a few words at the party about what it means to me and how it applies in particular to my thoughts as 2013 comes to an end.&lt;/p&gt;
&lt;p&gt;It turned out that we were all having too much fun at the party just eating and meeting people and talking and then some of us going off to play music together, and &quot;forgot&quot; about the quote/poem/lyric/thought thing for a while. But it was getting late and Abby and I had to get going at some point, so I reminded Gina about the theme, and she got everyone together and started off herself with a quote from Kafka. That led to some discussion, and then someone else offered a provocative thought, a question to the younger people present. It turned out that this question led to a lot of lively debate, which was great, but also meant that since I didn&apos;t want to interrupt it, Abby and I had to quietly excuse ourselves and leave the party. I told Gina I would share my thought later on her party page.&lt;/p&gt;
&lt;p&gt;Originally I was only going to say a few words, but as long as I&apos;m not limited by keeping things very brief, I decided I might as well write a full-fledged post about it.&lt;/p&gt;
&lt;h2&gt;My accidental introduction to really good poetry&lt;/h2&gt;
&lt;p&gt;First of all, I want to say something about an accident that led to my discovering some really good poetry as a child. I was not (and still am not) primarily poetry-oriented (I am music-oriented), but exposure to good stuff led me not to completely ignore poetry through my life. I was 9 years old at the time (my sister 5). We were living in an apartment in Royal Oak, Michigan at the time. One day we discovered a couple of boxes of books out on the sidewalk, obviously put out for trash day. Since our family owned very little, and I was a voracious reader who always had to beg to go to the public library to get books to read, this was like treasure from heaven for us. Linda and I hauled our stash back inside, and sort of divvied it up between the two us. I will probably write more about this stash later, because over the years many of the titles played a huge role in both our lives. &lt;strong&gt;These boxes of books changed our lives in every possible way.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For now, I just want to mention that I came across the poetry of William Blake through one of these volumes that I got from the trash in 1979, &quot;Immortal Poems of the English Language&quot;. This book was already old and yellow when I got it from the trash then, having been printed in 1952, but they used to make books differently back in the day: really high-quality paper that stands the test of time. I still have this anthology on my book shelf at home. In fact, here&apos;s a photo of it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/immortal-poems.jpg&quot; alt=&quot;Immortal Poems of the English Language&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I didn&apos;t browse through this book as a 9-year-old because I was interested in poetry. I did it because it was sitting there at home. A child who is at home and bored (this was before computers and video games and iPads, and we didn&apos;t even have a working TV at the time: our old 1960s black and white vacuum tube TV had not survived the move to Michigan) will find &lt;em&gt;anything&lt;/em&gt; at least &lt;em&gt;potentially&lt;/em&gt; interesting.&lt;/p&gt;
&lt;p&gt;I flipped through the volume looking for short, easy stuff to maybe read. Well, it turns out that a lot of Blake&apos;s poetry is in fact really short, and really easy to read, without a lot of complicated words or subordinate phrases or fancy thoughts. (Much later, I realized that simple to read does &lt;em&gt;not&lt;/em&gt; mean simplistic or &quot;for children&quot;.)&lt;/p&gt;
&lt;p&gt;I didn&apos;t fully understand what I was reading, but at least I got a taste.&lt;/p&gt;
&lt;h2&gt;Really enjoying Blake&lt;/h2&gt;
&lt;p&gt;My teenage years were quite difficult, filled with alienation, loneliness, anger, depression, and poor health. I found some unexpected solace reading Blake&apos;s poetry. In fact, it turned out that I embraced the fundamental messages inherent in his work. I have changed my opinions about one thing or another in the decades of my life since, but one constant has been my admiration for William Blake: the man, the poet, the philosopher, the do-it-yourself.&lt;/p&gt;
&lt;p&gt;There were several poems that really spoke to me then as they do to me now.&lt;/p&gt;
&lt;p&gt;He means so much to me that one of these poems is actually the &quot;secret&quot; inspiration for the title and subtitle of this very blog that I started over two years ago. Why is this blog &quot;Franklin Chen&apos;s grain of sand: infinity in the palm of my hand&quot;?&lt;/p&gt;
&lt;p&gt;Read &lt;a href=&quot;https://en.wikipedia.org/wiki/Auguries_of_Innocence&quot;&gt;&quot;Auguries of Innocence&quot;&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/auguries-of-innocence.jpg&quot; alt=&quot;Auguries of Innocence&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The poem for yesterday&apos;s party: &quot;Eternity&quot;&lt;/h2&gt;
&lt;p&gt;But that&apos;s a complex poem, not the one I was going to share yesterday at the party. The poem for yesterday was a much shorter one, &quot;Eternity&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
He who binds to himself a joy
Does the winged life destroy;
But he who kisses the joy as it flies
Lives in eternity&apos;s sun rise.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;(The old edition I have has &quot;bends&quot; instead of &quot;binds&quot;.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eternity.jpg&quot; alt=&quot;Eternity&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is a very powerful poem. I have not always abided by its advice, but I believe in its wisdom.&lt;/p&gt;
&lt;p&gt;For me, the poem is about attachment versus &lt;a href=&quot;https://en.wikipedia.org/wiki/Detachment_%28philosophy%29&quot;&gt;detachment&lt;/a&gt;, and eternity versus &lt;a href=&quot;https://en.wikipedia.org/wiki/Impermanence&quot;&gt;impermanence&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The lesson I have learned the hard way in my life is that being attached to something, whether an idea or a possession or even a memory, leads to suffering, because it contradicts the reality of the world and of human existence. This year has been particularly challenging for me, as I gave up some old, familiar habits and beliefs and activities in order to start new ones.&lt;/p&gt;
&lt;p&gt;It is hard to say goodbye to something familiar and comforting, whether it is writing computer programs in a certain language, or taking part in certain music performances because you&apos;ve done that for two years and feel a camaraderie with others you have done it with, or giving up or scaling down on a beloved hobby. But then I remember that if we love something, that does not mean we possess it, or that it possesses us. A musical ensemble will continue on without us; we should be happy for it without constantly feeling regret or sadness at moving on. We should be &lt;em&gt;grateful&lt;/em&gt; for what we have given ourselves to in the past, without feeling shackled by it. And that I&apos;ve found myself used to thinking or behaving a certain way doesn&apos;t mean I need to stay that way.&lt;/p&gt;
&lt;p&gt;Easier said than done: there are still various things that I know I am still hanging on to that once made sense but now may not. Luckily, I have Abby as a source of input that can offer a point of view that is not just my own self-absorption. OK, I don&apos;t always accept her point of view, but I am grateful that she expresses it and offers it as something for me to give myself permission to consider.&lt;/p&gt;
&lt;p&gt;Instead of trying to capture and relive a perfect moment, we can look forward to brand new moments. And especially as a new year arrives, we can symbolically renew our sense of freshness.&lt;/p&gt;
&lt;p&gt;This doesn&apos;t mean necessarily throwing out the past; it just means recognizing the past as what it is, rather than as what we wish the future could still be.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;d like to thank Gina for inviting us to take a moment to reflect on something of our choice as 2013 comes to an end. I wish I could have stayed longer last night to take part in the discussions that apparently lasted quite some time!&lt;/p&gt;
</content:encoded></item><item><title>Appreciating the unique singer La Lupe</title><link>https://franklinchen.com/blog/2013/12/19/appreciating-the-unique-singer-la-lupe/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/19/appreciating-the-unique-singer-la-lupe/</guid><pubDate>Fri, 20 Dec 2013 02:41:19 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/la-lupe-cds.jpg&quot; alt=&quot;La Lupe CDs&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I recently listened to a great &lt;a href=&quot;https://www.npr.org/blogs/altlatino/2013/12/19/255282456/la-lupe-queen-of-latin-soul-the-original-alt-latina&quot;&gt;program &quot;La Lupe: queen of Latin soul&quot;&lt;/a&gt; about the black Cuban singer &lt;a href=&quot;https://en.wikipedia.org/wiki/La_Lupe&quot;&gt;La Lupe&lt;/a&gt;, who died in 1992 (born in 1936) well before I was even aware of her existence.&lt;/p&gt;
&lt;p&gt;(I also then found information on a &lt;a href=&quot;https://www.pbs.org/independentlens/lalupe/&quot;&gt;film about La Lupe&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;First encounter&lt;/h2&gt;
&lt;p&gt;I still remember the exact moment I first heard her electrifying singing, and remember looking her up to find more music sung by her. It was sometime around the year 2003.&lt;/p&gt;
&lt;p&gt;It was during the final credits of the old 1988 film &lt;a href=&quot;https://en.wikipedia.org/wiki/Women_on_the_Verge_of_a_Nervous_Breakdown&quot;&gt;&quot;Women on the Verge of a Nervous Breakdown&quot;&lt;/a&gt; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Pedro_Almod%C3%B3var&quot;&gt;Pedro Almodóvar&lt;/a&gt;. It was a quiet evening alone as I was watching it on DVD in part because I was taking a course on Spanish, finally having decided to learn the language for real after having been exposed to it a lot thanks to Latin ballroom dancing and salsa and tango, listening to a lot of the music.&lt;/p&gt;
&lt;p&gt;A strident voice rang out at me from the TV screen. I almost want to say &quot;harsh&quot;, but the unique quality of the voice and the singing were so compelling that I don&apos;t want to use the word &quot;harsh&quot;. This voice came out during the singing of a bolero, the musical genre that I love that usually involves a more smooth kind of voice and delivery. So it was really unusual being captivated by this amazing performance that played up the sense of loss and betrayal that were certainly in the lyrics.&lt;/p&gt;
&lt;p&gt;It wasn&apos;t just that the emotional directness and yet control of the singing that captivated. I was also really pleased that I could &lt;em&gt;hear every word&lt;/em&gt;, even as a beginning student of Spanish. This was a singer with impeccable articulation that could make a song seem as though it were spoken, telling a story. When she sang, it was the complete package: drama, phrasing, silence, a cold stare or a haughty laugh. It was not just notes or words. It was a &lt;em&gt;performance&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The song is so raw that I can&apos;t really listen to it very often, but here it is (as linked from the program I just mentioned). I&apos;m talking about &quot;Puro Teatro&quot;, of course. (Here&apos;s an &lt;a href=&quot;https://lyricstranslate.com/en/puro-teatro-pure-theater.html&quot;&gt;English translation of the lyrics&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/R-CpdAtgKQY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Finding more of her music&lt;/h2&gt;
&lt;p&gt;I had no idea who La Lupe was at the time when hearing her sing in the film. I managed to order an Almodóvar soundtrack CD that included her &quot;Puro Teatro&quot;, got her name, then looked her up. Eventually I found more songs by her, buying a CD of just her music. Of course, now with YouTube, it is easy to find anything by anybody. But there was a time when it was much harder to find music.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.npr.org/blogs/altlatino/2013/12/19/255282456/la-lupe-queen-of-latin-soul-the-original-alt-latina&quot;&gt;NPR program&lt;/a&gt; has embedded YouTube videos of several of her performances. She was fantastic in all kinds of music, ranging from really fast dance music to more moderate salsa or cha cha or slower boleros. She also sang, in heavily accented English, some songs in the English languages.&lt;/p&gt;
&lt;p&gt;Since I am such a fan of slow boleros, here is &quot;Que te pedí&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;3weAOwmKZXo&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;About La Lupe&lt;/h2&gt;
&lt;p&gt;I tend not to know a lot about the performers of music I have listened to, because I tend not to read music programs or the like. I did appreciate listening to this NPR program, because I hadn&apos;t realized many unique things about La Lupe.&lt;/p&gt;
&lt;p&gt;She was really revolutionary back in the day: in the 1950s in Cuba, then after leaving Cuba, in the 1960s and 1970s. I had no idea she dated from way back. Not only was she a black Cuban who made it, but also as a woman she was controversial for her sensual presence and musical delivery (which included growls, gasps, sniffs, sighs, orgasmic moans, and a kind of maniacal laugh; you can hear it for yourself, it&apos;s still kind of shockingly direct for today I think). She was completely uninhibited. That&apos;s why I was surprised she was operating in the 1950s. I would have thought, OK, 1980s.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was nice for me to have the opportunity to learn something about an amazing singer who has long since gone, and I hope people continue appreciating the quality of her art.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Making up fake games to improve understanding of themes</title><link>https://franklinchen.com/blog/2013/12/19/the-chess-improver-making-up-fake-games-to-improve-understanding-of-themes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/19/the-chess-improver-making-up-fake-games-to-improve-understanding-of-themes/</guid><pubDate>Thu, 19 Dec 2013 12:46:01 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Making up fake games to improve understanding of themes&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;When I was playing chess as a child, one of my favorite things to do, especially before my father found out about the existence of chess clubs and we started attending a local one when I was ten years old, was to make up fake games in order to enjoy seeing interesting play using some idea. In particular, it is useful to see how one can win using an idea, against, of course, less than perfect defense. Back in the day, one could use books or magazines to find collections of games to sudy, and but there was no way to search efficiently for exactly what one was looking for. Today computer databases and sophisticated search programs and even query languages enable doing many kinds of research that were not possible 30 years ago.&lt;/p&gt;
&lt;h2&gt;Doing it yourself, with computer aid&lt;/h2&gt;
&lt;p&gt;But even today, I think it is fun and instructive to make up one&apos;s own fake games. And there are better ways to make more realistic fake games, thanks to computers. In the past, if you were not already a master (or even if you were), there was no guarantee about the quality of your invented game. Maybe you created a fantasy game featuring an attack, but weren&apos;t sure whether it was sound at all.&lt;/p&gt;
&lt;p&gt;There are many ways today to create fantasy games that can serve different purposes. One can still make up a fantasy game &lt;em&gt;without&lt;/em&gt; any computer aid, and then check it, for example. Or you can rely on light aid, not checking every move. Or, if you are true computer geek, you can automatically generate games by programming an engine to choose 2nd or 3rd best moves (according to its evaluation function), or some weighted random distribution. There are all sorts of things one could do. As a non-professional chess player, I don&apos;t do any of the really fancy things that one could do; I&apos;m just pointing out that one could do them.&lt;/p&gt;
&lt;h2&gt;For instruction&lt;/h2&gt;
&lt;p&gt;Recently I came across a beautiful game by Steinitz in Bruce Pandolfini&apos;s Chess Cafe column, in which he crushed the French Defense using his own variation against it (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.chessgames.com/perl/chessgame?gid=1262409&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.chessgames.com/perl/chessgame?gid=1262409&quot;&amp;gt;Steinitz-Sellman, Baltimore 1885&amp;lt;/span&amp;gt;). It turns out that I have been helping a student understand the French Defense and its thematic ideas, so I assigned this game for study. But I also immediately felt that I should have him understand that of course Black went wrong in various places, and playing the French Defense does not simply mean lying down and losing with an inactive light-squared Bishop. So I wanted to also give him a game in which it was Black who played thematically and well. But I wanted full control over the nature of the game, so I decided that instead of looking for some game that fit my parameters, I would invent one, with a bit of computer aid. This is the first time I&apos;ve invented a fantasy game since my childhood! Maybe I should do this more often.&lt;/p&gt;
&lt;p&gt;In the following game, I generated it simply by choosing &quot;plausible&quot; but poor moves by White, letting a chess engine generate reasonable-looking continuations (I did not always take the first choice, especially in light of its difficulty in fully understanding the closed positions in the French), and then myself interpreting the game in human-oriented positional and tactical terms. In some decision points I deliberately allowed the game to take particular directions.&lt;/p&gt;
&lt;p&gt;Themes the game allowed me to illustrate:&lt;/p&gt;
&lt;p&gt;The importance of the dark diagonal from a7 to g1 that White relinquished early in the opening.
The danger of passive Bishop and Knight deployment by White in light of the opening configuration (with Queen on e2 and Bishop unable to get to e3) and the desire to castle King side (another illustrative game would show the dangers of castling Queen side given Black&apos;s a6/b5/b4 plans).
Black&apos;s timely attack on White&apos;s center using f6.
Use of the half-open f file, including a thematic exchange sacrifice on f3 to break through.
Black&apos;s successful deployment of the &quot;French&quot; light Bishop to d7 and then on both wings to b5 and also back to e8 where it was ready to go to the King side.&lt;/p&gt;
&lt;p&gt;Not bad for a mostly-generated game!&lt;/p&gt;
&lt;p&gt;The main caveat I offer is that the computer is not useful in the opening unless you already know the long-term themes, because, for example, it does always realize how poor the &quot;French&quot; light Bishop is until too late; in many lines it wanted to play b5 and Bb7, which just goes along with White&apos;s plan that Steinitz came up with in the 1800s! This could be the topic of another article.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;C11&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. dxc5 Bxc5 7. Nf3 Nc6 8. Bd3 a6 9. Qe2 $201 { We have reached a critical position from Steinitz-Sellman, Baltimore 1885.} 9… Ba7 { Keeping control of the diagonal to g1, while making way for the Knight to go to c5.} ( 9… Nb4 $2 { Was the misguided idea in the Steinitz-Sellman game.} ) 10. Bd2 { For the sake of comparison, let White play a similar piece deployment as in the Steinitz game.} 10… Nc5 { Comparing with the Steinitz game: Black&apos;s Knight configuration is different and stronger, with Knights at c6 and c5 rather than d7 and b4.} 11. Nd1 f6 { Bam! Black sees that White&apos;s Bishop on d2 and Knight on d1 are not doing much for the center, and therefore attacks it immediately.} 12. Nf2 Qb6 { Threatening the b2 Pawn.} 13. b3 fxe5 14. fxe5 { Let&apos;s have White try to maneuver the Knight in order to castle King side.} 14… O-O 15. O-O Nxd3 16. cxd3 { The interesting feature of this position is that Black has kept control over White&apos;s d4 square since the moment White gave it up with dxc5 in the opening.} 16… Bd7 17. Bc3 { Trying to get in d4.} 17… Rf5 { Using the f file.} 18. d4 Rxf3 { Bam, the thematic exchange sacrifice on f3.} 19. Qxf3 Nxd4 20. Bxd4 Qxd4 { Black threatens Rf8 now.} 21. Rad1 Qb6 { Never mind the e5 Pawn.} 22. Qg3 Bb5 { Bam! Black&apos;s problem Bishop is now active.} 23. Rfe1 Rf8 24. Rd2 Qc5 25. h3 { White can really only sit around and wait.} 25… Be8 { To redeploy the Bishop to g6 or h5 to limit White&apos;s Rook activity.} 26. Rf1 Qb4 { The Queen is coming in.} 27. Rc2 Qe4 28. Rd2 h5 29. Kh2 Qf5 { The threat is Bb5.} 30. a4 b5 31. a5 b4 32. Kg1 Bb5 33. Re1 g5 { White has now been squeezed to death and will lose material soon.} 34. Qf3 Qxf3 35. gxf3 Rxf3 36. Rb2 h4 37. Rc2 Be3 38. Kg2 Rg3+ 39. Kh1 Bf4 40. Rc8+ Kf7 41. Rc7+ Ke8 42. Rc8+ Kd7 43. Rg8 Rxb3 44. Rg7+ Kc6 45. Rg6 Rf3 46. Rxe6+ Kc5 47. Nd1 Rxh3+ 48. Kg1 Bd2 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Stop limiting yourself by labeling yourself left or right brained</title><link>https://franklinchen.com/blog/2013/12/12/stop-limiting-yourself-by-labeling-yourself-left-or-right-brained/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/12/stop-limiting-yourself-by-labeling-yourself-left-or-right-brained/</guid><pubDate>Fri, 13 Dec 2013 02:25:29 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://en.sommer-sommer.com/braintest/img/brain_result.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://en.sommer-sommer.com/braintest/img/brain_result.png&quot;&amp;gt;[image: Brain]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;It is popular in some circles to obsess over so-called &quot;left-brained&quot; versus &quot;left-brained&quot; characteristics, or even people. There are whole books hyping up such a distinction, and even promoting one or the other.&lt;/p&gt;
&lt;p&gt;Now, there actually is such a thing as &lt;a href=&quot;https://en.wikipedia.org/wiki/Lateralization_of_brain_function&quot;&gt;lateralization of brain function&lt;/a&gt;. But the popular stereotypes go well beyond the scientific findings on brain structure and function (which are subjects of continuing research, of course).&lt;/p&gt;
&lt;p&gt;Actually, I&apos;ve noticed that this whole notion is used as a &lt;em&gt;weapon&lt;/em&gt;. For example, consultants sell their services to supposedly promote &quot;right-brained creativity&quot; in corporate settings. Or scientists who consider themselves left-brained make fun of the woo-woo artists who are helplessly right-brained. Or artists pride themselves on apparently having no left brain and therefore being warmer and more creative, something like that. I hear this kind of talk at parties.&lt;/p&gt;
&lt;h2&gt;30 second brain test&lt;/h2&gt;
&lt;p&gt;Not long ago, I came across a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://en.sommer-sommer.com/braintest/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://en.sommer-sommer.com/braintest/&quot;&amp;gt;&quot;30 second brain test&quot;&amp;lt;/span&amp;gt; purporting to measure your brain dominance. This is not the first time I&apos;ve encountered a test like this. And as always, I scored heavily &lt;em&gt;right-brained&lt;/em&gt;. (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://en.sommer-sommer.com/braintest/?data=OSw5MQ==&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://en.sommer-sommer.com/braintest/?data=OSw5MQ==&quot;&amp;gt;My results&amp;lt;/span&amp;gt;.) This doesn&apos;t mean much to me. I can explain how some of my answer preferences came about by sheer accident. For example, I was taught by my father to fold my arms a certain way, and so that explains that. I don&apos;t &quot;identify&quot; as a right-brainer.&lt;/p&gt;
&lt;p&gt;Those of us who have an intact corpus callosum have the two brain hemispheres connected and communicating anyway.&lt;/p&gt;
&lt;h3&gt;Looking at handedness&lt;/h3&gt;
&lt;p&gt;Even when it comes to a subset of brain usage, something as simple as left or right hand preference, when I catalog my hand usage, I find that I am split almost completely down the middle over dozens of activities, and that other than some very strong right hand preferences for writing and throwing, I have a lot of very strong left hand preferences also, and many of them are &lt;em&gt;learned&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;And in many cases, the learning to use the left hand has to do with efficiency: my right hand is already doing something. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I hold cups in my left hand because my right hand is grasping a utensil.&lt;/li&gt;
&lt;li&gt;I prefer to open doors with my left hand because I&apos;m usually carrying something with my right.&lt;/li&gt;
&lt;li&gt;In partner dancing, such as ballroom, swing, and salsa, the basic one-hand hold simply happens to be the leader using the left hand.&lt;/li&gt;
&lt;li&gt;I recently started playing ukulele: well, the standard setup involves fretting with the left hand and strumming with the right.&lt;/li&gt;
&lt;li&gt;I use my left hand to mouse with a computer because using only my right hand caused me RSI years ago, and now I use my right hand for mousing at work but my let at home.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Top and bottom brain&lt;/h2&gt;
&lt;p&gt;Some interesting recent research has been illuminating a lot more about the brain. For example, a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://online.wsj.com/news/articles/SB10001424052702304410204579139423079198270&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://online.wsj.com/news/articles/SB10001424052702304410204579139423079198270&quot;&amp;gt;recent article&amp;lt;/span&amp;gt; talks about a notion of &quot;top brain&quot; versus &quot;bottom brain&quot;.&lt;/p&gt;
&lt;p&gt;Hopefully this new research won&apos;t spawn another wave of avid self-identification. I don&apos;t know. This article was excerpted from a new popular science book. Maybe it will hit the party conversation circuit.&lt;/p&gt;
&lt;p&gt;Meanwhile, how about just not categorizing yourself, but &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.psychologytoday.com/blog/black-belt-brain/201312/left-brain-right-brain-whole-brain&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.psychologytoday.com/blog/black-belt-brain/201312/left-brain-right-brain-whole-brain&quot;&amp;gt;developing your whole brain&amp;lt;/span&amp;gt;?&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: code walk through tic-tac-toe with Play</title><link>https://franklinchen.com/blog/2013/12/05/pittsburgh-scala-meetup-code-walk-through-tic-tac-toe-with-play/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/05/pittsburgh-scala-meetup-code-walk-through-tic-tac-toe-with-play/</guid><pubDate>Fri, 06 Dec 2013 03:15:52 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; met again with &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/146581232/&quot;&gt;Josh walking through his code for an interactive Web tic-tac-toe program implemented with Play&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was a good session. I&apos;m finding that studying code (with the code&apos;s author present) is a great way to learn, to discuss design decisions and alternate possible choices that could have been made. For example, when it comes to actors, there are decisions to be made about how many actors, what state they should contain, and how to transition.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The most beautiful opening trap ever, with its tempo twin</title><link>https://franklinchen.com/blog/2013/12/05/the-chess-improver-the-most-beautiful-opening-trap-ever/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/05/the-chess-improver-the-most-beautiful-opening-trap-ever/</guid><pubDate>Thu, 05 Dec 2013 12:19:33 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;The most beautiful opening trap ever, with its tempo twin&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Recently, I noticed that some people have been playing a variation of the Scotch Game involving White retreating the Knight on d4 to b3 after Black&apos;s Bc5. That brought back memories of a beautiful opening trap that I learned from some dusty library book in my childhood, probably by Horowitz or Reinfeld. One thing that I found really remarkable about this opening trap was that there is a similar opening trap that I also encountered in those days that was the exact same position except with one important tempo missing. The tactical ideas are similar, but different in that the tempo means that the win is much, much harder. I think of this other trap as being the most beautiful opening trap I have ever seen. (Correct me if I&apos;m wrong.)&lt;/p&gt;
&lt;p&gt;Where did the extra tempo go? Oh, it is a result of the positions being with colors reversed! I always thought that was fascinating.&lt;/p&gt;
&lt;p&gt;Here are both traps: the easy one, then the hard one.&lt;/p&gt;
&lt;h2&gt;The easy trap&lt;/h2&gt;
&lt;p&gt;The easy trap is one that a student if prompted could find, being told to look for something, even if by just trial and error, because of forcing checks.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;C45&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Nb3 Bb6 6. Nc3 Nf6 7. Bg5 h6 8. Bh4 d6 9. Nd5 $2 Nxe4 $1 { A cute Queen sacrifice.} 10. Bxd8 $4 ( 10. Qh5 { White can try to limit the damage to just losing the e Pawn.} ) 10… Bxf2+ 11. Ke2 Bg4+ 12. Kd3 Ne5+ { Sacrificing a Knight!} 13. Kxe4 f5+ 14. Kf4 Ng6# 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;The hard trap&lt;/h2&gt;
&lt;p&gt;The &quot;twin&quot; of the easy trap is much, much harder. I think it would take an advanced player to really work out the solution, with all the sidelines, to conclusion. This is because there is no immediate checkmate, and there are many possible variations. An impatient student might look for checks or look for captures, to no avail, missing the essence of the trap, which is to do what it takes, even if it takes several moves, to completely trap the King, rather than kick it around (in which case it will escape, and because of the huge amount of sacrificed material expended, the failed attacker will have a lost game).&lt;/p&gt;
&lt;p&gt;I think this lovely trap contains much that is worth study. Besides the theme just mentioned, here are some additional ideas:&lt;/p&gt;
&lt;p&gt;The &quot;losing&quot; side does not have to take the Queen. Have the student try to continue the game, even at the cost of a Pawn. This will illustrate that you don&apos;t have to give up just because you fell into a trap.
The forced mate that I saw in the opening trap book is a mate in 7. It turns out that there is a mate in 6 that I did not know about until working on this article and turning on the chess engine. This mate is much more involved but quite beautiful. It&apos;s worth studying the shorter mate as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;0-1&quot;]
[ECO &quot;B02&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 Nf6 2. Nc3 d5 3. exd5 Nxd5 4. Bc4 Nb6 5. Bb3 Nc6 6. Nf3 e5 7. d3 Bg4 8. h3 Bh5 $2 9. Nxe5 $1 { Sacrificing the Queen.} 9… Bxd1 $4 ( 9… Qh4 { Tries to limit the damage, although of course Black is lost.} ) 10. Bxf7+ Ke7 11. Bg5+ Kd6 12. Ne4+ { Sacrificing the Knight.} 12… Kxe5 13. f4+ Kd4 { The missing tempo means that the King has an escape square!} ( 13… Kf5 14. Ng3# { This is the forced mate from the other position.} ) 14. Rxd1 $1 { Creating a mate threat that actually takes potentially many moves to execute!} ( 14. c3+ $4 { Lets the King escape.} 14… Kxd3 15. Nf2+ Kc2 { Black&apos;s King is not only safe, but it is also an attacking piece!} ) ( 14. Bxd8 $4 Bxc2 { Black is simply up material.} ) 14… Ke3 { Trying to bring the Knight to d4 and block a checkmate.} ( 14… Qxg5 { The best try, and one a student must analyze.} 15. c3+ { Check only now, after protecting the vital d3 Pawn.} 15… Ke3 16. fxg5 { And White has deadly threats involving castling and using the other Rook to checkmate. The variations are long but involve Black having to give back a lot of material to avoid an immediate checkmate.} 16… Nd4 17. O-O ( 17. cxd4 $2 { A materialistic student could grab the Knight, which does lead to a won game still, but potentially a very long one with a material edge.} ) ) 15. O-O { There&apos;s actually a forced mate in 8 here. One doesn&apos;t have to see the whole sequence, necessarily, because one can just be satisfied by the win of material in some lines.} 15… Nd4 $2 { This is the main line that I remember reading.} 16. Rde1+ { This is the &quot;easy&quot; forced mate in 7 from the book.} ( 16. Rfe1+ { This is the remarkable shorter but harder mate in 6 that was not in the book, but popped up when I was computer-checking the trap.} 16… Ne2+ 17. Rxe2+ { Sacrificing the exchange!} 17… Kxe2 18. Nc3+ Ke3 19. d4 { A beautiful motif, blocking the d4 escape square for the King, and now threatening Rd3#.} 19… Qxd4 ( 19… Qxg5 20. Rd3+ Kxf4 21. Rf3# { Wow. Black&apos;s Queen is in the way of King escape.} ) 20. f5+ { Remarkable how the Queen got deflected from the Bishop on g5.} 20… Qf4 21. Rd3# ) 16… Ne2+ 17. Rxe2+ { Sacrificing the exchange!} 17… Kxe2 ( 17… Kd4 18. Rd1 { c3 mate is coming. Black cannot stop it, even by playing Na4 or Nd5 or Bb4 to postpone it by one move.} ) 18. Bh5+ Ke3 19. Rf3+ Kd4 ( 19… Ke2 20. Rg3+ Ke1 21. Re3# ) 20. Bf7 { Paradoxical, returning to where it came from. c3 mate is coming.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>MongoDB free online course: a review</title><link>https://franklinchen.com/blog/2013/12/04/mongodb-free-online-course-a-review/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/04/mongodb-free-online-course-a-review/</guid><pubDate>Thu, 05 Dec 2013 03:03:55 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20141231105419/http://www.mongodb.com/sites/all/themes/bonsai/logo.png&quot; alt=&quot;MongoDB logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I finally finished a two-month &lt;a href=&quot;http://education.mongodb.com/&quot;&gt;free online course on MongoDB&lt;/a&gt;, given by &lt;a href=&quot;http://www.mongodb.com/&quot;&gt;MongoDB, Inc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a review of the specific course numbered M101J, &quot;MongoDB for Java Developers&quot;, but it should apply to all thee introductory developer courses on MongoDB in any language, because actually, I had originally signed up months earlier for their original course (in JavaScript), and the content is largely the same (I had gotten busy and dropped that course).&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why learn MongoDB?&lt;/h2&gt;
&lt;p&gt;I had first heard of MongoDB over two years ago, at a meeting of the (now defunct) &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/&quot;&gt;original Pittsburgh JavaScript meetup group&lt;/a&gt;, &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/events/25229441/&quot;&gt;&quot;In-depth look at Node.js and NoSQL&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;MongoDB has become very popular; as far as I can tell, this is because of extreme marketing efforts, as well as the fact that it is very easy to get started doing stuff with it, being a document-oriented NoSQL database requiring no schema.&lt;/p&gt;
&lt;p&gt;I took this course in part to expose myself to some NoSQL technology and also in part because I anticipated needing to use something like it. In fact, it turns out &lt;a href=&quot;/blog/2013/08/02/pittsburgh-ruby-python-social/&quot;&gt;I did use it&lt;/a&gt;, heavily, in exactly the kind of use case that works fine with it.&lt;/p&gt;
&lt;h2&gt;Why did I take the Java version of the course?&lt;/h2&gt;
&lt;p&gt;I took the &quot;M101J: MongoDB for Java Developers&quot; version of the course because I anticipated writing code in Scala to access MongoDB. In fact, during the course, I ended up using the official Scala driver &lt;a href=&quot;https://github.com/mongodb/casbah&quot;&gt;Casbah&lt;/a&gt; when possible.&lt;/p&gt;
&lt;h2&gt;Summary of the course&lt;/h2&gt;
&lt;p&gt;A lot of the course actually involved using the JavaScript-based MongoDB shell, which makes sense because it is easy to explore data that way. Since everything is JSON-like, there&apos;s no real escaping JavaScript if you&apos;re working with MongoDB.&lt;/p&gt;
&lt;p&gt;The video lecture/quiz/assignment format is fairly standard for MOOCs, and worked fairly well.&lt;/p&gt;
&lt;p&gt;The course was more work than I expected, because it lasted so long, two months.&lt;/p&gt;
&lt;p&gt;The ad hoc nature of MongoDB&apos;s API (including the Java-based one) tended to bother me throughout.&lt;/p&gt;
&lt;p&gt;The weird CRUD syntax, shoehorning everything into a JSON representation, took some getting used to.&lt;/p&gt;
&lt;p&gt;The way to specify indexes and to evaluate your guesses about whether they are actually working the way you expected was to look at funny values in JSON. I found this low-level and annoying.&lt;/p&gt;
&lt;p&gt;The aggregation API seemed even weirder. Overall, everything had a loose &quot;dynamic&quot; feel to it: this is the essence of MongoDB, really. Doing things wrong made me frustrated because of the runtime errors.&lt;/p&gt;
&lt;p&gt;Finally, the sections on replication and sharding were particularly problematic. The lectures kept mentioning that various defaults and APIs were a moving target. Furthermore, actual hardcoded numbers even showed up that we were supposed to use to specify policies. Wow.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The lectures and quizzes were well-designed (until the final portion of the course that seemed particularly ad hoc). The assignments were sometimes rather tricky, with not much of a hint, but offered a decent variety of realistic query formation.&lt;/p&gt;
&lt;p&gt;I would recommend this course as an overview to anyone who is committed to using MongoDB to its full extent.&lt;/p&gt;
&lt;p&gt;However, although I got my &quot;certificate&quot; for completing the course, and appreciate that MongoDB, Inc offers this training for free, I felt that there was a lot of ad hoc stuff going on in the evolving design of MongoDB, and embedded in the API design as well. For what I needed to know for my work, I didn&apos;t really need the whole course.&lt;/p&gt;
</content:encoded></item><item><title>Geeking out at the annual CMU psychology holiday party: beauty and selling out</title><link>https://franklinchen.com/blog/2013/12/02/geeking-out-at-the-annual-cmu-psychology-holiday-party/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/12/02/geeking-out-at-the-annual-cmu-psychology-holiday-party/</guid><pubDate>Tue, 03 Dec 2013 01:31:24 GMT</pubDate><content:encoded>&lt;p&gt;At the annual &lt;a href=&quot;https://www.psy.cmu.edu/&quot;&gt;CMU psychology department&lt;/a&gt; holiday party this year, the featured entertainment is the pub quiz, which my office team has come in second place basically every year since its existence. (Although we never win, we believe that if we accumulate the standings over the years, we are clearly first: our consistent second place performance clearly beats the wild variance of any of the other teams&apos; performances.)&lt;/p&gt;
&lt;p&gt;There was a movie trivia category that we did very well in. Given a graphic, we were to determine the film title represented by the graphic.&lt;/p&gt;
&lt;p&gt;Well, one of the images had everyone confused and silent, except for me, it seemed:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/math-quiz.png&quot; alt=&quot;Math quiz&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The answer&lt;/h2&gt;
&lt;p&gt;The answer was immediately obvious to me, certifying me as the math geek in the department. Understandably, most psychology department people are not math geeks; but I&apos;m not a psychologist, but a programmer, and my college degree is in physics.&lt;/p&gt;
&lt;p&gt;The answer is, of course, &quot;Beauty and the Beast&quot;, because &lt;a href=&quot;https://en.wikipedia.org/wiki/Euler%27s_identity&quot;&gt;Euler&apos;s identity&lt;/a&gt; is the &quot;most beautiful equation&quot; in all of mathematics. There is simply no doubt about this; it is so amazing and wondrous that if you&apos;ve studied mathematics seriously, contemplating this equation is like seeing God or something.&lt;/p&gt;
&lt;p&gt;And &quot;666&quot; is, by contrast, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Number_of_the_beast&quot;&gt;mark of the beast&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The genuine &quot;most beautiful&quot; equation in mathematics&lt;/h2&gt;
&lt;p&gt;However, I have to add a disclaimer: Euler&apos;s identity as we know it is &lt;em&gt;not really&lt;/em&gt; the most beautiful equation. It has a real flaw: it uses pi (&lt;em&gt;π&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/03/14/for-real-geeks-today-is-not-pi-day-but-half-tau-day/&quot;&gt;pi is a terrible mistake in the history of mathematics&lt;/a&gt;. The correct equation, had history adopted &lt;a href=&quot;https://tauday.com/&quot;&gt;tau instead of pi&lt;/a&gt;, would have been more beautiful:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://img.spikedmath.com/comics/fact-005-embrace-the-tau.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://img.spikedmath.com/comics/fact-005-embrace-the-tau.png&quot;&amp;gt;[image: Euler with tau]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;(Images from &lt;a href=&quot;https://spikedmath.com/fact-005.html&quot;&gt;Spiked Math&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;So, Euler&apos;s identity as we know it is &lt;em&gt;not quite&lt;/em&gt; the most beautiful equation. But it could be, if we all embraced tau.&lt;/p&gt;
&lt;h2&gt;Back to reality&lt;/h2&gt;
&lt;p&gt;But I wasn&apos;t going to get any points for the team by snidely answering the question with the nonexistent film title &quot;Half Beauty and the Beast&quot;. What can I say, I swallowed my pride and sold out to score an important point for our team.&lt;/p&gt;
&lt;p&gt;Given how easily I sold out, it is clear that a hundred years from now, we&apos;ll all still be using pi instead of tau.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-05-09)&lt;/h2&gt;
&lt;p&gt;Here is an interesting video reporting on brain research into the experience of &quot;mathematical beauty&quot; (both in mathematicians and non-mathematicians):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;dit-video-embed&quot; width=&quot;640&quot; height=&quot;360&quot;
src=&quot;https://snagplayer.video.dp.discovery.com/855979/snag-it-player.htm?auto=no&quot;
frameborder=&quot;0&quot; scrolling=&quot;no&quot; allowtransparency=&quot;true&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Imagining that you can play ten moves in a row</title><link>https://franklinchen.com/blog/2013/11/28/the-chess-improver-imagining-that-you-can-play-ten-moves-in-a-row/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/28/the-chess-improver-imagining-that-you-can-play-ten-moves-in-a-row/</guid><pubDate>Thu, 28 Nov 2013 12:59:16 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Imagining the you can play ten moves in a row&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Now and then, I hear a non-chess-player make an analogy using the game of chess, suggesting that some competitive business advantage is like being able to play &lt;em&gt;two moves&lt;/em&gt; in a row in chess. I try to point out that being able to play two arbitrary legal moves in a row in chess is not just some kind of small or large advantage, but an overwhelming one. For example, suppose it only takes one move to push a Pawn forward attacking your opponent&apos;s Queen: this means that given two moves in a row, you could win a Queen without doing any of the ordinary back-and-forth calculation that characterizes the complexity and beauty of chess.&lt;/p&gt;
&lt;p&gt;However, the fantasy of playing two moves in a row is quite an important one, the first step toward making &lt;em&gt;plans&lt;/em&gt;, if we place some constraints on the nature of the two moves.&lt;/p&gt;
&lt;p&gt;First of all, as already mentioned, it&apos;s cheating if you imagine a sequence of moves in which the first move creates a deadly threat but &lt;em&gt;in reality&lt;/em&gt; your opponent could block it easily, without making some other serious concession, because that&apos;s like being allowed a two-move sequence in a fight in which you get to both get in close and the deliver a blow, when in real life the whole trick is how to get in close without being punched back in the first place.&lt;/p&gt;
&lt;p&gt;If your opponent can block the threat of the first move, but you have calculated a second move &lt;em&gt;in response&lt;/em&gt; to the first defensive move that has no good defense, then what we have is a two-move &lt;em&gt;combination&lt;/em&gt;. Although it is very important to be able to see and calculate combinations, this also is &lt;em&gt;not&lt;/em&gt; what I&apos;m talking about here. A tactical combination is where you figure out how to strike your opponent so that even after he puts up his best possible block, this leaves an opening for you to then deliver the final blow.&lt;/p&gt;
&lt;p&gt;Rather, I&apos;m talking about imagining two moves in a row where you pretend you have an opponent who will take minimal care to protect himself (avoiding immediate mate, loss of material, etc.), but at the same time may not be super aggressive. This fantasy works best if the position at hand is at least &quot;closed&quot; enough so that it is plausible for each of you to maneuver in your own space without stepping on the other.&lt;/p&gt;
&lt;h2&gt;Ten moves in a row!&lt;/h2&gt;
&lt;p&gt;In fact, the most closed position possible is the initial board, with nobody having played a move yet! This position is so closed that you can, and should, imagine that you can play not only two moves in a row, but more like &lt;em&gt;ten&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Try this exercise, both as White and as Black. Keeping in mind to be consistent with your actual opening repertoire, set up the board and play the first ten moves of your &lt;em&gt;ideal&lt;/em&gt; setup, with the assumption that you can only place Pawns and pieces on your half of the board. Be honest: do not just pile everything up on the f7 square, for example.&lt;/p&gt;
&lt;p&gt;What does your setup say about what your middlegame plans are before you even make a move in each game that you play?&lt;/p&gt;
&lt;p&gt;You might also want to test out playing this ideal position against someone who has not yet made any moves. Theoretically you should be able to win, with such a lead in development. You can even test out your ideal position against a computer engine and see how well you can do against best defense (one way to do this is to set up a position by forcing the computer to just move a Knight out and back home for ten moves).&lt;/p&gt;
&lt;p&gt;Here are some sample positions that reflect different opening choices. Create your own!&lt;/p&gt;
&lt;h3&gt;White&lt;/h3&gt;
&lt;p&gt;Typical for many beginning players:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;B02&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 Nf6 2. d4 Ng8 3. Nf3 Nf6 4. Nc3 Ng8 5. Bc4 Nf6 6. O-O Ng8 7. Bf4 Nf6 8. Re1 Ng8 9. Qe2 Nf6 10. Rad1 Ng8 *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A more advanced setup:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;A15&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;c4 Nf6 2. g3 Ng8 3. Bg2 Nf6 4. Nc3 Ng8 5. Nf3 Nf6 6. O-O Ng8 7. d3 Nf6 8. Rb1 Ng8 9. b4 Nf6 10. a4 Ng8 *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Black&lt;/h3&gt;
&lt;p&gt;Black setups are a lot trickier because typical opening theory has them being different from White setups as a result of &lt;em&gt;forcing&lt;/em&gt; play by White. A mistake I see often is when someone as Black plays passively because of following a invisible script that is relevant only because of &lt;em&gt;best&lt;/em&gt; play by White. But if White plays passively, there is no reason Black cannot &lt;em&gt;immediately&lt;/em&gt; adopt an ideal setup rather than a compromise defensive setup.&lt;/p&gt;
&lt;p&gt;Here is a Black setup that is less aggressive than one White might choose with colors reversed, but is often the best that can be done given constraints from early in the opening:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;A04&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 c5 2. Ng1 d6 3. Nf3 Nf6 4. Ng1 a6 5. Nf3 b5 6. Ng1 Bb7 7. Nf3 Nbd7 8. Ng1 e5 9. Nf3 Be7 10. Ng1 O-O *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is another typical realistic Black setup. Note that if not for typical constraints placed by White, Black could already have moved a Pawn from c6 to c5. Depending on what your opponent as White do, you don&apos;t have to follow the usual script, if you understand what you&apos;re aiming for and your opponent allows you to take a shortcut to it.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;A06&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 d5 2. Ng1 Nf6 3. Nf3 c6 4. Ng1 e6 5. Nf3 Nbd7 6. Ng1 Bd6 7. Nf3 O-O 8. Ng1 b6 9. Nf3 Bb7 10. Ng1 Rc8 *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>A fine trumpet recital by Erin Yanacek</title><link>https://franklinchen.com/blog/2013/11/25/a-fine-trumpet-recital-by-erin-yanacek/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/25/a-fine-trumpet-recital-by-erin-yanacek/</guid><pubDate>Tue, 26 Nov 2013 03:24:39 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://static.erinyanacek.com/img/home_page_new_photo_3.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://static.erinyanacek.com/img/home_page_new_photo_3.jpg&quot;&amp;gt;[image: Erin Yanacek]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I attended a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.music.cmu.edu/events/282&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.music.cmu.edu/events/282&quot;&amp;gt;graduate trumpet recital&amp;lt;/span&amp;gt; by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://erinyanacek.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://erinyanacek.com/&quot;&amp;gt;Erin Yanacek&amp;lt;/span&amp;gt;, in which she performed works of Robert Planel, Camille Saint-Saens, George Enescu, Franz Joseph Haydn, and Herbert L. Clarke.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-07-28)&lt;/h2&gt;
&lt;p&gt;Erin has posted a video of the Herbert L. Clarke work from her recital:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/oBV4u360Ats&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;A little about Erin&lt;/h2&gt;
&lt;p&gt;I first encountered Erin, without yet knowing who she was, from &lt;a href=&quot;/blog/2012/04/29/attending-my-first-cmu-baroque-ensemble-concert/&quot;&gt;attending a CMU Baroque Ensemble Concert for the first time over a year ago&lt;/a&gt;. Then, some months later, without knowing the name or connecting it with anyone I had seen before, I saw a heartfelt article she wrote for a new blog on the arts, &lt;a href=&quot;https://web.archive.org/web/20251204194536/https://musedialogue.org/&quot;&gt;&quot;The Muse Dialogue&quot;&lt;/a&gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://musedialogue.org/2013/02/11/seeking-the-love-of-music-that-i-once-felt/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://musedialogue.org/2013/02/11/seeking-the-love-of-music-that-i-once-felt/&quot;&amp;gt;&quot;Seeking the love of music that I once felt&quot;&amp;lt;/span&amp;gt;. Then I bumped into her at a party Abby and I attended, and I finally connected the dots. It also turned out that she is a serious runner, and we&apos;ve accidentally crossed paths while both running in the trails of Frick Park. And she&apos;s also a cyclist and has done the wildly difficult Pittsburgh &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dannychew.com/dd_11.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dannychew.com/dd_11.html&quot;&amp;gt;Dirty Dozen&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Finally, if you&apos;re a fan of Pittsburgh&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.rivercitybrass.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.rivercitybrass.org/&quot;&amp;gt;River City Brass&amp;lt;/span&amp;gt;, you may have seen her recently, as she is now a cornet player there.&lt;/p&gt;
&lt;h2&gt;It&apos;s about the music&lt;/h2&gt;
&lt;p&gt;I rather enjoy Erin&apos;s playing. She&apos;s a versatile and sensitive musician, adept at different styles and different moods, exploring and showcasing what the trumpet can express. Whether it&apos;s pure brilliance, classical elegance, tender and lyrical romanticism, or jazzy/bluesy attitude and rhythm, I&apos;m pretty impressed by the range of what Erin can do using a trumpet to communicate. Erin&apos;s program was a tasty sampler of trumpet delight. I especially like the way she shapes phrases, really making the instrument sing and speak.&lt;/p&gt;
&lt;p&gt;Pittsburgh is blessed to have Erin as part of the local community of excellent musicians, and I hope to continue seeing her perform when I can! Check her out.&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013 round 10: Magnus Carlsen is the new world champion</title><link>https://franklinchen.com/blog/2013/11/22/world-chess-championship-2013-round-10-magnus-carlsen-is-the-new-world-champion/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/22/world-chess-championship-2013-round-10-magnus-carlsen-is-the-new-world-champion/</guid><pubDate>Fri, 22 Nov 2013 23:17:34 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round ten, in which a draw gave 22-year-old Magnus Carlsen the FIDE World Chess Champion title. Congratulations to Carlsen, and thank you, Anand, for showing your fighting spirit by playing the Sicilian Defense today!&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;My opening predictions for today&lt;/h2&gt;
&lt;p&gt;I announced my opening predictions the night before today&apos;s game.&lt;/p&gt;
&lt;p&gt;My primary prediction was that Carlsen would play &lt;code&gt;1 e4&lt;/code&gt; and Anand would play &lt;code&gt;c5&lt;/code&gt; for an aggressive Najdorf Sicilian, and that Carlsen would play a &lt;code&gt;Be2/Nf3&lt;/code&gt; line in response. My secondary prediction was that if Carlsen played something other than &lt;code&gt;1 e4&lt;/code&gt;, then Anand would try a King&apos;s Indian as Black.&lt;/p&gt;
&lt;h2&gt;Summary of the game&lt;/h2&gt;
&lt;p&gt;It turns out that I was partially right in my prediction. There was a Sicilian Defense, and Anand did try entering a Najdorf. I was very happy to see this, because there was some discussion among my chess friends yesterday about whether Anand would simply play for a safe, quick draw, rather than try to fight back in the match for a win. Anand did try to fight back after all, playing the riskiest variation even against Carlsen&apos;s avoidance of the Najdorf with the drawish Moscow Variation.&lt;/p&gt;
&lt;p&gt;Objectively the middlegame was very equal for some time, as Anand set up a &lt;a href=&quot;https://en.wikipedia.org/wiki/Hedgehog_%28chess%29&quot;&gt;Hedgehog&lt;/a&gt; position against Carlsen&apos;s Maróczy Bind setup. In fact, Anand implicitly offered a draw by shuffling his King back and forth. Carlsen decided to play on for a win, advancing on the Queenside with &lt;code&gt;a4&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Shortly after that, Anand started slipping a bit, allowing Carlsen to improve White&apos;s position, and at one critical point Anand made a big blunder that should have lost the game, hanging the important &lt;code&gt;d6&lt;/code&gt; Pawn to White&apos;s capture by the &lt;code&gt;e5&lt;/code&gt; Pawn. But Carlsen prematurely captured the Pawn too early, allowing Anand to regain it and simplify into a Knight and Pawn ending that should be a draw.&lt;/p&gt;
&lt;p&gt;However, White had chances because of the Queen side majority and more active King. Anand found very sharp counterplay that caused Carlson to decide to stop playing for a possible win, and shut the game down for a draw.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Carlsen is the new world champion!&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={10} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013 round 9: I correctly predicted Anand&apos;s aggressively opening choice but he blundered horribly again to lose</title><link>https://franklinchen.com/blog/2013/11/21/world-chess-championship-2013-round-9-i-correctly-predicted-anands-aggressively-opening-choice-but-he-blundered-horribly-again-to-lose/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/21/world-chess-championship-2013-round-9-i-correctly-predicted-anands-aggressively-opening-choice-but-he-blundered-horribly-again-to-lose/</guid><pubDate>Thu, 21 Nov 2013 13:59:36 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round nine, in which Anand finally went for the big win, but blundered horribly and lost instead.&lt;/p&gt;
&lt;p&gt;The night before the game, five hours before it started, I &lt;a href=&quot;https://twitter.com/franklinchen/status/403370754336505858&quot;&gt;tweeted&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
It came to me in a dream: Anand playing d4 in the next round, then going for an f3, e4 Pawn storm against Carlsen #FWCM2013
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I have to admit to being proud of myself for having correctly predicted the opening that both players would willingly enter in today&apos;s game! I had been thinking about this even before the match, but apparently Anand didn&apos;t pull out his weapon until just now. Today, I explain my reasoning.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;My correct opening prediction&lt;/h2&gt;
&lt;h3&gt;&lt;code&gt;1 d4&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;I concluded weeks ago that Anand would have to play &lt;code&gt;1 d4&lt;/code&gt; for the win against Carlsen, as he did against Kramnik in 2008 and Topalov in 2010. I know this is a topic for a post in itself, but I think &lt;code&gt;1 e4&lt;/code&gt; is dead at an elite match level if Black is willing to play &lt;code&gt;1... e5&lt;/code&gt; in response. Alternatively, even in his successful defense of his title against Gelfand in 2012, Anand&apos;s &lt;code&gt;1 e4&lt;/code&gt; was neutralized by Gelfand&apos;s use of the Sicilian &lt;code&gt;1... c5&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Nimzo-Indian&lt;/h3&gt;
&lt;p&gt;I predicted that Carlsen would play the &lt;a href=&quot;https://en.wikipedia.org/wiki/Nimzo-Indian_Defence&quot;&gt;Nimzo-Indian&lt;/a&gt;/&lt;a href=&quot;https://en.wikipedia.org/wiki/Queen%27s_Indian_Defense&quot;&gt;Queen&apos;s Indian Defense&lt;/a&gt; opening complex in response to &lt;code&gt;1 d4&lt;/code&gt;. Very solid, dynamic opening choice for Black.&lt;/p&gt;
&lt;p&gt;I believe the Queen&apos;s Indian Defense is mostly dead at the elite level, thanks to computer-aided analysis of some of the most important lines that lead to forced draws. Therefore, for Anand to play for the big win would require accepting the Nimzo-Indian challenge, creating positional asymmetries.&lt;/p&gt;
&lt;h3&gt;White against the Nimzo-Indian&lt;/h3&gt;
&lt;p&gt;There are many ways to play White against the Nimzo-Indian. As White I have tried many of them. The question is, what is the most aggressive way to play against the Nimzo-Indian? I think the answer is clear: &lt;code&gt;f3&lt;/code&gt; aiming for an eventual &lt;code&gt;e4&lt;/code&gt; and King side attack, involving &lt;code&gt;f4&lt;/code&gt; and &lt;code&gt;e5&lt;/code&gt; and &lt;code&gt;f5&lt;/code&gt; trying to checkmate Black&apos;s King!&lt;/p&gt;
&lt;p&gt;Some years ago, a nice book by Yuri Yakovich came out, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.gambitbooks.com/books/Play_the_4_f3_Nimzo-Indian.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.gambitbooks.com/books/Play_the_4_f3_Nimzo-Indian.html&quot;&amp;gt;&quot;Play the 4 f3 Nimzo-Indian&quot;&amp;lt;/span&amp;gt; which covers the ideas behind this way of playing for White. There are, of course, reasons why this is not played so often at top levels. Basically, the plan is risky, because White risks getting a weak &lt;code&gt;c3&lt;/code&gt; Pawn, being underdeveloped, or overextended, while Black gets counterplay on the Queen side. But in a must-win situation, I expected Anand to pull out this opening variation as a weapon eventually.&lt;/p&gt;
&lt;p&gt;He has done this before. In his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chessgames.com/perl/chess.pl?tid=65865&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chessgames.com/perl/chess.pl?tid=65865&quot;&amp;gt;2008 match against Kramnik&amp;lt;/span&amp;gt;, he played against the Nimzo-Indian using this &lt;code&gt;f3&lt;/code&gt; variation in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chessgames.com/perl/chessgame?gid=1510259&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chessgames.com/perl/chessgame?gid=1510259&quot;&amp;gt;Round 2&amp;lt;/span&amp;gt;. Kramnik drew, but White had a good game.&lt;/p&gt;
&lt;h2&gt;Summary of the game&lt;/h2&gt;
&lt;p&gt;Carlsen characteristically avoided the most popular &quot;main line&quot; against the &lt;code&gt;f3&lt;/code&gt; Nimzo-Indian, and in fact even transposed into a line of the Saemisch Variation that for a long time, since Botvinnik&apos;s famous winning games in it, had been considered bad for Black.&lt;/p&gt;
&lt;p&gt;But we have computers now that correct a lot of old assumptions. As a result, Carlsen played the most aggressive counterattacking plan right off the bat, going straight for Queen side counterplay before White even began developing the King side! Both players proceeded completely thematically and predictably after that, launching Pawns forward on opposite sides of the board. The question was whether Anand could break through on the King side first.&lt;/p&gt;
&lt;p&gt;Carlsen cold-bloodedly assumed not, and played aggressively with &lt;code&gt;b3&lt;/code&gt; creating a possibly dangerous passed Pawn, even as Anand prepared &lt;code&gt;f6&lt;/code&gt; trapping Carlsen&apos;s King.&lt;/p&gt;
&lt;p&gt;Probably objectively the position is defensible for Black. But Anand thought he saw a checkmate coming, and let Carlsen Queen the &lt;code&gt;b&lt;/code&gt; Pawn while lifting his Rook up to deliver a checkmate threat. Alas, he completely missed that &lt;code&gt;Qe1&lt;/code&gt; stops the checkmate and White is dead lost, and had to resign. (It turns out that at the last moment, Anand could easily have forced a draw with &lt;code&gt;Bf1&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;In this game, it is possible that if Anand had played a slower, less &quot;objectively correct&quot; line of attack, the game could have gotten interesting, in case Carlsen faltered. But unfortunately, we did not see that more interesting development of the game.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Carlsen has basically won the match. Carlsen already has 6 out of 12 points. He needs only one draw in the next 3 rounds in order to claim the title of FIDE World Chess Champion.&lt;/p&gt;
&lt;p&gt;It&apos;s up to Anand to continue doing the best he can regardless of the inevitable result. It will be tough, especially since he just blundered &lt;em&gt;horrifically&lt;/em&gt; again in a position that should have been a draw.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={9} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The power of White&apos;s Pawn on e6</title><link>https://franklinchen.com/blog/2013/11/21/the-chess-improver-the-power-of-whites-pawn-on-e6/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/21/the-chess-improver-the-power-of-whites-pawn-on-e6/</guid><pubDate>Thu, 21 Nov 2013 11:30:39 GMT</pubDate><content:encoded>&lt;p&gt;I wrote &quot;The power of White&apos;s Pawn on e6&quot; for The Chess Improver blog.&lt;/p&gt;
&lt;p&gt;Unfortunately, the original article at &lt;code&gt;https://chessimprover.com/the-power-of-whites-pawn-on-e6/&lt;/code&gt; could not be recovered from the Wayback Machine or any other archive. We apologize that this content has been lost.&lt;/p&gt;
</content:encoded></item><item><title>Chamber music concert at CMU featured Bach&apos;s Goldberg Variations arranged for string trio</title><link>https://franklinchen.com/blog/2013/11/19/chamber-music-concert-at-cmu-featured-bachs-goldberg-variations-arranged-for-string-trio/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/19/chamber-music-concert-at-cmu-featured-bachs-goldberg-variations-arranged-for-string-trio/</guid><pubDate>Wed, 20 Nov 2013 04:04:37 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.cmu.edu/news/stories/archives/2013/november/images/chamber-recital_400x340.jpg&quot; alt=&quot;David Harding, Noah Bendix-Balgley, Lorna McGhee, Amit Peled&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I attended a special &lt;a href=&quot;https://www.cmu.edu/news/stories/archives/2013/november/nov8_chambermusic.html&quot;&gt;chamber music concert at CMU&lt;/a&gt; that featured some truly excellent musicians.&lt;/p&gt;
&lt;h2&gt;The musicians&lt;/h2&gt;
&lt;p&gt;I was particularly interested in seeing &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://trioverlaine.com/bios/lorna-mcghee/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://trioverlaine.com/bios/lorna-mcghee/&quot;&amp;gt;Lorna McGhee&amp;lt;/span&amp;gt;, the current principal flute of the Pittsburgh Symphony Orchestra, and violinist &lt;a href=&quot;https://noahbendixbalgley.com/&quot;&gt;Noah Bendix-Balgley&lt;/a&gt;, the concertmaster, both of whom are relatively recent additions to the orchestra. The other two musicians, also fantastic, were violist and CMU professor &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://trioverlaine.com/bios/david-harding/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://trioverlaine.com/bios/david-harding/&quot;&amp;gt;David Harding&amp;lt;/span&amp;gt; and cellist &lt;a href=&quot;https://www.amitpeled.com/&quot;&gt;Amit Peled&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Mozart&apos;s flute quartet no. 1 in D major&lt;/h2&gt;
&lt;p&gt;Lorna McGhee played in the first part of the program, which was Mozart&apos;s first flute quartet. I was very curious how she would approach the work, because I&apos;m very picky nowadays about the performance of music from the 18th century or earlier, which I far prefer to be both on period instruments and in period style. The typical &quot;modern&quot; performance I can no longer enjoy, because of stylistic anachronisms that in my mind invalidate the beauty and freshness of early music.&lt;/p&gt;
&lt;p&gt;I enjoyed the quartet&apos;s performance of the Mozart. The playing was crisp, lively, and transparent. There was little to quibble with in Lorna McGhee&apos;s performance: she played with verve, sensitivity, and clarity. In some phrases she held a legato longer than I would like, but overall I quite liked the performance.&lt;/p&gt;
&lt;h2&gt;Bach&apos;s Goldberg Variations arranged for string trio by Dmitry Sitkovetsky&lt;/h2&gt;
&lt;p&gt;The bulk of the program was devoted to a performance by the string trio of the entire Goldberg Variations by Bach.&lt;/p&gt;
&lt;p&gt;In the past quarter century, I&apos;ve listened to countless performances of the Goldberg Variations on all kinds of keyboard instrument, including harpsichord, fortepiano, and modern piano, but until tonight, I hadn&apos;t bothered listening to Sitkovetsky&apos;s arrangement for string trio that came out several years ago.&lt;/p&gt;
&lt;p&gt;I thought it worked out pretty well tonight, with the three string players working really hard to create dynamism and contrast along with unity in this monumental work. I couldn&apos;t help but think that it&apos;s actually harder to pull off as a trio than as a solo keyboard piece. What was particularly interesting was visually seeing and hearing (in the different tonal qualities) all the different voices in the music. They are there in the original version, of course, but experiencing the spatial separation just made me even more amazed by Bach&apos;s creation.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I appreciate the time the four musicians took to perform in this chamber music recital free to the public, and thank you, CMU, for bringing them in for these invigorating performances of Mozart and Bach!&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013 round 8: the most boring game in the match so far</title><link>https://franklinchen.com/blog/2013/11/19/world-chess-championship-2013-round-8-the-most-boring-game-in-the-match-so-far/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/19/world-chess-championship-2013-round-8-the-most-boring-game-in-the-match-so-far/</guid><pubDate>Tue, 19 Nov 2013 13:30:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round eight, in which apparently Carlsen took a break by playing safe for a quiet draw.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;As White, Carlsen played e4 for the first time in the match. Anand countered with the Berlin Defense. Unfortunately, all hope that an interesting game with colors reversed from usual were dashed at move 5, which was implicitly a draw offer by Carlsen. Re1 is a completely harmless reply against the Berlin Defense, and leads to a lifeless position in which usually a series of trades leads to a drawn position.&lt;/p&gt;
&lt;p&gt;Sure enough, Carlsen basically forced the draw quickly thereafter.&lt;/p&gt;
&lt;p&gt;A total snorefest.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Carlsen has every right to play for a draw and win the match based on his two-point lead. If Anand had been ready to fight for a win at all costs, he would not have played the Berlin Defense; he could have played the Sicilian instead, for example. I hope I&apos;m wrong, but it&apos;s looking like Anand may be going down without a fight, in fear of losing another game in the match.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={8} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013 round 7: Anand catches his breath with a quiet game</title><link>https://franklinchen.com/blog/2013/11/18/world-chess-championship-2013-round-7-anand-catches-his-breath-with-a-quiet-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/18/world-chess-championship-2013-round-7-anand-catches-his-breath-with-a-quiet-game/</guid><pubDate>Tue, 19 Nov 2013 00:31:52 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round seven, in which apparently Anand took a break by playing safe for a quiet draw.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;As White, Anand played e4 yet again (I&apos;m still waiting for d4, which he used effectively against Kramnik and Gelfand in past world championship matches), and as in round 4 and 6, Carlsen used the Berlin Defense. Anand played a quiet, unambitious anti-Berlin again with d3, as in round 6, but this time went for a delayed Exchange Variation, giving up the Bishop pair for doubling Black&apos;s c Pawns. Nevertheless, this opening is considered harmless, and Carlsen chose a simple, effective plan that involved trading off his light Bishop for Anand&apos;s Knight, and then after further simplifications, there was nothing left in the game and they created a draw by repetition.&lt;/p&gt;
&lt;p&gt;The only interesting points in the game to me were the obvious opportunities Anand chose &lt;em&gt;not&lt;/em&gt; to take to try for more aggressive plans: playing g4 or playing fxe3. That he chose not to indicated that he was content to just get the game drawn and over with to stay safe and avoid creating complications that might allow him to lose.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Anand is running out of time to catch up in the match, but may have bought some time to rest and recover psychologically from losing two games in a row.&lt;/p&gt;
&lt;p&gt;Some people might criticize his failure to strike back immediately in this game, but if he knew himself and knew he was not ready, then it was the wise thing to do.&lt;/p&gt;
&lt;p&gt;However, I believe that the next time he has White, Anand should switch away from opening with e4, to opening with d4 for the win, since it looks like Carlsen can easily neutralize e4.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={7} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Recorder Society continues to add members</title><link>https://franklinchen.com/blog/2013/11/17/pittsburgh-recorder-society-continues-to-add-members/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/17/pittsburgh-recorder-society-continues-to-add-members/</guid><pubDate>Mon, 18 Nov 2013 00:40:37 GMT</pubDate><content:encoded>&lt;p&gt;At the third meeting of this season of the &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt;, I was pleased to see that we continue to add members. Wow. We already had a huge turnout &lt;a href=&quot;/blog/2013/10/20/the-biggest-pittsburgh-recorder-society-meeting-i-have-attended-in-two-years/&quot;&gt;last month&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-11-17/group.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Snacks!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-11-17/snacks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013, round 6: Carlsen wins the second game in a row when Anand blunders again in a drawn ending</title><link>https://franklinchen.com/blog/2013/11/16/world-chess-championship-2013-round-6-carlsen-wins-the-second-game-in-a-row-when-anand-blunders-again-in-a-drawn-ending/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/16/world-chess-championship-2013-round-6-carlsen-wins-the-second-game-in-a-row-when-anand-blunders-again-in-a-drawn-ending/</guid><pubDate>Sun, 17 Nov 2013 04:51:36 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round six, in which Carlsen won the second game in a row.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;h3&gt;Psychology already at move 4&lt;/h3&gt;
&lt;p&gt;As White, Anand played e4 again, as in &lt;a href=&quot;/blog/2013-11-13-world-chess-championship-2013-round-4-who-said-the-berlin-defense-was-boring/&quot;&gt;round 4&lt;/a&gt;, and Carlsen again used the Berlin Defense. Anand deviated by refusing to go into the Berlin ending that had gone badly for him in round 4, and chose with d3 to transpose into a line of the Closed &lt;a href=&quot;https://en.wikipedia.org/wiki/Ruy_Lopez&quot;&gt;Ruy Lopez&lt;/a&gt; that is considered to be not so challenging for Black because of the lack of a White d4.&lt;/p&gt;
&lt;p&gt;Personally, I think this was a psychological error on Anand&apos;s part, playing like Carlsen, avoiding the main aggressive opening lines. As we have seen in the match so far (and in Carlsen&apos;s whole career), Carlsen is good at holding his own when the opening is harmless or even worse for him. By giving up the fight for an opening advantage, I think Anand gave up one of his advantages, that of superior opening preparation.&lt;/p&gt;
&lt;h3&gt;Accumulating small weaknesses&lt;/h3&gt;
&lt;p&gt;Anand did not play the middlegame well. As in round 4, he used time-consuming Knight maneuvers that ended up simply allowing Carlsen to complete piece development with a harmonious setup. The result was a simplified position that looked like it should be a draw.&lt;/p&gt;
&lt;p&gt;To my surprise, however, Anand kept on voluntarily accepting small weaknesses in his positions, first in the form of doubled e Pawns and then even isolated doubled e Pawns, when the most &quot;natural&quot; moves blocking up the position seemed safe and effective to hold for a draw.&lt;/p&gt;
&lt;h3&gt;Blundering a Pawn away&lt;/h3&gt;
&lt;p&gt;On the 38th move, Anand mysteriously blundered away a Pawn for no good reason whatsoever, in a position that seemed like it should be an easy blocked-up draw. This was a total shock to me. It made no sense whatsoever to me.&lt;/p&gt;
&lt;h3&gt;Still a draw, but Carlsen set a trap&lt;/h3&gt;
&lt;p&gt;In the Rook and Pawn ending, it looked like the ending should still be a draw, but Carlsen kept playing and making progress on the King side. In fact, he abandoned his Queen side in order to attempt to win on the King side. It was a great winning try.&lt;/p&gt;
&lt;p&gt;I will confess that while playing over the score at this point in the ending, I lost all confidence in my ability to really understand what was going on without computer aid. I turned on the chess engine to analyze the ending, and it&apos;s really quite tricky. Even at a critical moment when the ending was still drawable by White, there is a large number of forcing lines that must be examined. In any case, what happened was that Anand fell into a trap in which Carlsen had a fine deflecting and clearance sacrifice that forced a win. Wow.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Anand is in terrible, terrible trouble. It&apos;s just that he has lost two games in a row, and almost certainly will not be able to make up the deficit in the remaining six games in the match. It&apos;s the way he&apos;s been losing: playing poorly in the middlegame in both rounds 5 and 6, then finally cracking and falling into difficult endings in which he failed to find the draws. He did in each game defend actively and resourcefully in the endings, with plans that should have worked, but each time he eventually blundered.&lt;/p&gt;
&lt;p&gt;I hope Anand comes back to play well, regardless of the final outcome of the match, but right now, it looks like Carlsen is the one who has not made any blunders yet of the magnitude of Anand&apos;s.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={6} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013, round 5: Carlsen wins in a tense positional battle when Anand blunders!</title><link>https://franklinchen.com/blog/2013/11/15/world-chess-championship-2013-round-5-carlsen-wins-in-a-tense-positional-battle-when-anand-blunders/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/15/world-chess-championship-2013-round-5-carlsen-wins-in-a-tense-positional-battle-when-anand-blunders/</guid><pubDate>Sat, 16 Nov 2013 01:27:57 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round five, a subtle positional battle in which Carlsen won in the ending. This was the first win by either player in the match!&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Carlsen as White gave up on Nf3 and played c4 instead, a very smart choice, as it prevents Black from immediately playing d5. Anand used the Triangle System to try to transpose to a &lt;a href=&quot;https://en.wikipedia.org/wiki/Semi-Slav_Defense&quot;&gt;Semi-Slav&lt;/a&gt;, an opening that he has shown fantastic preparation for as Black in the past, including a &lt;a href=&quot;/blog/2013/01/18/modern-chess-computers-shutting-down-opening-theory-part-2&quot;&gt;recent brilliancy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Carlsen sidestepped the Semi-Slav by playing the Marshall Gambit, but cleverly without the gambit, choosing a quiet line instead. After a Queen trade, Carlsen maintained some pressure, and eventually Anand pressed hard for counterplay in an ending in which he stood slightly worse the whole time. Unfortunately, at the critical moment, he mysteriously blundered just as he could have bailed out with a draw, lost the wrong Pawns, and allowed White to simplify into an easy win.&lt;/p&gt;
&lt;p&gt;I found this game quite interesting because of the themes of bad Bishops, weak Pawns, and weak squares. Precise calculation is necessary to hold off or create invasions for either side.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;Although Anand showed creativity in his attempt at Queen side counterplay, and in theory he could have held the draw, Carlsen clearly had the more comfortable and safe advantage for much of the game. Finally winning a game is a huge deal, of course. And Anand cannot be happy that he suddenly cracked during the game and lost. But it was not a one-sided game all the way through: it was only at the final moment when Anand made the losing move.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={5} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: Whether an interesting opening idea is good or bad depends on context</title><link>https://franklinchen.com/blog/2013/11/14/the-chess-improver-whether-an-interesting-opening-idea-is-good-or-bad-depends-on-context/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/14/the-chess-improver-whether-an-interesting-opening-idea-is-good-or-bad-depends-on-context/</guid><pubDate>Thu, 14 Nov 2013 12:35:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;Whether an interesting opening idea is good or bad depends on context&quot;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Recently, I saw a cute game from 2005 (thanks to Nigel Davies) that featured a very early Knight redeployment by Black that was punished by White. My immediate reaction was that this was yet another instructive case of how GMs (Black was rated 2509) can be punished for breaking the &quot;rules&quot; of quick development and not moving the same piece three times early in the opening. However, one cannot just say that a very strong player did something completely stupid. Rather, there was a real point behind the maneuver, so strategically it was not a stupid idea. It just happened that concretely, tactically it was punishable by alert, precise play.&lt;/p&gt;
&lt;p&gt;Examining situations like this is instructive and deepens one&apos;s understanding of the subtleties of chess. Here I offer representative middle game positions that illustrate how Black&apos;s Knight maneuver can be justified, if&lt;/p&gt;
&lt;p&gt;It happens later in the opening when Black&apos;s King and center are solid and not vulnerable to immediate &lt;em&gt;disruption&lt;/em&gt;.
White does &lt;em&gt;not&lt;/em&gt; play precisely, and therefore allows Black to catch up in development.&lt;/p&gt;
&lt;h2&gt;The Game&lt;/h2&gt;
&lt;p&gt;In this game, Black tried a Knight maneuver on move 4 of the opening to start redeploying from c6 to e7 to g6. There is a solid justification for this kind of maneuver, but alas, a precise attack starting with h4 and then hitting at f7 resulted in a nice sacrifice opening up Black&apos;s King. Although some imprecise play by White almost let Black have possibilities to draw a bad ending, Black&apos;s opening concept was clearly dubious.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Coventry op&quot;]
[Site &quot;Coventry&quot;]
[Date &quot;2005.03.25&quot;]
[Round &quot;3&quot;]
[White &quot;Efimenko, Zahar&quot;]
[Black &quot;Cherniaev, Alexander&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;2509&quot;]
[ECO &quot;C65&quot;]
[PlyCount &quot;63&quot;]
[WhiteElo &quot;2601&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Ne7 $6 $201 { Risky because falling behind in development.} 5. Nc3 { Simple development, and threatening Nxe5.} ( 5. d4 { An attempt to immediately open lines.} ) ( 5. Nxe5 $4 c6 { Black wins a piece because if White moves the BIshop, then …Qa5+ wins the Knight on e5.} ) 5… Ng6 { Black has moved the Knight three times in the opening while not yet finishing King side development.} 6. h4 $1 { It is worth trying to punish Black&apos;s Knight play. The threat of h5 is quite real.} 6… c6 $2 { Oblivious to the danger, only chasing White&apos;s Bishop to a better square.} 7. Bc4 h5 8. Ng5 d5 9. exd5 cxd5 $4 { The losing move.} ( 9… b5 10. Bb3 cxd5 11. d4 { Black has a terrible position but at least is not yet dead.} ) 10. Nxd5 $1 { A nice piece sacrifice.} 10… Nxd5 11. Qf3 $201 { Black is actually lost, because of threats against d5 and f7.} 11… Be6 12. Nxe6 fxe6 13. Bb5+ Ke7 14. Bg5+ Nf6 15. Qxb7+ Kd6 $201 { White has two Pawns for the piece, and a raging attack against Black&apos;s King. Black is lost, according to the computer.} 16. c4 Rc8 17. Bd2 Rc5 18. Qxa7 $6 ( 18. a4 { Computer claims as winning this cold-blooded move just marching on the Queen side calmly.} ) 18… Qc7 19. Qa6+ Ke7 20. b4 Rxb5 { Sacrificing the exchange, resulting in White have Rook and 3 Pawns to Black&apos;s Bishop and Knight.} 21. cxb5 Kf7 22. Rc1 Qd7 23. b6 Be7 24. O-O $2 { Remarkably, after a series of inaccuracies by White, the computer claims Black is almost OK now.} 24… Nd5 $4 ( 24… Nxh4 $201 { Remarkably, it looks like Black may be able to hold, because of the strong Knights and White&apos;s weak center and unprotected King side.} 25. Rc7 Qd5 26. Qb7 Nf5 ) 25. Qa7 $2 ( 25. a4 { Immediately aiming to connect the passed Pawns was strong.} ) 25… Qxa7 26. bxa7 Ra8 ( 26… Ngf4 { White&apos;s passed Pawns will get very dangerous.} 27. Rc4 Ra8 28. a4 Nxd3 29. b5 Rxa7 30. a5 { White&apos;s connected passed Pawns should win.} 30… Bc5 31. b6 Rb7 32. Be3 Nxe3 33. fxe3+ Ke7 34. Kh2 ) 27. Be3 Bxb4 $2 { Black&apos;s Knight on g6 needed to get back into the game.} ( 27… Ngf4 28. Rc2 Bxb4 29. a3 Bxa3 30. Rb1 Nxe3 31. fxe3 Rxa7 32. exf4 exf4 { White is the exchange up for a Pawn, but the game is not over yet.} ) 28. Rc4 Bd6 $2 ( 28… Be7 29. g3 Nf8 30. Rc6 Kg8 31. Ra6 Nxe3 32. fxe3 Bc5 33. Rb1 Bxe3+ 34. Kg2 Rxa7 35. Rxa7 Bxa7 36. a4 Bd4 37. a5 Ng6 38. Rb7 Kf8 39. a6 Ne7 40. a7 Bxa7 41. Rxa7 Kf7 ) 29. Rb1 Nge7 30. Rb7 Ke8 $4 31. Bc5 Bxc5 32. Rb8+ { Queening.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;The same opening with White not acting decisively&lt;/h2&gt;
&lt;p&gt;The problem with seeing a game like that out of context is that one might think &quot;of course Black deserved to get punished for such an unusual opening concept&quot;. It&apos;s worth seeing how the opening might have turned out OK, if only White had played less aggressively, by developing &quot;normally&quot; and not quickly attacking Black&apos;s King side or center. Below is a sample continuation in which Black is &lt;em&gt;completely successful&lt;/em&gt; in achieving a flexible Philidor type of position, with Pawns on d6, c6, and b5, and with the Knight being more active on g6 than on the usual square of d7. This is the kind of justified position that Black wanted to get.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;C65&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Ne7 5. O-O c6 6. Bc4 Ng6 7. Re1 Be7 8. Nc3 b5 9. Bb3 O-O 10. d4 d6 { A series of &quot;natural&quot; developing moves by White has led to Black&apos;s successful ideal setup, equalizing. Black has an improved Philidor type of Pawn structure and piece placement.}`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;A possible Four Knights Game position&lt;/h2&gt;
&lt;p&gt;Finally, let&apos;s look at the Knight maneuver in a &quot;respectable&quot; context, a slow Four Knights Game in which both sides have already developed most of their pieces and castled, and the position is closed. Here, because White plays a single passive move h3 at a moment when more disruptive moves were possible, Black manages to redeploy the Knight to g6, reaching a position even more active than in the Philidor situation, because of the dark Bishop being on b4 instead of e7. In fact, it looks like Black is playing the Spanish, only reversed. (A later article will examine the analogous Knight maneuver from b1 to g3 in the Spanish for White.)&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;&quot;]
[Site &quot;&quot;]
[Date &quot;&quot;]
[Round &quot;&quot;]
[White &quot;&quot;]
[Black &quot;&quot;]
[Result &quot;*&quot;]
[ECO &quot;C49&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Ne7 8. h3 $2 { Does nothing to prevent Black from executing the plan.} 8… c6 9. Ba4 Ng6 $201 { Black has a fine position. In fact, the Pawn structure and piece placement are much like a reversed Spanish.} *`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Lessons&lt;/h2&gt;
&lt;p&gt;If you break a rule of development too early in the opening, it is likely a bad idea.
If you see a rule of development broken, look for a possible &lt;em&gt;disruptive&lt;/em&gt; refutation, through opening the center or attacking the King or some other tactical idea, even if it means interrupting your own &quot;normal&quot; development.
&quot;Normal&quot; development in response to a weird idea may result in that weird idea turning into a virtue at your expense.&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013, round 4: who said the Berlin Defense was boring?</title><link>https://franklinchen.com/blog/2013/11/13/world-chess-championship-2013-round-4-who-said-the-berlin-defense-was-boring/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/13/world-chess-championship-2013-round-4-who-said-the-berlin-defense-was-boring/</guid><pubDate>Thu, 14 Nov 2013 02:49:28 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round four, the most exciting and longest game of the match so far! Things are really heating up!&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The game featured Carlsen as Black defending against Anand as White using the &quot;infamous&quot; Berlin Defense. I saw a bit more about the Berlin Defense in &lt;a href=&quot;/blog/2013/11/13/the-exact-moment-i-fell-in-love-with-the-berlin-defense-for-black-in-chess/&quot;&gt;a companion post&lt;/a&gt;. Let&apos;s just say that it has had a reputation as a &quot;boring&quot; defensive opening for Black.&lt;/p&gt;
&lt;p&gt;But this game was hardly boring. Anand seemed to falter in the opening as White, embarking on time-consuming Knight maneuvers that seemed to give Carlsen time to neutralize any attacking ideas. But then Anand provocatively offered a Pawn sacrifice, which Carlsen did not actually need to accept, but did. Then Anand pushed Carlsen&apos;s Bishop and Knight all the way back, in an attempt to just run him over with a thematic King side majority Pawn storm. The computer says this was not really sound, but it was &lt;em&gt;exciting&lt;/em&gt; to see an aggressive, risk-taking Anand for the first time in the match, after his cautious play in the first three rounds.&lt;/p&gt;
&lt;p&gt;Carlsen came up with good counterplay, but in very complex positions, began faltering, and could not refute Anand&apos;s play, even as Anand was fighting for his life. Anand sacrificed a second Pawn to continue the attack. That was an amazing idea to find! Carlsen finally faltered enough to allow Anand to achieve a drawn position. What an amazing game!&lt;/p&gt;
&lt;p&gt;Warning: analyzing the game with a computer might give the wrong idea about whether Anand was lost or not during the game, because the positions are so complex that no human could have been expected under the circumstances (the game went for hours and hours) to calculate everything perfectly. From a practical point of view, Anand&apos;s attacking ideas were definitely difficult to counter, and it is to both Carlsen&apos;s credit and Anand&apos;s that they played out this game to a fighting draw.&lt;/p&gt;
&lt;h3&gt;The state of the match&lt;/h3&gt;
&lt;p&gt;I think the situation is about even now for both players. Anand has proved in this round that he is in fact able and willing to fight, and Carlsen has continued his tenacity.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={4} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>The exact moment I fell in love with the Berlin Defense for Black in chess</title><link>https://franklinchen.com/blog/2013/11/13/the-exact-moment-i-fell-in-love-with-the-berlin-defense-for-black-in-chess/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/13/the-exact-moment-i-fell-in-love-with-the-berlin-defense-for-black-in-chess/</guid><pubDate>Thu, 14 Nov 2013 02:09:39 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;I have a confession to make.&lt;/p&gt;
&lt;p&gt;For the last thirty years of my life, I have considered the &lt;a href=&quot;https://en.wikipedia.org/wiki/Ruy_Lopez#Berlin_Defence:_3...Nf6&quot;&gt;Berlin Defense&lt;/a&gt; in chess to be &lt;em&gt;boring&lt;/em&gt;. As a result, even as a child, I refused to play the main line as White, and I certainly never played it as Black. The quick Queenless middlegame that results from the main line did not appeal to me for &lt;em&gt;either&lt;/em&gt; side.&lt;/p&gt;
&lt;p&gt;I didn&apos;t play chess or follow chess news from around 1988 to 2004, so I returned to chess bewildered by the apparent popularity of the Berlin Defense among the world elite. I learned that Vladimir Kramnik had used it successfully as a &lt;em&gt;drawing&lt;/em&gt; weapon for Black against Garry Kasparov in 2000. Just hearing that made me even less interested in the opening for either color.&lt;/p&gt;
&lt;h2&gt;My awakening&lt;/h2&gt;
&lt;p&gt;But everything changed for me this year on April 17, when, while following the &lt;a href=&quot;/writing/chess-improver/&quot;&gt;Chess Improver blog&lt;/a&gt; (which &lt;a href=&quot;/writing/chess-improver/author/franklinc/&quot;&gt;I now contribute to&lt;/a&gt;), I saw an amusing post by GM Nigel Davies, &lt;a href=&quot;/writing/chess-improver/not-in-front-of-the-children/&quot;&gt;&quot;Not In Front Of The Children&quot;&lt;/a&gt;, in which he gave some amusing and brief annotations to a game from 1992 that, when I played over it, totally fascinated me, because it was so unusual that he was basically saying, young novice chess players might not understand what went on.&lt;/p&gt;
&lt;p&gt;This was a game in which Black &lt;em&gt;won&lt;/em&gt;, not drew, with the Berlin Defense, and won in such fashion that I felt compelled to analyze the game for myself to see where exactly White had gone wrong. In analyzing the game, I felt I learned a lot about the subtleties of this defense, and even so, realized how just how much more there could possibly be to it, because of the obvious asymmetries between the two sides and the lack of Queens on the board.&lt;/p&gt;
&lt;p&gt;I even discovered that there are even entire books devoted to the Berlin Defense, e.g., &lt;a href=&quot;https://www.qualitychess.co.uk/products/1/1/the_berlin_wall_-_by_john_cox/&quot;&gt;John Cox, &quot;The Berlin Wall&quot;, from 2008&lt;/a&gt; and &lt;a href=&quot;https://www.chess-stars.com/&quot;&gt;Igor Lysyj and Roman Ovetchkin, &quot;The Berlin Defense&quot;, from 2012&lt;/a&gt;. I have not read them, but the game I saw definitely led me to realize that what I thought was &lt;em&gt;boring&lt;/em&gt;, I simply &lt;em&gt;did not understand&lt;/em&gt;. When I understood more, I found it less boring.&lt;/p&gt;
&lt;h2&gt;Why I am writing about the Berlin Defense now&lt;/h2&gt;
&lt;p&gt;I offer my analysis of this old game below, as a supplement to my analysis of the recent exciting &lt;a href=&quot;/blog/2013/11/13/world-chess-championship-2013-round-4-who-said-the-berlin-defense-was-boring/&quot;&gt;round 4 game of the World Chess Championship between Anand and Carlsen&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;White did not have a clear plan in this game, and wasted a lot of time on Knight maneuvers that led nowhere. Also, he weakened his Queen side. The result was that Black got play on both the Queen side and King side with an unusual pair of Rook lifts. A beautiful game to behold and study!&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/berlin.pgn&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013, round 3: a fighting game worth studying</title><link>https://franklinchen.com/blog/2013/11/12/world-chess-championship-2013-round-3-a-fighting-game-worth-studying/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/12/world-chess-championship-2013-round-3-a-fighting-game-worth-studying/</guid><pubDate>Wed, 13 Nov 2013 03:47:56 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In my continuing coverage of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, today I cover round three, an exciting fighting game well worth studying.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;If you were bored by the &lt;a href=&quot;/blog/2013/11/09/world-chess-championship-2013/&quot;&gt;first round&lt;/a&gt; and the &lt;a href=&quot;/blog/2013/11/10/world-chess-championship-2013-round-2-declining-the-sacrifice/&quot;&gt;second round&lt;/a&gt; games, because the play in both games involved no major errors and therefore ended quickly in a draw, study this third round game, even though it too ended in a draw!&lt;/p&gt;
&lt;p&gt;Carlsen opened with the unambitious &lt;a href=&quot;https://en.wikipedia.org/wiki/R%C3%A9ti_Opening&quot;&gt;Réti Opening&lt;/a&gt; yet again, and Anand was happy to repeat the &lt;a href=&quot;https://en.wikipedia.org/wiki/Gr%C3%BCnfeld_Defence&quot;&gt;Grünfeld Defense&lt;/a&gt; setup of round 1. Carlsen varied by a very quick c4 thrust against Anand&apos;s d5 Pawn, but Anand played the most aggressive continuation, taking the Pawn, guaranteeing an asymmetrical Pawn structure and therefore a chance at fighting chess.&lt;/p&gt;
&lt;h3&gt;The ambitious Maróczy Bind&lt;/h3&gt;
&lt;p&gt;In fact, Anand aggressively adopted a reverse &lt;a href=&quot;https://en.wikipedia.org/wiki/Sicilian_Defence,_Dragon_Variation&quot;&gt;Dragon Sicilian Defense&lt;/a&gt; setup, with good long-term positional prospects as Black. Furthermore, he also quickly chose a plan to try to transform the position into a deadly reverse &lt;a href=&quot;https://en.wikipedia.org/wiki/Mar%C3%B3czy_Bind&quot;&gt;Maróczy Bind&lt;/a&gt; structure to squeeze Carlsen to death. Carlsen played inaccurately and in fact allowed Anand to adopt this structure.&lt;/p&gt;
&lt;p&gt;If you are not familiar with the Maróczy Bind setup, check out a couple of my games in which I won using it, so you can see what can happen against weak defense:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;as White&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/09/12/chess-improver-the-value-of-thematic-complete-games-against-a-weaker-opponent/&quot;&gt;in reverse as Black&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Carlsen&apos;s defense&lt;/h3&gt;
&lt;p&gt;Carlsen decided that instead of risking being squeezed to death, he would lash out and sacrifice a Pawn to get some open lines and possibly get chances against Anand&apos;s King in order to simplify to a draw. I&apos;m not sure whether it was sound, and Anand may have been able to play more challengingly to win (I have not done the intensive computer analysis to draw a conclusion), but in the end Anand wound up allowing simplification and losing back the won Pawn with a dead drawn ending.&lt;/p&gt;
&lt;h3&gt;The state of the match: Carlsen under real pressure&lt;/h3&gt;
&lt;p&gt;This is now the &lt;em&gt;third game in a row in which Anand acquired an advantage out of the opening&lt;/em&gt;. And in each game, his advantage in the game has only grown. This trend is not at all good for Carlsen. He has been completely neutralized as Anand has consistently gained superior space and piece play. Carlsen had to fight hard for a draw in this game. As White in two games now, he has been playing the opening poorly, which one does not need to be a world class player to see. Is this rope-a-dope or what?&lt;/p&gt;
&lt;p&gt;But what about Anand? Why did he keep on taking the safe way out to a draw in three games when he could have avoided &lt;em&gt;simplification&lt;/em&gt; each time in an attempt to win? If Anand plays cautiously when he has the advantage, what might happen if Carlsen starts playing differently and gets Anand&apos;s back against the wall in a game?&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={3} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013, Round 2: declining the sacrifice</title><link>https://franklinchen.com/blog/2013/11/10/world-chess-championship-2013-round-2-declining-the-sacrifice/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/10/world-chess-championship-2013-round-2-declining-the-sacrifice/</guid><pubDate>Sun, 10 Nov 2013 18:09:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/11/09/world-chess-championship-2013/&quot;&gt;Yesterday, I covered the first round&lt;/a&gt; of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, which ended in a quick draw.&lt;/p&gt;
&lt;p&gt;Today, in the second round, the colors were reversed, with Anand as White and Carlsen as Black. The game also ended in a draw, but featured much more interesting positions and possibilities.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Anand played an interesting attacking idea in the opening that featured maintaining a strong Knight on the e5 square to hamper Black&apos;s development. This idea inherently involved offering a sacrifice of his h4 Pawn.&lt;/p&gt;
&lt;p&gt;If Carlsen had accepted the sacrifice, I believe Anand would have had good winning chances. It was a positional sacrifice, with no immediate punishment in sight if Black had taken the Pawn, but there would have been long-term compensation for White. Carlsen wisely declined to take the Pawn, but in doing so deprived spectators of a fierce attacking game!&lt;/p&gt;
&lt;p&gt;Unfortunately, after Anand offered a trade of a Knight, the result was that all the Knights were traded off, and then Carlsen offered to trade Queens. Anand could have held out and refused, but for some reason decided to trade, which meant a resulting position that was clearly drawn, and sure enough, a draw was agreed shortly thereafter.&lt;/p&gt;
&lt;p&gt;Carlsen can be happy about the outcome of the game. Anand seemed too quick to trade off pieces when it was not necessary, even if White&apos;s spatial advantage and head start on the King side attack was only small, and there was always the danger that allowing Black to start a counterattack on the Queen side would create complications.&lt;/p&gt;
&lt;p&gt;This is now the second game in a row in which Anand had some advantage but rejected opportunities to maintain complexity in search of a win.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; gameIndex={2} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>World Chess Championship 2013 Round 1: how to understand the short 16-move Carlsen-Anand draw</title><link>https://franklinchen.com/blog/2013/11/09/world-chess-championship-2013/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/09/world-chess-championship-2013/</guid><pubDate>Sat, 09 Nov 2013 17:00:33 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;In the much-anticipated first round of the &lt;a href=&quot;https://chennai2013.fide.com/&quot;&gt;World Chess Championship between Anand and Carlsen&lt;/a&gt;, the game ended in a very quick 16-move draw.&lt;/p&gt;
&lt;p&gt;In accordance with &lt;a href=&quot;/blog/2013/11/07/the-chess-improver-how-to-watch-the-anand-carlsen-world-chess-championship-to-improve-your-own-game/&quot;&gt;my own advice on ways to follow the match to maximize learning&lt;/a&gt;, today I saw the match result, downloaded a PGN file of the game score, and then walked through it &lt;em&gt;without&lt;/em&gt; a computer engine running, analyzing the game with my own mind as I replayed the game. Then I double-checked my thoughts with a chess engine. I still have not bothered to read or watch any coverage of this first-round game; I will do that later.&lt;/p&gt;
&lt;p&gt;Game and notes below:&lt;/p&gt;
&lt;h2&gt;Disappointment in a short draw?&lt;/h2&gt;
&lt;p&gt;I&apos;m sure a lot of people were disappointed by this short draw. But one has to realized exactly what happened.&lt;/p&gt;
&lt;p&gt;Carlsen played the unambitious &lt;a href=&quot;https://en.wikipedia.org/wiki/R%C3%A9ti_Opening&quot;&gt;Réti Opening&lt;/a&gt; as White, presumably hoping to avoid special preparation by Anand. Anand neutralized the opening early on with simple development using a &lt;a href=&quot;https://en.wikipedia.org/wiki/Gr%C3%BCnfeld_Defence&quot;&gt;Grünfeld Defense&lt;/a&gt; setup. Carlsen attempted to place his remaining undeveloped piece, the Queen Knight, on a more active square than the more &quot;natural&quot; square that would have overprotected the c4 Pawn, but Anand punished this by immediately attacking the c4 Pawn, resulting in Carlsen basically having to play moves that enabled Anand to choose to repeat the position for a draw.&lt;/p&gt;
&lt;p&gt;Carlsen had no choice but to take the draw or stand clearly worse, so he bailed out. The question then is, should Anand tried to continue playing for a win, since it was his choice to take the draw or not?&lt;/p&gt;
&lt;p&gt;In a match situation at this level, typically the player as Black is quite happy to take a draw, so it made sense for Anand to do so. It was possible for Anand to not force the draw, at the cost of loosening up his own Queen side, but why play in this risky way, as defending champion?&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/anand-carlsen.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Below is the game with annotations. My task was made easy in this case because it was such a short and clear game, without much complexity. I hope it will be harder in subsequent games in the match!&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: How to watch the Anand-Carlsen World Chess Championship to improve your own game</title><link>https://franklinchen.com/blog/2013/11/07/the-chess-improver-how-to-watch-the-anand-carlsen-world-chess-championship-to-improve-your-own-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/07/the-chess-improver-how-to-watch-the-anand-carlsen-world-chess-championship-to-improve-your-own-game/</guid><pubDate>Thu, 07 Nov 2013 05:01:45 GMT</pubDate><content:encoded>&lt;p&gt;For The Chess Improver, I wrote &quot;&quot;How to watch the Anand-Carlsen World Chess Championship to improve your own game&quot;&quot;.&lt;/p&gt;
&lt;p&gt;I have a couple of things to add to that post, based on new information that just came my way.&lt;/p&gt;
&lt;p&gt;There is a lot of sport-oriented trash-talking out there before the match begins, for example &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.kasparov.com/garry-kasparov-a-win-for-carlsen-in-the-upcoming-world-championship-match-will-be-a-huge-win-for-the-chess-world/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.kasparov.com/garry-kasparov-a-win-for-carlsen-in-the-upcoming-world-championship-match-will-be-a-huge-win-for-the-chess-world/&quot;&amp;gt;Garry Kasparov rooting for young Magnus Carlsen&amp;lt;/span&amp;gt;. This is exactly the kind of thing I want to avoid as I focus on the chess itself.&lt;/p&gt;
&lt;p&gt;I have no real attachment to either &quot;old&quot; (43-year-old) Anand winning or 22-year-old Carlsen winning. I deeply admire both players, and I hope that high-quality chess gets played.&lt;/p&gt;
&lt;p&gt;That said, since Anand is my age, of course part of me wants to see him do well, given the rampant ageism in our culture that is obvious not only in chess, but in many other areas of life.&lt;/p&gt;
&lt;p&gt;Do not write off Anand yet: remember &lt;a href=&quot;/blog/2013/01/18/modern-chess-computers-shutting-down-opening-theory-part-2/&quot;&gt;this brilliant game of his not long ago against Aronian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The &lt;a href=&quot;http://chennai2013.fide.com/&quot;&gt;2013 FIDE World Chess Championship&lt;/a&gt; match between Anand and Carlsen is about to begin.&lt;/p&gt;
&lt;h2&gt;Chess as spectator sport?&lt;/h2&gt;
&lt;p&gt;You may have already waded through articles and blog posts all over the world speculating about who is favored to win, etc. It&apos;s certainly good for chess that there is excitement over this match. Furthermore, chess really is a sport, in addition to being a science and an art. In fact, in past world chess championships I have tended to adopt a spectator &quot;fan&quot; mentality, including favoring one player or the other, and watching and reading commentary, trying to catch bits of games live (usually difficult because of time zone differences and work and other schedules), turning on the chess engines, and talking trash with other chess players: typical sports spectator behavior, of course.&lt;/p&gt;
&lt;h2&gt;An opportunity to get more serious&lt;/h2&gt;
&lt;p&gt;As I&apos;ve said, although there is nothing wrong with having fun and sometimes engaging in our beloved game of chess as a sports fan, I got to thinking, for this Anand-Carlsen match, whether I can get more serious about it, as an &lt;em&gt;active&lt;/em&gt; improver. Here are some ideas. I will use some of them myself.&lt;/p&gt;
&lt;h3&gt;Delaying consultation of commentary&lt;/h3&gt;
&lt;p&gt;Since the games start at what will be 4:30 AM EST (my time zone), I will not anyway be up to watch the games live.&lt;/p&gt;
&lt;p&gt;Of course, there will be copious commentary on many sites and many blogs on the games, both while in progress and afterwards.&lt;/p&gt;
&lt;p&gt;This time, I&apos;m going to skip the commentary for a game until I&apos;ve had a chance to look at the game myself first. It will be hard to avoid learning of the result of a game, of course, but we all know that the result does not tell the whole story, so I&apos;m not concerned about downloading an unannotated PGN score of a game while knowing the final result.&lt;/p&gt;
&lt;h3&gt;Analyzing a game first without a chess engine&lt;/h3&gt;
&lt;p&gt;Although chess engines are fantastic aids for getting to the &quot;truth&quot; of a position, looking at them first before forming one&apos;s own hypotheses is like reading a textbook&apos;s questions while also reading the answer key. It may be resulting in a lot of pleasant nodding, &quot;Yes, that makes sense&quot;, but there is value in doing at least a quick and rough analysis based on one&apos;s own mind. After that, one can check one&apos;s hypotheses with the computer.&lt;/p&gt;
&lt;p&gt;In fact, even more demanding than simply analyzing a completed game is to &lt;em&gt;guess&lt;/em&gt; what someone will do. You can do this the time-honored way with a printout to cover up moves, or if you have the game loaded in a computer program, just don&apos;t look at the score, and hit the &quot;next move&quot; button after writing down your guess. (It is actually optimal to write down your guesses or thoughts, rather than only think them, if possible, to morally commit to them and own them.)&lt;/p&gt;
&lt;h3&gt;Comparative commentary&lt;/h3&gt;
&lt;p&gt;To get a broader view of different kinds of evaluations, human oversights, and the psychology of both the players themselves and the commentators, it is possible to examine a couple of different sources of commentary (especially archives of unscripted, unpolished live commentary during a game). This sort of research task is clearly very intensive and not practical to do for every game, but might be instructive for everyone to do at least once during the match.&lt;/p&gt;
&lt;h3&gt;Match-level themes&lt;/h3&gt;
&lt;p&gt;Going beyond the level of a single game, we expect patterns to emerge during intense match play in a world championship match. Both sides will have prepared massively to generate new ideas and surprises whose full expression may be revealed through multiple games. So there is an opportunity to compare deviations from the same theme and achieve a deeper understanding than from a single game. For example, in past world championship matches we have seen repeated use of the Catalan or of the Rossolimo Sicilian, during a single match.&lt;/p&gt;
&lt;h3&gt;Exploring the themes in your own games&lt;/h3&gt;
&lt;p&gt;Maybe you learn some opening and middle game ideas while following the match. While your friends are also following and excited, how about playing some friendly games with them exploring the ideas you see? It&apos;s a good excuse as any to experiment in a shared context.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve mentioned a few ways in which one can use the world championship as a learning experience. Many of them can apply to any tournament or match, but I think the excitement and intensity of a world championship provide extra incentive to make the most of following the sport that we not only watch but play ourselves.&lt;/p&gt;
</content:encoded></item><item><title>Steel City Ukuleles: a nice session on playing by ear</title><link>https://franklinchen.com/blog/2013/11/06/steel-city-ukuleles-a-nice-session-on-playing-by-ear/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/06/steel-city-ukuleles-a-nice-session-on-playing-by-ear/</guid><pubDate>Thu, 07 Nov 2013 02:20:29 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been three (rather than the usual two, because of the nature of the twice-a-month scheduling) weeks since &lt;a href=&quot;/blog/2013/10/16/steel-city-ukuleles-back-to-plain-good-fun/&quot;&gt;my last meeting of the Steel City Ukuleles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was definitely starting to miss the group meeting, and was happy to attend &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/132647952/&quot;&gt;tonight&lt;/a&gt;, although I have to confess I did enjoy having more time to work on my own ukulele musical projects (rather than practicing the meetup music).&lt;/p&gt;
&lt;h2&gt;Playing by ear&lt;/h2&gt;
&lt;p&gt;Renee had volunteered to lead a session including basic practice for &lt;em&gt;playing by ear&lt;/em&gt;, a very important skill that many of us coming from the &quot;written score&quot; orientation of music need work on. That obviously includes me. I&apos;m always astounded when going to jam sessions and seeing and hearing musicians do amazing things who barely read music, for example. The &lt;em&gt;freedom&lt;/em&gt; and flexible facility is just obvious.&lt;/p&gt;
&lt;p&gt;Anyway, we started easy, doing songs with only two chords, then moved to three, then four. We did this in four different keys. For me, amusingly, it was a good thing that I didn&apos;t actually know most of the songs, so I had to pick them up in real time (or more accurately, partially in real time, then repair mistaken guesses after fumbling through the first repetition).&lt;/p&gt;
&lt;p&gt;I very much appreciated the session on playing by ear. There is no reason I can&apos;t work on this by myself at home, of course, using various techniques. I have done some of this, but not as systematically as I should, so after tonight, I decided to spend &lt;em&gt;every&lt;/em&gt; future musical practice session (regardless of instrument) doing something without any written music. I consider playing by ear to be a critical component of what I want to get out of music in my life.&lt;/p&gt;
&lt;h2&gt;Beatles&lt;/h2&gt;
&lt;p&gt;The rest of the time we had a Beatles-themed program of songs. I found these tricky because of the sometimes strange chord changes (&quot;strange&quot; relative to most of the stuff we play).&lt;/p&gt;
&lt;h2&gt;Ending a little early&lt;/h2&gt;
&lt;p&gt;We ended a little early because a subset of us were scheduled to use the time to rehearse for a recording session coming up. (I had not volunteered for this gig when it was announced along with the Ecofest gig that I did do.)&lt;/p&gt;
</content:encoded></item><item><title>The dilemma of how to descend the Cathedral of Learning once at the top</title><link>https://franklinchen.com/blog/2013/11/03/the-dilemma-of-how-to-descend-the-cathedral-of-learning-once-at-the-top/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/03/the-dilemma-of-how-to-descend-the-cathedral-of-learning-once-at-the-top/</guid><pubDate>Sun, 03 Nov 2013 14:34:44 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, right after I left one of the sessions of the &lt;a href=&quot;https://www.music.pitt.edu/events/43rd-annual-jazz-seminar-concert130813&quot;&gt;annual Pittsburgh Jazz Seminar&lt;/a&gt; at the William Pitt Union, I immediately crossed the street to the Cathedral of Learning, in order to climb up to the 36th floor (I last climbed the Cathedral &lt;a href=&quot;/blog/2013/10/29/an-early-start-on-cathedral-of-learning-stair-climbing/&quot;&gt;three days ago&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-2013-11-02.jpg&quot; alt=&quot;View of Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I took off my shoes, stuffed my jacket into my backpack, and went up at an &quot;easy&quot; pace, taking about nine minutes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-2013-11-02-at-top.jpg&quot; alt=&quot;View from 36th floor window of Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I faced the usual dilemma of how to get back down, except this time, the dilemma was magnified because of my time constraints: I really needed to get down and out &lt;em&gt;quickly&lt;/em&gt;, in order to make it to an important appointment.&lt;/p&gt;
&lt;h2&gt;Choices and tradeoffs&lt;/h2&gt;
&lt;h3&gt;Elevator down&lt;/h3&gt;
&lt;p&gt;One option is to take one of the elevators down. This is what I&apos;ve almost always done ever since doing the Cathedral of Learning stair climb.&lt;/p&gt;
&lt;p&gt;Unfortunately, whether this is time-effective depends a lot on various factors, such as whether Pitt classes are being held, Pitt students are roaming around, or tourists are roaming around.&lt;/p&gt;
&lt;p&gt;It turned out that Saturday afternoon is a bad time to be taking the elevator. There were hordes of students as well as tourists throughout the building, and especially the tourists at the top floor.&lt;/p&gt;
&lt;p&gt;Furthermore, I had noticed on the ground floor earlier that some of the elevators were out of service.&lt;/p&gt;
&lt;p&gt;Finally, &lt;a href=&quot;/blog/2013/10/29/an-early-start-on-cathedral-of-learning-stair-climbing/&quot;&gt;three days ago I had a bad experience with the elevator&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Taking the stairs down&lt;/h3&gt;
&lt;p&gt;The other option is to take the stairs back down, all the way. This option is one I take so rarely that I don&apos;t even remember when I last did it. I probably did it once earlier this year, but have no specific memory of it.&lt;/p&gt;
&lt;p&gt;The drawback of taking the stairs down is the extra impact on the body.&lt;/p&gt;
&lt;p&gt;But since I needed to descend as quickly as possible, I felt I had no choice but to take the stairs. In fact, I not only used the stairs, but ran down all the way.&lt;/p&gt;
&lt;p&gt;It wasn&apos;t hard (thank you, gravity!), although it got boring and weird after a while, because it feels like forever going down 36 floors.&lt;/p&gt;
&lt;h2&gt;The day after&lt;/h2&gt;
&lt;p&gt;I thought everything was OK, but this morning, the day after, I woke up with a serious case of &lt;a href=&quot;https://en.wikipedia.org/wiki/Delayed_onset_muscle_soreness&quot;&gt;DOMS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My &lt;em&gt;calves&lt;/em&gt; were totally tight and trashed. Oops. Maybe I could have prevented this by stretching after running down yesterday, but I had no time, and had to make my appointment. Or maybe I just plain overdid things, not being conditioned at all to running down so many steps.&lt;/p&gt;
&lt;p&gt;Anyway, I&apos;m suffering, but no permanent damage done, of course: I will be OK after a day or two.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;So does this mean that the next time I climb the Cathedral, I will stick to the elevator?&lt;/p&gt;
&lt;p&gt;Actually, &lt;em&gt;no&lt;/em&gt;. I take the experience as a challenge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, I want to defeat my sense of boredom going down, just as I&apos;ve managed to defeat it on the way up. I will find something meditative and aesthetic about the process of descending the steps.&lt;/li&gt;
&lt;li&gt;Clearly my soreness showed that my calves were insufficiently conditioned. The solution to that is not to avoid running down the steps, but to &lt;em&gt;keep doing it&lt;/em&gt;, in a smarter way. Therefore, my plan now is that on any final repetition of the Cathedral stair climb, I will take the stairs back down, rather than the elevator, regardless of elevator congestion concerns.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;An accidental case of trashed calves during a workout has led me to treat it as a learning experience and a challenge to overcome in the future.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-10-22)&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;/blog/2014/10/22/climbing-the-cathedral-of-learning-to-get-to-the-harvard-classics/&quot;&gt;&quot;elevator modernization project&quot; started in September 2014 and makes it even more attractive to just walk&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Say No to Daylight Savings Time</title><link>https://franklinchen.com/blog/2013/11/02/say-no-to-daylight-saving-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/02/say-no-to-daylight-saving-time/</guid><pubDate>Sun, 03 Nov 2013 02:51:43 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://wedontneeddst.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://wedontneeddst.com/&quot;&amp;gt;We don&apos;t need Daylight Saving Time&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I hate this messing with my internal clock.&lt;/p&gt;
</content:encoded></item><item><title>Broccoli and friends</title><link>https://franklinchen.com/blog/2013/11/01/broccoli-and-friends/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/11/01/broccoli-and-friends/</guid><pubDate>Fri, 01 Nov 2013 22:26:40 GMT</pubDate><content:encoded>&lt;p&gt;Today I saw an article about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2013/11/03/magazine/broccolis-extreme-makeover.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2013/11/03/magazine/broccolis-extreme-makeover.html&quot;&amp;gt;marketing broccoli and other vegetables&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;By coincidence, I had this morning whipped up a vegetable dish in the kitchen that included some broccoli.&lt;/p&gt;
&lt;h2&gt;How my father got me to eat broccoli&lt;/h2&gt;
&lt;p&gt;Here&apos;s the basic story of why I ate broccoli as a child and through adulthood.&lt;/p&gt;
&lt;p&gt;I distinctly remember not really liking broccoli as a toddler of around two and a half to three years old (my childhood memories do not go earlier than age two and a half). I also remember a major turning point, after which I &quot;happily&quot; ate it.&lt;/p&gt;
&lt;p&gt;My mother was unsuccessful in nagging me to eat my brocolli. It was when my father called broccoli florets &quot;&lt;em&gt;baby trees&lt;/em&gt;&quot;. All of a sudden it seemed cool to eat them, as though I were a large beast swooping down from the sky (I liked trees and all my youthful drawings and watercolors included them; I have fond memories of sitting outside under a tree).&lt;/p&gt;
&lt;h2&gt;Simple vegetable medley&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/broccoli-medley.jpg&quot; alt=&quot;Broccoli and other vegetables&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I used a wok, but for the volume, not at high heat.&lt;/p&gt;
&lt;p&gt;Time: 25 minutes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;olive oil&lt;/li&gt;
&lt;li&gt;onion, sliced&lt;/li&gt;
&lt;li&gt;carrots, sliced&lt;/li&gt;
&lt;li&gt;celery stalks, sliced&lt;/li&gt;
&lt;li&gt;broccoli florets and thinly sliced stems&lt;/li&gt;
&lt;li&gt;assorted peppers, sliced&lt;/li&gt;
&lt;li&gt;garlic&lt;/li&gt;
&lt;li&gt;seasoning mix&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basically, I used what was at hand from our farm box subscription.&lt;/p&gt;
&lt;p&gt;I still love to eat those florets as though I were a giant beast feasting on trees.&lt;/p&gt;
</content:encoded></item><item><title>Surprised by the Go programming language&apos;s treatment of nil</title><link>https://franklinchen.com/blog/2013/10/31/surprised-by-the-go-programming-languages-treatment-of-nil/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/31/surprised-by-the-go-programming-languages-treatment-of-nil/</guid><pubDate>Thu, 31 Oct 2013 23:38:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://golang.org/doc/gopher/frontpage.png&quot; alt=&quot;Go&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I happened to see an &lt;a href=&quot;http://tip.golang.org/doc/go1.2&quot;&gt;announcement of Go version 1.2&lt;/a&gt;. I saw something that disturbed me, having to do with &lt;code&gt;nil&lt;/code&gt;, a &lt;a href=&quot;/blog/2013/06/29/nil-non-determinism-exceptions/&quot;&gt;&quot;favorite&quot; topic of mine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;What I know about Go&lt;/h2&gt;
&lt;p&gt;I don&apos;t currently use the &lt;a href=&quot;https://golang.org/&quot;&gt;Go programming language&lt;/a&gt;, although there actually is a local Pittsburgh Go programming meetup group, the &lt;a href=&quot;https://www.meetup.com/Go-Steel-Programmers/&quot;&gt;Go Steel Programmers&lt;/a&gt;, whose meetings I have never attended.&lt;/p&gt;
&lt;p&gt;Some months ago I did, out of curiosity (and respect for any new language that I hear about people actually using to get stuff done), work through the &lt;a href=&quot;http://tour.golang.org/&quot;&gt;tour of Go&lt;/a&gt; tutorial, to learn about the Go language. I installed packages on my machine, and wrote some compiling and running programs. I know just enough that I could code in Go for some project if I wanted to.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;nil&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;What caught my eye in the Go 1.2 announcement was a &lt;a href=&quot;https://docs.google.com/document/d/14DgGJKGQeBTNJDXo3YxnlSwv7ouRqvj7BMmZw17vWV0/pub&quot;&gt;note about changes in the semantics regarding &lt;code&gt;nil&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For the record, I don&apos;t believe any new programming languages should be invented that have the &lt;code&gt;nil&lt;/code&gt; construct, &lt;a href=&quot;http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare&quot;&gt;Hoare&apos;s &quot;billion dollar&quot; mistake&lt;/a&gt;. I&apos;ve already &lt;a href=&quot;https://franklinchen.com/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/&quot;&gt;previously given a talk&lt;/a&gt; about why, so I won&apos;t repeat the arguments here.&lt;/p&gt;
&lt;p&gt;But I think Russ Cox&apos;s note about &lt;code&gt;nil&lt;/code&gt; checks speaks for itself.&lt;/p&gt;
&lt;p&gt;It said that Go 1.2 tightens things up so that various uses (directly or indirectly) of &lt;code&gt;nil&lt;/code&gt; will cause a &lt;em&gt;runtime panic rather than silently producing an unusable pointer&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Read that again: until Go 1.2, you could get &lt;em&gt;silent&lt;/em&gt; bad behavior, an &lt;em&gt;unusable&lt;/em&gt; pointer. This from a language that purports to be &quot;statically typed&quot;, improve on C, and provide &lt;a href=&quot;https://golang.org/doc/faq#unions&quot;&gt;&lt;em&gt;memory safety guarantees&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before Go 1.2, a chain of code involving a &lt;code&gt;nil&lt;/code&gt; could result in behavior of which &lt;a href=&quot;http://swtch.com/~rsc/&quot;&gt;Russ Cox&lt;/a&gt; wrote:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
The current behavior is at best merely historical accident; it was definitely not thought through or discussed.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;There is also a note about a particular special case:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
(it seemed like a good idea at a time)
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;You can read the &lt;a href=&quot;https://docs.google.com/document/d/14DgGJKGQeBTNJDXo3YxnlSwv7ouRqvj7BMmZw17vWV0/pub&quot;&gt;whole document about &lt;code&gt;nil&lt;/code&gt;&lt;/a&gt; yourself. You will find that it is still not a formal spec, but more a rationale of various special cases and possible implementation details.&lt;/p&gt;
&lt;h2&gt;C culture&lt;/h2&gt;
&lt;p&gt;Go arose from C culture. It was invented by those in C culture who wanted an improvement over the known problems of C. Unfortunately, I perceive it as today&apos;s C, in the same way that the C invented in the 1970s was born with the problems that one could have avoided already at that very time.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Go language continues to evolve, which is good, but I was surprised that the full ramifications of something as dangerous as rampant &lt;code&gt;nil&lt;/code&gt; were not thought about up front.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The double-edged nature of computer-based preparation</title><link>https://franklinchen.com/blog/2013/10/31/the-chess-improver-the-double-edged-nature-of-computer-based-preparation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/31/the-chess-improver-the-double-edged-nature-of-computer-based-preparation/</guid><pubDate>Thu, 31 Oct 2013 11:59:23 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For The Chess Improver, I wrote about &quot;the double-edge natures of computer-based preparation&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;When I returned to playing chess in 2005, after an absence of twenty years, I was surprised not only by the digital clocks and new time controls (&quot;sudden death&quot;), but also by the availability and strength of computer programs for personal computers. I soon decided to make use of chess engines as part of my return to serious tournament chess, as a way to explore different kinds of positions.&lt;/p&gt;
&lt;p&gt;In 2006, I played a game in which I unleashed a computer-generated theoretical novelty in the opening on move six, a Pawn sacrifice. It shocked my opponent. I ended up winning the game, but not without being surprised myself, as I ended up in a position that looked equal to me. I had mixed feelings about the whole experience. Furthermore, five years later, in 2011, I saw an &lt;a href=&quot;http://www.chesscafe.com/text/informant112.pdf&quot;&gt;article on Chess Cafe analyzing my very &quot;novelty&quot; as having been presented in Chess Informant 110&lt;/a&gt;. I was a little thrilled to see some in-depth analysis of the entire line, but deflated to realize that I had only ever touched the surface of the possibilities in the line.&lt;/p&gt;
&lt;h2&gt;Tiger&apos;s discovery&lt;/h2&gt;
&lt;p&gt;At some point, I was looking for ideas for White against the Chigorin Defense, since I noticed that a particular local chess player always played the Chigorin as Black and I needed something against it. I turned on my chess engine &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_Tiger&quot;&gt;Tiger&lt;/a&gt;, which was running off my laptop. You have to remember that seven years ago, in 2006, computers were much slower than they are now, and chess engines, although strong, were nowhere as strong as they are now.&lt;/p&gt;
&lt;p&gt;While puttering around, I noticed that Tiger recommended in an important variation at move six a Pawn sacrifice by White! (It turns out that Tiger was well known to have an aggressive bias in its evaluation function.) I looked up all the books I could find on the Chigorin Defense and not a single one of them even mentioned this sacrificial continuation. I was intrigued, looked at a sample line, and concluded that it was worth playing: White gets a clear initiative for the sacrificed Pawn.&lt;/p&gt;
&lt;h2&gt;Unleashing the theoretical novelty but then being surprised myself&lt;/h2&gt;
&lt;p&gt;At some point, I finally faced the Chigorin Defense player in a tournament game: it was our very first game against each other. I remembered the sacrifice and unleashed it. My opponent was clearly shocked and spent a huge amount of time thinking for each move. To my surprise, he came up with a fantastic defense that I never even looked at during my superficial computer preparation: he &lt;em&gt;counter-sacrificed an exchange&lt;/em&gt; in return for attacking my King! It was my turn to go into deep thought. I saw no alternative but to play into the counter-sacrifice. We reached a position in which I feared that there might be a perpetual check.&lt;/p&gt;
&lt;p&gt;I kicked myself for not having seen and analyzed this entire possibility. In 2006, chess engines were still slow, and I only used them for interactive exploration, not for overnight analyses or the like, so it was quite possible that Tiger would have seen the exchange sacrifice resource if I had let it run for a while.&lt;/p&gt;
&lt;p&gt;Anyway, my opponent made some errors, I maintained an advantage, and then I started letting it slip during a Queenless middlegame, but then he blundered and immediately resigned.&lt;/p&gt;
&lt;h2&gt;What was the truth of the gambit?&lt;/h2&gt;
&lt;p&gt;Five years later, seeing the 2011 article covering the gambit, I was pleased to find that in fact, there was a way for White to decline the exchange sacrifice while maintaining a strong initiative. The article had many complex lines demonstrating a White advantage. As a matter of intuition, indeed, one would expect that White has compensation in any case, because of Black&apos;s weak King, but it&apos;s definitely fascinating to see computer-verified concrete justification.&lt;/p&gt;
&lt;h2&gt;Generation vs. verification&lt;/h2&gt;
&lt;p&gt;Generation of interesting ideas can come both from humans and from computer engines. My experience with this Chigorin Defense line illustrates this. Tiger generated an idea. I followed up by looking at what it was trying to do. But I should have generated counter-ideas also, and did not. I believe that humans will for a long time have the edge in generating possible ideas, while using computers for verification or falsification of them. For example, even though Tiger found one sacrifice, it did not find the rejection of Black&apos;s counter-sacrifice. That required human exploration of possibilities and exploring long lines to prove White&apos;s attack would come to something fruitful in the long run.&lt;/p&gt;
&lt;p&gt;I have not checked with today&apos;s engines and higher compute power whether a modern engine could now completely discover the whole idea without human guidance. It may or may not be the case. Meanwhile, chess innovation still continues. Chess is not dead; it has been transformed, with computers as helpers for humans.&lt;/p&gt;
&lt;h2&gt;The entire game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;2006 PA Open Team Championships West&quot;]
[Site &quot;Pittsburgh &quot;]
[Date &quot;2006.02.04&quot;]
[Round &quot;2&quot;]
[White &quot;Chen Franklin&quot;]
[Black &quot;Renk Robert&quot;]
[Result &quot;1-0&quot;]
[Annotator &quot;Chen Franklin&quot;]
[BlackElo &quot;2084&quot;]
[ECO &quot;D07&quot;]
[WhiteElo &quot;2061&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 d5 2. c4 Nc6 3. Nc3 Nf6 4. Nf3 dxc4 5. e4 Bg4 6. Bxc4 $5 { My computer-discovered &quot;novelty&quot; prepared especially for my opponent, who always plays this variation of the Chigorin Defense. It is a gambit of a Pawn. My opponent was shocked and went into deep thought before accepting the Pawn.} ( 6. Be3 { The only move in the books I looked at on the Chigorin Defense.} ) 6... Bxf3 7. gxf3 Qxd4 8. Qb3 Ne5 $1 { Deliberately sacrificing an exchange! I was impressed that my opponent spent a huge amount of time on the clock to find this move, especially since I did not consider it in my preparation.} ( 8... O-O-O { This was the move I expected.} 9. Be3 Na5 10. Be6+ $1 $201 { Is it possible not to love these computer-discovered moves?} 10... fxe6 11. Qb5 { White is better.} ) 9. Qxb7 $6 { This seemed a reasonable continuation, but is not best.} ( 9. Be2 $1 { Maintaining the initiative. The resulting variations are quite complicated. Here is just one sample.} 9... Qb6 10. Qa4+ c6 11. f4 Ng6 12. f5 Ne5 13. Bf4 Qxb2 14. Rc1 { White has now sacrificed two Pawns, but Black&apos;s King is not safe.} 14... Ned7 15. Rc2 Qa1+ 16. Bc1 $201 { White is winning.} ) 9... Qxc4 10. Qxa8+ Kd7 11. Be3 $201 Nxf3+ $2 ( 11... Qd3 { Achieves equality.} 12. Ne2 Nxf3+ 13. Kf1 e6 { Turn on the computer analysis and you will see that Black has sufficient counterplay because of threats of perpetual check.} ) 12. Kd1 g6 $2 { Too slow.} ( 12... e5 ) 13. Kc2 Bg7 14. Rad1+ ( 14. Rhd1+ { Was more accurate.} ) 14... Ke6 15. Qb7 Ng4 $201 16. Qd5+ $2 { Trading off Queens a bit prematurely.} ( 16. Rd3 ) 16... Qxd5 17. exd5+ Kd7 18. Bxa7 Ngxh2 19. Rd3 h5 20. Ne4 ( 20. Bc5 ) 20... Ra8 21. Bc5 ( 21. Ra3 ) 21... g5 $4 { Simply a horrible blunder.} ( 21... f5 { Black actually has some compensation for the material deficit.} ) 22. Nxg5 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>An early start on Cathedral of Learning stair climbing</title><link>https://franklinchen.com/blog/2013/10/29/an-early-start-on-cathedral-of-learning-stair-climbing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/29/an-early-start-on-cathedral-of-learning-stair-climbing/</guid><pubDate>Tue, 29 Oct 2013 23:18:47 GMT</pubDate><content:encoded>&lt;p&gt;After work today, I had gone to the Carnegie Library of Pittsburgh, main branch in Oakland, to pick up some books, when I looked across Forbes Avenue and saw the Pitt Cathedral of Learning. Primed by Becky&apos;s message today about forming a team again for the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy14/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy14/&quot;&amp;gt;Fight for Air Climb at One Oxford Centre in downtown Pittsburgh, for next March&amp;lt;/span&amp;gt;, I suddenly decided to do the 36-floor stair climb of the Cathedral of Learning to &quot;officially&quot; begin my training for that event!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-2013-10-29.jpg&quot; alt=&quot;Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m getting an early start this year on training for the Fight for Air Climb: last year, I didn&apos;t even think about that event until I saw a poster for it during &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;my first Cathedral climb in years, right after Christmas&lt;/a&gt;. So I&apos;m going to have an additional two months of training.&lt;/p&gt;
&lt;h2&gt;Going up&lt;/h2&gt;
&lt;p&gt;Unfortunately, in addition to my not having done the Cathedral climb in probably over half a year, I was wearing my work clothing and shoes and a backpack full of heavy books, so the climb was rather strenuous and sweaty. I even &quot;forgot&quot; to go to the 36th floor and got off at the 35th instead (no big deal).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-2013-10-29-near-top.jpg&quot; alt=&quot;View out of 35th floor window&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Going back down&lt;/h2&gt;
&lt;p&gt;Once at the top, I didn&apos;t stop to rest, because I wanted to get home quickly for dinner. Unfortunately, lots of people were already on the elevator when it came down from 36, and after I got on at 35, we kept on stopping to pick up others, and I felt very uncomfortable being sweaty and packed into the elevator near the back.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-11-03)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/11/03/the-dilemma-of-how-to-descend-the-cathedral-of-learning-once-at-the-top/&quot;&gt;Three days later, I did the Cathedral climb again, and did take the stairs, but experienced a surprise.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Did glucosamine and MSM relieve my knee pain?</title><link>https://franklinchen.com/blog/2013/10/28/did-glucosamine-and-msm-relieve-my-knee-pain/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/28/did-glucosamine-and-msm-relieve-my-knee-pain/</guid><pubDate>Tue, 29 Oct 2013 02:39:20 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.drug3k.com/img2/msm_16804_4_%28big%29_.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.drug3k.com/img2/msm_16804_4_%28big%29_.jpg&quot;&amp;gt;[image: MSM]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I just saw an article &lt;a href=&quot;https://well.blogs.nytimes.com/2013/10/28/ask-well-glucosamine-and-msm-for-joint-pain/&quot;&gt;&quot;Glucosamine and MSM for Joint Pain?&quot;&lt;/a&gt; that brought up some old memories. The article examined whether these supplements are actually useful.&lt;/p&gt;
&lt;h2&gt;My story&lt;/h2&gt;
&lt;p&gt;I started running and hiking over a decade ago, at age 29. Some of my blog posts here have discussed why and how I started.&lt;/p&gt;
&lt;p&gt;For the first couple of years of such activity, I was plagued with a lot of knee and other pain (especially shin pain). I experimented with many things, including changing types of shoes and foot landing form. Meanwhile, someone told me about &lt;a href=&quot;https://en.wikipedia.org/wiki/Methylsulfonylmethane&quot;&gt;MSM&lt;/a&gt; and swore by it for his joint pain, and shared some with me. He showed me packets of white powder he bought from bulk by mail order, and I periodically mixed some in with water to drink. I was never sure whether it was effective, but wanted to believe it was. But I still got knee pain periodically; I never knew whether I got it less bad than when I wasn&apos;t taking MSM.&lt;/p&gt;
&lt;h2&gt;My actual solution to pain&lt;/h2&gt;
&lt;p&gt;Eventually, I did fix my knee pain, so I stopped taking MSM (and glucosamine, which I was taking also, as late as 2003).&lt;/p&gt;
&lt;p&gt;My solution, found by sheer trial and error and desperation, was to migrate entirely to wearing only minimalist shoes: in particular, a zero-drop &lt;em&gt;heel&lt;/em&gt;. Some experiments with different shoes revealed to me a clear correlation between knee pain and the height of the heel of a shoe.&lt;/p&gt;
&lt;p&gt;It was very difficult for me to accept this solution, as I had acquired a large collection of non-minimalist shoes: in fact, I had stocked up on some of the &quot;less bad&quot; shoes and had boxes of shoes in my basement that I had never opened!&lt;/p&gt;
&lt;p&gt;But the complete disappearance of my impact pain and injuries said it all.&lt;/p&gt;
&lt;p&gt;Now, a decade later, there is much more widespread knowledge of the differences in &lt;em&gt;impact&lt;/em&gt; forces depending on shoe style and foot strike. Obviously, there are many variables and individual differences in biomechanics, but here is a &lt;a href=&quot;https://web.archive.org/web/20210705105112/http://www.barefootrunning.fas.harvard.edu/4BiomechanicsofFootStrike.html&quot;&gt;good overview of the sorts of things that happen during foot strike&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20220122071031/https://barefootrunning.fas.harvard.edu/Fig1b.jpg&quot; alt=&quot;Shoe heel strike&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I seem particularly susceptible to the forces on my knees when running in shoes with a built-up heel, so I have &lt;em&gt;finally&lt;/em&gt; decided to completely abandon them. Up till now, I had abandoned them except for &lt;a href=&quot;/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/&quot;&gt;winter running when I did not have a good alternative&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am currently evaluating suitable minimalist running shoes for winter, before winter arrives.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I learned a big lesson a decade ago when I tried to solve physical problems by throwing medication and supplements at them, and eventually found out that my problems had to do with misusing my body with shoes that disabled me from running in an optimally healthy way. Since then, I have never resorted to medication or fancy technology as the first step in solving problems.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The computer plays the exchange sacrifice</title><link>https://franklinchen.com/blog/2013/10/24/the-chess-improver-the-computer-plays-the-exchange-sacrifice/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/24/the-chess-improver-the-computer-plays-the-exchange-sacrifice/</guid><pubDate>Thu, 24 Oct 2013 13:02:10 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;I saw a fascinating chess computer game and analyzed it for The Chess Improver: &quot;The computer plays the exchange sacrifice&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The year is 2013. Those of us who remember playing against chess computer programs probably fondly remember the days when chess engines were relatively weak and did not &quot;understand&quot; chess. But 16 years ago, when Deep Blue defeated Kasparov in a match, it became clear that however one wanted to define &quot;understand&quot;, chess played by a computer could be of reasonable quality. And since then, of course, chess engines running on a personal computer have become far stronger than humans. Furthermore, they happily choose to do things such as sacrifice a Pawn or an exchange for compensation.&lt;/p&gt;
&lt;p&gt;Although I regularly use chess engines for analysis, I have up till now not looked much at computer vs. computer games, but by accident, I saw a tweet by Dan Heisman in which he noted that &lt;a href=&quot;https://twitter.com/danheisman/status/392154421510955008&quot;&gt;&quot;A classically instructive exchange sac by Komodo in Gull-Komodo has left Komodo now on the edge of winning.&quot;&lt;/a&gt; I was intrigued and found the score of the game, which was played in the latest &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://tcec.chessdom.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://tcec.chessdom.com/&quot;&amp;gt;TCEC tournament&amp;lt;/span&amp;gt;. &lt;a href=&quot;http://sourceforge.net/projects/gullchess/&quot;&gt;Gull&lt;/a&gt; is an engine rated 3063, while &lt;a href=&quot;http://komodochess.com/&quot;&gt;Komodo&lt;/a&gt; is rated 3086, so it is particularly interesting to examine the kind of game in which there are no immediately losing blunders. I think there are lessons that can be observed by and used by us humans. My aim is to cast a &lt;em&gt;human interpretation&lt;/em&gt; on what happened in this game.&lt;/p&gt;
&lt;h2&gt;Opening&lt;/h2&gt;
&lt;p&gt;Komodo as Black chose to play a passive but solid variation of the Bogo-Indian Defense, giving White the expected small advantage.&lt;/p&gt;
&lt;h2&gt;Middlegame&lt;/h2&gt;
&lt;p&gt;There were many opportunities for White to choose a thematic attempt to pressure Black, such as by forcing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pawn_structure#Queen.27s_Gambit_.E2.80.93_hanging_pawns&quot;&gt;hanging pawns&lt;/a&gt; structure and also forcing Black to play c4 giving White control of the d4 square. I think many of us humans would have played this way in an attempt to make progress.&lt;/p&gt;
&lt;h3&gt;An exchange sacrifice easy to see&lt;/h3&gt;
&lt;p&gt;But Gull chose to go for more by seemingly first preventing c4 with b3 before aiming at destabilizing Black&apos;s center. Gull&apos;s idea was revealed when it played Ne5, banking on a pin of Black&apos;s Knight on d7 because of the Rook on c8.&lt;/p&gt;
&lt;p&gt;But that backfired because Komodo simply took the Knight on d5, sacrificing the exchange for a Pawn. This is easily seen to be completely sound; most strong human players would do this almost reflexively after checking a few concrete lines. Without this resource, Black would have been in trouble. With this resource, Black completely equalizes.&lt;/p&gt;
&lt;p&gt;It is an interesting question why one strong chess engine sees something correctly that another does not. In any case, this shows that even strong chess engines do not always see the subtleties in positions.&lt;/p&gt;
&lt;h3&gt;Weaknesses in White&apos;s position&lt;/h3&gt;
&lt;p&gt;It turned out that White&apos;s King side, lacking piece defenders, began suffering as Black provoked weaknesses, first as White played h3, and then when White played f3. What you have to remember is that these were not just patzer moves. Gull played them because they are justified given the danger to White&apos;s King. And despite the &quot;weakening&quot; moves, White can still hold. But it is instructive how important it is, even in a seemingly even position, to make some kind of progress through provoking weaknesses.&lt;/p&gt;
&lt;h3&gt;Draw offer rejected?&lt;/h3&gt;
&lt;p&gt;Then there was shuffling around of pieces, but then Gull made the decision to avoid a repetition by playing aggressively on the Queen side with a4. From a long-term thinking human standpoint, this was very risky, permanently weakening the b3 Pawn as well as setting up the a4 Pawn as a target for Black&apos;s Bishop, and creating a hole at b4. Still, because a strong engine chose it, it is not yet a losing move.&lt;/p&gt;
&lt;h3&gt;A nice Knight maneuver&lt;/h3&gt;
&lt;p&gt;Then there was much shuffling around yet again of pieces. But then Black came up with the fine Knight maneuver back to e8 and then to c7. As though by magic, after some more moves, Black had improved its position yet more, and White&apos;s pieces were looking very strangely placed and passive. If any side had winning chances, it was clearly Black.&lt;/p&gt;
&lt;h3&gt;More weakening by White&lt;/h3&gt;
&lt;p&gt;White then made the decision to advance on the King side with h4 and h5 to gain space and drive Black&apos;s Rook away from g6. Again, objectively this is not yet losing, but it is risky. It was especially risky to land on h5, a light square, because Black has a light-squared Bishop.&lt;/p&gt;
&lt;h2&gt;Endgame&lt;/h2&gt;
&lt;p&gt;Finally, Black redeployed the Knight to b4 (highlighting a drawback of White&apos;s early a4 advance weakening the b4 square), and White traded it off. With the reduced forces, I&apos;ll call the resulting phase of the game an endgame.&lt;/p&gt;
&lt;h3&gt;Provoking another weakness&lt;/h3&gt;
&lt;p&gt;There was much shuffling of pieces again. Black managed to redeploy the Bishop to attack White&apos;s h5 Pawn, forcing the loosening defensive g4. Then Black swung to the other wing to advance with b5. White defended, but Black then advanced b4.&lt;/p&gt;
&lt;h3&gt;Maneuvering&lt;/h3&gt;
&lt;p&gt;After more maneuvering, Black was ready to play c4, and then c3.&lt;/p&gt;
&lt;h3&gt;Final error&lt;/h3&gt;
&lt;p&gt;Even then, at the 61st move of the game, White could have held the position for a bit, by preventing Black from invading on the King side. I have not done a full analysis, but it is possible that White is lost anyway, given Black&apos;s perpetual threats of advancing to c2 and/or opening up the King side with f5.&lt;/p&gt;
&lt;p&gt;But for sure, White&apos;s allowing the Queen to come to h2 resulted in Black tying up White&apos;s Rook on g3 and then striking with Bh7 and c2 followed by penetration at c3, game over effectively. It took another 50 moves for Black to gradually win more material, force and exchange of Queens, and play in a simplified endgame of Bishop and three connected passed Pawns versus Rook.&lt;/p&gt;
&lt;h2&gt;Summary of the game&lt;/h2&gt;
&lt;p&gt;The big-picture summary of the game is that White allowed a sound exchange sacrifice that resulted in a position that clearly only gave Black winning chances. White refused implicit draw offers (of pieces shuffling around) and made weakening Pawn moves that Black took advantage of with Knight and Bishop attacking the weaknesses, until White&apos;s overextension finally resulted in a precarious position. One slip by White, allowing an invasion on the King side that immobilized one Rook, led immediately to a lost position.&lt;/p&gt;
&lt;p&gt;One lesson that can be learned is: pay attention to Pawn moves that create long-term static weaknesses. In this game, Black did quite a bit of maneuvering to provoke and attack these weaknesses. Another lesson is, playing for a win when the draw is obvious can be dangerous. It&apos;s strangely enjoyable seeing how even chess engines can be punished for refusing draws.&lt;/p&gt;
&lt;h2&gt;The full annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;nTCEC - Stage 3 - Season 2&quot;]
[Site &quot;http://www.tcec-chess.net&quot;]
[Date &quot;2013.10.21&quot;]
[Round &quot;2.2&quot;]
[White &quot;Gull 2.3&quot;]
[Black &quot;Komodo 1121.05&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;3086&quot;]
[ECO &quot;E11&quot;]
[Variant &quot;normal&quot;]
[WhiteElo &quot;3063&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Bxd2+ { An unambitious variation of the Bogo-Indian by Black. A human would typically play this way as Black to defend a draw.} 5. Qxd2 d5 6. Nc3 O-O 7. e3 Nbd7 8. cxd5 exd5 9. Qc2 h6 10. Bd3 c5 11. O-O b6 $201 { White has a clearly comfortable game, but Black has the extra Queen side c Pawn that has a chance of proving useful in the endgame.} 12. Rfd1 ( 12. dxc5 { An alternative is to force the &quot;hanging Pawn&quot; structure and apply pressure to the c Pawn.} 12… bxc5 13. Na4 Qa5 14. Rfc1 { Forcing a concession by Black, but Black should be able to defend everything.} ( 14. Rac1 c4 { Similar, but White&apos;s a Pawn is left undefended.} ) 14… c4 15. Be2 ) 12… Qe7 $201 { A critical position. White has many possible ideas here.} 13. Bf5 ( 13. dxc5 { White can here also force the &quot;hanging Pawns&quot; on Black.} 13… bxc5 14. Rac1 Bb7 15. Qb3 Rfb8 16. Qa3 $201 { A thematic Queen maneuver to put pressure on both the c Pawn and the a Pawn.} 16… Qe6 { Black should be able to hold everything together.} ) ( 13. Nh4 { White can aim toward the King side with a Nf5 maneuver.} ) ( 13. Bb5 Bb7 14. Qf5 { White can aim at the center and King side, with ideas of Ne5.} ) ( 13. Rac1 { White can develop the final piece and wait and see.} ) 13… Bb7 14. Rac1 Rfe8 $201 15. b3 $6 { Not a very useful move if White wants to strike before Black is fully developed.} ( 15. dxc5 bxc5 16. Bxd7 Qxd7 17. Na4 c4 18. b3 cxb3 19. axb3 { White can force the &quot;hanging Pawns&quot; and then an isolated d Pawn.} ) 15… Rac8 $201 { The problem for White now is that Black has completed development and can defend with either the hanging Pawns or even in some cases the isolated d Pawn, if White tries to clarify the situation of Black&apos;s c and d Pawns.} 16. Ne5 $2 $201 { A surprising error.} 16… Nxe5 $1 $201 { Sacrificing the exchange for a Pawn here should be obvious not only for humans but also for computers. For example, I loaded up Stockfish, which immediately chooses this continuation.} 17. Bxc8 Bxc8 18. dxe5 Qxe5 $201 { Black clearly has full compensation. He has a wall of Pawns from a to d that well-defended and prevent White&apos;s Rooks from being active. The half-open e file is owned by Black. The formerly bad Bishop will spring to life. Objectively, this game is now clearly a draw, if neither side makes weakening Pawn moves, and just shuffle pieces back and forth.} 19. h3 Ba6 20. Re1 Bb7 21. Qd3 Qg5 22. f3 $201 { Objectively best and good and justified because of the threat against g2, but presents potential weakening of e3 and g3.} 22… Qg3 23. Qd2 Bc6 24. Rcd1 Qg5 25. Qd3 Qg3 26. a4 $6 $201 { Not a losing move, but a risky one, because of the weakening of b4 and b3.} 26… a5 27. Re2 Re6 28. Qd2 Re8 29. Ree1 Qe5 30. Qc2 Qg5 31. Qf2 Re6 32. Re2 Qe5 33. Rc1 Ne8 $1 $201 { Very nice. With all the shuffling around of pieces, Black is somehow slowly improving his position while White has gone nowhere. Black&apos;s Knight will go to c7 where it is not only defensive of d5 but supports a possible future b5 break.} 34. Qh4 Nc7 35. Kf2 Rf6 36. Qg3 Qe7 37. Rd1 Rg6 38. Qh2 Kh7 $201 { Now what for White? Somehow White&apos;s Queen has ended up in a strange corner, and White&apos;s b Pawn and Knight are undefended. Objectively, White can still hold, but it&apos;s remarkable how Black has achieved a fine position.} 39. h4 { Not losing, but very committal.} 39… Re6 40. Ree1 Rd6 41. h5 Na6 { More Knight maneuvering!} 42. Re2 Nb4 43. Na2 Nxa2 44. Rxa2 { Now the Knights are off.} 44… Re6 45. Qf4 Rf6 46. Qh2 Rf5 47. Rad2 Re5 48. Rd3 Qe6 49. Rc1 Be8 50. Rcd1 f6 51. g4 b5 { Black makes the b5 break.} 52. Qf4 b4 $201 { Another transformation: Black is now aiming for c4 that will also undermine White&apos;s b3 and a4 Pawns.} 53. Rc1 Qe7 54. Rdd1 Bf7 55. Rg1 Qd6 56. Rcd1 Qc7 57. Rc1 c4 $201 { Black gets c4 in.} 58. Qd4 Re8 59. Rh1 c3 $201 { Committal but playing for a win. How can Black possibly break through though?} 60. Rhg1 Kh8 61. Rc2 $2 { Allowing Black to invade on the King side.} ( 61. Kg2 { Prevents Black&apos;s King side invasion.} ) 61… Qh2+ 62. Rg2 Qh4+ 63. Rg3 Bg8 $201 { Fascinating redeployment of the Bishop! White may be lost already.} 64. Rc1 Bh7 65. Kg2 Qg5 66. Kf2 Qe5 67. Rg2 Qe6 68. Ke2 c2 $201 { Amazing how far the c Pawn has advanced. Next, Black will go after White&apos;s b and a Pawns. The game is virtually over. White&apos;s Rooks are barely active.} 69. Ke1 Rc8 70. Re2 Rc3 71. e4 dxe4 72. Rcxc2 Rxc2 73. Qd8+ Bg8 74. Rxc2 exf3+ 75. Kf2 Qxg4 76. Rc8 Qg2+ 77. Ke3 Qe2+ 78. Kf4 Qe5+ 79. Kxf3 Qxh5+ 80. Ke3 Qe5+ 81. Kd2 Qb2+ 82. Rc2 Qxb3 83. Qxa5 Bd5 84. Qa6 Be4 85. Rc8+ Kh7 86. Qc4 Qb2+ 87. Ke1 Qe5 88. Qg8+ Kg6 89. Qe8+ Qxe8 90. Rxe8 Bc6 91. Rb8 Bxa4 92. Rxb4 $201 { The game is really over. Black has a Bishop and three connected passed Pawns for the Rook.} 92… Bc6 93. Kf2 Kg5 94. Rc4 Be8 95. Rc7 g6 96. Re7 Bc6 97. Re6 Bd5 98. Re3 f5 99. Rg3+ Kf6 100. Rd3 Bf7 101. Rd6+ Be6 102. Rd8 h5 103. Rh8 Bf7 104. Kg2 f4 105. Rb8 g5 106. Kg1 g4 107. Rb4 Ke5 108. Rb7 Bg6 109. Rb5+ Kf6 110. Rb3 h4 111. Rb4 Kg5 112. Rd4 h3 113. Rd5+ Bf5 114. Ra5 g3 115. Kh1 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>I never expected my first wooden recorders to be Renaissance recorders</title><link>https://franklinchen.com/blog/2013/10/21/i-never-expected-my-first-wooden-recorders-to-be-renaissance-recorders/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/21/i-never-expected-my-first-wooden-recorders-to-be-renaissance-recorders/</guid><pubDate>Tue, 22 Oct 2013 01:24:54 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2013/10/20/the-biggest-pittsburgh-recorder-society-meeting-i-have-attended-in-two-years/&quot;&gt;Yesterday, I noted&lt;/a&gt; that I picked up two recorders during the Pittsburgh Recorder Society meeting.&lt;/p&gt;
&lt;p&gt;They were these &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vonhuene.com/Default.aspx?tabid=42&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vonhuene.com/Default.aspx?tabid=42&quot;&amp;gt;Renaissance&amp;lt;/span&amp;gt; instruments:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mollenhauer-kynseker-recorders/boxed.jpg&quot; alt=&quot;In boxes&quot; /&gt;
&lt;img src=&quot;../../assets/images/mollenhauer-kynseker-recorders/assembled.jpg&quot; alt=&quot;Assembled&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nice maple recorders, Mollenhauer Kynseker models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mollenhauer.com/en/catalogue?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=170&amp;amp;category_id=121&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mollenhauer.com/en/catalogue?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=170&amp;amp;category_id=121&quot;&amp;gt;Kynseker Soprano 4107&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mollenhauer.com/en/catalogue?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=172&amp;amp;category_id=121&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mollenhauer.com/en/catalogue?page=shop.product_details&amp;amp;flypage=flypage.tpl&amp;amp;product_id=172&amp;amp;category_id=121&quot;&amp;gt;Kynseker Alto 4217&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are my very first wooden recorders. All my other recorders are Yamaha plastic recorders, because they are inexpensive and easy to maintain. I&apos;ve periodically considered buying wooden recorders, but to get some of clearly higher quality than the plastic ones is expensive!&lt;/p&gt;
&lt;h2&gt;Why bother with Renaissance?&lt;/h2&gt;
&lt;p&gt;I jumped at the opportunity to bid in the auction for these two Renaissance recorders to acquire them inexpensively.&lt;/p&gt;
&lt;p&gt;Up till recently, I wouldn&apos;t have considered buying Renaissance recorders at all, because of the difference in construction and tonal quality from the Baroque-style recorders that I have and that we play in the Pittsburgh Recorder Society meetings.&lt;/p&gt;
&lt;p&gt;But this summer at the Mideast early music workshop, I paid attention to people playing Renaissance recorders (for Renaissance music and other music too) and found the louder and &quot;reedier&quot; sound intriguing. I could see myself playing them in contexts in which this kind of sound quality would be advantageous.&lt;/p&gt;
&lt;p&gt;So now I have these two wooden recorders to play with.&lt;/p&gt;
&lt;p&gt;Note that the solo soprano recorder music by Jacob van Eyck from the Renaissance that &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;I played last year&lt;/a&gt; would have entirely been suited to my new soprano Renaissance recorder! I may revisit that music to play it on the new instrument.&lt;/p&gt;
</content:encoded></item><item><title>The biggest Pittsburgh Recorder Society meeting I have attended in two years!!</title><link>https://franklinchen.com/blog/2013/10/20/the-biggest-pittsburgh-recorder-society-meeting-i-have-attended-in-two-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/20/the-biggest-pittsburgh-recorder-society-meeting-i-have-attended-in-two-years/</guid><pubDate>Sun, 20 Oct 2013 22:04:10 GMT</pubDate><content:encoded>&lt;p&gt;At the second meeting of this season of the &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt;, I was amazed by the huge turnout. There were &lt;strong&gt;fourteen&lt;/strong&gt; of us, easily double the typical attendance in the past two seasons since &lt;a href=&quot;/blog/2013/02/23/celebrating-two-years-of-playing-recorder/&quot;&gt;I first joined in 2011&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-10-20/panorama.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fred was very excited by the attendance and told us he would like for us to perform as an entire group sometime.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;/blog/2013/09/15/new-goals-for-a-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;promised after last month&apos;s meeting&lt;/a&gt;, I took the opportunity in this meeting to do some playing on my bass recorder. I also played tenor and soprano for some other pieces we worked on.&lt;/p&gt;
&lt;h2&gt;Halloween-themed desserts&lt;/h2&gt;
&lt;p&gt;Since it is almost Halloween, Helen brought in some &quot;scary&quot; cupcakes that were, to me anyway, a sight to behold.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-10-20/snacks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-10-20/scary-cupcake.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-10-20/scary-cupcake-bottom.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Pittsburgh&apos;s rubber duck&lt;/h2&gt;
&lt;p&gt;People were talking about the planned departure later today of &lt;a href=&quot;https://www.facebook.com/RubberDuckPittsburghPa&quot;&gt;our rubber duck&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In fact, in the duck&apos;s honor, I had brought my ukulele, and during the break I played &lt;a href=&quot;/blog/2013/10/02/rubber-duckie-and-steel-city-ukuleles-rehearsal/&quot;&gt;Rubber Duckie on my ukulele&lt;/a&gt; while singing along, and Anita joined in the singing too. I had worked pretty hard to be able to passably play this song before our duck left. I still need more work on the song.&lt;/p&gt;
&lt;h2&gt;More recorders for me to play&lt;/h2&gt;
&lt;p&gt;I picked up two recorders from Helen that I had bid on at the last meeting, when a large collection of recorders was given to us to be auctioned off. More on this later!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had another great time at the Pittsburgh Recorder Society monthly meeting. Every month, our Sunday afternoon meeting is something I truly look forward to.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: The strange pleasure of drawing a lost game</title><link>https://franklinchen.com/blog/2013/10/18/the-chess-improver-the-strange-pleasure-of-drawing-a-lost-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/18/the-chess-improver-the-strange-pleasure-of-drawing-a-lost-game/</guid><pubDate>Fri, 18 Oct 2013 11:40:02 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;I concluded my series of posts about the Pittsburgh Chess Club six-round Tuesday night tournament that I just completed with an article about managing to draw my final round game: &lt;a href=&quot;/blog/2013/10/18/the-chess-improver-the-strange-pleasure-of-drawing-a-lost-game/&quot;&gt;The strange pleasure of drawing a lost game&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that my tournament is over, I will use other material for my weekly blog posts on The Chess Improver!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;In the sixth and final round of the Pittsburgh Chess Club Tuesday night tournament that I just completed, I experienced a pleasure that is very rare in my games: the strange pleasure of drawing a lost game. In a way, this game was the game of my tournament that I was most proud of, because of how much I &lt;em&gt;suffered&lt;/em&gt; and struggled out of a mistake in the opening, and managed to not lose! The game was the last game of the tournament to complete; when we finished, most people had already gone, and the prize money winners had already collected their cash and left. (I was no longer in the running for any prize money, because of my draw and loss in previous rounds.)&lt;/p&gt;
&lt;p&gt;A summary of my game: out of a strange opening played by my opponent (rated USCF 2061), I missed a chance at a refutation of Black&apos;s play at 6, and then at move 9 made a blunder that meant struggling for almost four more hours for a draw, because my blunder left me with a severely weak e Pawn as well as surrendering my Bishop pair. One way or another it looked like I was probably going to lose a Pawn eventually. It turned out that my opponent won the wrong Pawn, my Pawn at h2, and I took advantage of the distraction to try for counterplay on the Queen side, and after some erroneous play, I was able to force an obviously drawn position by promoting one of my Pawns, to win the exchange in return for two Pawns. The game didn&apos;t actually end there, however, as I was in severe time trouble, and my opponent continued playing to the bitter end, hoping I would make a blunder. I did not, and so I got my draw.&lt;/p&gt;
&lt;p&gt;It was a poor tournament for me (final score 4.0/6.0), but I hope it provided some educational fodder!&lt;/p&gt;
&lt;p&gt;A couple of salient lessons from this game and tournament as a whole:&lt;/p&gt;
&lt;p&gt;In the opening, it&apos;s all about &lt;a href=&quot;/blog/2013/09/19/the-chess-improver-remember-the-importance-of-development/&quot;&gt;development, as illustrated in my round 2 game&lt;/a&gt;. Really. It&apos;s amazing how many losing or difficult positions arise out of the opening when someone neglects development. Aside from round 2, my &lt;a href=&quot;/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/&quot;&gt;round 3&lt;/a&gt; and &lt;a href=&quot;/blog/2013/10/10/the-chess-improver-the-difference-between-accepting-reality-and-making-excuses/&quot;&gt;round 5&lt;/a&gt; games also featured asymmetrical speed and efficiency of opening development.
Activity can matter more than material advantage. When defending and about to lose material, it may be worth seeking counterplay. Even if a computer can refute it, on a practical level I think changing the nature of the game is worthwhile for the defender to become the attacker instead.
In time pressure, keep things simple, and don&apos;t be clever. In an equal position, where there is a clear draw, it is too dangerous, with little time on the clock, to complicate matters. Look for the draw, bail out, and fight for a win another day. I failed to do this in my earlier game in round 4 of this tournament, in which &lt;a href=&quot;/blog/2013/10/03/the-chess-improver-the-psychology-of-losing-a-drawn-game/&quot;&gt;I lost an easily and clearly drawn position&lt;/a&gt;. In my case, the psychology was complicated by the fact that I was the second-highest rated player in the tournament and part of me wanted to win every game. I know this is a mistaken attitude, because it the objective situation on the board as well as on the clock, combined with an honest assessment of your opponent&apos;s play in the game, that should determine what final result to accept.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th Fred Sorensen Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2013.10.08&quot;]
[Round &quot;6&quot;]
[White &quot;Chen, Franklin&quot;]
[Black &quot;Booth, James&quot;]
[Result &quot;1/2-1/2&quot;]
[BlackElo &quot;2061&quot;]
[ECO &quot;A80&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2164&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 f5 2. Bg5 d6 $6 { Obviously trying to get in Nd7, but slow and weakening.} 3. e3 Nd7 4. Bd3 ( 4. Nh3 { Computer loves. It&apos;s good, aims at the weaknesses on e6 and g6.} 4… Ndf6 5. Bc4 ) 4… Ndf6 5. Nf3 ( 5. Nd2 { My original idea, a good one, to push e4.} 5… e5 6. dxe5 dxe5 7. e4 { White is better.} ) ( 5. Ne2 { Also good.} ) 5… Ne4 $4 { A blunder that loses a Pawn by force.} 6. Bf4 $2 ( 6. Bxe4 fxe4 7. Nfd2 { Black is in terrible shape.} 7… Bf5 8. Nc3 d5 9. f3 exf3 10. Qxf3 { White wins material.} ) 6… Ngf6 { Now Black is OK.} 7. O-O g6 8. c4 $6 { Slow.} ( 8. Ng5 Nxg5 9. Bxg5 Bg7 10. c4 O-O 11. Nc3 { White has a pleasant position.} ) 8… Bg7 9. Nfd2 $2 { A terrible mistake that caused White four hours of pain for the rest of the game.} ( 9. Qc2 O-O 10. Nbd2 ) ( 9. Nbd2 ) 9… e5 $201 { Now White is struggling.} 10. Bxe4 exf4 11. Bf3 fxe3 12. fxe3 O-O 13. Nc3 { Black has the two Bishops, and White has a weak e3 and dark squares in general. White is almost lost.} 13… c6 14. Qb3 Qb6 15. c5+ $2 Qxb3 16. axb3 dxc5 17. dxc5 Be6 $201 { I think White is lost here. Surely White will start losing material before long.} 18. Nc4 Nd7 19. Na4 Bxc4 20. bxc4 { Picking off a Pawn immediately was possible.} 20… Rae8 $201 21. Rfd1 Ne5 22. Be2 Bh6 23. Ra3 $201 Rd8 $2 ( 23… Ng4 24. Bxg4 fxg4 25. Rdd3 { Black will win a Pawn somewhere.} ) 24. Rd6 Nf7 25. Rxd8 Rxd8 26. b4 Ne5 $201 27. Kf1 a6 28. b5 axb5 29. cxb5 cxb5 $2 { Now White has chances with the c Pawn.} ( 29… Ra8 { Pinning White was strong.} ) 30. Bxb5 Ng4 31. Ke2 Nxh2 $201 { Black has won a Pawn, but at great cost. White has some counterplay on the Queen side now.} 32. Nb6 Ng4 33. Bc4+ Kf8 34. Bd5 Re8 $201 35. e4 $5 { Hoping to create complications.} ( 35. Nc4 { Keeping everything protected was good enough to hold the draw.} ) 35… Re7 $2 ( 35… Nf6 ) 36. Ra7 $2 $10 { Concedes a draw. Played with only 5 minutes left on the clock. Black had 37 minutes left on his clock!!} ( 36. Ra8+ { Was actually strong and would have given White some advantage.} 36… Kg7 37. Rg8+ Kf6 38. Rb8 fxe4 39. Rxb7 Bf4 40. c6 Rxb7 41. cxb7 ) 36… Nf6 37. Rxb7 Nxd5 38. Rb8+ Kf7 39. Nxd5 Rxe4+ 40. Kd3 Ke6 41. c6 Kxd5 42. c7 Rd4+ 43. Ke2 $10 $201 { It&apos;s a draw, because White will win the exchange but be down two Pawns for it.} 43… Rc4 44. c8=Q Rxc8 45. Rxc8 Bf4 46. Kf3 Be5 47. g4 h5 48. gxf5 { Guarantees a draw. Black has isolated Pawns and neither of them has a Queening square the same color as the Bishop. I offered a draw at some point here, with very little time left on the clock.} ( 48. g5 { Possible, but risky because of time pressure. I decided to take the easy draw instead.} ) 48… gxf5 49. Rd8+ Ke6 50. Re8+ Kf6 51. Rg8 h4 52. Rg1 h3 53. Rh1 h2 54. Kg2 Kg5 55. Rf1 Kg4 56. Rh1 Bg3 57. Rf1 f4 58. Kh1 Kf5 59. Kg2 Ke4 60. Kh1 Ke3 61. Kg2 Bh4 62. Kxh2 Bf2 63. Ra1 f3 64. Ra3+ Ke2 65. Rxf3 $201 { Finally the draw was accepted.} 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Steel City Ukuleles: back to plain good fun, including the cups song</title><link>https://franklinchen.com/blog/2013/10/16/steel-city-ukuleles-back-to-plain-good-fun/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/16/steel-city-ukuleles-back-to-plain-good-fun/</guid><pubDate>Thu, 17 Oct 2013 02:06:02 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been over a week since I &lt;a href=&quot;/blog/2013/10/05/performing-with-the-steel-city-ukuleles-at-the-wilkins-school-community-center-ecofest-2013-with-videos/&quot;&gt;performed as part of the Steel City Ukuleles in the Wilkins School Community Center Ecofest&lt;/a&gt;. I was very relieved to have no more self-imposed performance obligations for a while, feeling burned out for a while, to tell the truth. But I was ready to get back into playing just for fun.&lt;/p&gt;
&lt;h2&gt;Members&apos; choice!&lt;/h2&gt;
&lt;p&gt;We had a fun &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/140097142/&quot;&gt;session this week&lt;/a&gt; in which all of us had earlier been invited to submit music we personally wanted to play. I had submitted &lt;a href=&quot;https://en.wikipedia.org/wiki/Mr._Sandman&quot;&gt;&quot;Mister Sandman&quot;&lt;/a&gt;, a song I&apos;ve loved since (amusingly) first hearing it when watching &quot;Back to the Future&quot; way back. I was really excited to finally be singing it and playing it with others.&lt;/p&gt;
&lt;p&gt;We did various other member-contributed selections also, including a &lt;a href=&quot;https://en.wikipedia.org/wiki/Cups_%28song%29&quot;&gt;&quot;Cups&quot; song&lt;/a&gt; that apparently has become all the craze because of moving cups around as part of percussion! Three of us had practiced ahead of time to play the cups. I have to say I was impressed:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cups.jpg&quot; alt=&quot;Cups&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Rubber Duckie&lt;/h2&gt;
&lt;p&gt;We went over &quot;Rubber Duckie&quot; again. I love this song. I&apos;m getting better at singing and strumming it simultaneously.&lt;/p&gt;
&lt;h2&gt;Kazoo&lt;/h2&gt;
&lt;p&gt;I finally bought a cheap kazoo for use in the future (several of us used kazoos in the Ecofest performance, but I did not have a kazoo at the time), as Jack got a whole bunch to sell to us:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kazoo.jpg&quot; alt=&quot;Kazoo&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed getting back to just plain fun with singing and playing ukulele, with no more performances in the near future that I&apos;ve volunteered to be a part of.&lt;/p&gt;
</content:encoded></item><item><title>Why it&apos;s so funny that Fama and Shiller just simultaneously shared the Nobel in economics</title><link>https://franklinchen.com/blog/2013/10/15/why-its-so-funny-that-fama-and-shiller-just-simultaneously-shared-the-nobel-in-economics/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/15/why-its-so-funny-that-fama-and-shiller-just-simultaneously-shared-the-nobel-in-economics/</guid><pubDate>Wed, 16 Oct 2013 02:32:14 GMT</pubDate><content:encoded>&lt;p&gt;It was terribly amusing to me when I heard that &lt;a href=&quot;https://www.nobelprize.org/nobel_prizes/economic-sciences/laureates/2013/&quot;&gt;Eugene Fama, Lars Peter Hansen, and Robert Shiller shared the Nobel in economics for 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not an economist, so I don&apos;t know all the details of the work of these guys. In fact, I had not heard of Lars Peter Hansen before, so I have nothing to say about him. But Eugene Fama and Robert Shiller are practically household words if you pay any attention to financial markets and investment, and the story of the housing bubble. What is really funny is that Fama and Shiller have such different opinions about fundamental matters in economics, but are sharing the Nobel! I think it&apos;s cool that the media are covering this amusing situation, because maybe the wider public will get an idea of what kinds of ongoing debates there are in economics.&lt;/p&gt;
&lt;p&gt;And here&apos;s &lt;a href=&quot;https://conversableeconomist.blogspot.com/2013/10/the-2013-nobel-prize-to-fama-hanson-and.html&quot;&gt;one of the economics blogs I follow that has a discussion of what these economists did&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Eugene Fama&lt;/h2&gt;
&lt;p&gt;I first learned about Eugene Fama through books on personal investing that promoted his &lt;a href=&quot;https://en.wikipedia.org/wiki/Efficient-market_hypothesis&quot;&gt;efficient market hypothesis&lt;/a&gt; and therefore the use of indexed mutual funds and ETFs. &lt;a href=&quot;https://www.dfaus.com/&quot;&gt;Dimensional Fund Advisors&lt;/a&gt;, making use of the &lt;a href=&quot;https://www.dimensional.com/famafrench/&quot;&gt;work of Eugene Fama and Kenneth French&lt;/a&gt;, has in particular promoted sophisticated portfolio management based on modifying plain indexing (such as Vanguard&apos;s mutual funds) with small cap and value stock overweighting. William Bernstein was famously enthusiastic about DFA and even suggested ways for &lt;a href=&quot;https://www.efficientfrontier.com/ef/702/3FM-10.htm&quot;&gt;individual investors to do their own simulation of their three-factor approach&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;More on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://indexinvestor.com/Members/2004/November/nov045.php3&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://indexinvestor.com/Members/2004/November/nov045.php3&quot;&amp;gt;DFA versus Vanguard&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Fama&apos;s fellow &lt;a href=&quot;https://en.wikipedia.org/wiki/Chicago_school_of_economics&quot;&gt;Chicago school&lt;/a&gt; economist wrote up some &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://faculty.chicagobooth.edu/john.cochrane/research/papers/Fama_nobel.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://faculty.chicagobooth.edu/john.cochrane/research/papers/Fama_nobel.pdf&quot;&amp;gt;very opinionated and enthusiastic praise and summary of Fama&apos;s work&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;In any case, Fama remains one of the biggest die-hard defenders of the efficient market hypothesis, to this day. His impact on the world of investing cannot be overstated. If you invest in passively managed indexed funds, rather than chasing &lt;a href=&quot;https://en.wikipedia.org/wiki/Alpha_%28investment%29&quot;&gt;alpha&lt;/a&gt;, you&apos;re implicitly relying on and believing in the work that he and others have done.&lt;/p&gt;
&lt;h2&gt;Robert Shiller&lt;/h2&gt;
&lt;p&gt;Robert Shiller comes from a completely different economic philosophy and even public existence.&lt;/p&gt;
&lt;p&gt;In stark contrast to Fama and the Chicago school of neoclassical economics based on rational expectations, Shiller is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Behavioral_economics&quot;&gt;behavioral economist&lt;/a&gt;, which believes in irrationality and market inefficiency.&lt;/p&gt;
&lt;p&gt;He has written a lot of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.econ.yale.edu/~shiller/books.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.econ.yale.edu/~shiller/books.htm&quot;&amp;gt;popular books&amp;lt;/span&amp;gt; and often goes around giving talks. He is most famous for warning about the &lt;a href=&quot;https://en.wikipedia.org/wiki/Economic_bubble&quot;&gt;market bubbles&lt;/a&gt; of the past decade and more, including the last housing bubble.&lt;/p&gt;
&lt;p&gt;Speaking of bubbles, check out what &lt;a href=&quot;https://delong.typepad.com/sdj/2013/10/eugene-fama-on-the-housing-bubble.html&quot;&gt;Fama said about the housing bubble and bubbles in general&lt;/a&gt;. He&apos;s practically denying that bubbles exist.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I think it&apos;s awesome to have two very outspoken economists with radically different approaches to economics shared the Nobel this year. It may help the public understand better the nature of the field of economics.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-12-10)&lt;/h3&gt;
&lt;p&gt;Two months later, Fama and Shiller are still an item. Check out &lt;a href=&quot;https://www.theguardian.com/business/2013/dec/10/nobel-prize-economists-robert-shiller-eugene-fama&quot;&gt;this interview&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>What&apos;s this about &quot;Columbus Day&quot; and Bartolomé?</title><link>https://franklinchen.com/blog/2013/10/14/whats-this-about-columbus-day-and-bartolome/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/14/whats-this-about-columbus-day-and-bartolome/</guid><pubDate>Mon, 14 Oct 2013 23:24:50 GMT</pubDate><content:encoded>&lt;p&gt;So there&apos;s an &lt;a href=&quot;https://theoatmeal.com/&quot;&gt;Oatmeal&lt;/a&gt; comic that&apos;s been going around before today, &lt;a href=&quot;https://en.wikipedia.org/wiki/Columbus_Day&quot;&gt;Columbus Day&lt;/a&gt;, about &lt;a href=&quot;https://theoatmeal.com/comics/columbus_day&quot;&gt;Christopher Columbus and some guy I hadn&apos;t heard of before, Bartolomé de las Casas&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&apos;s worth checking out, although be warned, it&apos;s a big rant. For &quot;balance&quot;, here&apos;s a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://observationdeck.io9.com/seriously-screw-the-oatmeal-1443252499&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://observationdeck.io9.com/seriously-screw-the-oatmeal-1443252499&quot;&amp;gt;rebuttal by someone unhappy with that Oatmeal rant&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, people seem to still be debating the time-honored theory that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://news.discovery.com/history/us-history/columbus-syphilis-010512.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://news.discovery.com/history/us-history/columbus-syphilis-010512.htm&quot;&amp;gt;Columbus brought syphilis back to Europe&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Also, there&apos;s discussion of how &lt;a href=&quot;https://www.ritholtz.com/blog/2013/10/how-columbus-caused-inflation/&quot;&gt;Columbus caused inflation in Europe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whatever else one can say, it cannot be denied that the arrival of Columbus to the &quot;New World&quot; in 1492 completely changed the course of world history, in a huge number of ways.&lt;/p&gt;
&lt;p&gt;Oh, and what about Bartolomé? Read about him at the Oatmeal link and &lt;a href=&quot;https://en.wikipedia.org/wiki/Bartolom%C3%A9_de_las_Casas&quot;&gt;here&lt;/a&gt;. Another controversial historical figure, arguably more complex and interesting than &lt;a href=&quot;https://en.wikipedia.org/wiki/Christopher_Columbus&quot;&gt;Columbus&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>My promise to prioritize my sleep</title><link>https://franklinchen.com/blog/2013/10/12/my-promise-to-prioritize-my-sleep/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/12/my-promise-to-prioritize-my-sleep/</guid><pubDate>Sun, 13 Oct 2013 02:33:48 GMT</pubDate><content:encoded>&lt;p&gt;Despite my knowledge (both firsthand and from reading research results) that sleep is important to healthy living, I have been failing to get my optimal sleep for a long time now. There are several reasons of this, but I am taking steps to address each one of them.&lt;/p&gt;
&lt;h2&gt;Too many activities&lt;/h2&gt;
&lt;p&gt;I began the process of catching up on sleep today by sleeping almost all day. Abby and I had yesterday decided to cancel our hiking plan for today because we both felt tired and decided it was a good time to just rest. We both have a bad habit of doing too many activities and not getting enough down time.&lt;/p&gt;
&lt;p&gt;I already mentioned some of the things I&apos;m scaling down on: &lt;a href=&quot;/blog/2013/10/04/final-rehearsal-for-my-first-ukulele-gig/&quot;&gt;musical activities&lt;/a&gt;. Today was the &lt;a href=&quot;https://www.coolhanduke.com/&quot;&gt;Cool Hand Uke&lt;/a&gt; workshop and concert, both of which I had decided earlier to skip.&lt;/p&gt;
&lt;h2&gt;Night time distractions&lt;/h2&gt;
&lt;p&gt;I&apos;m not sleeping as early or deeply as I should, because of not turning down the lights and getting off the computer at night. I&apos;m going to change that.&lt;/p&gt;
&lt;p&gt;In particular, social media at night are the worst. My decision today to &lt;a href=&quot;/blog/2013/10/12/taking-a-break-from-twitter/&quot;&gt;take a break from Twitter, Facebook, and Google+&lt;/a&gt; will help a lot. Too much stimulation at night.&lt;/p&gt;
&lt;h2&gt;Exercise&lt;/h2&gt;
&lt;p&gt;There is a symbiotic relationship between sleep and exercise: the better the sleep, the more energy for stimulating exercise, and the more exercise, the more ready the body is to sleep in the evening.&lt;/p&gt;
&lt;p&gt;Today, after I slept almost all day, I found myself with energy to go for a run (I&apos;ve barely been running in the past week). To my surprise, I effortlessly kept going and going, and ended up doing ten miles, no problem, in Frick Park and Summerset.&lt;/p&gt;
&lt;p&gt;It was huge confirmation to me, that just catching up on sleep enabled me to enjoy a ten-mile run when I&apos;ve barely been feeling like running at all in the past week.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-2013-10-12/1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/run-2013-10-12/2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/run-2013-10-12/3.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/run-2013-10-12/4.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/run-2013-10-12/5.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/run-2013-10-12/6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m going to keep up good habits in order to improve my life. Sleep is the number one priority that I believe will benefit everything else.&lt;/p&gt;
</content:encoded></item><item><title>What can you quit today? I&apos;m taking a break from Twitter, Facebook, and Google+</title><link>https://franklinchen.com/blog/2013/10/12/taking-a-break-from-twitter/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/12/taking-a-break-from-twitter/</guid><pubDate>Sun, 13 Oct 2013 02:30:37 GMT</pubDate><content:encoded>&lt;p&gt;Tonight, I officially announced through my accounts on &lt;a href=&quot;https://twitter.com/franklinchen&quot;&gt;Twitter&lt;/a&gt;, &lt;a href=&quot;https://www.facebook.com/franklin.chen&quot;&gt;Facebook&lt;/a&gt;, and &lt;a href=&quot;https://gplus.to/FranklinChen&quot;&gt;Google+&lt;/a&gt; that I was leaving social media for a while.&lt;/p&gt;
&lt;h2&gt;Reasons?&lt;/h2&gt;
&lt;p&gt;Right now, I don&apos;t feel like explaining in detail all the many reasons.&lt;/p&gt;
&lt;p&gt;The reason for leaving is not just one isolated event, although blocks of certain series of events and actions on Twitter have been particularly discouraging to me.&lt;/p&gt;
&lt;p&gt;The most recent seed for quitting actually came just a couple of days ago, from a blog I follow, where I was challenged to ask myself, &lt;a href=&quot;https://clairediazortiz.com/what-can-you-quit-today/&quot;&gt;&quot;what can you quit today?&quot;&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
The idea, of course, is that we’re all doing things we don’t need to be doing. Things that zap our energy and passion and crowd our lives so much that we can’t do the amazing things we should be putting all our passions into.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;One of the many thoughts I had was that my blogs have been stagnant for quite some time now. There is a clear inverse relationship between my participating on Twitter and Facebook (I never did do much on Google+) and my writing long form articles. So I am going to return to regular blogging.&lt;/p&gt;
&lt;h2&gt;RSS&lt;/h2&gt;
&lt;p&gt;In the past, whenever I published a blog post, I would post a link to the social networks I&apos;m on. Well, as part of my experiment, I am going to stop that. I realize that this means many fewer people will keep up with my blog. I have had people tell me that they don&apos;t use RSS feeds any more. I would like to encourage them to get back to RSS so that they can receive updates on blogs such as mine.&lt;/p&gt;
&lt;p&gt;And I am fine with having fewer regular readers. It turns out that most feedback I get on my blog is from people who don&apos;t actually regularly follow it anyway, but find something useful from its archives because a Web search led them to my blog. So I feel no need to be &lt;em&gt;timely&lt;/em&gt;. Enough people are doing that. I will try more to be &lt;em&gt;timeless&lt;/em&gt; instead.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I cannot exaggerate how beneficial I have found social media to be since I got involved two years ago. But there have been severe down sides as well. Meanwhile, I will experiment with taking a break from my biggest sources of distraction and alienation.&lt;/p&gt;
</content:encoded></item><item><title>Neil Newton on the harmonic structure of atonal music</title><link>https://franklinchen.com/blog/2013/10/11/neil-newton-on-the-harmonic-structure-of-atonal-music/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/11/neil-newton-on-the-harmonic-structure-of-atonal-music/</guid><pubDate>Sat, 12 Oct 2013 01:01:43 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.music.pitt.edu/sites/default/files/story-images/neil_newton-600.jpg?1401301354&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I attended a fascinating and illuminating lecture by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.music.pitt.edu/faculty/newton&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.music.pitt.edu/faculty/newton&quot;&amp;gt;Neil Newton&amp;lt;/span&amp;gt; at the University of Pittsburgh with the title &lt;a href=&quot;https://www.music.pitt.edu/events/lecture-neil-newton-university-pitt130925&quot;&gt;&quot;&lt;em&gt;The Inner Life of Harmonies: An Examination of the Middle Voice in Pop, Classical, and Early Post-Tonal Music&lt;/em&gt;&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The big question I&apos;ve sometimes asked myself is, what is &lt;a href=&quot;https://en.wikipedia.org/wiki/Atonality&quot;&gt;atonal&lt;/a&gt; music anyway? How do we make sense of it?&lt;/p&gt;
&lt;p&gt;Neil Newton provided what seemed to me an interesting explanation.&lt;/p&gt;
&lt;h2&gt;Atonal music is not random but has order!&lt;/h2&gt;
&lt;p&gt;I&apos;m very interested in &lt;a href=&quot;https://en.wikipedia.org/wiki/Atonality&quot;&gt;atonal&lt;/a&gt; music because of how, when successful, when I enjoy it and it somehow &quot;makes sense&quot; (which it does not always), it falls between the boundaries of order and chaos, like a dream. Also, I should emphasize that I like to make a clear distinction between truly atonal music and the serial (&lt;a href=&quot;https://en.wikipedia.org/wiki/Twelve-tone_technique&quot;&gt;twelve-tone&lt;/a&gt;) music that Schönberg invented after he became dissatisfied with his atonal experiments. Serial music, unlike atonal music, is very strictly organized through a mathematical system; atonal music was its &quot;freer&quot; predecessor.&lt;/p&gt;
&lt;p&gt;I don&apos;t listen much to atonal music, but there is some atonal music &lt;a href=&quot;/blog/2012/09/25/thank-you-glenn-gould/&quot;&gt;I have mentioned enjoying, by Schönberg&lt;/a&gt;. So it was with great interest that I attended this lecture trying to explain how atonal music can be understood not as being devoid of traditional harmonic relationships, but rather as embodying a different kind of relationship, a different kind of order. It is not random or chaotic, just ordered differently.&lt;/p&gt;
&lt;h2&gt;Substitution of a different kind of order&lt;/h2&gt;
&lt;p&gt;The main idea Newton explored was that of finding a replacement for the dominant-tonic relationship that is key in tonal music for &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tension_%28music%29&quot;&gt;tension&lt;/a&gt; and resolution&quot; or &quot;charge and discharge&quot; (his preferred terminology). For example, he argues that the interval of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Tritone&quot;&gt;tritone&lt;/a&gt; (&lt;code&gt;ic6&lt;/code&gt;) in conjunction with &lt;a href=&quot;https://en.wikipedia.org/wiki/Voice_leading&quot;&gt;voice leading&lt;/a&gt; can be used to generate functional movement and therefore build up structural significance that is analogous to the kind of structure significance that exists in tonal music.&lt;/p&gt;
&lt;p&gt;Particularly interesting to me was how Newton used statistical analysis to look for correlations and patterns in the music he studied and justify his thesis.&lt;/p&gt;
&lt;p&gt;Also, he unifies his ideas with application to other &quot;weird&quot; musical phenomenon, such as that found in many pop and rock songs that violate the traditional tonal system. (The music of the Beatles, for example, was quite marked in its oddity.)&lt;/p&gt;
&lt;p&gt;For details, check out Newton&apos;s paper, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://onlinelibrary.wiley.com/doi/10.1111/musa.12018/abstract&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://onlinelibrary.wiley.com/doi/10.1111/musa.12018/abstract&quot;&amp;gt;&quot;An Aspect of Functional Harmony in Schoenberg&apos;s Early Post-Tonal Music&quot;&amp;lt;/span&amp;gt;. I don&apos;t pretend to understand more than a fraction of what he tries to show, since I am just an amateur musician, not a trained theorist, but the overview and audio examples he gave in his lecture gave me a glimpse of what he&apos;s doing, and I was happy to have attended.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-05-28)&lt;/h3&gt;
&lt;p&gt;The Pitt music department blog &lt;a href=&quot;https://www.music.pitt.edu/blog/neil-newton-schoenberg140528&quot;&gt;just mentioned Newton&apos;s work&lt;/a&gt; and provided a link to an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://onlinelibrary.wiley.com/enhanced/doi/10.1111/musa.12018/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://onlinelibrary.wiley.com/enhanced/doi/10.1111/musa.12018/&quot;&amp;gt;enhanced HTML version of his paper&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I think it&apos;s great that serious work continues in trying to understand what lies underneath music that we intuitively enjoy but find odd because it doesn&apos;t obey the usual expectations of traditional tonality.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: learning by reading Josh&apos;s code!</title><link>https://franklinchen.com/blog/2013/10/10/pittsburgh-scala-meetup-learning-by-reading-joshs-code/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/10/pittsburgh-scala-meetup-learning-by-reading-joshs-code/</guid><pubDate>Fri, 11 Oct 2013 04:09:33 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; met to &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/135567132/&quot;&gt;learn by hacking&lt;/a&gt;. There was a change of plan because Josh couldn&apos;t make it to the meeting, so instead of a presentation by him, we got a link to his GitHub repository for an implementation of an &lt;a href=&quot;https://github.com/jsuereth/tic-tac-toe&quot;&gt;interactive Web-based tic-tac-toe game using Play&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sometimes interesting things happen when plans are changed.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Reading Josh&apos;s code&lt;/h2&gt;
&lt;p&gt;Since Josh wasn&apos;t around, we decided to study his code, and use it as the basis of discussion of Scala language features and idiomatic style, making sure that all of us understood what the code was doing. This turned out to be a surprisingly useful exercise, very participatory by everyone.&lt;/p&gt;
&lt;p&gt;Justin took charge of an SBT session as we played with modifying the code and figuring out what things did. I shared some tips on using SBT in &quot;trigger mode&quot;, which some had not known about. While experimenting, we ran into interesting Scala gotchas involving &lt;code&gt;def&lt;/code&gt; and &lt;code&gt;val&lt;/code&gt; in classes that mix in traits. We also had useful discussions on coding style, such as point-free style and use of underscores in closures, and converting between curried and uncurried functions. My personal point of view is that I prefer to be more explicit rather than more concise, to improve clarity, but much does depend on assumptions about people&apos;s prior knowledge. Josh was writing this code for only himself, and the complete application was actually not meant to showcase the tic-tac-toe game logic anyway, but the use of Play.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I thought it was a really useful session in which we all helped one other get up to speed on various Scala language features or standard library APIs. We all learned something new, and we figured out Josh&apos;s code, and collected questions to ask him when he comes back!&lt;/p&gt;
</content:encoded></item><item><title>Finally learning about Carnatic music</title><link>https://franklinchen.com/blog/2013/10/10/finally-learning-about-carnatic-music/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/10/finally-learning-about-carnatic-music/</guid><pubDate>Fri, 11 Oct 2013 03:04:45 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://f0.bcbits.com/img/a2399391511_2.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://f0.bcbits.com/img/a2399391511_2.jpg&quot;&amp;gt;[image: Sandeep Narayan]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I attended the Thursday CMU music school convocation that featured a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://music.cmu.edu/events/267&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://music.cmu.edu/events/267&quot;&amp;gt;lecture/performance by Sandeep Narayan and his brother Nirmal Narayan&amp;lt;/span&amp;gt;. I very much enjoyed the presentation.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://sandeepnarayanmusic.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://sandeepnarayanmusic.com/&quot;&amp;gt;Sandeep Narayan&amp;lt;/span&amp;gt; is a Carnatic musician. &lt;a href=&quot;https://en.wikipedia.org/wiki/Carnatic_music&quot;&gt;Carnatic music&lt;/a&gt; is the &quot;classical&quot; music of Southern India. I&apos;d never specifically listened to it before, because I&apos;d never had an introduction to it so that I would know what to listen for.&lt;/p&gt;
&lt;p&gt;Sandeep is unusual in that he was born and grew up in the US, in Los Angeles, before eventually settling in Chennai, the center of Carnatic music. I imagine he must have faced quite a bit of curiosity and skepticism as one who walks between two worlds.&lt;/p&gt;
&lt;p&gt;In any case, his introduction to the elements of Carnatic music, along with brief performance excerpts with his brother (Sandeep sang and Nirmal provided percussion backup), was fantastic! It was a very clear introduction to the elements of pitches, scales/modes, rhythms, and different levels of improvisation. It was particularly helpful that he related the different vocabulary to that of Western &quot;classical&quot; music and jazz.&lt;/p&gt;
&lt;p&gt;I wish I had been able to attend the free concert he was giving this evening, but in any case, after receiving this introduction, I feel ready to pursue Carnatic music further as a listener. I always feel intimidated and lost when thinking about how to understand a new kind of music; I&apos;m not quite adventurous enough to just jump in with a tiny bit of prior background knowledge. Introductions like his go a long way to providing just enough that it is possible to start enjoying.&lt;/p&gt;
&lt;p&gt;One thing Sandeep emphasized is how the music is fundamentally based on &lt;em&gt;improvisation&lt;/em&gt;. He joked that his instrumentalist accompanists have to know more about music than he does, because they all have to follow wherever he goes. They have no idea what he is going to do with the musical material, till he is actually doing it.&lt;/p&gt;
&lt;p&gt;Here is his &lt;a href=&quot;https://www.youtube.com/user/SRNChannel&quot;&gt;YouTube channel&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: the difference between accepting reality and making excuses</title><link>https://franklinchen.com/blog/2013/10/10/the-chess-improver-the-difference-between-accepting-reality-and-making-excuses/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/10/the-chess-improver-the-difference-between-accepting-reality-and-making-excuses/</guid><pubDate>Thu, 10 Oct 2013 12:04:02 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;Last week, I wrote on The Chess Improver about &lt;a href=&quot;/blog/2013/10/03/the-chess-improver-the-psychology-of-losing-a-drawn-game/&quot;&gt;my fourth round game in the current Pittsburgh Chess Club Tuesday night tournament, in which I lost a game that should have been drawn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This week, I wrote about my fifth round game, in which I won, but played poorly at a critical point: &quot;The difference between accepting reality and making excuses&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;When men lose against me, they always have a headache … or things of that kind. I have never beaten a completely healthy man! (Susan Polgar)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When something bad happens in a chess game, we ask ourselves why. Sometimes we may simply beat ourselves up with negative talk like &quot;I&apos;m no good at chess. I don&apos;t understand anything.&quot; This is not useful. But often we go to the other extreme, with protests like &quot;I had a tough day at work&quot; or &quot;My stomach was hurting from that sandwich I ate for lunch&quot;.&lt;/p&gt;
&lt;p&gt;But what is the truth? What is the reality? The answer is often more subtle than we&apos;d prefer. We&apos;d prefer a simple explanation that would at least make us feel like we have clarity rather than complexity in our chess lives. But often there are many things going on, and we have to be objective about each of them and the interplay, and not focus just on one aspect of the situation.&lt;/p&gt;
&lt;p&gt;I&apos;ve been having a terrible Pittsburgh Chess Club Tuesday night tournament. In the last two games, I blew won positions, &lt;a href=&quot;/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/&quot;&gt;one resulting in a draw&lt;/a&gt; and &lt;a href=&quot;/blog/2013/10/03/the-chess-improver-the-psychology-of-losing-a-drawn-game/&quot;&gt;the other degenerating into a drawn position and then loss&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve hesitated to offer an &lt;em&gt;explanation&lt;/em&gt; for what has been going on in my play, because the last thing I want to do is offer &lt;em&gt;excuses&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But what is the difference between the truth and an excuse? We&apos;re wading into philosophical and ethical territory here. I think the difference is one of scope and intent. I would say that an excuse isolates one thing rather than situates it in a larger context. Also, an excuse is used to reject change, to live in the illusory comfort of an alternate reality. I think the truth sometimes properly incorporates excuses, but only as a subset.&lt;/p&gt;
&lt;p&gt;I&apos;ve been thinking about this because of my round 5 game in the 6-round tournament, in which I won a very one-sided game that is embarrassing to show, but illustrates something disturbing about my recent play. (My opponent was rated USCF 1829.) I had won a Rook for nothing and all I had to do was consolidate, but I hallucinated and started dropping material; there really is no good explanation for what happened, other than that my mind is blanking out. The game could have ended a draw.&lt;/p&gt;
&lt;p&gt;The fact, or excuse, is that I have not been playing well because I have not had the time or energy to perform at the level I used to years ago. I have been busy with work as well as many personal projects (which my personal blog says something about). I came back to tournament play after not having played in seven months.&lt;/p&gt;
&lt;p&gt;If this is all I said and thought, then it would be classified as an excuse.&lt;/p&gt;
&lt;p&gt;Because we are all busy. My opponent in this came is a doctor. He is allowed by our tournament director to keep his beeper on. Occasionally he does get paged during a tournament. We all come to the board in whatever condition we are in: a hard day at work, a cold, surviving cancer (a number of the club members fall into this category!!), a death in the family, etc. So focusing on our own lack of ideal chess-playing conditions is an excuse, because it ignores other factors that are by contrast inadvertently in our favor. We should not just complain about accidental misfortune without acknowledging accidental fortune as well.&lt;/p&gt;
&lt;p&gt;What then, is not an excuse? Perhaps it is that of accepting that I am at a point in my life when I will simply play worse than in the past, just as when I run races, I am much slower than I was a decade ago: I have not made it a priority to put in the training and maintain top fitness. This is reality.&lt;/p&gt;
&lt;p&gt;Now, what can I do about reality? I can simply accept it, or I can change it. If I really want to get back to playing at a higher level, I must cut something out of life in order to make more room for chess. Or, I can choose to cut chess out. It is not an easy choice. But the difference between an excuse and reality is that reality means choices, while excuses mean idly daydreaming.&lt;/p&gt;
&lt;p&gt;After this tournament ends, I will evaluate what level of chess activity to continue engaging in. There is nothing that says I have to play tournament chess at all. I can play casually, or only in one-day weekend tournaments that do not involve starting a game at 7 PM after a day at work. And of course I can always write about chess.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th Fred Sorensen Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2013.10.01&quot;]
[Round &quot;5&quot;]
[White &quot;Prokhov, Vassil&quot;]
[Black &quot;Chen, Franklin&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;2164&quot;]
[ECO &quot;B80&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;1829&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be3 e6 7. f3 b5 8. g4 h6 9. h4 $6 { Weakening the King side while not developing.} 9… Nbd7 $2 { Ironically, although a developing move, it is too slow and justifies White&apos;s play.} ( 9… b4 { Immediately pushing White&apos;s Knight was good.} ) 10. a4 $2 ( 10. Rg1 { Actually threatening g5 was strong.} ) 10… b4 11. Na2 $2 { Passive.} ( 11. Nc6 Qc7 12. Nxb4 d5 { Fine for Black.} ) 11… d5 $201 { Thematic break in the center, without any cost. White has a terrible position.} 12. g5 $2 hxg5 13. Bxg5 $4 Qc7 $201 { White is totally lost. Although it looks superficially like White is ahead in development, White&apos;s King is completely exposed and Black controls the center.} 14. exd5 Qg3+ $6 { Unnecessary &quot;cleverness&quot;, since White was not going to be able to castle anytime soon anyway.} ( 14… Nxd5 { Simple and effective. Black will simply finish developing and White&apos;s King is unsafe.} ) 15. Kd2 Nxd5 16. Rh3 $4 { Loses a piece.} 16… Qf2+ 17. Kc1 $201 Nc5 $2 { Black is still winning, but there was a more decisive way.} ( 17… f6 { Wins a piece. I saw this but foolishly decided I did not want to lose the e6 Pawn and &quot;open&quot; up my King, although given White&apos;s lack of development, there is nothing open about Black&apos;s King really.} 18. Nxe6 fxg5 ) 18. Bc4 $4 Ne3 19. Bxe3 Qxe3+ 20. Kb1 e5 $201 { White is completely lost and will lose material because of the double attack on the Knight on d4 and the Rook on h3.} 21. Ne2 { I was shocked that White did not resign. He will now be an entire Rook down for nothing.} 21… Bxh3 22. Qd5 Ra7 23. Nxb4 $201 { Black is so obviously winning that paradoxically, the situation is potentially psychologically confusing, because the question is, there are too many choices for how to finish off the game.} 23… Rxh4 ( 23… Nb3 { I didn&apos;t see or look for this tactic, which is the clearest way to immediately consolidate.} 24. cxb3 Bxb4 { White obviously has no attack and no compensation for the lost Rook.} ) 24. Ra3 Qh6 $4 { Unimaginable move, in retrospect. I got careless and somehow &quot;forgot&quot; that the e5 Pawn would hang.} ( 24… Qg5 { Simple and winning.} 25. f4 { For some reason, I was irritated by the possibly of this ( harmless ) move, which is why I suddenly chose Qh6.} 25… Qf5 26. Re3 e4 { White has nothing at all.} ) 25. Qxe5+ $201 { I had to collect myself after this move, because I was so disappointed that I lost my mind in the previous move. I started imagining all kinds of weird things and became unable to think clearly. It was terrible.} 25… Kd7 $4 { And I chose a terrible move that concedes a draw.} ( 25… Be7 { Gives back an exchange to stay safely a piece up. It is unbelievable that I did not play this.} 26. Qb8+ Bd8 27. Qxa7 Rxc4 { Black is still an entire piece up and has a won position.} ) 26. Bxf7 $4 { Loses immediately.} ( 26. Qb8 Rc7 ( 26… Rb7 27. Qxf8 Rxb4 28. Qxf7+ Kc8 29. Qf8+ { Perpetual.} ) ( 26… Rxc4 27. Qxa7+ Ke6 28. Qa8 $201 { White has enough threats to draw.} 28… Qd2 29. Qxf8 Qxb4 30. Re3+ Kf6 31. Qe7+ Kg6 32. f4 Be6 33. Rg3+ Kh7 34. Qh4+ Kg8 35. Qd8+ $201 { Perpetual.} ) 27. Qxf8 Be6 28. Bxe6+ Qxe6 29. Nd3 { White can hold, because of Black&apos;s unprotected King.} ) 26… Be6 { With back rank mating threats.} 27. Qb8 $4 Rh1+ $201 { Mate in 1.} 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Pittsburgh Pirates: it was not to be</title><link>https://franklinchen.com/blog/2013/10/09/pittsburgh-pirates-it-was-not-to-be/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/09/pittsburgh-pirates-it-was-not-to-be/</guid><pubDate>Thu, 10 Oct 2013 03:54:12 GMT</pubDate><content:encoded>&lt;p&gt;At work today, there was a little celebration in honor of the bizarre winning streak of the Pittsburgh Pirates (&quot;let&apos;s go Bucs!&quot;). I&apos;ve lived in Pittsburgh for sixteen years now, so it&apos;s been pretty weird seeing the Pirates doing so well. I don&apos;t follow baseball these days, but I&apos;ve been to a handful of games over the years: each time but once, we lost. It was kind of a sad sight, because almost every time I went to a game, there were so few fans out there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/bucco-cookie.jpg&quot; alt=&quot;Bucco Cookie&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I enjoyed having my first &lt;a href=&quot;https://www.smileycookie.com/pittsburgh-pirates-cookie.html&quot;&gt;Bucco Cookie&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, the Bucs lost tonight, so it was not meant to be.&lt;/p&gt;
&lt;p&gt;I wonder how excited everyone will be next year.&lt;/p&gt;
&lt;p&gt;I remember as a kid in Michgan watching the Pirates (on TV) win the &lt;a href=&quot;https://en.wikipedia.org/wiki/1979_World_Series&quot;&gt;1979 World Series&lt;/a&gt;, thanks to Willie Stargell. To be honest, that&apos;s what first put the word &quot;Pittsburgh&quot; into my vocabulary!&lt;/p&gt;
</content:encoded></item><item><title>Was that a ukulele I heard in Frick Park? No, a cavaquinho</title><link>https://franklinchen.com/blog/2013/10/06/was-that-a-ukulele-i-heard-in-frick-park-no-a-cavaquinho/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/06/was-that-a-ukulele-i-heard-in-frick-park-no-a-cavaquinho/</guid><pubDate>Sun, 06 Oct 2013 18:19:09 GMT</pubDate><content:encoded>&lt;p&gt;I had just run into Frick Park past the blue slide playground entrance when I thought I heard someone playing a ukulele! I looked around and saw a guy sitting on a park bench. I thought of approaching him, but decided not to interrupt my run, and kept going.&lt;/p&gt;
&lt;p&gt;Here&apos;s what Frick Park looked today on a trail, with some fallen leaves. Bizarre that it&apos;s still summer temperatures right now though.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2013-10-06.jpg&quot; alt=&quot;Frick Park trail with fallen leaves&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When I came back around out of the trails, I saw the guy again and he was packing up to leave, so I approached him.&lt;/p&gt;
&lt;p&gt;It turned out to be Ben, to whom &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;I had lent a trumpet two years ago&lt;/a&gt; (since returned)! I asked him if the instrument in his case was a ukulele. He said no. I asked if it was a guitar. He said no. It was a &lt;a href=&quot;https://en.wikipedia.org/wiki/Cavaquinho&quot;&gt;cavaquinho&lt;/a&gt;, the Portuguese ancestor of the Hawaiian ukulele! He pulled it out of the case and let me check it out. It&apos;s tuned differently from the ukulele:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cavaquinho.jpg&quot; alt=&quot;Ben&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I had heard of this instrument, from reading something about the history of the ukulele (in particular, I had looked at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.coolhanduke.com/worldukehistory.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.coolhanduke.com/worldukehistory.html&quot;&amp;gt;Cool Hand Uke&apos;s booklet on ukulele history&amp;lt;/span&amp;gt; recently). Also, Handerson (who is from Brazil) had asked me if I knew where to buy a cavaquinho. Ben said he was looking for other cavaquinho players in Pittsburgh, so I sent him Handerson&apos;s contact information.&lt;/p&gt;
&lt;p&gt;So no, I was not just hallucinating &lt;a href=&quot;/blog/2013/10/05/performing-with-the-steel-city-ukuleles-at-the-wilkins-school-community-center-ecofest-2013-with-videos/&quot;&gt;post-ukulele-gig&lt;/a&gt; when I thought I heard a ukulele in Frick Park.&lt;/p&gt;
&lt;p&gt;You never know what or who you might encounter in the park on a nice day.&lt;/p&gt;
</content:encoded></item><item><title>Performing with the Steel City Ukuleles at the Wilkins School Community Center Ecofest 2013: with videos</title><link>https://franklinchen.com/blog/2013/10/05/performing-with-the-steel-city-ukuleles-at-the-wilkins-school-community-center-ecofest-2013-with-videos/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/05/performing-with-the-steel-city-ukuleles-at-the-wilkins-school-community-center-ecofest-2013-with-videos/</guid><pubDate>Sat, 05 Oct 2013 23:38:08 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013.png&quot; alt=&quot;Ecofest 2013 poster&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013/steel-city-ukuleles-banner.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was a beautiful day outside at the Wilkins School Community Center Ecofest in Regent Square: warm and sunny, and &lt;em&gt;dry&lt;/em&gt;. It had been raining, and was even drizzling rain in the morning just before we performed at around 11:15 AM for an hour.&lt;/p&gt;
&lt;p&gt;There were vendors, information booths, food, and families with children hanging out. Abby helped out with using our camera on a tripod to get footage of the Steel City Ukuleles performing, then went off to the clothing swap.&lt;/p&gt;
&lt;p&gt;Also, Marlene and others came out to listen to us and support us. That was great!&lt;/p&gt;
&lt;p&gt;I was happy to see parents with their children watching us, and some of them dancing a bit too. I silently thought to myself, &quot;I am playing for the children standing in front of me&quot;. Music is a beautiful thing to share with children; I remember how happy I was when I was young and encountered music.&lt;/p&gt;
&lt;h2&gt;Videos&lt;/h2&gt;
&lt;p&gt;We managed to get about half of our program recorded on my camera. Unfortunately, the memory card ran out of space halfway through because we forgot to erase all the photos and videos that were still on the memory card from long ago. Still, we got quite a bit of footage.&lt;/p&gt;
&lt;p&gt;We missed recording the first two songs, because of a confusion with Abby about start time that resulted in her arriving in the middle of our second song, but then we got rolling and successfully recorded eight songs, before the memory card filled.&lt;/p&gt;
&lt;h3&gt;Cindy&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/oOH7VEmncXk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Shangri-La&lt;/h3&gt;
&lt;p&gt;Notice the mention of Pittsburgh in the verse!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/isKtJV1jlao&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Roxy&apos;s Waltz&lt;/h3&gt;
&lt;p&gt;This was a trio, performed by Amber, Sunny, and Jon.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/OgVtQ7m5ZNc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;You Are My Sunshine&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/OdDBAMhUJDk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Tonight You Belong To Me and By The Light Of The Silvery Moon&lt;/h3&gt;
&lt;p&gt;One of my favorite musical selection in our playlist, but also the trickiest for me to play, because of the key and the chord changes.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/7pBKf4TfRLA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Mountain Sound&lt;/h3&gt;
&lt;p&gt;Adam had a solo intro in this one.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/VAD4tzjkB80&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Stealin&apos; Stealin&apos;&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/hkJvBfx9Ew0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Rough On Rats&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/j0nrKnfdf_0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Then the camera memory card filled.&lt;/p&gt;
&lt;p&gt;Sadly, we did not get footage of our concluding sing-along songs where we encouraged everyone to sing along!&lt;/p&gt;
&lt;h2&gt;Afterwards, at the Ecofest&lt;/h2&gt;
&lt;p&gt;I packed up right after we were done performing, because I could only stay around several minutes longer to explore Ecofest with Abby before heading over to Point Park University downtown for the afternoon sessions of &lt;a href=&quot;https://www.podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt;, whose morning sessions I missed because of the Ecofest gig.&lt;/p&gt;
&lt;p&gt;But others of us hung around to do more jamming:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013/after-jamming.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A view of Ecofest from front:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013/front.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Panoramic view of Ecofest from the back dining area outside:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013/panorama.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some vendors and information booths:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013/sample.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reflections on our performance&lt;/h2&gt;
&lt;p&gt;I felt fairly pleased with our performance. The three rehearsals we had in the past two weeks were crucial. We did flub some things that we didn&apos;t flub in rehearsal, but that happens. But overall, we produced a fine unified sound. The videos don&apos;t completely reflect that because of the distance and the background conversations at the event.&lt;/p&gt;
&lt;p&gt;I myself made more errors than in rehearsal and in private practice. There are a couple of reasons for this. I think the most interesting one is simply that I did not practice enough in a &lt;em&gt;performance&lt;/em&gt; mode. Most of the time, when I practice music, I am focused entirely on getting the words right, the melody, the rhythm, the harmonic changes, the fingerings, etc.&lt;/p&gt;
&lt;p&gt;But in performance, there is the audience, and the point is to play for the audience, not for oneself. I had a hard time reallocating my scarce attentional resources toward engaging with the audience. When I did, such as by avoiding looking down so much at the fret board (actually, in the videos you can see that I could not entirely avoid this, because I don&apos;t have a perfect feel yet for my finger positions, so I keep bobbing my head toward my instrument), I could feel myself miss nailing a chord.&lt;/p&gt;
&lt;p&gt;Having seen the footage, I will work more in the future toward specific practice oriented toward polishing up for performance. This means improving technique and memorizing as much as possible (chord changes, lyrics). It is &quot;easy&quot; to go out there with a music stand and run through stuff, but it is much harder to appear relaxed, confident, and attentive to the audience. I feel that this is quite important to a successful performance, whose aim is to truly touch the hearts and minds of those who are paying attention to us.&lt;/p&gt;
&lt;p&gt;It is of course pointless to pay too much attention to aspects of presentation if your technique and intonation are poor, so I would say that performance presentation is &lt;em&gt;not&lt;/em&gt; the most important thing to work on, all things considered, but my aim is to master the musical basics enough that I can also reliably &lt;em&gt;add&lt;/em&gt; the presentation aspect as an integral part of complete musical development. I believe that a truly good musical performance must incorporate the spirit of those who are listening to us and feed it back into what we do in real time.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed participating in my first ukulele gig. Now, I am exhausted, and will take a break from performance. It has been an amazing learning experience for me.&lt;/p&gt;
</content:encoded></item><item><title>Final rehearsal for my first ukulele gig: and some hard decisions about music in my life</title><link>https://franklinchen.com/blog/2013/10/04/final-rehearsal-for-my-first-ukulele-gig/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/04/final-rehearsal-for-my-first-ukulele-gig/</guid><pubDate>Sat, 05 Oct 2013 02:15:33 GMT</pubDate><content:encoded>&lt;p&gt;The night before our Ecofest gig, those of us in the Steel City Ukuleles who are performing in it had one final rehearsal.&lt;/p&gt;
&lt;p&gt;It was a very good rehearsal. We&apos;re sounding more and more together as an ensemble, ending solidly on each song the way we agreed, and singing more in tune and balance.&lt;/p&gt;
&lt;p&gt;Also, Sunny reminded us that we are &lt;em&gt;performing&lt;/em&gt;, and so we should not just grimly look at our music booklets, but instead, when we can, we should look up and smile and engage with the audience.&lt;/p&gt;
&lt;h2&gt;Singing&lt;/h2&gt;
&lt;p&gt;I still don&apos;t have all the songs down as much as I would like, but by the end of the two-hour rehearsal, I was totally &lt;em&gt;hoarse&lt;/em&gt;. I am ready to sing out strong while simultaneously playing my ukulele.&lt;/p&gt;
&lt;p&gt;I just realized that &lt;strong&gt;in the past three months, I have sung more than in the previous forty years of my life combined&lt;/strong&gt;. Wow. And I&apos;m loving it. There&apos;s nothing like singing, especially singing with others.&lt;/p&gt;
&lt;h2&gt;Performance is time and energy consuming&lt;/h2&gt;
&lt;p&gt;I almost didn&apos;t make it to the rehearsal. I&apos;ve completely exhausted myself this week with work and other activities, and badly need a break. There are times, such as earlier today, when I felt overwhelmed by everything.&lt;/p&gt;
&lt;p&gt;In fact, yesterday, in discussing my musical plans for the coming months with Abby, I made some decisions.&lt;/p&gt;
&lt;p&gt;This is my last ukulele gig for the year, for sure. I want to get back to basics and work on my technique and in really mastering some songs, rather than get back on the treadmill of more material for performance.&lt;/p&gt;
&lt;p&gt;Also, this winter, I am not planning to participate in performing on recorder for the holiday gigs at Phipps Conservatory &quot;candlelight evenings&quot; that I&apos;ve treasured &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;in 2011&lt;/a&gt; and &lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;in 2012&lt;/a&gt;. That was always a huge amount of work for me. Unless I can participate in significantly reduced capacity, I don&apos;t see how I can manage.&lt;/p&gt;
&lt;p&gt;I will probably perform in the &lt;a href=&quot;/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/&quot;&gt;Pittsburgh Contras and Squares Holiday Ball&lt;/a&gt; again, because it&apos;s something I&apos;ve been doing with Abby every year, and because after two years of doing it, I know the music, and therefore it will not require much work to participate in (if I want to do some Irish flute and tin whistle solos, of course, then I can add as much extra work for myself that I want, ha).&lt;/p&gt;
&lt;h2&gt;What is the best use of my limited time and energy for music?&lt;/h2&gt;
&lt;p&gt;Also, there have been announcements and reminders for some time about recorder and ukulele &lt;em&gt;workshops&lt;/em&gt; and &lt;em&gt;concerts&lt;/em&gt; coming up soon. I have decided not to sign up for any of them, because I really need some rest time on &lt;em&gt;weekends&lt;/em&gt; that I have not been getting; weekends are also the time when I can do more household chores and spend time with Abby.&lt;/p&gt;
&lt;p&gt;I find that my main enjoyment and improvement in music comes form what I do daily, anyway, rather than what I can possibly do in a long, extended workshop format. I&apos;ve always been frustrated that when I attend a one or two day conference or workshop on any subject (computer programming, salsa dance, etc.), I don&apos;t actually retain or engage with as much as I would like. There are ways to optimize these experiences, but that requires a certain kind of immediate followup that I don&apos;t have time for right now.&lt;/p&gt;
&lt;p&gt;So, I will sadly miss the fantastic &lt;a href=&quot;https://www.flanders-recorder-quartet.be/en/home/&quot;&gt;Flanders Recorder Quartet&lt;/a&gt; when they come to Pittsburgh in November, and I will miss the workshop Annie has arranged for them to give here for the local recorder community.&lt;/p&gt;
&lt;p&gt;And I am going to miss &lt;a href=&quot;https://www.coolhanduke.com/&quot;&gt;Cool Hand Uke&lt;/a&gt; when he comes to Pittsburgh to give a &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/135233932/&quot;&gt;workshop&lt;/a&gt; and &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/138577782/&quot;&gt;concert&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Life is full of choices, especially for those of us who have many interests, not just one. This week I made some decisions about my involvement with music in October, November, and December.&lt;/p&gt;
</content:encoded></item><item><title>9 things you could be doing in Pittsburgh on Saturday, October 5</title><link>https://franklinchen.com/blog/2013/10/04/9-things-you-could-be-doing-in-pittsburgh-on-saturday-october-5/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/04/9-things-you-could-be-doing-in-pittsburgh-on-saturday-october-5/</guid><pubDate>Fri, 04 Oct 2013 04:46:44 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m always frustrated at this time of year because there are so many events of interest to me in Pittsburgh that seem to happen on the first weekend of October. Since I cannot attend all of them, I figured I might as well attempt a public service and mention some of them so that if you are in the Pittsburgh area, maybe you can go and enjoy what I can&apos;t attend.&lt;/p&gt;
&lt;p&gt;So here are 9 of the probably dozens of cool things you could be doing tomorrow, Saturday, October 5, 2013.&lt;/p&gt;
&lt;h2&gt;Free concert: Allegheny City Ragtime Orchestra&lt;/h2&gt;
&lt;p&gt;If you&apos;re interested in ragtime or Latin music, check out &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.shadysideacademy.org/page.cfm?p=12541&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.shadysideacademy.org/page.cfm?p=12541&quot;&amp;gt;this concert by the Allegheny City Ragtime Orchestra&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Some articles in anticipation of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/stories/ae/music/preview-ragtime-orchestra-connects-with-history-705929/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/stories/ae/music/preview-ragtime-orchestra-connects-with-history-705929/&quot;&amp;gt;Post-Gazette&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/aande/music/4763900-74/ragtime-music-concert&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/aande/music/4763900-74/ragtime-music-concert&quot;&amp;gt;Trib&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Abby and I wanted to go, but finally decided that we have too many other activities earlier in the day and need to just stay home and unwind in the evening.&lt;/p&gt;
&lt;h2&gt;Free conference: PodCamp Pittsburgh 8&lt;/h2&gt;
&lt;p&gt;The 8th annual &lt;a href=&quot;https://www.podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt; should be good. If you have any interest in using social media for personal or professional purposes, you should check it out. Interesting talks, opportunities to just socialized and learn new things.&lt;/p&gt;
&lt;p&gt;I attended in 2010, 2011, 2012, and will attend again for the fourth year. Unfortunately, I will only be able to attend the afternoon sessions. But I didn&apos;t want to completely miss it.&lt;/p&gt;
&lt;p&gt;It turns out that PodCamp completely changed my life. For example, &lt;a href=&quot;/blog/2011/10/21/one-month-anniversary-of-my-blog/&quot;&gt;I started this blog in 2011 because of my second PodCamp&lt;/a&gt;, and I became serious about using social media in general, and that led to a total transformation of my life as I learned about local activities and made new friends. (Unfortunately, I didn&apos;t get around to finishing my draft reports about my experience at last year&apos;s PodCamp 7.)&lt;/p&gt;
&lt;h2&gt;Pittsburgh South Side Slopes Step Trek&lt;/h2&gt;
&lt;p&gt;The annual &lt;a href=&quot;https://www.southsideslopes.org/steptrek/&quot;&gt;Pittsburgh South Side Slopes Step Trek&lt;/a&gt; is another event you can attend tomorrow.&lt;/p&gt;
&lt;p&gt;Check out my &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;blog coverage two years ago&lt;/a&gt; as well as my &lt;a href=&quot;/blog/2013/09/25/why-you-should-go-out-to-the-pittsburgh-south-side-slopes-step-trek/&quot;&gt;recent update&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, Abby and I will be missing it this year.&lt;/p&gt;
&lt;h2&gt;Run Shadyside 5K&lt;/h2&gt;
&lt;p&gt;If you like to run in races, a fine race is the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runshadyside.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runshadyside.com/&quot;&amp;gt;Run Shadyside 5K&amp;lt;/span&amp;gt;. Fast and flat, with a pancake breakfast and festivities afterwards.&lt;/p&gt;
&lt;p&gt;I&apos;m not running in it this year, just because I have too many other things to do already for the rest of the day, but here&apos;s my &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;report from two years ago&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Free: 5th annual Wilkins School Community Center Ecofest in Regent Square&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013.png&quot; alt=&quot;5th annual Wilkins School Community Center Ecofest in Regent Square&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Interested in green living? Check out the &lt;a href=&quot;https://foresthills-regentsquare.patch.com/groups/around-town/p/ecofest-encourages-recycling-green-living&quot;&gt;5th annual Wilkins School Community Center Ecofest in Regent Square&lt;/a&gt;. Abby has regularly attended for the clothing swap. There will also be food, information, and entertainment.&lt;/p&gt;
&lt;p&gt;It turns out that this year, I will also be attending, to perform as a new member of the Steel City Ukuleles. &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;I just started playing the ukulele a bit over two months ago&lt;/a&gt;, and have been working hard to help put on an entertaining show!&lt;/p&gt;
&lt;p&gt;We&apos;ll be performing around 11:30 AM to 12:30 PM. If you come, say hello!&lt;/p&gt;
&lt;h2&gt;CMU Donut Dash 2 mile race&lt;/h2&gt;
&lt;p&gt;Or, if you are into weird running events, there is the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://cmudonutdash.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://cmudonutdash.org/&quot;&amp;gt;Carnegie Mellon University Donut Dash&amp;lt;/span&amp;gt;, a 2 mile event serving as a fundraiser for the Children&apos;s Hospital of Pittsburgh of UPMC. This is not an event I have ever done, and not one I intend to do, but what the heck, some of you might love this sort of thing!&lt;/p&gt;
&lt;h2&gt;National Chess Day: Gateway Open tournament at the Pittsburgh Chess Club&lt;/h2&gt;
&lt;p&gt;Did you know that it&apos;s time for &lt;a href=&quot;https://web.archive.org/web/20240521065605/http://nationalchessday.com/&quot;&gt;National Chess Day&lt;/a&gt;? There will be a tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, the 56th annual Gateway Open. Yes, chess in Pittsburgh has a long and illustrious history.&lt;/p&gt;
&lt;h2&gt;Pittsburgh Perl Workshop&lt;/h2&gt;
&lt;p&gt;If you are a Perl programmer, the &lt;a href=&quot;https://pghpw.org/&quot;&gt;Pittsburgh Perl Workshop&lt;/a&gt; is back &lt;a href=&quot;https://pghpw.org/ppw2013/&quot;&gt;this year&lt;/a&gt;. Registration is already closed, so it&apos;s not so helpful right now for me to mention it, but in case you didn&apos;t know it existed, watch for it next year.&lt;/p&gt;
&lt;h2&gt;Ninth thing?&lt;/h2&gt;
&lt;p&gt;Actually, I guess I miscounted. But there are a whole lot more than nine things to do in Pittsburgh tomorrow.&lt;/p&gt;
&lt;p&gt;For example, if you are interested in some free stuff to do, there&apos;s &lt;a href=&quot;https://web.archive.org/web/20131124061019/http://www.radworkshere.org:80/interior.php?pageID=64&quot;&gt;RADical Days&lt;/a&gt; listing a whole bunch of stuff.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There&apos;s no shortage of stuff to do in this great city of Pittsburgh at any time or day of year. I think it&apos;s unfortunate that many things I like to do happen to repeatedly fall on the first Saturday of the year, but I&apos;m not complaining about an embarrassment of riches. Go out and take advantage of what I can&apos;t.&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: the psychology of losing a drawn game</title><link>https://franklinchen.com/blog/2013/10/03/the-chess-improver-the-psychology-of-losing-a-drawn-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/03/the-chess-improver-the-psychology-of-losing-a-drawn-game/</guid><pubDate>Thu, 03 Oct 2013 11:29:14 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/15th-fred-sorensen-memorial/round-4.jpg&quot; alt=&quot;Round 4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last week, I wrote on The Chess Improver about &lt;a href=&quot;/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/&quot;&gt;my third round game in the current Pittsburgh Chess Club Tuesday night tournament, in which I had a won game but did not win&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This week, I wrote about my fourth round game, in which I did even worse, hence my new post: &quot;The psychology of losing a drawn game&quot;.&lt;/p&gt;
&lt;p&gt;Unfortunately, the original article at &lt;code&gt;https://chessimprover.com/the-psychology-of-losing-a-drawn-game/&lt;/code&gt; could not be recovered from the Wayback Machine or any other archive. We apologize that this content has been lost.&lt;/p&gt;
</content:encoded></item><item><title>Rubber Duckie and Steel City Ukuleles rehearsal</title><link>https://franklinchen.com/blog/2013/10/02/rubber-duckie-and-steel-city-ukuleles-rehearsal/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/10/02/rubber-duckie-and-steel-city-ukuleles-rehearsal/</guid><pubDate>Thu, 03 Oct 2013 01:43:30 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/132647852&quot;&gt;This week&apos;s Wednesday meeting of the Steel City Ukuleles&lt;/a&gt; was an unusual one: it was split into two halves, the first half being our regular meeting (involving going through a new playlist), the second half being the second of three &lt;a href=&quot;/blog/2013/09/26/first-rehearsal-for-my-first-ukulele-gig/&quot;&gt;rehearsals for the Ecofest gig&lt;/a&gt;. The deal was that everyone was open to stick around for the rehearsal if they wanted to, but with the caveat that it was serious rehearsal time, rather than the more casual regular meetup atmosphere. It turned out that a few people who were not performing in the Ecofest gig did stick around, although most others left.&lt;/p&gt;
&lt;p&gt;Sunny was not present, so Amber took charge of this meetup session.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-2013-10-02.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Rubber Duckie&lt;/h2&gt;
&lt;p&gt;I enjoyed learning some new songs in the first half.&lt;/p&gt;
&lt;p&gt;One slightly crazy thing we tried was running through &quot;Rubber Duckie&quot;, which I had actually suggested to Sunny in email for the playlist for the next meetup, but apparently others had also suggested, for obvious reasons here in Pittsburgh.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/n-kHSXQ_wwk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;This song is hard, with a lot of chord changes. I would like to actually master it and play it solo for Abby before Pittsburgh&apos;s rubber duck leaves.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-2013-10-02-rubber-duckie.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Rehearsal&lt;/h2&gt;
&lt;p&gt;The rehearsal was intense, but we managed to cover the rest of the songs we are to play in the Ecofest gig three days (!!) from now. A lot of homework for me to do, just as I have been doing with the first half of the program.&lt;/p&gt;
</content:encoded></item><item><title>An erhu player and a tuba player at a party said &quot;Let&apos;s jam&quot;</title><link>https://franklinchen.com/blog/2013/09/28/an-erhu-player-and-a-tuba-player-at-a-party-said-lets-jam/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/28/an-erhu-player-and-a-tuba-player-at-a-party-said-lets-jam/</guid><pubDate>Sun, 29 Sep 2013 02:02:19 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I attended a music potluck party tonight. We had been unsure about whether to attend, since I do have the Great Race 10K to run tomorrow and need to avoid staying up too late. So we went with the understanding that we would leave early as needed, in order for me to wind down at home and go to bed.&lt;/p&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;p&gt;I whipped up a large batch of roasted vegetables to bring to the potluck:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/vegetables-2013-09-28.jpg&quot; alt=&quot;Roasted vegetables&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;p&gt;After a lot of eating and chatting, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.appalasia.com/Mimi.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.appalasia.com/Mimi.htm&quot;&amp;gt;Mimi&amp;lt;/span&amp;gt; was ready to start jamming, and got out her &lt;a href=&quot;https://en.wikipedia.org/wiki/Erhu&quot;&gt;erhu&lt;/a&gt;. A guy who had brought a tuba was ready to play.&lt;/p&gt;
&lt;p&gt;OK, who else was in?&lt;/p&gt;
&lt;p&gt;I pulled out my flute. Abby took out her mandolin. It seemed like nobody else (yet) was interested in joining in. (But as we know, the party usually really gets going later in the evening when musicians are involved.)&lt;/p&gt;
&lt;p&gt;The tuba player seemed really into jazz. He asked for requests and started his own rhythmic bass sometimes. I tried to join in with him and Mimi as they led the way. It was pretty hard for me, and frightening, but I did what I could to contribute.&lt;/p&gt;
&lt;p&gt;At one point, I volunteered to sing and play &quot;Has Anybody Seen My Gal?&quot; on ukulele, which I did (for the first time by myself outside home), and they followed along. I don&apos;t know if that was the first time an erhu, tuba, and ukulele were in action simultaneously!?&lt;/p&gt;
&lt;h3&gt;Lending my flute out&lt;/h3&gt;
&lt;p&gt;At some point, a guy arrived at the party who wanted to jam. He hadn&apos;t yet brought in his trombone, but asked if he could borrow my flute. I recognized him from previous parties, and I had seen him play flute in at least one of them.&lt;/p&gt;
&lt;p&gt;So he borrowed my flute and I sat back and watched and listened. He was a really good improviser. Actually, at the suggestion of the tuba player, who really liked totally free improvisation, the three of them did something I found amazing and beautiful. Starting with some long tones, they created an eerie sonic soundscape together, listening to one another while blending the erhu, tuba, and flute. I was really moved by this display of musicality and feeling.&lt;/p&gt;
&lt;h2&gt;Leaving early&lt;/h2&gt;
&lt;p&gt;Abby noted that it was getting &quot;late&quot; for us, and so we regrettably had to leave. Guests were still coming in and bringing food, even though those of us who had arrived early had filled our stomachs long ago. I got my flute back and packed up.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It is always a special treat for me when I get to hang around creative, accomplished musicians and get to see them make music spontaneously. I&apos;m usually too intimidated in these kinds of situations to join in, but I did briefly tonight.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-11-06)&lt;/h3&gt;
&lt;p&gt;I was surprised and saddened to learn from Mimi that just a couple of days ago, the man who had borrowed my flute and played so beautifully, David Olson, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://obituaries.triblive.com/listing/231895/David-E-Olson/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://obituaries.triblive.com/listing/231895/David-E-Olson/&quot;&amp;gt;died&amp;lt;/span&amp;gt;. Even in the brief time that I interacted with him at all, just in a handful of music parties, I was struck by his enthusiasm, humor, and graciousness. It is hard to believe that he is gone now, just a month since he was playing my flute. RIP, David.&lt;/p&gt;
</content:encoded></item><item><title>First rehearsal for my first ukulele gig: dealing with anxiety</title><link>https://franklinchen.com/blog/2013/09/26/first-rehearsal-for-my-first-ukulele-gig/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/26/first-rehearsal-for-my-first-ukulele-gig/</guid><pubDate>Fri, 27 Sep 2013 03:09:23 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s now officially &lt;em&gt;two months&lt;/em&gt; since &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;I started learning to play ukulele&lt;/a&gt;. It&apos;s hard to believe, but two months ago, I was still struggling to play three chords: I could play C, of course, but had trouble with G7, and had even worse trouble with F: I had no finger strength or dexterity and could not arch my fingers and everything was a painful buzz, and I could spend only five minutes a day practicing because of the pain on my uncalloused fingers.&lt;/p&gt;
&lt;p&gt;And after just over a month of playing, and joining the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/&quot;&gt;Steel City Ukuleles&lt;/a&gt;, I had volunteered to &lt;a href=&quot;/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/&quot;&gt;perform in a gig for Ecofest in Regent Square&lt;/a&gt;, as a way to force myself to maintain momentum.&lt;/p&gt;
&lt;p&gt;And this week, just in time, I got my &lt;a href=&quot;/blog/2013/09/23/finally-got-a-nice-new-ukulele-mainland-classic-mahogany-concert/&quot;&gt;brand new concert-sized ukulele&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013-rehearsal-1.jpg&quot; alt=&quot;First Ecofest rehearsal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The gig is in just over a week. I attended my first rehearsal with extreme anxiety. I was even thinking about bailing out instead of attending. Here&apos;s why.&lt;/p&gt;
&lt;h2&gt;New music for me&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-bound-thing-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-bound-thing-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I went into rehearsal with basically &lt;em&gt;none&lt;/em&gt; of the songs we were going to perform. So it was basically a sight reading and singing session for me.&lt;/p&gt;
&lt;p&gt;One reason is that I was waiting to get the official bound compilation of performance songs that we were to receive at the first rehearsal, which we did. I had not requested to get one ahead of time, because I was too busy all week anyway to make good use of it if I had possessed it.&lt;/p&gt;
&lt;p&gt;Also, it turns out that many of these songs are already familiar and played by most of the other members of the performance group; they are part of the general repertoire, for previous years&apos; Ecofests as well as for other gigs.&lt;/p&gt;
&lt;h2&gt;New performance group for me&lt;/h2&gt;
&lt;p&gt;I know that breaking into a performance group for the first time always involves an initial learning curve because there are those who already know everything inside and out. I still have very vivid memories of other times in my life when I have entered a performance group and felt lost for a while.&lt;/p&gt;
&lt;p&gt;I was briefly in marching band, during the 9th grade in high school. As a new freshman, I was unfamiliar with the repertoire, the choreography, etc. It was a tricky experience for all us freshmen, of course, amidst the 10th, 11th, and 12th graders.&lt;/p&gt;
&lt;p&gt;Similarly, over a decade ago, for a couple of years I was a member of the &lt;a href=&quot;https://cmubdc.org/&quot;&gt;Carnegie Mellon University ballroom dance club&lt;/a&gt;, and I was on both the competition team as well as the formation team. I&apos;d made ballroom dancing the main focus of my life, throwing myself into lessons and competition and being in performances with the formation team while still a beginner. I improved my dancing significantly and quickly as a result of jumping in.&lt;/p&gt;
&lt;p&gt;And more recently, I have been performing in a small &lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;recorder quartet/quintet at winter holiday time&lt;/a&gt;. Practicing so that I wouldn&apos;t totally flub everything always took a huge amount of work for me, but the side effect was that I really improved my recorder playing and musicianship.&lt;/p&gt;
&lt;p&gt;So I know firsthand the benefits of just jumping in and being around very experienced team members who are inspirational to emulate and learn from, and to exert some healthy pressure on myself not to let the team down!&lt;/p&gt;
&lt;h2&gt;Listening, watching&lt;/h2&gt;
&lt;p&gt;A lot of what I did during rehearsal was listening and watching, while doing what I could to keep up and go and make dozens of mistakes everywhere. (It&apos;s particularly important to boldly make those mistakes and write down what to work on for homework.)&lt;/p&gt;
&lt;p&gt;There was no way I was going to be able to play everything at first sight. In fact, that&apos;s not even the right way to think about the situation. This isn&apos;t classical music where you really do &quot;sight read&quot;. This is music where almost everything is transmitted &lt;em&gt;by ear&lt;/em&gt;. Not knowing the melodies, and not having an actual score, I have to listen and figure out where the melodic lines roughly are, and where the chord changes are. I have to learn what the prevailing strum rhythms and breaks and mood the group has largely decided on. The goal is to learn how to blend in and contribute.&lt;/p&gt;
&lt;p&gt;I didn&apos;t do much extended &lt;em&gt;singing&lt;/em&gt; during this rehearsal. But we have two more rehearsals after this one, so it was not necessary to get everything down right away. I would, of course, be doing my own homework, looking up YouTube videos, in between official rehearsals.&lt;/p&gt;
&lt;p&gt;For consistency, I found it very useful to focus my listening on one person at a time to emulate. Usually that person was Sunny, because she is leading us. Sometimes that was Adam, because I was sitting near him and because as a strong male voice, I could follow him especially in songs where we had male and female voices split.&lt;/p&gt;
&lt;p&gt;The fact that there were over a dozen of us in the group for this gig was very helpful to me, because it meant that there was much less pressure on me to get everything right. I don&apos;t always have to sing, or sing everything. I don&apos;t always have to play the tricky chord progressions that I&apos;m not ready yet to get right. I can leave stuff out judiciously.&lt;/p&gt;
&lt;h2&gt;Half the songs&lt;/h2&gt;
&lt;p&gt;In two hours, we covered half the songs we planned to play at Ecofest. I felt there was still a huge amount of work for me to do in order to really contribute to the group, but no longer felt helpless.&lt;/p&gt;
&lt;h2&gt;The cost of excellence&lt;/h2&gt;
&lt;p&gt;I still think it&apos;s a little crazy that I jumped into committing to performing when still a beginner at ukulele, but in the past couple of years, I have learned that shorter, tighter learning and creating cycles considerably speed up the improvement process, provided that one actually puts in the hard work on a daily basis.&lt;/p&gt;
&lt;p&gt;There&apos;s been a huge cost, unfortunately. I have let some things slide while focusing on ukulele in the past two months. For example, I have been playing chess very poorly. Last week, I &lt;a href=&quot;/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/&quot;&gt;drew a game that I should have won&lt;/a&gt;. And just two days ago, disaster struck: in my fatigue, I lost a game I should have won. If I had known I was going to have ukulele take over my life outside of work, I would have chosen &lt;em&gt;not&lt;/em&gt; to play in the current chess tournament.&lt;/p&gt;
&lt;p&gt;Now as in the past couple of years, I have chosen to sacrifice my chess performance when other things come up. This is why I rarely play chess tournaments any more: I hate playing worse than I am actually capable of playing. As I mentioned two weeks ago, &lt;a href=&quot;/blog/2013/09/15/saying-no-on-not-playing-in-the-pittsburgh-chess-league-this-season-for-the-cmu-tartans/&quot;&gt;I had anticipated becoming busy in November&lt;/a&gt;, but I had not anticipated being so busy now already, in September!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Sunny led a great rehearsal for our Ecofest gig coming up. I really like some of these songs we&apos;re working on, and left feeling that after more work, we can sound really good and have a lot of fun at the gig!&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: the psychology of not winning the won game</title><link>https://franklinchen.com/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/26/the-chess-improver-the-psychology-of-not-winning-the-won-game/</guid><pubDate>Thu, 26 Sep 2013 12:13:50 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/15th-fred-sorensen-memorial/round-3.jpg&quot; alt=&quot;Round 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I published my third post on the blog The Chess Improver. It covers my third round game in the current Pittsburgh Chess Club Tuesday night tournament, in which I was very disappointed because I had a won game but failed to actually win the game!&lt;/p&gt;
&lt;p&gt;&quot;The psychology of not winning the won game.&quot;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;We&apos;ve all experienced this: building up an overwhelming position at the board, perhaps winning material or having a huge attack, and knowing (not just hoping) that we have a won game, and that it is just a matter of time. But the opponent is stubborn and keeps fighting, perhaps surprising us with unexpected or strange counterplay. Maybe it looks sound, or maybe it looks like unsound but practically justifiable desperation.&lt;/p&gt;
&lt;p&gt;Sometimes we start drifting, and notice that we haven&apos;t made progress, or worse, the opponent&apos;s counterplay is strangely working. Did we miss a win somewhere? Dis we miss a refutation?&lt;/p&gt;
&lt;p&gt;And finally, maybe we get into a position that is clearly no longer truly advantageous. Somehow it&apos;s looking like a draw. Now what? Anger? Self-reproach? A last-ditch attempt at reclaiming an advantage? Our confidence is shaken. We don&apos;t know if we really know how to play this frustrating game called chess. How do we regroup and continue playing? Or should we even continue playing? Should we offer a draw? Or should we believe that since we outplayed our opponent for so much of the game, we are better and &quot;deserve&quot; to win, and therefore we can try again for a winning advantage?&lt;/p&gt;
&lt;p&gt;In my 3rd round game in the current Pittsburgh Chess Club Tuesday night tournament, I played an opponent whom I have three wins and three losses against in the past several years (rated USCF 2200). I went into the game vowing not to get emotional about seeking &quot;revenge&quot; for the last three games we played (all of which were my losses).&lt;/p&gt;
&lt;p&gt;The game took some fascinating turns. Out of the opening, as Black I had a clear advantage. But my opponent deliberately offered what I thought was a Pawn sacrifice, in an attempt to free his position. I accepted the challenge, only to find that his real plan was to sacrifice both a pawn and an exchange! Although unsound, this was quite creative and disruptive to me over the board, and I did not play optimally in return. Instead of accepting the challenge and keeping the exchange, I gave it back and retained a Pawn advantage. However, consolidation proved difficult. I missed some tactical winning shots in the ensuing middlegame, and ended up in a position in which the best play for both sides was a draw by repetition. I was upset by the knowledge that I must have missed a win somewhere, but I also knew that if I did not take the repetition, I would have to lose back the Pawn, in which case the position was going to be a draw anyway. Given that I did not trust my mental abilities at the late hour (11:00 PM, the last game still in progress, with the tournament director waiting to close up the club, and time was getting low on the clock for both me and my opponent), I had no reason to continue the game and risk playing badly for a loss rather than a draw. So I accepted the draw offer.&lt;/p&gt;
&lt;p&gt;In the past, I have sometimes played on despite the signs of mental tiredness and no realistic winning chances, and lost games in which I was a Pawn up. I was happy that this time around, I did not. I think my mind was still on the recent Sinquefield Cup last round game between Carlsen and Aronian in which Aronian won a Pawn and kept playing for a win and ended up losing instead.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th Fred Sorensen Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2013.09.17&quot;]
[Round &quot;3&quot;]
[White &quot;Magar, Thomas&quot;]
[Black &quot;Chen, Franklin&quot;]
[Result &quot;1/2-1/2&quot;]
[BlackElo &quot;2164&quot;]
[ECO &quot;A60&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2200&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;d4 Nf6 2. c4 e6 3. g3 c5 4. d5 exd5 5. cxd5 b5 6. Bg2 d6 7. a4 { Very committal.} 7... b4 8. Nd2 Nbd7 9. Qc2 { White should be developing the Kingside.} 9... Ba6 { Black should also be developing the King side.} 10. Nh3 g6 11. O-O Bg7 12. Re1 $2 { Black can quickly create pressure against White&apos;s underdeveloped position.} 12... O-O $201 { White is rather bottled up now. Black is ready to start expanding on the Queen side.} 13. b3 $5 { A provocative attempt to free the position by giving up some material.} 13... Nxd5 { I decided to snatch the d Pawn.} ( 13... Re8 { First threatening the Pawn on e2 was also possible.} 14. Nf4 Nxd5 15. Bxd5 Bxa1 16. Ne4 Rxe4 17. Bxe4 Rb8 { Black remains a Pawn up.} ) 14. Bxd5 ( 14. Bb2 { More accurate, just sacrificing a Pawn rather than the exchange.} 14... Bxb2 15. Qxb2 N7f6 16. e4 { White has a Pawn for the exchange but Black is winning because of White&apos;s weak Queen side.} 16... Nc3 { White has some compensation.} ) 14... Bxa1 15. Ne4 $1 $201 { I simply did not see this nice resource when I accepted the Pawn on d5. Black is still better, but White has some compensation for the exchange and Pawn, amazingly!} ( 15. Bxa8 $2 { I had expected White to take back the exchange.} 15... Qxa8 { Black may be &quot;only&quot; a Pawn up, but is clearly winning here.} 16. Bb2 Bxb2 17. Qxb2 Re8 $201 ) 15... Bg7 $2 { Careless. The decision was to give back the exchange with a better position.} ( 15... Rb8 { Just keeping the exchange was fine.} 16. Nxd6 Ne5 { Looks complex, but Black is winning.} 17. Qxc5 Rb6 $201 { White is lost.} ) 16. Bg5 Qb6 17. Bxa8 Rxa8 18. Rd1 Bf8 $201 { By this point, I realized that my extra Pawn was not very helpful, and White has compensation.} 19. Nf4 Bb7 20. Nd5 $2 { Inaccurate and should lose.} ( 20. Qc4 ) 20... Bxd5 21. Rxd5 Re8 $5 { Wrong move order.} ( 21... Qc6 { Winning with the unstoppable plan of Re8 and pushing White back with Re6 or f5.} ) 22. Bf4 $4 Re6 $2 { Missing the win.} ( 22... Qc6 { Immediately wins material.} 23. Nxd6 Qxd5 24. Nxe8 g5 { White&apos;s Knight is almost trapped.} 25. Qd2 Qxd2 26. Bxd2 c4 $201 ) 23. Ng5 $2 Qc6 $2 { Throwing away the win.} ( 23... Nf6 { The other way of attacking White&apos;s Rook is strong.} 24. Rd3 Re8 { And Black will consolidate, get d5 in, and win.} ) 24. Rd2 Rf6 25. Ne4 Re6 26. Ng5 { Seeking a draw by repetition.} 26... Rf6 ( 26... Re8 { Continuing to play for a win by giving back the Pawn was possible, but both players were already running low on time.} 27. Qc4 d5 28. Qxd5 Qxd5 29. Rxd5 Nf6 { This should be a draw.} ) ( 26... d5 $2 { I briefly considered a speculative exchange sacrifice to keep the game alive, but quickly concluded that it only favored White.} 27. Nxe6 fxe6 28. e4 Nf6 29. exd5 exd5 { It is White who has the real winning chances here.} ) 27. Ne4 Re6 28. Ng5 { White offered a draw, which was accepted.} 1/2-1/2`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Why you should go out to the Pittsburgh South Side Slopes Step Trek</title><link>https://franklinchen.com/blog/2013/09/25/why-you-should-go-out-to-the-pittsburgh-south-side-slopes-step-trek/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/25/why-you-should-go-out-to-the-pittsburgh-south-side-slopes-step-trek/</guid><pubDate>Thu, 26 Sep 2013 01:37:56 GMT</pubDate><content:encoded>&lt;p&gt;Thanks to my &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;blog coverage two years ago&lt;/a&gt; of the annual &lt;a href=&quot;https://www.southsideslopes.org/steptrek/&quot;&gt;Pittsburgh Step Trek&lt;/a&gt;, I was invited, as I was last year also, by the &lt;a href=&quot;https://www.southsideslopes.org/&quot;&gt;South Side Slopes Neighborhood Association&lt;/a&gt; to a special preview small group tour of the &quot;church route&quot;, which includes 820 stairs (379 stairs up, 441 stairs down), led by Brian Oswald.&lt;/p&gt;
&lt;p&gt;I decided to attend for a couple of reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To refresh my memory; I had not been to the &lt;a href=&quot;https://en.wikipedia.org/wiki/South_Side_Slopes&quot;&gt;South Side Slopes&lt;/a&gt; for probably a year, since Abby and I entertained her visiting sister and her boyfriend by taking them on a tour ourselves, along with &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.carrieplant.com/kitty/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.carrieplant.com/kitty/&quot;&amp;gt;Kitty&amp;lt;/span&amp;gt;.&lt;/li&gt;
&lt;li&gt;To take my work colleague John along and show him this unique part of Pittsburgh.&lt;/li&gt;
&lt;li&gt;To learn what is new with the maintenance of this unique neighborhood.&lt;/li&gt;
&lt;li&gt;To better promote the annual Step Trek event, which is enjoyable and benefits the neighborhood.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&apos;s my report on the evening preview tour.&lt;/p&gt;
&lt;h2&gt;Meeting up&lt;/h2&gt;
&lt;p&gt;John and I left straight from work to meet up with Brian at the entrance to &lt;a href=&quot;https://www.southsideslopes.org/the-neighborhood/south-side-park/&quot;&gt;South Side Park&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A number of other people were supposed to attend, but it turned out only one of them made it, representing &lt;a href=&quot;https://www.popcitymedia.com/&quot;&gt;Pop City&lt;/a&gt;. After waiting around for a while, we had to get going because of the danger of it getting dark before we would finish about an hour hike.&lt;/p&gt;
&lt;h2&gt;Starting&lt;/h2&gt;
&lt;p&gt;A last view back north toward the &lt;a href=&quot;https://en.wikipedia.org/wiki/South_Side_Flats&quot;&gt;South Side Flats&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/south-side-flats.jpg&quot; alt=&quot;Looking north to South Side Flats&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We started immediately with a staircase underneath the Mission Street Bridge:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/mission-street-bridge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sample street on the route:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Guided tour&lt;/h2&gt;
&lt;p&gt;Along the way, Brian served as a tour guide, telling us all about renovations and repairs of various staircases, as well as particular ones that still needed work (such as a handrail that was broken). Two years ago, when Abby and I did the Step Trek event, we followed the nice booklet and route map that had a lot of historical information, but I wasn&apos;t aware of all the details of what people like Brian of the South Side Slopes Neighborhood Association do to find funding for neighborhood improvements and keep the staircases functional. It&apos;s a challenge getting all the repairs done that are needed. That&apos;s why the Step Trek is so important as a fundraiser.&lt;/p&gt;
&lt;p&gt;Throughout the tour, we encountered quite a few people who were using the staircases, including runners as well as walking residents who used them simply as the most practical or only way to get from one place to another.&lt;/p&gt;
&lt;h2&gt;Lighting&lt;/h2&gt;
&lt;p&gt;One improvement that Brian was particularly proud of showing us was an entire staircase with LED lighting installed, in order to make it particularly usable at night. It also helps against freezing in the winter. (Unfortunately, as we walked down, I forgot to take photos of the LED lights visible from going up.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/leds.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/leds-view.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/leds-down.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/leds-down-more.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Alleys&lt;/h2&gt;
&lt;p&gt;Some alleys are actually public parts of the route!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/public-alleyway.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Churches&lt;/h2&gt;
&lt;p&gt;Lots of churches on this route, hence &quot;church route&quot;. These are historical reminders of the early days of Pittsburgh with its ethnic churches all over.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/church.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Railroad&lt;/h2&gt;
&lt;p&gt;Walking on a bridge over railroad tracks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/railroad-tracks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/railroad-bridge.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;More steps&lt;/h2&gt;
&lt;p&gt;Steps.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/steps-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/street-steps-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;St. Paul of the Cross Monastery&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/monastery.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s a nice view from the parking lot of the St. Paul of the Cross Monastery along the route (on Step Trek day you can enter). (Unfortunately, it was getting dark, so the photo is dark.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/monastery-view.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Billy Buck Hill&lt;/h2&gt;
&lt;p&gt;A lot of rather hilly roads in this neighborhood. A good workout!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/billy-buck-hill.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Views&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/view-down.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;South Side Park&lt;/h2&gt;
&lt;p&gt;Brian pointed out the successful planting of new trees as part of the improvement of South Side Park:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/trees.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We did not take the steps leading back through South Side Park, which are part of the official Step Trek route:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/south-side-park-steps.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Instead, we ventured into the woods. This way can be tricky because of the footing and possible mud, etc.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/south-side-park-woods.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The advantage is we could get to a field with a nice view:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/south-side-park-field.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Community garden&lt;/h2&gt;
&lt;p&gt;Brian showed us another great improvement to the neighborhood, a rather large &lt;a href=&quot;https://www.southsideslopes.org/the-neighborhood/community-garden/&quot;&gt;community garden&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/community-garden-above.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was rapidly getting dark:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-preview-2013/dark-view.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We hurried to get back to where we had started, under the Mission Street Bridge.&lt;/p&gt;
&lt;p&gt;Many thanks to Brian for leading this preview tour and answering our questions as we enjoyed a little hike with him through his neighborhood!&lt;/p&gt;
&lt;h2&gt;Other improvements&lt;/h2&gt;
&lt;p&gt;Brian told us about improvements to the Step Trek event itself. For one thing, they have an improved map booklet out, and also improved support for smartphones. These improvements are not just for the Step Trek event but will be usable for any visitors to the South Side Slopes neighborhood anytime, as well as a valuable reference for residents.&lt;/p&gt;
&lt;p&gt;For example, check out this &lt;a href=&quot;https://epro.maps.arcgis.com/apps/MapTour/index.html?appid=289aed3c6a1642f2b1fcedbf3f6abe42&amp;amp;webmap=612e8347783143feb1a1f055552235a4&quot;&gt;great interactive map site&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;For more information&lt;/h2&gt;
&lt;p&gt;Check out the main Web site of the &lt;a href=&quot;https://www.southsideslopes.org/&quot;&gt;South Side Slopes Neighborhood Association&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, they have an active &lt;a href=&quot;https://twitter.com/sssna&quot;&gt;Twitter account @sssna&lt;/a&gt; and &lt;a href=&quot;https://www.facebook.com/SouthSideSlopes&quot;&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Step Trek information&lt;/h2&gt;
&lt;p&gt;You can register early for the Step Trek &lt;a href=&quot;https://www.showclix.com/event/steptrek&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Remember, the Step Trek also includes open houses, refreshment stops, and of course you can just hang out in the South Side Slopes checking out food and shopping too. The annual event is a great way to help the neighborhood and experience unique geography and get some exercise in also!&lt;/p&gt;
&lt;p&gt;And at the entrance, there will be food trucks and entertainment, so that when you are done with however much hiking you want to do, you can hang out and relax.&lt;/p&gt;
&lt;p&gt;For more on the Step Trek as experienced in daylight, review my &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;blog coverage two years ago&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Pittsburgh South Side Slopes is a unique historical neighborhood that you should check out, and what better way is there than to explore it on foot on Step Trek day?&lt;/p&gt;
</content:encoded></item><item><title>Finally got a nice new ukulele: Mainland Classic Mahogany Concert</title><link>https://franklinchen.com/blog/2013/09/23/finally-got-a-nice-new-ukulele-mainland-classic-mahogany-concert/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/23/finally-got-a-nice-new-ukulele-mainland-classic-mahogany-concert/</guid><pubDate>Tue, 24 Sep 2013 03:10:46 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/mainland-classic-mahogany-concert.jpg&quot; alt=&quot;Mainland Classic Mahogany Concert ukulele&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Exactly two months after beginning to learn ukulele, I finally got a quality instrument for myself, ordered online from &lt;a href=&quot;https://web.archive.org/web/20210729022535/http://mainlandukuleles.com/&quot;&gt;Mainland Ukes&lt;/a&gt; in Indiana (yes, there are good ukuleles made outside of Hawaii).&lt;/p&gt;
&lt;p&gt;I first encountered Mainland because of an electric tenor that Linda lent me at &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;my very first Steel City Ukuleles meeting&lt;/a&gt;. This instrument had some very nice qualities I appreciated: its construction, appearance, and sound.&lt;/p&gt;
&lt;h2&gt;Why now?&lt;/h2&gt;
&lt;p&gt;I delayed two months because I wanted to get sufficiently proficient that I could actually tell what was good and what I like.&lt;/p&gt;
&lt;p&gt;Also, Abby&apos;s friend really wanted the banjolele back (I had been playing it mostly, amidst the other loaners), and having already &lt;a href=&quot;/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/&quot;&gt;signed up to perform in a gig soon&lt;/a&gt; (!), I really wanted to have my own instrument for that.&lt;/p&gt;
&lt;h2&gt;Why this &lt;a href=&quot;https://web.archive.org/web/20230208074534/https://shop.mainlandukuleles.com/product.sc?productId=9&quot;&gt;Mainland Classic Mahogany Concert&lt;/a&gt;?&lt;/h2&gt;
&lt;p&gt;After trying various instruments, I concluded that I really did want a &lt;em&gt;solid wood&lt;/em&gt; ukulele, rather than a laminate, because of the fuller sound. Given that, there was the question of a reasonable price point. I figured that I did not want to spend more than $300 on an instrument.&lt;/p&gt;
&lt;p&gt;Another thing was that I wanted to make sure the &lt;em&gt;intonation&lt;/em&gt; and &lt;em&gt;action&lt;/em&gt; were decent, and were set up with care. That meant ruling out buying from some random store without a specific person responsible for setting up.&lt;/p&gt;
&lt;p&gt;I looked up a lot of reviews and descriptions online, and also demonstration videos. Hawaii Music Supply was much mentioned, for example.&lt;/p&gt;
&lt;p&gt;But I found information that made me think Mainland was the way to go.&lt;/p&gt;
&lt;p&gt;Here are some reviews of Mainland instruments that I paid attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ianchadwick.com/ukuleles/mainland.htm&quot;&gt;tenors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gotaukulele.com/2010/05/mainland-mahogany-concert-slotted.html&quot;&gt;mahogany concert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comparing the woods, I liked the deep mahogany sound. Although the bright spruce-topped instruments sound great too, I prefer deep to bright, even if the classic ukulele sound is on the bright side.&lt;/p&gt;
&lt;p&gt;The sound of the mahogany just seemed gorgeous to me, and also the Mainland instruments are quite resonant:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Z0j4lCNoba0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/xJ6uG1l4jtE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Ordering&lt;/h2&gt;
&lt;p&gt;So I eventually contacted Mike of Mainland and asked him some questions, and then put in the order, and the instrument quickly arrived. I already love it!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt I did a reasonable job in evaluating (in person or from online information) various instruments before finally ordering one. This was not an impulse purchase.&lt;/p&gt;
&lt;p&gt;Now that I have a beautiful instrument, I feel committed to play it every day! I expect to enjoy this investment for many, many years to come!&lt;/p&gt;
</content:encoded></item><item><title>The Chess Improver: remember the importance of development</title><link>https://franklinchen.com/blog/2013/09/19/the-chess-improver-remember-the-importance-of-development/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/19/the-chess-improver-remember-the-importance-of-development/</guid><pubDate>Thu, 19 Sep 2013 12:34:10 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;I published my second post on the blog The Chess Improver. It covers my second round game in the current Pittsburgh Chess Club Tuesday night tournament, in which I won, but suffered for a bit because I neglected a basic principle in chess.&lt;/p&gt;
&lt;p&gt;&quot;Remember the importance of development!&quot;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Looking at the games of elite players, a club player is often bewildered by the nature of some of these games, in which development and castling are sometimes ignored in favor of weird flank attacks and the like. Sometimes this way of playing succeeds and sometimes it fails; furthermore, sometimes it succeeds when it is actually unsound, and sometimes it fails when it is actually sound, because of human fallibility on both sides.&lt;/p&gt;
&lt;p&gt;As a practical matter, even when it is sound to delay development, such as when accepting a gambit and believing that it should be possible to defend, the slightest inaccuracy may lead to headaches. I believe there is value in practicing both sides of gambits, in order to learn both how to attack and open lines, as well as how to defend. Also, it is instructive to see where one slip can completely change the evaluation of a position, while practical considerations might make one side easier to play.&lt;/p&gt;
&lt;p&gt;I present three recent games illustrating the challenges of playing in a queenless middlegame when behind in development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;One of my recent tournament games&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A Kamsky-Carlsen game from the Sinquefield Cup in which Kamsky got in trouble and lost&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The final Carlsen-Aronian game from the Sinquefield Cup in which Carlsen got in trouble (but Aronian self-destructed)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The main message is that all of us, whatever our level, should remember the basics of good chess play: developing pieces quickly to good squares and keeping the King safe. It is risky to try for a more aggressive setup through slower development with an intention of getting each piece (especially Knights) to a seemingly better place, because there may not be enough time.&lt;/p&gt;
&lt;p&gt;In a recent game on mine (round 2 of a 6 round tournament in progress at the Pittsburgh Chess Club), as White I accepted a gambit offered by my opponent (rated USCF 1998) on his third move, which quickly resulted in a curious queenless middlegame in which I had a King on e2, and my King side pieces could not be developed immediately, in return for being a Pawn up. (I saw people watching the game with funny looks on their faces.) Although the gambit is not wholly sound, which is why I was happy to enter the position, it presented practical opportunities for either side to go wrong. In particular, I made a couple of decisions that led to slowing down my development and offering a tactical target in the form of a poorly developed Bishop on e3. However, with the help of my opponent, I did end up consolidating and winning. But I could have saved myself a lot of trouble by simply focusing on accelerating my development after winning the Pawn. As it turned out, because of inaccurate play, I was defending from move 3 to 22 and only when I made my first non-defensive move did I actually consolidate.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th Fred Sorensen Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2013.09.10&quot;]
[White &quot;Chen, Franklin&quot;]
[Black &quot;Jansen, Peter&quot;]
[Result &quot;1-0&quot;]
[BlackElo &quot;1998&quot;]
[ECO &quot;B12&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;2164&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e4 c6 2. d4 d5 3. f3 { The so-called Fantasy Variation of the Caro-Kann.} 3… e5 $5 $201 { A sharp sacrifice.} 4. dxe5 Bc5 5. Nc3 Qb6 ( 5… Ne7 ) 6. Na4 { This was actually the limit of my opening theory knowledge in this line.} 6… Bf2+ $6 { Forcing an early Queenless middlegame that is objectively good for White, but is an interesting practical attempt.} ( 6… Qa5+ 7. c3 ) 7. Ke2 Qd4 8. Qxd4 Bxd4 $201 { Black has sacrificed a Pawn for activity in a Queenless middlegame and clearly has compensation. White still has two Bishops, a Knight, and two Rooks to somehow develop, while having to move the King one more time to let out the King side pieces.} 9. exd5 $5 { One way of trying to hang onto the Pawn, but at the cost of time. I evaluated the two main and objectively better alternatives but then decided to resolve the situation in the center.} ( 9. Bf4 { The best way of keeping the Pawn, defending the e5 Pawn and continuing development. The resulting positions are more tactical, however, with e5 being in danger of falling eventually.} 9… b5 10. Nc3 b4 11. Na4 $201 ) ( 9. f4 { Giving back the Pawn was quite possible and decent.} 9… dxe4 10. Be3 Bxe3 11. Kxe3 $201 { At the cost of returning the Pawn, White is now the one with the development advantage as well as a spatial advantage, and Black has weakened dark squares at c5 and d6. White has a small but clear advantage.} ) 9… Bxe5 10. dxc6 Nxc6 $201 11. Be3 $2 $10 { Inaccurate because White should be catching up on King side development immediately.} ( 11. Kf2 { White can consolidate by clearing the way immediately for the light squared Bishop to be developed.} ) 11… Bf5 12. c3 { White is barely holding the fort.} 12… Nge7 13. Kf2 $201 O-O-O { Natural but slow.} ( 13… Nd5 14. Bc5 O-O-O 15. Bb5 Nf4 16. Be3 Rhe8 ( 16… Nd5 ) 17. Nc5 Bd6 18. Nb3 a6 19. g3 axb5 20. Bxf4 Bxf4 21. gxf4 Bd3 ) 14. Bc4 { Frantically catching up on development.} 14… Nd5 { Better late than never, forcing White to give up the Bishop pair.} 15. Bxd5 Rxd5 16. Ne2 Re8 $10 $201 { White has nothing. The Knight looks funny on a4, and the Bishop on e3 is a target.} 17. Rhe1 $2 { The point was to give more support to the Bishop on e3, but it turns out that here and in the next moves, Black actually always had the option of taking the Pawn on h2.} ( 17. Nc5 Bd6 18. Nb3 Rde5 19. Ng3 { Striking immediately would have given White some trouble.} 19… Rxe3 20. Nxf5 Re2+ 21. Kf1 Bf8 22. Rb1 Rc2 23. Na1 Rd2 24. Nb3 ) 17… Bc2 $2 $16 { Not only missing the opportunity to regain the Pawn with advantage, but also misplacing the Bishop.} ( 17… Bxh2 18. g3 $2 { Trying to trap the Bishop fails.} 18… Ne5 ) 18. Nc5 $6 ( 18. b3 { Simple, effective defense, and allowing the Knight to come back to b2.} ) 18… Bd6 ( 18… Bxh2 { Black still could have regained the Pawn, but by now, White still has some advantage even with the returned Pawn, because of better placed pieces and the c Pawn is more important than the h Pawn.} 19. Nd4 Nxd4 20. Bxd4 Be5 21. Rac1 Bg6 22. Nb3 Bxd4+ { This computer-generated line shows just how tricky White&apos;s defensive task is. White is still under pressure.} 23. Nxd4 $201 ) 19. b4 $6 { Trying to keep the Knight active rather than retreating it.} ( 19. Nb3 { Best, not weakening the Queen side.} 19… Bxh2 $2 ( 19… Bxb3 20. axb3 Bxh2 { Black is in trouble.} 21. g3 h5 22. Red1 Rde5 23. Rd3 h4 24. gxh4 Rh5 25. Nd4 Rxh4 26. Nxc6 bxc6 27. Rxa7 ) 20. Nbd4 ) 19… b6 ( 19… Bxh2 $2 20. g3 h5 21. Nd4 Nxd4 { Again, Black&apos;s Bishop is not trapped, but Black will have to give back the Pawn to save it.} 22. cxd4 h4 23. gxh4 { White is still a Pawn up.} ) 20. Rac1 $2 ( 20. Nb3 { Natural and good.} 20… Bxh2 $2 21. Ned4 { Very strong.} 21… Bxb3 ( 21… Nxd4 $4 22. Nxd4 Bg6 23. g3 { Oops, Black&apos;s Bishop is trapped!} ) 22. axb3 Nxd4 23. Bxd4 Rxe1 24. Rxe1 $201 { Black is in big trouble.} ) 20… Bg6 21. Nb3 $201 { A critical position. White is on the verge of consolidating the Pawn advantage.} 21… Ne5 $2 { One inaccurate move by Black throws away the entire initiative gained in the first 20 moves in the game.} ( 21… Bxh2 { Regaining the Pawn equalizes.} 22. g3 Rh5 { Black saves the Bishop.} 23. Nd2 Bg1+ $1 24. Kxg1 Rxe3 25. Nf4 Rxe1+ 26. Rxe1 Re5 { A simplified, equal position.} ) 22. Nf4 $16 $201 { White&apos;s first non-defensive move so far in the entire game! It&apos;s amazing, but White had been defending against some immediate threat starting from move 3.} 22… Nd3+ 23. Nxd3 Rxd3 24. Bd4 $201 Rxe1 25. Rxe1 f6 26. Ke2 $201 { Planning to trap Black&apos;s Rook on d3 and win it.} 26… Bxh2 $4 $18 { Losing the exchange. Objectively, the game is over now.} ( 26… Be5 { Mandatory to save the Rook.} 27. Bxe5 ( 27. Nc1 { Trying to win the exchange gives up two Pawns and is not worthwhile.} 27… Rxc3 28. Bxc3 Bxc3 29. Rd1 Bxb4 $201 ) 27… fxe5 28. Rc1 $201 { White is a clean Pawn up but the game isn&apos;t just over.} ) 27. Nc1 $201 { Winning the exchange. The rest of the game is uneven because both players were moving quickly, but the win is just a matter of technique, pushing Black back.} 27… Bg3 28. Rh1 Rxd4 29. cxd4 Bd6 30. b5 Kb7 31. Nd3 h6 32. Rc1 Be8 33. a4 a6 34. Rb1 axb5 35. axb5 Bd7 36. Ke3 g5 37. Rh1 Bf8 38. Rb1 h5 39. f4 h4 40. fxg5 fxg5 41. Ne5 Be8 42. Ke4 g4 43. Rh1 h3 44. gxh3 gxh3 45. Rxh3 Bxb5 46. Rh7+ Ka6 47. d5 Ba4 48. Rf7 Bc5 49. Rf6 Kb7 50. d6 Bc2+ 51. Kf4 Kc8 52. d7+ Kc7 $201 { Black&apos;s flag fell as he made the final move, but Queening and checkmate were coming soon anyway.} 1-0`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Recently in the Sinquefield Cup, Gata Kamsky lost a game because he neglected natural and quick development in a queenless middlegame at White.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Sinquefield Cup&quot;]
[Site &quot;0:06:33-0:03:33&quot;]
[Date &quot;2013.09.13&quot;]
[EventDate &quot;2013.09.09&quot;]
[Round &quot;4&quot;]
[Result &quot;0-1&quot;]
[White &quot;Gata Kamsky&quot;]
[Black &quot;Magnus Carlsen&quot;]
[ECO &quot;C69&quot;]
[PlyCount &quot;118&quot;]&lt;/p&gt;
&lt;p&gt;1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Bxc6 dxc6 5.O-O f6 6.d4 Bg4 7.dxe5 Qxd1 8.Rxd1 fxe5 9.Rd3 Bd6 10.Nbd2 Nf6 11.Nc4 O-O 12.Nfxe5 Be2 13.Re3 Bxc4 14.Nxc4 Ng4 15.Re2 Bxh2+ 16.Kf1 Rae8 17.Nd2 Rd8 { Things look bad for White } 18.f3 Bg3 19.Kg1 Ne5 20.b3 Ng6 21.Nf1 Be5 22.c3 Bxc3 23.Bb2 Nf4 24.Rc2 Ba5 25.Ng3 g6 26.Rf1 Rd3 27.Kh2 Bb4 28.Ne2 Ne6 29.Nc1 Rd7 30.g3 Rfd8 31.Kg2 Kf7 32.f4 h5 33.Kh3 a5 34.Kg2 Nc5 35.Kf3 Nd3 36.Re2 Be7 37.Nxd3 Rxd3+ 38.Kg2 Bc5 39.Rc1 Rd2 40.Rc2 Rxe2+ 41.Rxe2 Rd3 42.Rc2 Bd6 43.Bc1 Be7 44.Kf2 a4 45.Rd2 Rxd2+ 46.Bxd2 axb3 47.axb3 c5 48.g4 b5 49.gxh5 gxh5 50.Bc3 b4 51.Bb2 Bh4+ 52.Ke2 Bg3 53.f5 h4 54.e5 h3 55.e6+ Ke7 56.Kf3 Bf4 57.Bg7 Bg5 58.Be5 c4 59.bxc4 Bf6 0-1`} /&amp;gt;&lt;/p&gt;
&lt;p&gt;And Magnus Carlsen tried to be clever with a dubious a5 and Bishop and Knight maneuvers that just left him with a terrible position after which he probably really should have lost.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;Sinquefield Cup&quot;]
[Site &quot;0:02:33-0:00:33&quot;]
[Date &quot;2013.09.15&quot;]
[EventDate &quot;2013.09.09&quot;]
[Round &quot;6&quot;]
[Result &quot;1-0&quot;]
[White &quot;Magnus Carlsen&quot;]
[Black &quot;Levon Aronian&quot;]
[ECO &quot;C84&quot;]
[PlyCount &quot;139&quot;]&lt;/p&gt;
&lt;p&gt;1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O Be7 6.Re1 b5 7.Bb3 O-O 8.a4 b4 9.d4 d6 10.dxe5 dxe5 11.Qxd8 Rxd8 12.Nbd2 h6 13.a5 Bc5 14.Bc4 Ng4 15.Re2 Be6 16.Bxe6 fxe6 17.h3 Nf6 18.Re1 Rab8 { A remarkably ugly position for White } 19.Nc4 Rb5 20.b3 Bd4 21.Bb2 Rc5 22.Ra2 Bxb2 23.Rxb2 Ne8 24.Ra2 Nd6 25.Nfd2 Nb7 26.Nf3 Kf7 27.Kf1 Kf6 28.Ra4 Nbxa5 29.Ne3 h5 30.Rea1 Rd4 31.Ne1 Ke7 32.f3 Rd2 33.Rd1 Rd6 34.Rda1 Kd7 35.Nd1 Rd2 36.Nf2 Kc8 37.Nfd3 Rb5 38.h4 Kb7 39.R1a2 Ka7 40.Kg1 Kb6 41.Kf1 g6 42.Kg1 Kb7 43.Kf1 Kc8 44.Nf2 Rd8 45.Ned3 Kb7 46.Ke2 Kb6 47.Ke3 Kb7 48.Nd1 Kc8 49.N1b2 Rd6 50.Ra1 Kd8 51.Nc4 Nxc4+ 52.bxc4 Rb8 53.c5 Rd7 54.Rxa6 b3 55.Rxc6 bxc2 56.Ne1 Ke7 57.Nxc2 Rb3+ 58.Ke2 Rb2 59.Rc1 Ra2 60.Ke3 Kf7 61.f4 Kf6 62.fxe5+ Kxe5 63.Ne1 Ra3+ 64.Kf2 Rd2+ 65.Kf1 Rd7 66.Nf3+ Kf4 67.Rxe6 g5 68.hxg5 Kg3 69.Rf6 Ra2 70.Ne5 1-0`} /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>My third meeting of the Steel City Ukuleles: finally ordered a new instrument</title><link>https://franklinchen.com/blog/2013/09/18/my-third-meeting-of-the-steel-city-ukuleles/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/18/my-third-meeting-of-the-steel-city-ukuleles/</guid><pubDate>Thu, 19 Sep 2013 03:13:09 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-2013-09-18.jpg&quot; alt=&quot;Steel City Ukuleles&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve entered my ninth week of playing ukulele: almost two months now!&lt;/p&gt;
&lt;p&gt;Two weeks ago, I wrote about my second meeting of the Steel City Ukuleles and &lt;a href=&quot;/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/&quot;&gt;why I decided to perform so quickly after joining and as a beginner to the ukulele&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s a report on my &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/132647892/&quot;&gt;third meeting&lt;/a&gt;, in which Sunny led a varied playlist.&lt;/p&gt;
&lt;h2&gt;Musical selection&lt;/h2&gt;
&lt;p&gt;Sunny chose a variety of songs from various genres. Again, this stuff was basically new to me.&lt;/p&gt;
&lt;h2&gt;Fingerpicking&lt;/h2&gt;
&lt;p&gt;One of the songs had a short fingerpicking intro, so I was happy to try the easy pattern.&lt;/p&gt;
&lt;h2&gt;Singing&lt;/h2&gt;
&lt;p&gt;I am now mostly able to play through the chords and changes and improvise my own strumming pattern in most of the songs we go through, so I&apos;ve been enjoying doing more and more singing in addition, although it still feels like talking and chewing gum at the same time.&lt;/p&gt;
&lt;p&gt;Here&apos;s where the advantage of the repetitive structure of this kind of music becomes obvious: there are many opportunities to &quot;correct&quot; what you&apos;re doing on the ukulele while learning a song, and then eventually switch the focus to the words.&lt;/p&gt;
&lt;h2&gt;Sight reading and preparation&lt;/h2&gt;
&lt;p&gt;Because I&apos;ve been busy with work and other things in the past several days, I only had time to briefly run over some of the songs on my own just before attending the meeting. I feel bad about not being maximally prepared, but sometimes that&apos;s just what happens. When I was a perfectionist in the past, I would prefer to not do something at all if I was not &quot;fully&quot; prepared, but now, I see that sometimes, at least, home &quot;preparation&quot; is not actually optimal anyway.&lt;/p&gt;
&lt;p&gt;Being completely unfamiliar with these songs, yes, I could ideally do the research and look up performances on YouTube, etc. (and I did in past weeks), but even then, how we play this music often differs anyway from what one might find. We might be in a different key, have simplified or different chords, etc.&lt;/p&gt;
&lt;p&gt;When playing in the Pittsburgh Recorder Society ensemble, I don&apos;t leave things to chance, but do practice parts ahead of time, but this is a different kind of music that is hard to do exactly that kind of preparation. In particular, the sheets we get don&apos;t have notes for the melodies, but just typically have text and then chord letters or tab symbols correlated loosely with the text, without any notation of duration. Basically, it&apos;s a lot of guesswork to figure out what to do with the printed information we are given! It&apos;s really best thought of as what music notation in the end is anyway: a lossy reminder of possible performance practice.&lt;/p&gt;
&lt;p&gt;So I&apos;ve found that other than scanning the chords and working on getting them and the changes, as technical preparation, the best thing to do is to just show up and learn on the fly, by ear, and jot down notes, and then go home and really work on the songs.&lt;/p&gt;
&lt;h2&gt;Ecofest gig&lt;/h2&gt;
&lt;p&gt;Sunny gave us more details about the logistics of our upcoming Ecofest gig that I signed up to take part in. We are going to receive nice little spiral-bound books containing the songs for performance.&lt;/p&gt;
&lt;h2&gt;Study&lt;/h2&gt;
&lt;p&gt;Since the last meeting, I&apos;ve invested in three technique books for ukulele. It is time to get truly serious and start working on technique.&lt;/p&gt;
&lt;h2&gt;New instrument&lt;/h2&gt;
&lt;p&gt;Yesterday, I finally just put in an order online for a new ukulele. I am going for high quality right off the bat, because I know that I am going to be serious about the instrument. It will not collect dust. I hope it will last me decades! I&apos;ll report more when I get it. I hope it arrives soon.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m definitely getting serious about ukulele. I&apos;ve invested not only in ukulele technique books, but also in a new instrument.&lt;/p&gt;
</content:encoded></item><item><title>On not celebrating Constitution Day this year, 2013</title><link>https://franklinchen.com/blog/2013/09/17/on-not-celebrating-constitution-day-this-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/17/on-not-celebrating-constitution-day-this-year/</guid><pubDate>Tue, 17 Sep 2013 12:42:26 GMT</pubDate><content:encoded>&lt;p&gt;For several years, I&apos;ve made a habit of observing &lt;a href=&quot;https://en.wikipedia.org/wiki/Constitution_Day_(United_States)&quot;&gt;Constitution Day&lt;/a&gt; by attending the annual exhibit and lecture at CMU. Last year I reported on &lt;a href=&quot;/blog/2012/09/18/is-constitution-day-constitutional/&quot;&gt;an interesting session about the very invention of Constitution Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://events.web.cmu.edu/ecal/event/137831259599848837&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://events.web.cmu.edu/ecal/event/137831259599848837&quot;&amp;gt;This year&amp;lt;/span&amp;gt;, the program for the event &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://cmlibblog.wordpress.com/2013/08/13/constitution-day-celebration/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://cmlibblog.wordpress.com/2013/08/13/constitution-day-celebration/&quot;&amp;gt;held at the Posner Center&amp;lt;/span&amp;gt; at CMU read:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
David Harris, distinguished faculty scholar and professor of law at the University of Pittsburgh School of Law, will deliver a keynote speech titled &quot;How Will America Be Remembered? A Constitution Day Journey Into the Future&quot; at approximately 3:30 p.m. Light refreshments will be served. An original copy of the Bill of Rights will be on display.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I ended up deciding not to attend today, for several reasons. One is that I have a lot of stuff to get done at work right now. But even if that weren&apos;t the case, my heart was not into celebrating Constitution Day this year.&lt;/p&gt;
&lt;h2&gt;How will America be remembered?&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Edward_Snowden-2.jpg/199px-Edward_Snowden-2.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Edward_Snowden-2.jpg/199px-Edward_Snowden-2.jpg&quot;&amp;gt;[image defunct]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Because the story is still far from over, I haven&apos;t said much on my blog about the events that have been unfolding for some months now since &lt;a href=&quot;https://en.wikipedia.org/wiki/Edward_Snowden&quot;&gt;Edward Snowden&lt;/a&gt; exposed information about the &lt;a href=&quot;https://en.wikipedia.org/wiki/2013_mass_surveillance_disclosures&quot;&gt;surveillance activities of the National Security Agency&lt;/a&gt;. He &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.theguardian.com/world/2013/jul/12/edward-snowden-full-statement-moscow&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.theguardian.com/world/2013/jul/12/edward-snowden-full-statement-moscow&quot;&amp;gt;explained his actions as justified by the violation of the 4th and 5th Amendments to the Constitution&amp;lt;/span&amp;gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
The 4th and 5th Amendments to the Constitution of my country, Article 12 of the Universal Declaration of Human Rights, and numerous statutes and treaties forbid such systems of massive, pervasive surveillance. While the US Constitution marks these programs as illegal, my government argues that secret court rulings, which the world is not permitted to see, somehow legitimize an illegal affair. These rulings simply corrupt the most basic notion of justice -- that it must be seen to be done. The immoral cannot be made moral through the use of secret law.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;When I do a Web search for &quot;Edward Snowden&quot; and &quot;Constitution&quot;, I mostly find pro-Snowden articles that affirm his point of view of the NSA programs as being unconstitutional. Here is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.newsworks.org/index.php/blogs/brandywine-to-broad/item/56244-nsa-leaks-by-edward-snowden-threaten-constitutional-self-government&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.newsworks.org/index.php/blogs/brandywine-to-broad/item/56244-nsa-leaks-by-edward-snowden-threaten-constitutional-self-government&quot;&amp;gt;one exception&amp;lt;/span&amp;gt; you may wish to read.&lt;/p&gt;
&lt;p&gt;I find it interesting that much of the media coverage of Edward Snowden&apos;s actions do not actually reference his claim of unconstitutionality, but focus on other matters, such as the nature of his education or possible ulterior motives for leaking, or whether his actions may prove harmful to national security or other interests. These may be interesting and important questions, but sidestep his primary claim and stated motive.&lt;/p&gt;
&lt;h2&gt;Too early to tell&lt;/h2&gt;
&lt;p&gt;I did not attend the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://wesa.fm/post/us-constitution-224-years-later-why-it-endures&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://wesa.fm/post/us-constitution-224-years-later-why-it-endures&quot;&amp;gt;David Harris&amp;lt;/span&amp;gt;, although it might have been interesting.&lt;/p&gt;
&lt;p&gt;I think Snowden&apos;s actions and their repercussions will add an extra twist to the age-old question of whether the Constitution is to be interpreted under &quot;original intent&quot; or as a &quot;living document&quot;, and even whether the Constitution should be &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2012/12/31/opinion/lets-give-up-on-the-constitution.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2012/12/31/opinion/lets-give-up-on-the-constitution.html&quot;&amp;gt;abandoned&amp;lt;/span&amp;gt;, if interpretations either way simply come to be seen as purely political game-playing to justify &quot;constitutional&quot; as simply meaning &quot;what I like&quot;. The most interesting thing right now is that prominent voices on both the &quot;left&quot; and the &quot;right&quot; (the libertarian wing) have united in denouncing the activities of the NSA as unconstitutional.&lt;/p&gt;
&lt;p&gt;This is not a political blog, and political theory is not my main area of interest or advocacy, but I thought it would be useful to make a few observations about current events for Constitution Day.&lt;/p&gt;
</content:encoded></item><item><title>New goals for a new season of the Pittsburgh Recorder Society</title><link>https://franklinchen.com/blog/2013/09/15/new-goals-for-a-new-season-of-the-pittsburgh-recorder-society/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/15/new-goals-for-a-new-season-of-the-pittsburgh-recorder-society/</guid><pubDate>Mon, 16 Sep 2013 00:40:25 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-society-2013-09-15.jpg&quot; alt=&quot;Recorder group&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was delighted to pay my membership dues at the first meeting of the new 2013-2014 season of the &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt;. I hadn&apos;t played recorder much since this July&apos;s Mideast early music workshop, because of my having &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;taken up ukulele the day after I got back from that&lt;/a&gt;; in fact, apart from that week-long workshop, I had not attended any meetings of the Pittsburgh Recorder Society since April (since I had to miss the May one on travel), and although there are meetings all through the summer as well, they only take place in the North Hills, which is kind of far for me.&lt;/p&gt;
&lt;p&gt;As with the &lt;a href=&quot;/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;opening of the last season&lt;/a&gt;, we have exciting new plans for this season. And I have my own new plans in addition.&lt;/p&gt;
&lt;h2&gt;Introductions&lt;/h2&gt;
&lt;p&gt;We have some new members, which is always great, so we went around briefly introducing ourselves.&lt;/p&gt;
&lt;h2&gt;Raising our level&lt;/h2&gt;
&lt;p&gt;What is really inspiring, though, is the large number of formerly &quot;new&quot; people who joined during last season and have stayed with the group, so that we are in fact growing in numbers. Not only that, we have all improved considerably in the past year. Our director Fred is so excited by how far we have come that he has plans for us to work on harder music and improve our individual technique and ensemble playing.&lt;/p&gt;
&lt;p&gt;Today we started working on music by Bach and Buxtehude: some lovely contrapuntal pieces. I look forward to our polishing up this stuff and really doing the old masters proud!&lt;/p&gt;
&lt;h2&gt;Bass recorder&lt;/h2&gt;
&lt;p&gt;In addition to continuing work on my technique and musicality, I decided that for this season, I would like to do play more on bass recorder. In the past year, I&apos;ve gravitated toward deliberately volunteering to play tenor lines, to experience the unique position of bringing out the inner voice as well as making it blend harmoniously with the others. For the new season, I have an interest in focusing on the bass line, to experience being the rock solid underpinning of ensemble music. So I told Fred on my plan, and he&apos;ll come up with some stuff for me to get into that.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve been playing recorder for two and a half years now, &lt;a href=&quot;/blog/2013/02/23/celebrating-two-years-of-playing-recorder/&quot;&gt;starting in spring 2011&lt;/a&gt;. I am happy to be continuing on, with the companionship of everyone in the Pittsburgh Recorder Society! Making music together is really special.&lt;/p&gt;
</content:encoded></item><item><title>Saying No: on not playing in the Pittsburgh Chess League this season for the CMU Tartans</title><link>https://franklinchen.com/blog/2013/09/15/saying-no-on-not-playing-in-the-pittsburgh-chess-league-this-season-for-the-cmu-tartans/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/15/saying-no-on-not-playing-in-the-pittsburgh-chess-league-this-season-for-the-cmu-tartans/</guid><pubDate>Sun, 15 Sep 2013 04:14:55 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://twitchfilm.com/assets/2011/07/120889.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://twitchfilm.com/assets/2011/07/120889.jpg&quot;&amp;gt;[image: Chess]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Later today, the first round of the 2013-14 season of the &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt; will start, and I will not be there to play.&lt;/p&gt;
&lt;p&gt;Here&apos;s why.&lt;/p&gt;
&lt;h2&gt;Last season&lt;/h2&gt;
&lt;p&gt;Last season, &lt;a href=&quot;/blog/2013/04/29/celebrating-the-victory-of-the-cmu-tartans-in-the-2012-13-pittsburgh-chess-league-season/&quot;&gt;I played in the Pittsburgh Chess League as a member of the CMU Tartans and we won&lt;/a&gt;. As I mentioned, out of the six rounds our team played in (one round was a bye for each team), I ended up playing only in the first two of those rounds, the &lt;a href=&quot;/blog/2012/10/14/pittsburgh-chess-league-round-2-natural-moves-are-often-bad/&quot;&gt;October&lt;/a&gt; and &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;November&lt;/a&gt;. After that, I simply kept running into trouble:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;having &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;schedule conflicts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/0130/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon&quot;&gt;getting sick&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;having to take care of Abby after an accident&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/04/06/comeback-from-pittsburgh-marathon-overtraining/&quot;&gt;being exhausted from marathon training&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One way or another, I kept on not being up to the prospect of spending up to &lt;em&gt;five hours&lt;/em&gt; on a single chess game on a Sunday afternoon from 2 PM to 7 PM. Repeatedly, when asked whether I could play in an upcoming round, I felt guilty about saying that I would play only in case of an emergency.&lt;/p&gt;
&lt;h2&gt;Saying &quot;No&quot;&lt;/h2&gt;
&lt;p&gt;This fall, I made the tough decision to leave the Pittsburgh Chess League, telling CMU Tartans team captain Jeff some weeks ago that I preferred not to be on the roster this year at all, even as an alternate.&lt;/p&gt;
&lt;p&gt;I&apos;ve had a lifelong difficulty with saying &quot;No&quot;, not only &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://zenhabits.net/say-no/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://zenhabits.net/say-no/&quot;&amp;gt;to others&amp;lt;/span&amp;gt; but also to myself.&lt;/p&gt;
&lt;p&gt;Heck, I even wrote a &lt;a href=&quot;/blog/2012/02/23/saying-no-in-order-to-say-yes/&quot;&gt;blog post well over two years ago about saying &quot;No&quot;&lt;/a&gt;, but I don&apos;t also optimally apply to myself my own advice!&lt;/p&gt;
&lt;p&gt;I&apos;ve had a habit of taking on all kinds of obligations or activities that stretched myself thin, resulting in subpar performance and dependability, and meanwhile, anxiety, guilt, and shame. People deserve better than this from me. I deserve better than this from me.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;I love chess, but it can be very time and energy-consuming, so I have to be careful about how much time I spend on it at all. This year, it turns out that I completely stopped playing chess in February, and &lt;a href=&quot;/blog/2013/09/12/my-first-post-on-the-chess-improver-the-value-of-thematic-complete-games-against-a-weaker-opponent/&quot;&gt;just came back now in September, along with becoming a new contributor to the Chess Improver blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actually looking at my calendar and my overall plans for the next half year, I decided that if I cannot be a dependable team member for the CMU Tartans (in terms of regularly showing up to play for the team as well as playing well for the team), then it is better not to be on the team at all.&lt;/p&gt;
&lt;p&gt;Furthermore, I also decided that after the current Pittsburgh Chess Club Tuesday night tournament concludes in October (I just finished the first two of six rounds in the 15th Fred Sorensen Memorial), I will, unlike last year, &lt;em&gt;not&lt;/em&gt; continue on in the following Tuesday night tournament (November-December), because based on how my schedule went in the past two years, those two months are very busy for me, and the last two years I barely stumbled to winter break alive, and performed terribly in the tournament last year, &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;ridiculously losing two won games&lt;/a&gt;, and also performed suboptimally in other projects I was doing. I&apos;m not going to let that happen this year. It is not only chess I am cutting out for November-December, but most likely some musical activities as well (yet to be finalized).&lt;/p&gt;
&lt;p&gt;It was better for the CMU Tartans to find a reliable replacement for me than for me to be undependable for them. Luka has left town, and I have dropped out, but the team has managed to get Joe Mucerino on board, so I hope all will go well for the team in the new season of the Pittsburgh Chess League with the reduced number of members.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Saying &quot;No&quot; to others and to myself is very difficult. I enjoy new projects and challenges. But if doing too much means not doing everything optimally well, then what&apos;s the point? So I&apos;ve taken a big step toward reclaiming my sanity by choosing not to be a part of the Pittsburgh Chess League this year.&lt;/p&gt;
</content:encoded></item><item><title>Back to French dance: potluck and party</title><link>https://franklinchen.com/blog/2013/09/14/back-to-french-dance-potluck-and-party/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/14/back-to-french-dance-potluck-and-party/</guid><pubDate>Sun, 15 Sep 2013 03:40:51 GMT</pubDate><content:encoded>&lt;p&gt;I went to a French potluck dance party at Lisa&apos;s. For the first time, I attended without Abby, because she was up at &lt;a href=&quot;https://www.snpjrec.com/&quot;&gt;SNPJ&lt;/a&gt; for an international folk dance camp; actually, we had a fairly low turnout (I counted fourteen people) because some others who would have come to the potluck are at the camp with her!&lt;/p&gt;
&lt;p&gt;It&apos;s been months since I was involved with French dance or music, because I gave all that up temporarily in order to focus on &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;learning ukulele starting less than two months ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The last French potluck dance party I attended was &lt;a href=&quot;/blog/2013/05/25/learning-the-congo-de-captieux-traditional-french-dance/&quot;&gt;almost four months ago&lt;/a&gt;. I really love this informal&lt;/p&gt;
&lt;h2&gt;Potluck&lt;/h2&gt;
&lt;p&gt;I made a huge batch of vegetables for the potluck.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2013-09-14/broccoli.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My simple recipe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;three bunches of broccoli with florets and stems (sliced thinly)&lt;/li&gt;
&lt;li&gt;extra virgin olive oil&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20130728162329/http://www.traderjoes.com/fearless-flyer/article.asp?article_id=149&quot;&gt;Trader Joe&apos;s South African smoke seasoning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;two tomatoes&lt;/li&gt;
&lt;li&gt;one onion&lt;/li&gt;
&lt;li&gt;one clove of garlic&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Dancing&lt;/h2&gt;
&lt;p&gt;Here&apos;s a photo of some dancing in action.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/french-potluck-2013-09-14/dancing.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I did not actually do much dancing this evening at all, because of my slow recovery from a &lt;a href=&quot;/blog/2013/09/06/was-it-worth-sprinting-to-a-terrible-fall-to-finish-25th-in-the-cmu-pretty-good-race-5k/&quot;&gt;really bad injury from a week ago&lt;/a&gt;. I only did one dance. My left arm, left hip, and right knee are in constant pain.&lt;/p&gt;
&lt;p&gt;I did join John by playing flute along with him on button accordion. By the way, he&apos;s planning to order a new one with more rows and more keys to play in.&lt;/p&gt;
&lt;p&gt;There were not enough women tonight for pairing up. It was joked that this is a &quot;Pittsburgh problem&quot;, because usually when it comes to dancing, there are not enough men!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Although I could not really dance tonight, I appreciated the opportunity to socialize and make music, and not feel so lonely at home alone while Abby was out of town!&lt;/p&gt;
</content:encoded></item><item><title>Finally playing Piazzolla&apos;s &quot;Oblivion&quot; on flute</title><link>https://franklinchen.com/blog/2013/09/13/finally-playing-piazzollas-oblivion-on-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/13/finally-playing-piazzollas-oblivion-on-flute/</guid><pubDate>Sat, 14 Sep 2013 03:49:09 GMT</pubDate><content:encoded>&lt;p&gt;Almost a year ago, I almost played Piazzolla&apos;s tango &quot;Oblivion&quot; on flute with piano accompaniment by Henry &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;at a party&lt;/a&gt; but I ended up playing melodica instead of flute.&lt;/p&gt;
&lt;p&gt;Having the opportunity to play with Henry again, this time I played it on flute, finally! I had found an oboe and piano arrangement which we used, sight reading it. I think the arranger filled in his own ornamentation into the melodic line. I only used that as a guide. Personally, when I play &quot;Oblivion&quot;, I improvise my own embellishments on the spot, depending on my mood. I play it very freely: it cries out for self-expression.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-10-23) Some other performances of &quot;Oblivion&quot;&lt;/h2&gt;
&lt;p&gt;In my &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;blog post of 2012&lt;/a&gt;, I embedded a lot of my favorite performances I found on YouTube of &quot;Oblivion&quot;. Here are some more.&lt;/p&gt;
&lt;h3&gt;Flute/cello/piano trio (Mathilde Caldérini, Zoé Karlikow, Aurèle Marthan)&lt;/h3&gt;
&lt;p&gt;Very beautiful performance, great unity and balance and expression from all three musicians.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/DDCB1GqwL0I&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;7 flute choir&lt;/h3&gt;
&lt;p&gt;An unusual 7-flute arrangement, with all parts played by the same person, Manja Thessin! A bonus is that the video is a beautiful demonstration of tango dancing by David and Kim Benitez of &lt;a href=&quot;https://www.tangomovement.com/&quot;&gt;Tango Movement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/qvzgzpft8Xg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;J&apos;oublie (voice), Elena-Lydia Stamellou&lt;/h3&gt;
&lt;p&gt;A lovely, pure voice with piano accompaniment.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vfP4UF_1cUY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Piano, improvisational, Gila Goldstein&lt;/h3&gt;
&lt;p&gt;A gorgeous, floating performance, very free, with lovely touches in filling in inner voices and adding drama effectively through contrast, detail, and improvisation.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/J5meF7u3HpY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Guitar duo, Katrin Klingeberg and Sebastián Montes&lt;/h3&gt;
&lt;p&gt;What a partnership! A passionate performance with contrasting moods, immense focus, really captures the spirit of the piece.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/gONVtoQaovQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Guitar solo, Ryuji Kunimatsu&lt;/h3&gt;
&lt;p&gt;Wow, one guy on guitar, all by himself, in his own arrangement, beautifully expressive.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2WZBOawjNiQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Melodica and piano, one musician simultaneously! Haim Shapira&lt;/h3&gt;
&lt;p&gt;A novelty item, definitely. There are compromises from trying to arrange to play both melodica and piano at the same time, but this is a fascinating free arrangement.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/-R_jdtCACQw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Piano solo arrangement, Viktoriya Yermolyeva&lt;/h3&gt;
&lt;p&gt;A very passionate performance on piano by the arranger herself.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/w1azi_oJGxY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Digital piano solo (Roland FP4),&lt;/h3&gt;
&lt;p&gt;Really quite good, based on Yermolyeva&apos;s arrangement.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/_Av7LcGRcd8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>RIP Ray Dolby: yes, I still have cassette tapes!</title><link>https://franklinchen.com/blog/2013/09/12/rip-ray-dolby-yes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/12/rip-ray-dolby-yes/</guid><pubDate>Fri, 13 Sep 2013 00:43:54 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ray_Dolby&quot;&gt;Ray Dolby&lt;/a&gt; has &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.theguardian.com/world/2013/sep/13/audio-pioneer-dolby-dies&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.theguardian.com/world/2013/sep/13/audio-pioneer-dolby-dies&quot;&amp;gt;died&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I know him for one thing, basically: invention of his noise reduction system, so valuable back in the days when almost of my music was on cassette tape (I had LPs also) and I was inseparable from my Sony Walkman.&lt;/p&gt;
&lt;p&gt;I still have a cassette tape deck with Dolby B, C, and S. I don&apos;t use it any more because I have long since given away almost all of my cassette tapes, both prerecorded and recorded off radio, LPs, or CDs (before I finally got a CD player late in college).&lt;/p&gt;
&lt;p&gt;Here are some of the few cassette tapes I still own, simply because I don&apos;t have LPs or CDs of these recordings by Sviatoslav Richter. I don&apos;t remember which music store I walked out of with these finds way back in the early 1990s! But it was a real treasure finding a variety of Schubert performances by Richter. For example, one of these Monitor label cassette tapes has an old performance of &lt;a href=&quot;https://en.wikipedia.org/wiki/Piano_Sonata_in_C_major,_D._840_%28Schubert%29&quot;&gt;Schubert&apos;s unfinished C major piano sonata, D. 840&lt;/a&gt; that differs considerably from his later performance that I have a CD of.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dolby/richter.jpg&quot; alt=&quot;Sviatoslav Richter on cassette tapes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I did some research. Apparently the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.classicalmusicguide.com/viewtopic.php?f=10&amp;amp;t=35776&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.classicalmusicguide.com/viewtopic.php?f=10&amp;amp;t=35776&quot;&amp;gt;Monitor release is of a 1961 performance&amp;lt;/span&amp;gt; and the later recording is from 1979.&lt;/p&gt;
&lt;p&gt;I like both performances, but the extreme slowness of the later recording makes it more eccentric, if in some ways deeper. But they really are quite different.&lt;/p&gt;
&lt;p&gt;Here is the 1961 on YouTube, sounding better than my noisy cassette tape ever did:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/JK1AYAyZUIY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;In any case, RIP, Ray Dolby: you improved the listening experience of countless cassette tape users for years!&lt;/p&gt;
</content:encoded></item><item><title>My first post on The Chess Improver: The Value of Thematic Complete Games Against a Weaker Opponent</title><link>https://franklinchen.com/blog/2013/09/12/my-first-post-on-the-chess-improver-the-value-of-thematic-complete-games-against-a-weaker-opponent/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/12/my-first-post-on-the-chess-improver-the-value-of-thematic-complete-games-against-a-weaker-opponent/</guid><pubDate>Thu, 12 Sep 2013 09:04:25 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;Today is my debut as a contributor to the blog The Chess Improver, thanks to the invitation of GM Nigel Davies to join in the sharing of ideas and observations about improving at chess (and even more generally, other endeavors as well). I will be regularly writing about chess there instead of here.&lt;/p&gt;
&lt;p&gt;Note that although the blog does not support comments, Nigel Davies hosts lively discussions about each blog post on Facebook through &lt;a href=&quot;https://www.facebook.com/nigel.davies1&quot;&gt;his account&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Both participant and observer&lt;/h2&gt;
&lt;p&gt;Since it turns out that I have just finished two of the six rounds in the current Pittsburgh Chess Club Tuesday night tournament, the 15th Fred Sorensen Memorial, I began my debut by using my first round game as material for a post to beginn a discussion about &quot;learning from imperfectly played games that, however, illustrate chess themes well&quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/15th-fred-sorensen-memorial/round-1.jpg&quot; alt=&quot;Round 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/15th-fred-sorensen-memorial/round-1-in-progress.jpg&quot; alt=&quot;Round 1 in progress&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I will have a post up next week about my second round game of this week, which was quite interesting. I will not always be writing about my own games on the blog, of course. They just happen to be, right now, a timely source of relevant material, since I am in the middle of a tournament.&lt;/p&gt;
&lt;h2&gt;Previous chess writings&lt;/h2&gt;
&lt;p&gt;Since I have not played tournament chess since &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;winning the 2013 Pittsburgh Chess Club Championship in February&lt;/a&gt;, if you have discovered this blog only recently, you may be interested in exploring my previous &lt;a href=&quot;/categories/chess/&quot;&gt;chess writings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(The original Chess Improver site is no longer active; the rescued article follows below.)&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;One of the paradoxes for the intermediate level chess improver is that very often, focusing on studying well-annotated top-level games, such as in the excellent anthology &lt;em&gt;The Mammoth Book of the World&apos;s Greatest Chess Games&lt;/em&gt;, backfires. This is because the games are so subtle and dominated by sharp tactical turns, that the chess improver find its hard to apply the lessons to everyday practical play.&lt;/p&gt;
&lt;p&gt;One good piece of advice that has often been given on this blog has been to study older games, such as those by José Capablanca and Akiba Rubinstein, in which the greats of the past faced weaker competition. But even this is not ideal, because &quot;weaker&quot; in this context is still stronger than the average club player today. I feel that what can be truly valuable is the study of games in which one can identify with the loser, but at the same time also aspire to be the winner (where the winner is not a super-strong Master or better).&lt;/p&gt;
&lt;p&gt;Through a lower-level game, one can learn how to see through the eyes of the thematic play of the stronger player while learning how to avoid the faulty defensive play of the weaker player. It is instructive to study how to gradually press home a plan against a clearly weaker opponent, because in club chess, what I hear often after a game is &quot;I knew I was better at this point but didn&apos;t know how to proceed&quot;. It is more important, at club level, to have a clear idea of how to transition well into the middlegame and endgame against imperfect opposition, than to know how to handle the best possible responses in some sharp opening line; if you don&apos;t know how to win against weaker moves and plans, how can you learn to win against strong ones?&lt;/p&gt;
&lt;p&gt;I offer the following game, which I played this week in the first round of a Tuesday night tournament at the Pittsburgh Chess Club, as an example of this kind of instructive game, from the opening through the endgame. (The players were rated USCF 1703 and 2164.) The game illustrates the successful use of the Rubinstein Variation of the English Opening by Black, through the classic Maroczy Bind Pawn structure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;how to create the bind in the opening, characterized by the c and e Pawns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;how to defend both the c and e Pawns against counterplay while continuing development into the middlegame&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;how to punish attempted too-late counterplay by winning material&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;how to finish off a won endgame (often just called &quot;a matter of technique&quot;, but it&apos;s not over till it&apos;s over, especially in club play)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The lessons for White involve seeing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;missed opportunities to play more actively in the opening&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;the dangers of creating exploitable Pawn weaknesses on the Queen side&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;the folly of attempting &quot;freeing&quot; play too late, when the opponent has already prepared to handle it&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;ChessGame pgn={`[Event &quot;15th Fred Sorensen Memorial&quot;]
[Site &quot;Pittsburgh Chess Club&quot;]
[Date &quot;2013.09.03&quot;]
[Round &quot;1&quot;]
[White &quot;Brown, Glenn&quot;]
[Black &quot;Chen, Franklin&quot;]
[Result &quot;0-1&quot;]
[BlackElo &quot;2164&quot;]
[ECO &quot;A30&quot;]
[TimeControl &quot;G/120&quot;]
[WhiteElo &quot;1703&quot;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nf3 c5 2. c4 Nf6 3. g3 d5 $201 { Aiming for the ambitious Rubinstein (reversed Maroczy Bind).} 4. cxd5 Nxd5 5. Bg2 Nc6 6. O-O e5 7. Nc3 Nc7 $5 { The Rubinstein, avoiding minor piece exchanges at the cost of a loss of time.} ( 7… Be6 8. Ng5 Qxg5 9. Bxd5 Bxd5 10. Nxd5 O-O-O $201 { Black is fine, but has allowed a trade of two minor pieces.} ) 8. d3 Be7 9. Bd2 $6 { Slow in this type of position.} ( 9. Nd2 { Standard and good, aiming for heavy pressure against Black&apos;s e5 Pawn by means of Nc4 and f4.} ) 9… O-O 10. Rc1 { Clearly aiming at Black&apos;s c5 Pawn.} 10… Be6 11. a3 f6 $5 { Thematic but loosening.} ( 11… Rc8 { Probably best.} ) 12. Na4 Na6 13. Be3 Nd4 { An important position. White can equalize here by means of many trades.} 14. Nd2 $2 { This passive move finally gives Black a better position.} ( 14. Nxd4 cxd4 15. Bxb7 dxe3 16. Bxa6 Bh3 $10 { The position is very simplified and equal.} ) 14… Qd7 $15 $201 { A dream position for Black.} 15. Re1 $2 { Passive, probably played to &quot;prevent&quot; …Nxe2+ or …Bh3, which were not real threats (yet).} ( 15. f4 $201 { White had to try this to gain counterplay against Black&apos;s attempted bind.} ) 15… Rac8 $201 { Black is catching up on fully thematic development.} 16. Nc3 $2 { Still passive without a clear plan.} 16… b5 $201 { Deciding to get aggressive and put White in a total bind.} ( 16… Nb8 $201 { Redeploying Black&apos;s worst piece was also good.} ) 17. Ncb1 $2 $17 ( 17. f4 exf4 18. Bxf4 Rfd8 $201 { Still great for Black, but at least White would be fighting.} ) 17… Rfd8 $201 { Black has achieved almost totally ideal development, with the exception of the Knight on a6, which will be redeployed shortly.} 18. b3 Nc7 $201 19. Bxd4 exd4 $201 { And Black has the Bishop pair as well as the thematic &quot;bind&quot; position with White&apos;s Queen side locked down and a Pawn at d4 discouraging e3 or e4 by White.} 20. a4 a6 21. Nf1 $2 $19 { More passive play.} 21… Nd5 $201 { Black probably has a positionally won game.} 22. axb5 axb5 23. e4 $4 $201 { Lashing out in desperation.} 23… dxe3 ( 23… Nb4 $201 { A computer-generated winning plan I didn&apos;t actually consider during the game, but effective because of White&apos;s broken Queen side, which will be lost in several moves.} ) 24. Nxe3 Nb4 $201 { White is going to lose the d3 Pawn.} 25. Bf1 Nxd3 $6 { Greedily taking the Pawn, but this was not actually the strongest move here.} ( 25… Na2 { Wins the exchange.} ) 26. Bxd3 Qxd3 27. Rc3 $201 Qg6 $6 { Consistent with my overall attitude from the opening, I decided to avoid a Queen trade. But it was best to just trade.} ( 27… Qxd1 28. Nxd1 Bf7 29. Rce3 Bf8 $201 { Black has a completely won game, only needing to make a passed c Pawn and see it through with the two Rooks and two Bishops.} ) 28. Qe2 $2 b4 29. Rcc1 Bxb3 $201 { Black has swallowed up a second Pawn and is totally winning.} 30. Nc4 Bf8 31. Nbd2 $201 { The only question now is, what is the best way for Black to finish off this game?} 31… Bxc4 { I decided to just simplify rather than retain the two Bishops.} ( 31… Re8 { Taking control of the e file was good.} 32. Qf1 Rxe1 33. Qxe1 Re8 34. Qf1 Ba4 $201 ) 32. Qxc4+ Qf7 33. Qxf7+ ( 33. Nb3 { Attempt at blockade was best.} 33… Qxc4 34. Rxc4 Rd3 35. Rb1 g5 $201 { Black is winning, of course. But it will take time to break through.} ) 33… Kxf7 34. Nc4 Rd4 $201 { White has a bit of a blockade going, but Black has plenty of time to activate the dark-squared Bishop and make it count.} 35. Kg2 Re8 { Basic endgame play: trade off pieces.} 36. Rxe8 Kxe8 $201 { All that is required now for Black is to get the King active and the Bishop active.} 37. Kf3 Kd7 38. Ke3 Kc6 $201 { Black&apos;s King is marching in.} 39. Na5+ Kb5 40. Ra1 Rd7 41. Nb3 c4 $201 { The end is so near.} 42. Nd4+ Kb6 43. Ne2 Bc5+ $201 { Black&apos;s Bishop is finally free!} 44. Kf3 Rd3+ 45. Kg2 Rd2 ( 45… Kb5 { It was already a good time to just continue marching.} ) 46. Kf1 c3 $201 47. Ke1 Kb5 48. Rb1 Kc4 $201 49. Rc1 g5 { Trying to be cute by blocking White from moving the Knight anywhere at all. Anyway, White is lost.} ( 49… Rxe2+ $201 { Sacrificing the exchange to immediately go for a Queen was already sufficient.} 50. Kxe2 b3 $201 { And Black will Queen soon.} ) 0-1`} /&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Was it worth sprinting to a terrible fall to finish 25th in the CMU Pretty Good Race 5K?</title><link>https://franklinchen.com/blog/2013/09/06/was-it-worth-sprinting-to-a-terrible-fall-to-finish-25th-in-the-cmu-pretty-good-race-5k/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/06/was-it-worth-sprinting-to-a-terrible-fall-to-finish-25th-in-the-cmu-pretty-good-race-5k/</guid><pubDate>Sat, 07 Sep 2013 02:01:27 GMT</pubDate><content:encoded>&lt;p&gt;On a pleasant Friday late afternoon, not too hot or humid, I ran my 9th CMU Pretty Good Race 5K (and this was Abby&apos;s 3rd).&lt;/p&gt;
&lt;p&gt;Two weeks ago, I did the Run Around The Square 5K in my &lt;a href=&quot;/blog/2013/08/24/reflections-on-my-slowest-run-around-the-square-5k-in-13-years/&quot;&gt;slowest time in 13 years&lt;/a&gt;. I was happy to be finishing a 5K race at all. I&apos;ve improved some in fitness in the past two weeks, but not enough to make a big difference for today.&lt;/p&gt;
&lt;p&gt;Like last year, I was going into this race not optimally fit. However, given that I just ran a 5K two weeks ago, I had a good idea of what I could do in another 5K, how hard I could push myself. Like I said last year, &lt;em&gt;&quot;It&apos;s not about how fast I went, but how much I gave of what I had&quot;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I never expected just how much I would give this year.&lt;/p&gt;
&lt;h2&gt;Before the race&lt;/h2&gt;
&lt;p&gt;I walked over from my office across Flagstaff Hill to Schenley Park.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2013/flagstaff-hill.jpg&quot; alt=&quot;Flagstaff Hill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For some reason, Abby decided to use our dinky Razor kick scooter to come in from home for the race. Unfortunately, she showed up before the race with a bloody hand and knee, having had a nasty fall while using the scooter on the way to Schenley Park. Oops. She&apos;s been tired a lot lately (I previously mentioned her dangerous &lt;a href=&quot;/blog/2013/08/24/reflections-on-my-slowest-run-around-the-square-5k-in-13-years/&quot;&gt;decline in fitness all year&lt;/a&gt;) and was regretting signing up to do the Pretty Good Race with me.&lt;/p&gt;
&lt;p&gt;She tried to be a good sport despite the accident coming in.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2013/abby-before.jpg&quot; alt=&quot;Abby before race&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here I am in orange:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2013/franklin-before.jpg&quot; alt=&quot;Franklin before race&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Weather conditions&lt;/h2&gt;
&lt;p&gt;Temperature and humidity were much, much better than last year. That promised a considerable time advantage relative to last year.&lt;/p&gt;
&lt;h2&gt;The plan&lt;/h2&gt;
&lt;p&gt;As with last year, my plan was to make the most of the final downhill part of the course, as well as go for a sprint to pass as many people as I possibly could during the final brief but terrible uphill to the finish line. I was going to have to pace myself intelligently to have something left for the end.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;p&gt;I paced myself, not going too fast in the first half of the race. I almost entirely ran my own slow race, as there was nobody else really near my steady pace.&lt;/p&gt;
&lt;p&gt;After turning around, I starting going hard downhill. I was worried that I didn&apos;t see Abby at all during the race. At some point, I passed her walking back to the start. She must have dropped out very early on.&lt;/p&gt;
&lt;p&gt;I was pushing really hard in the final part of the race. Near the uphill finish, I saw a guy slowing down, and he raised his arms as though celebrating finishing. This gesture instantly caused me to go into a sprint more furious than any other sprint finish in my entire life. I made up a huge distance and reached the finish chute just a step before he did. And as I did so, the dry gravel and my leaning too far forward caused me to slip and fall, really, really badly. But I had finished ahead of the guy. Mission accomplished.&lt;/p&gt;
&lt;h2&gt;Injuries&lt;/h2&gt;
&lt;p&gt;I lay stunned and in terrible pain for a few seconds. I had to check whether I was seriously broken. It felt like I was not. I was rather injured, but miraculously, no broken bones. I had managed to break my fall not with my teeth or eyes or fingers, but with my left thigh, right knee, left forearm, left palm, and right palm. I was quite badly scraped and bruised.&lt;/p&gt;
&lt;p&gt;I heard people asking me, &quot;Was it worth it?&quot; I didn&apos;t know how to answer that. I moved on, stumbling in pain as I tried to catch my breath. I had done what I do, give the race my all, and then some. I was gouged and bleeding, and my right knee had swollen up hugely almost instantly.&lt;/p&gt;
&lt;p&gt;This wasn&apos;t the worst falling injury I&apos;ve had in my life, but it&apos;s probably my worst since a fall off a bike (also spinning off loose gravel) twenty years ago.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2013/left-palm.jpg&quot; alt=&quot;Left palm&quot; /&gt;
&lt;img src=&quot;../../assets/images/pretty-good-race-2013/left-thigh.jpg&quot; alt=&quot;Left thigh&quot; /&gt;
&lt;img src=&quot;../../assets/images/pretty-good-race-2013/right-knee.jpg&quot; alt=&quot;Right knee&quot; /&gt;
&lt;img src=&quot;../../assets/images/pretty-good-race-2013/left-arm.jpg&quot; alt=&quot;Left arm&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby returned, and had to explain to the volunteers that she wasn&apos;t just finishing, but had dropped out earlier. While I was trying to clean myself up some, she said that she had fallen early on during the race and decided that that was enough and she wasn&apos;t going to finish the race. So this is her first Did Not Finish (DNF) in a race.&lt;/p&gt;
&lt;h2&gt;Feeling lucky&lt;/h2&gt;
&lt;p&gt;The main thing I kept on feeling while we walked back to my office and then back to my car (very slowly; everything around my right knee was just messed up) and went home for both of us to clean up from our injuries: &lt;em&gt;luck&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It could have been much worse for both of us. My most severe damage was not even to my right knee area (even though walking was difficult) but really my left hand, whose heel of palm was basically scraped away and bruised and my wrist was messed up. But no broken fingers or teeth or wrists or ankles. Same with Abby: lucky us!&lt;/p&gt;
&lt;h2&gt;Was it worth it?&lt;/h2&gt;
&lt;p&gt;I finished officially tied for 25th place with the guy I actually beat, both of us registering as finishing in 25:28 in the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/2013.html&quot;&gt;official race results&lt;/a&gt;. Well, I ran 37 seconds faster than last year. That&apos;s not nothing, although two years ago I ran 24:36.&lt;/p&gt;
&lt;p&gt;But I knew the time was not going to be great: I just ran 25:36 in Run Around The Square two weeks ago. The real point was that like last year, I gave it my all.&lt;/p&gt;
&lt;p&gt;But was it worth getting injured for sprinting for no glory whatsoever? It&apos;s not like I was running for first place or something &quot;important&quot;. Or is that the wrong way to think about it? Why is it worth trying your best for first place but not for 25th place instead of 26th place? Let&apos;s ignore the (unfortunate?) fact that in some circles, first place is associated with large monetary rewards, when pondering that question.&lt;/p&gt;
&lt;p&gt;A different question would be, &quot;If you knew you would get this injured from this sprint, would you have done it anyway?&quot; I guess the question is &quot;no&quot;. But how could I &lt;em&gt;know&lt;/em&gt;? There is always risk. There is risk crossing the street, or driving on the turnpike. I&apos;ve never fallen during a sprint before.&lt;/p&gt;
&lt;p&gt;Another different question: &quot;How will this accident change how you run in the future?&quot; I suppose my answer is, I&apos;ll be more careful to keep my balance. But am I going to stop the sprinting at the end of a race? I don&apos;t see how I can. &lt;em&gt;It is in those moments when I can barely breathe and the world is becoming a blur that I am living with most intensity and purity.&lt;/em&gt; These moments don&apos;t come often, but when they are available for the taking, why would I not accept these gifts?&lt;/p&gt;
&lt;p&gt;I will keep sprinting. I will keep trying to beat whoever is beatable in front of me. That&apos;s part of the whole point of racing. I admit to feeling a little odd to being so serious about it when others do it much more casually (and it&apos;s their right to do so and they&apos;re probably smarter and more balanced than me, I concede). But I don&apos;t race often, so when I do, I try to make it matter.&lt;/p&gt;
&lt;p&gt;So my response is: I will need to work on maintaining balance and running on tricky surfaces.&lt;/p&gt;
&lt;p&gt;Also, Abby and I decided we should make sure to have a first aid kit around in the future.&lt;/p&gt;
&lt;h2&gt;The next race&lt;/h2&gt;
&lt;p&gt;My eleventh Great Race 10K is coming up. I want to do considerably better than I did last year.&lt;/p&gt;
&lt;p&gt;Meanwhile, I have a lot of healing to do. I am more of a wreck right now than the post-race photos indicate. Things are all swollen and messed up and probably will be for an entire week or two. It&apos;s just amazing I haven&apos;t broken bones or ligaments.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Abby and I simultaneously had unfortunate falling accidents today. I was proud to have run as hard as I could given my fitness and will. I don&apos;t regret sprinting for 25th place, even if it cost me this time.&lt;/p&gt;
&lt;p&gt;Meanwhile, we both need to heal.&lt;/p&gt;
</content:encoded></item><item><title>My second meeting of the Steel City Ukuleles: why I already signed up to perform before being ready</title><link>https://franklinchen.com/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/</guid><pubDate>Thu, 05 Sep 2013 02:40:45 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve entered my seventh week of playing ukulele.&lt;/p&gt;
&lt;p&gt;Last month, &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;I wrote about&lt;/a&gt; finally starting to learn to play ukulele and then attending my first meeting of the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/&quot;&gt;Steel City Ukuleles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I just attended &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/117972052/&quot;&gt;my second meeting&lt;/a&gt; after having improved a huge amount in two weeks (oh, the joy of being a beginner).&lt;/p&gt;
&lt;p&gt;Adam led a great playlist of songs for us to go through.&lt;/p&gt;
&lt;h2&gt;Steel City Ukuleles T-shirt&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-shirt.jpg&quot; alt=&quot;Franklin wearing Steel City Ukuleles shirt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The first thing I did upon arrival at the session was to pay for and put on the Steel City Ukuleles T-shirt that Sunny said was for sale at my last meeting. I picked the blue one (there is also a red one). Very nice, and I&apos;m proud to be wearing it!&lt;/p&gt;
&lt;h2&gt;Singing&lt;/h2&gt;
&lt;p&gt;Two weeks ago, at my first meeting, I was only on my fifth week of playing the ukulele at all, and struggled to keep up with chords and their changes in real time while also strumming, much less singing, so I did very little singing (especially since I barely knew most of the songs).&lt;/p&gt;
&lt;p&gt;This week, having some of the finger work more under control, I started trying to start singing along sometimes. One thing I forgot to emphasize about why I&apos;ve always been attracted to the prospect of playing guitar or ukulele is that I like to sing, and the drawback of playing wind instruments (as I have spent the last two years playing recorders and flutes) is that I can&apos;t do that while also singing. And I love the idea of being able to accompany myself while singing, being my own harmonic and rhythmic support. (This is also a great thing about piano, but I have barely any piano competence, unfortunately.)&lt;/p&gt;
&lt;h2&gt;Music new to me and the transformation of taste&lt;/h2&gt;
&lt;p&gt;I&apos;m learning all kinds of songs of all kinds of genres. This is a totally different world from what I&apos;m used to. I feel myself undergoing a transformation the same way I did when I started playing recorder. Before playing recorder, I had relatively little interest in Baroque or Renaissance music. It was, frankly, &quot;boring&quot;. But when forced to actually play it, I began to understand and feel it and enjoy the subtleties of expression, from the point of view of the performer (and even the composer). In fact, I would admit that as a result, I have come to enjoy playing music rather than passively listening to it.&lt;/p&gt;
&lt;p&gt;I&apos;m experiencing the same transformation of my perception and taste and enjoyment now. There&apos;s all this stuff that I haven&apos;t much listened to, much less played or sung, whether blues, soul, rock, indie pop, country. Not all of the songs we go through are exciting to me, but I&apos;ve been impressed by how many have &lt;em&gt;something&lt;/em&gt; that is catchy that I can enjoy and express. These are songs that in many cases, if I didn&apos;t actively strum or sing, would be boring to me.&lt;/p&gt;
&lt;h2&gt;Still need my own instrument&lt;/h2&gt;
&lt;p&gt;I&apos;m still using the loaner banjolele, because the intonation of my Lanikai soprano ukulele is too far off (eventually I should figure out how to fix it).&lt;/p&gt;
&lt;p&gt;I returned Linda&apos;s electric tenor and she lent me another instrument, an inexpensive concert ukulele (pictured):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-city-ukuleles-shirt.jpg&quot; alt=&quot;Franklin wearing Steel City Ukuleles shirt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s been a good thing for me to try out different instruments, before I buy a concert sized ukulele of my own, which I should do soon, because just a week ago, I signed up to perform in a gig!&lt;/p&gt;
&lt;h2&gt;Small group and solo playing&lt;/h2&gt;
&lt;p&gt;What has been really inspiring and was seeing some of the members of the group volunteer to sing and play something they wanted to share with the rest of us. I enjoy appreciating the vulnerability and individuality of soloing.&lt;/p&gt;
&lt;p&gt;For example, Heidi, Amber, and Sunny performed a song as a trio, with beautiful ukulele playing and singing in harmony.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/heidi-amber-sunny.jpg&quot; alt=&quot;Heidi, Amber, and Sunny&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;I decided to perform before I was ready&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ecofest-2013.png&quot; alt=&quot;Wilkins Center Community Center Ecofest 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last week, Sunny put out a call for volunteers to perform for a gig in a month, at the second annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wsccpgh.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wsccpgh.org/&quot;&amp;gt;Wilkins Center Community Center&amp;lt;/span&amp;gt; Ecofest.&lt;/p&gt;
&lt;p&gt;I remembered something that has changed my life in the past couple of years: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.stevenpressfield.com/2010/07/start-before-youre-ready/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.stevenpressfield.com/2010/07/start-before-youre-ready/&quot;&amp;gt;start before you&apos;re ready&amp;lt;/span&amp;gt;. In this case, it meant that since there was an opportunity to perform in a low-key, low-stress environment, I should seize it even though I don&apos;t at all feel &quot;ready&quot;. In the past two years, I have done dozens of things before feeling &quot;ready&quot;, while in the last three decades, I accomplished very little in my life because I never felt &quot;ready&quot;. I learned in two years that perfectionism is the enemy, and that you have to just go out there and do stuff, and ideally as early as possible, to get early feedback (external or internal) for rapid improvement.&lt;/p&gt;
&lt;p&gt;So I signed up to perform in the Ecofest on October 5. If you live in the Pittsburgh area, I invite you to come see some subset of us from the Steel City Ukuleles perform at the Ecofest in Regent Square! I&apos;ll write up more details later.&lt;/p&gt;
&lt;p&gt;Deciding to perform means committing to getting a lot better in a month, of course. It also means not slacking on getting my own quality instrument. Finally, it means devoting time to official rehearsals, time that will have to come out of somewhere. (The rehearsal dates have not yet been set.)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m starting to settle in on playing ukulele. In my seventh week now, I&apos;ve gotten far enough to know for sure that I want to continue playing and get serious. To prove that I am serious, I am planning to perform already in a month.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-09-18)&lt;/h3&gt;
&lt;p&gt;Two weeks later: a report on &lt;a href=&quot;/blog/2013/09/18/my-third-meeting-of-the-steel-city-ukuleles/&quot;&gt;my third Steel City Ukuleles meeting&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>OpenHack Pittsburgh: learning Elixir test-driven and package-publishing</title><link>https://franklinchen.com/blog/2013/08/26/openhack-pittsburgh-learning-elixir-test-driven-and-package-publishing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/26/openhack-pittsburgh-learning-elixir-test-driven-and-package-publishing/</guid><pubDate>Mon, 26 Aug 2013 22:09:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been a long time since I went to an &lt;a href=&quot;http://openhack.github.io/pittsburgh/&quot;&gt;OpenHack Pittsburgh&lt;/a&gt; meeting. The last time was &lt;a href=&quot;https://franklinchen.com/blog/2013/03/25/openhack-pittsburgh-exploring-scala-odds-and-ends/&quot;&gt;five months ago&lt;/a&gt;. On June 24, there was an &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/120200292/&quot;&gt;OpenHack Pittsburgh&lt;/a&gt; held at &lt;a href=&quot;http://www.4moms.com/&quot;&gt;4moms&lt;/a&gt;, but I really needed to stay home and take it easy that evening, because of my busy schedule later in the week, including attending a &lt;a href=&quot;/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/&quot;&gt;PittJUG meeting&lt;/a&gt; and preparing a &lt;a href=&quot;/blog/2013/06/26/pittsburgh-python-night-of-the-favorite-module/&quot;&gt;Pittsburgh Python talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/120201842/&quot;&gt;This August meeting of OpenHack Pittsburgh&lt;/a&gt; was held at &lt;a href=&quot;http://www.modcloth.com/&quot;&gt;ModCloth&lt;/a&gt;, which I had never been to. It&apos;s in Crafton, which is a place I&apos;ve never been before, nearly half an hour drive from Pittsburgh. Because of worries about driving there near rush hour after work, I probably would not have signed up to attend had it not been for &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://justinxreese.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://justinxreese.com/&quot;&amp;gt;Justin&amp;lt;/span&amp;gt;, the organizer of OpenHack Pittsburgh.&lt;/p&gt;
&lt;p&gt;What happened was that he asked for feedback about who was planning to work on what, and said he planned to learn some &lt;a href=&quot;http://elixir-lang.org/&quot;&gt;Elixir&lt;/a&gt;, a fairly new programming language built on top of the &lt;a href=&quot;http://www.erlang.org/&quot;&gt;Erlang&lt;/a&gt; runtime. Since this language had been on my list of things to look into, I decided that learning loves company, so I proposed to learn some Elixir in a test-driven way!&lt;/p&gt;
&lt;p&gt;What does that mean?&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;How to learn a programming language&lt;/h2&gt;
&lt;p&gt;I have written code in probably around fifty (50) programming languages. I&apos;m not kidding, and I&apos;m not proud, but this is simply a fact of my having done programming since 1982, thirty-one (31!!) years ago. Let&apos;s face it: languages come and go. I have personally sat at an IBM &lt;a href=&quot;https://en.wikipedia.org/wiki/Keypunch&quot;&gt;keypunch&lt;/a&gt; machine punching out cards for my COBOL and Fortran code.&lt;/p&gt;
&lt;p&gt;As with human languages, the fact is that to be truly productive in a language requires much more than learning some syntax and semantics. It requires actually writing and running and fixing code, and in the context of a realistic project.&lt;/p&gt;
&lt;p&gt;I&apos;ve learned through trial and error that the most common ways of learning a programming language, like the most common ways of learning human languages (other than one&apos;s first language), are terribly inefficient and misleading, resulting in minimal competence. I mean, reading through books, typing into a REPL, submitting a single file to a compiler or interpreter, etc.&lt;/p&gt;
&lt;p&gt;I feel that we should learn programming languages using a variety of approaches. Yes, the academic bottom-up semantics-based approach is critical in the long run, to avoid wasting a lot of time on pointless misunderstandings. Exploration in a REPL can be very rewarding. But I think what is often missing is the &lt;em&gt;biggest possible picture&lt;/em&gt;: immediately seeing how to write a program that is integrated with a test framework, uses libraries, is exportable and publishable publicly as a library, can be submitted to a continuous integration server, is editable in a decent editor or IDE, etc.&lt;/p&gt;
&lt;p&gt;Without seeing the biggest possible picture, one usually gets a horribly inaccurate picture of what it is like to program in a particular language ecosystem. (I will be writing more about this subject of pedagogy later.)&lt;/p&gt;
&lt;h2&gt;My proposal&lt;/h2&gt;
&lt;p&gt;The last couple of languages I have learned in recent years, I slowly came to work with in a more efficient way than in the past, because I focused on matters such as testability. In particular, as I grew to wholly adopt TDD when writing any code at all in any language, it became clear to me that the best way to learn a new language must be in a test-driven way.&lt;/p&gt;
&lt;p&gt;Here&apos;s an analogy: I believe the best way to learn a human language is to dive into how to be able to converse in some coherent way right off the bat. &lt;a href=&quot;http://www.fluentin3months.com/4-hour/&quot;&gt;Tim Ferriss and others&lt;/a&gt; have exploited this idea to &lt;em&gt;drive&lt;/em&gt; the learning of what is most relevant in &lt;a href=&quot;http://www.fourhourworkweek.com/blog/2007/11/07/how-to-learn-but-not-master-any-language-in-1-hour-plus-a-favor/&quot;&gt;grammar&lt;/a&gt; and &lt;a href=&quot;http://www.fourhourworkweek.com/blog/2009/01/20/learning-language/&quot;&gt;vocabulary&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the past, I learned human languages in a terrible way, taking lots of courses, but never actually getting fluent in everyday use. This is how we tend to learn &quot;foreign&quot; programming languages. My proposal is that learning a new programming language should involve getting as quickly as possible up to speed on a &lt;em&gt;minimum viable publishable library&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That the software artifact should be a &lt;em&gt;library&lt;/em&gt;, and not just some executable program, is vital, because it means having to adhere by whatever standards apply to real-world API design in the language ecosystem, producing something that client code can import and call.&lt;/p&gt;
&lt;p&gt;That it should be &lt;em&gt;publishable&lt;/em&gt; is vital because it means adhering to standards of testing, of discovery through metadata, and enabling easy use by a client.&lt;/p&gt;
&lt;h2&gt;My concrete example with learning Elixir tonight&lt;/h2&gt;
&lt;h3&gt;Prior background in Erlang and Elixir&lt;/h3&gt;
&lt;p&gt;I went to OpenHack Pittsburgh &lt;em&gt;never&lt;/em&gt; having yet read any Elixir language material, never having written Elixir code, not even &quot;hello, world&quot;. The only things I had done before tonight:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I first heard of Erlang nearly two decades ago, and when I saw it, I was turned off by the Prolog-style syntax, and it didn&apos;t seem relevant to anything I was doing at the time, so I ignored it.&lt;/li&gt;
&lt;li&gt;I intended to learn some Erlang earlier this year, but made little progress before putting it aside: I went to the free book &lt;a href=&quot;http://learnyousomeerlang.com/&quot;&gt;&quot;Learn You Some Erlang for Great Good!&quot;&lt;/a&gt; and downloaded the code and &lt;a href=&quot;https://github.com/FranklinChen/learn-you-some-erlang&quot;&gt;got it to compile&lt;/a&gt;, but did not proceed any further.&lt;/li&gt;
&lt;li&gt;I installed Elixir on my Mac &lt;a href=&quot;http://elixir-lang.org/install.html&quot;&gt;using Homebrew&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I installed an &lt;a href=&quot;https://github.com/elixir-lang/emacs-elixir&quot;&gt;Emacs Elixir mode&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I made a note of a free online book &lt;a href=&quot;http://chimera.labs.oreilly.com/books/1234000001642&quot;&gt;&quot;Etudes for Elixir&quot;&lt;/a&gt; and checked out the GitHub repository, but did not look at the book or code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Find a testing framework&lt;/h3&gt;
&lt;p&gt;Upon arrival at ModCloth, getting pizza to eat, and plugging in my MacBook and connecting to the guest WiFi, the first thing I did was search for a testing framework for Elixir.&lt;/p&gt;
&lt;p&gt;It&apos;s 2013, not 1993, so it is hard to convince me to invest any time at all in learning to operate in a language ecosystem that does not have at least a de facto standard testing framework. For every language that I currently actively use for writing serious programs, I operate with TDD. Some examples of languages and the test frameworks I currently use for them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C/C++: &lt;a href=&quot;https://code.google.com/p/googletest/&quot;&gt;googletest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clojure: &lt;a href=&quot;https://github.com/marick/Midje&quot;&gt;Midje&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Haskell: &lt;a href=&quot;http://hspec.github.io/&quot;&gt;HSpec&lt;/a&gt; and &lt;a href=&quot;https://www.haskell.org/haskellwiki/Introduction_to_QuickCheck2&quot;&gt;QuickCheck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Java or Scala: &lt;a href=&quot;http://specs2.org/&quot;&gt;Specs2&lt;/a&gt; and &lt;a href=&quot;http://www.scalacheck.org/&quot;&gt;ScalaCheck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JavaScript: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://pivotal.github.io/jasmine/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://pivotal.github.io/jasmine/&quot;&amp;gt;Jasmine&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;Perl: &lt;a href=&quot;http://search.cpan.org/~mschwern/Test-Simple-0.98/lib/Test/More.pm&quot;&gt;Test::More&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python: &lt;a href=&quot;http://pytest.org/&quot;&gt;pytest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ruby: &lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Racket: &lt;a href=&quot;http://docs.racket-lang.org/rackunit/&quot;&gt;RackUnit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Well, first Web search hit for Elixir and unit testing was &lt;a href=&quot;https://web.archive.org/web/20140815001745/http://elixir-lang.org/getting_started/ex_unit/1.html&quot;&gt;ExUnit&lt;/a&gt;, so that was encouraging.&lt;/p&gt;
&lt;p&gt;Justin was still stuck installing Elixir, so we started exploring Elixir together off my laptop.&lt;/p&gt;
&lt;h3&gt;One test file&lt;/h3&gt;
&lt;p&gt;The first thing I did after discovering ExUnit was to copy and paste the code for a sample test into Emacs and save it into a file &lt;code&gt;test_hello.exs&lt;/code&gt;, see that the Elixir mode was working (with syntax highlighting), and figure out how to run the test: &lt;code&gt;$ elixir test_hello.exs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It worked!&lt;/p&gt;
&lt;p&gt;Then we explored adding more tests, changing some assertions, and learning as went, by looking up the Elixir documentation. For example, Elixir uses an interesting callback mechanism for cleanly passing &quot;setup&quot; state to tests inside a single test case. Also, &lt;code&gt;assert&lt;/code&gt; and &lt;code&gt;test&lt;/code&gt; are &lt;a href=&quot;https://en.wikipedia.org/wiki/Macro_%28computer_science%29#Syntactic_macros&quot;&gt;syntactic macros&lt;/a&gt;, enabling them to do magic to analyze expressions, hence the support of natural assertion syntax (which &lt;a href=&quot;/blog/2013/07/11/pittsburgh-ruby-lightning-talk-night/&quot;&gt;I like a lot better than special syntax&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;After writing some failing tests involving arithmetic and making them pass, I wrote a division by zero test. I was intrigued that not only did it fail, as expected, but also the compiler warned ahead of time that an exception was going to be raised. Nice. In any case, I learned how to make an assertion of the raising of an exception. This is very important. We should always pay attention to &lt;a href=&quot;https://franklinchen.com/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;testing the sad paths&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We saw in the documentation for ExUnit that there was a way to mark a test case as being OK to run concurrently with others. Great! These days there is no excuse not to be able to run tests concurrently. So I wrote another test case, which I put in the same source file (for the moment), and I wanted to see for myself that concurrency was happening. I wanted to call some kind of &quot;sleep&quot; function. To do that, I did a Web search, and found that Erlang comes with &lt;code&gt;sleep&lt;/code&gt; in the &lt;code&gt;timer&lt;/code&gt; module. I found out how to call Erlang from Elixir, and it worked!&lt;/p&gt;
&lt;h3&gt;More than one source file&lt;/h3&gt;
&lt;p&gt;The next obvious step was to write a test for code that did not yet exist, but was to be written outside the test source file. For that, I had to figure out how to define a module and import it. OK, but then there&apos;s the question of file organization. Hmm.&lt;/p&gt;
&lt;p&gt;At this point, the only reasonable thing to do (and which in retrospect should have been done first) was to find out what the &quot;standard&quot; way of organizing a project&apos;s source files is supposed to be, and what the standard way to build everything is.&lt;/p&gt;
&lt;p&gt;A Web search quickly came up with &lt;a href=&quot;https://web.archive.org/web/20140715154434/http://elixir-lang.org/getting_started/mix/1.html&quot;&gt;Mix&lt;/a&gt;. Awesome, the Elixir people are serious about real software development! Mix turns out to be inspired by Clojure&apos;s &lt;a href=&quot;https://github.com/technomancy/leiningen&quot;&gt;Leiningen&lt;/a&gt;, which of course I use to start any new Clojure project. &lt;code&gt;$ mix new hello&lt;/code&gt; did the trick, creating the scaffolding for a new Elixir project.&lt;/p&gt;
&lt;p&gt;I refactored our existing &lt;code&gt;test_hello.exs&lt;/code&gt; file into two files (one for each test case) in the &lt;code&gt;test&lt;/code&gt; directory, then wrote a module &lt;code&gt;hello.ex&lt;/code&gt; into &lt;code&gt;lib&lt;/code&gt;. A failed test, then making it succeed, and finally I wrote my first non-test code in Elixir!&lt;/p&gt;
&lt;p&gt;Running tests is very easy once you are using Mix. Just &lt;code&gt;$ mix test&lt;/code&gt; does it.&lt;/p&gt;
&lt;h3&gt;Packaging for publshing&lt;/h3&gt;
&lt;p&gt;At this point, I decided I wanted to create an actual Elixir package to publish.&lt;/p&gt;
&lt;p&gt;So I did a Web search to find out whether there was a standard repository and how to publish to it.&lt;/p&gt;
&lt;p&gt;Here we go, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://expm.co/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://expm.co/&quot;&amp;gt;Expm&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;p&gt;I installed the package manager, set up my user name and password, and went to work on a simple package to publish.&lt;/p&gt;
&lt;p&gt;I saw that nobody had yet contributed an implementation of &lt;a href=&quot;https://franklinchen.com/blog/2012/03/14/for-real-geeks-today-is-not-pi-day-but-half-tau-day/&quot;&gt;tau&lt;/a&gt;, so I quickly created a tau library with Mix, did &lt;code&gt;$ expm new&lt;/code&gt; to create a &lt;code&gt;package.exs&lt;/code&gt; template, filled it out, wrote an ExUnit test that passed, completed the &lt;code&gt;README.md&lt;/code&gt;, and just as OpenHack Pittsburgh was officially closing for the evening, I successfully published &lt;a href=&quot;https://web.archive.org/web/20140924063905/http://expm.co/tau&quot;&gt;my tau package&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Actually, I accidentally screwed up the first time, forgetting to change all the fields of the template &lt;code&gt;package.exs&lt;/code&gt; and ending up published &lt;code&gt;yourlib&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Oh, and I committed my project in Git and pushed &lt;a href=&quot;https://github.com/franklinchen/tau&quot;&gt;to GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Some Haskell stuff&lt;/h2&gt;
&lt;p&gt;Steve McCarthy of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.spacefinity.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.spacefinity.com/&quot;&amp;gt;Spacefinity&amp;lt;/span&amp;gt; had announced, in the introduction at the beginning of the evening when each of us stood up to say what we planned to work on, that he wanted to do more with the &lt;a href=&quot;https://www.haskell.org/cabal/&quot;&gt;Cabal&lt;/a&gt; package manager for Haskell, so I spent a little bit of time getting him going by pointing him toward a sample Haskell code repository I initially &lt;a href=&quot;/blog/2012/11/05/the-start-of-a-local-haskell-study-group/&quot;&gt;set up last year when some friends were interested in getting into Haskell&lt;/a&gt;; sadly, we&apos;ve all been too busy for Haskell, so I&apos;ve let the project rot, in the sense that my configuration file is not optimally organized and also there have been updates in the test framework world in Haskell since then.&lt;/p&gt;
&lt;p&gt;Anyway, here&apos;s my &lt;a href=&quot;https://github.com/FranklinChen/project-euler-haskell&quot;&gt;&quot;Project Euler in Haskell&quot; repository&lt;/a&gt;. I plan to get around to improving it.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thanks to ModCloth for providing the space, pizza, cookies, and WiFi!&lt;/p&gt;
&lt;p&gt;A big thank-you to Justin for providing the inspiration for me to try this experiment in learning!&lt;/p&gt;
&lt;p&gt;And thanks to Steve McCarthy for getting me to drag up an old Haskell project and making me think that I should soon update it to be a better example.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Tonight was the first time I ever started learning a new programming language, wrote unit tests right off the bat with proper project organization and also published a library immediately.&lt;/p&gt;
&lt;p&gt;Of course, there is much more to go in actually really learning and using Elixir, but as a first step in showing that Elixir has a viable ecosystem, I think the experiment was a success. My next steps in continuing to learn Elixir would include writing tests in conjunction with a deep dive into the actual semantics of the language. There is no substitute for the latter; the alternative is dangerously making assumptions based on superficial syntactic similarity with other languages (such as Ruby).&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-27)&lt;/h3&gt;
&lt;p&gt;One thing I didn&apos;t get around to was setting up &lt;a href=&quot;http://travis-ci.org/&quot;&gt;Travis&lt;/a&gt; continuous integration. I believe this should also be part of the story in getting up and running in a new programming language environment.&lt;/p&gt;
&lt;p&gt;So I did a Web search and figured out how to create a suitable &lt;code&gt;.travis.yml&lt;/code&gt;. I committed and pushed to GitHub, flipped the switch in my Travis account, and you can see its &lt;a href=&quot;https://travis-ci.org/FranklinChen/tau&quot;&gt;passing status&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Reflections on my slowest Run Around the Square 5K in 13 years</title><link>https://franklinchen.com/blog/2013/08/24/reflections-on-my-slowest-run-around-the-square-5k-in-13-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/24/reflections-on-my-slowest-run-around-the-square-5k-in-13-years/</guid><pubDate>Sat, 24 Aug 2013 16:45:47 GMT</pubDate><content:encoded>&lt;p&gt;This year was the ninth time I ran in the annual &lt;a href=&quot;https://www.runaroundthesquare.com/&quot;&gt;Run Around The Square 5K race&lt;/a&gt;, and Abby&apos;s third year in a row. The conditions were great: cool and dry, in contrast to the usual hot and humid conditions at this time of year. (Last year I reported on &lt;a href=&quot;/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/&quot;&gt;my eighth running of the race&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Both Abby and I ran this race rather slowly, but were happy and enjoyed the day. Here&apos;s why.&lt;/p&gt;
&lt;h2&gt;Both of us coming back from setbacks&lt;/h2&gt;
&lt;p&gt;The first thing to note is that both Abby and I have been recovering from setbacks this year, as I reported two weeks ago after I ran the &lt;a href=&quot;/blog/2013/08/09/getting-up-when-reality-punches-you-in-the-face-running-the-second-liberty-mile-in-pittsburgh/&quot;&gt;second GNC Live Well Liberty Mile&lt;/a&gt; 18 seconds slower than last year. That race had me vowing to get back on track, and the very next day I did &lt;a href=&quot;/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/&quot;&gt;begin getting back on track&lt;/a&gt;. The road back to a regular exercise routine has not been easy in the past two weeks, but I have very gradually ramping up on running as well as minimal strength training every single day since then.&lt;/p&gt;
&lt;p&gt;Last year, I ran the Run Around The Square 5K in 24:35.6 and was pretty to have recovered from several years of decline in fitness and self-care, by running my best time since 2006. For this year, I wrote, &quot;I don&apos;t know what goal to set for next year. I suppose I could set a goal of getting yet faster, breaking 24:15. That sounds reasonable to me. Going back down to 24:00 may even be possible. It&apos;s too early right now to tell. But one thing is for sure: I have no intention of slowing down from this year to next.&quot;&lt;/p&gt;
&lt;p&gt;Unfortunately, I did not set a firm enough goal. I have learned the hard way that if you don&apos;t make a commitment (and then follow up with the discipline and sacrifices required to achieve it), then even in the absence of accidents, a maybe-goal is worthless.&lt;/p&gt;
&lt;p&gt;This year, I went into the 5K race so untrained (two weeks of slowly ramping up before the race is not enough for any training benefits to kick in) that I basically knew that I was going to be super slow. I figured that since I lost 18 seconds in the mile, I would be happy if I lost only one minute in a 3K. So that was my expectation: finish around 25:36 this year.&lt;/p&gt;
&lt;h2&gt;Before the race&lt;/h2&gt;
&lt;p&gt;I decided that this was the race in which I debut my new orange running singlet, to replace my over-decade use of a blue singlet that Abby has gotten very annoyed with:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/franklin-orange.jpg&quot; alt=&quot;Franklin wearing orange singlet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Also, note that since I bought a SPIbelt earlier this year, I now always run races wearing a SPIbelt to carry my phone. This is particularly convenient when running a race where you have to park far from the start line and want access to your phone after a race.&lt;/p&gt;
&lt;p&gt;I wore my Vibram FiveFingers KSO Trek shoes again. Since last year&apos;s fiasco in which I &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;injured my left foot from having the straps on my left foot too tight&lt;/a&gt;, I never again put the straps on too tight!&lt;/p&gt;
&lt;p&gt;Hanging out before the race start in Regent Square:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/before.jpg&quot; alt=&quot;Before start&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/franklin-ready.jpg&quot; alt=&quot;Franklin ready&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Start line just a few minutes before race start:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/start-line.jpg&quot; alt=&quot;Start line&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;p&gt;(&lt;a href=&quot;https://runhigh.com/2013RESULTS/R082413AA.html&quot;&gt;Race results.&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;Different race logistics&lt;/h3&gt;
&lt;p&gt;One very important change to the race, and one I greatly appreciated, was the staggered start. Faster runners were told to line up front and start up first. This is very helpful to control the congestion and confusion that happens in a large race when too many slower people start up front and have to be passed (including unfortunately young children that Abby and I have seen trampled on every year!). In particular, it is really tricky to be passing lots of people once in the trails of Frick Park.&lt;/p&gt;
&lt;h3&gt;First mile&lt;/h3&gt;
&lt;p&gt;Because of the ridiculous problems I created for myself by going too fast two weeks ago in the Liberty Mile, I vowed to go out at a reasonable pace in this 5K. I found this easy to do because of the staggered start, which meant that there were fewer people to have to accelerate past throwing off one&apos;s own internal speedometer.&lt;/p&gt;
&lt;p&gt;The usual lot of young and old musicians were playing music along the course. What a great neighborhood tradition!&lt;/p&gt;
&lt;p&gt;I still get confused seeing the champagne stop near the end of the first mile at the entrance into the trails of Frick Park.&lt;/p&gt;
&lt;p&gt;I did the first mile in a leisurely 8:15 (compared to 7:18 last year).&lt;/p&gt;
&lt;h3&gt;Second mile&lt;/h3&gt;
&lt;p&gt;I did the second mile in 10:17 (compared to 10:11 last year). I did not feel too bad. I was running a bit conservatively, because my training runs had been so slow and short and tough for me in the past two weeks. I wanted to be in position to run really well the final downhill in the third mile.&lt;/p&gt;
&lt;h3&gt;Third mile&lt;/h3&gt;
&lt;p&gt;I let loose in the third mile. Because I had avoided going pukey in the second mile, I covered it in 7:06, actually a second faster than the 7:07 of last year.&lt;/p&gt;
&lt;p&gt;Because of the staggered start, there was not bad congestion during the third mile, and I found it safe to pass people at will.&lt;/p&gt;
&lt;h3&gt;Final sprint&lt;/h3&gt;
&lt;p&gt;I didn&apos;t have a gut-wrenching final sprint. I wasn&apos;t even looking at the clock or my watch. This wasn&apos;t one of those races in which I put it all out there on the course. Instead, this was a race where I was grateful to be running at all, and had no expectations other than to finish strong.&lt;/p&gt;
&lt;p&gt;So I finished in 25:38, just a bit longer than a minute over last year&apos;s 24:35.6. My &lt;em&gt;slowest&lt;/em&gt; Run Around The Square 5K time &lt;em&gt;in 13 years&lt;/em&gt;. But it was a clean finish, and I was so excited to simply be back and running faster than 26 minutes, at least.&lt;/p&gt;
&lt;h3&gt;After the race&lt;/h3&gt;
&lt;p&gt;Although I was not pukey, I was certainly breathing hard when I finished.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/franklin-after.jpg&quot; alt=&quot;Franklin after the race&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I went off to drink water and start eating some food.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/view.jpg&quot; alt=&quot;View&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Improvement&lt;/h2&gt;
&lt;p&gt;Then I went back to the finish line to wait for Abby to finish. I saw Todd and his wife Gabrielle hanging around. Gabrielle said she took my &quot;advice&quot; (from last year) to go all out to the point of feeling pukey. I admitted that this time around, I didn&apos;t follow my own advice. Gabrielle finished over 5 minutes faster this year than last year!! Todd finished over 8 minutes faster!! It&apos;s great to see people in their late 40s improve their fitness so much in a single year. I saw the couple running together a couple of times in Frick Park this year.&lt;/p&gt;
&lt;h2&gt;Decline&lt;/h2&gt;
&lt;p&gt;Abby finished. She was out of breath and pukey, but I was proud of her for finishing. Because of the tremendous decline in health and fitness she has experienced this year, I was not sure she would actually finish the race.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/abby-finish.jpg&quot; alt=&quot;Abby finishing&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;More food and refreshments&lt;/h2&gt;
&lt;p&gt;We lined up to sample more food and recovered. It was a beautiful day to be outside.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/abby-recovered.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/franklin-recovered.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The hot dogs and beer line was particularly long, but we finally reached the tables.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/hot-dogs-beer.jpg&quot; alt=&quot;Hot dogs and beer&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Walking out of Frick Park back to the car&lt;/h2&gt;
&lt;p&gt;I couldn&apos;t help taking a photo of the sign for beer and champagne that was still up on the trail entrance as we passed by:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-around-the-square-2013/beer-champagne.jpg&quot; alt=&quot;Dunning&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Concern about Abby&lt;/h2&gt;
&lt;p&gt;Although I was happy that Abby managed to finish the 5K race, I was very concerned about her overall health and fitness, which have continued to be poor this year since she broke her foot in February. Here are her Run Around The Square 5K times since she started doing it with me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2011: 37:15&lt;/li&gt;
&lt;li&gt;2012: 36:04&lt;/li&gt;
&lt;li&gt;2013: 39:54&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;She was almost 4 minutes slower than last year. She&apos;s lost &lt;em&gt;several years of fitness&lt;/em&gt; this year, and came in 105th of 116 in her age group. Again, we are grateful she is walking and running at all, but this has been a very bad year for her, and this impacts not only her own life, but ours more generally. We need to work on getting her back on track.&lt;/p&gt;
&lt;h2&gt;Goal for next year?&lt;/h2&gt;
&lt;p&gt;Right now, my real goal is to simply continue my exercise program and not break it again, and that includes the winter slump I usually enter. Last year, I had a slump in the final months of the year, and then woke up and &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;started exercising again around New Year&lt;/a&gt;, and even signed up for the Pittsburgh Marathon as a way to force myself to stay active in the winter. I believe that if I simply avoid self-caused setbacks, I should be able to return myself to a decent level of fitness. I am &lt;em&gt;not&lt;/em&gt; going to sign up for the Pittsburgh Marathon again. Almost certainly, however, I will sign up for the Pittsburgh Half Marathon! Last winter, I rather enjoyed &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;training for and running the Just A Short Run half marathon&lt;/a&gt;. I reached good fitness through that, but squandered my fitness through overtraining and injury leading up to the marathon.&lt;/p&gt;
&lt;h3&gt;Races this year&lt;/h3&gt;
&lt;p&gt;In the shorter term, I have two races to run in the coming month: the &lt;a href=&quot;/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/&quot;&gt;CMU Pretty Good Race 5K&lt;/a&gt; and the &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;Great Race 10K&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Last year, I did very poorly in the Pretty Good Race 5K because I was injured and exhausted, running 26:05. This year, I expect to do better than that. I&apos;m not going to do the 24:36 of 2011, but given that I easily beat 26 minutes today, I will beat 26 minutes two weeks from now.&lt;/p&gt;
&lt;p&gt;In the Great Race 10K last year, I was still in a state of exhaustion and undertraining, so I didn&apos;t even pay any attention to time goals, and finished slowly in 48:23. I see no reason why, if I continue improving my fitness in the next month (in contrast to last year&apos;s dreadful September), I should not be able to run under 48:00.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-09-06)&lt;/h4&gt;
&lt;p&gt;See &lt;a href=&quot;/blog/2013/09/06/was-it-worth-sprinting-to-a-terrible-fall-to-finish-25th-in-the-cmu-pretty-good-race-5k/&quot;&gt;my report on running the Pretty Good Race 5K this year&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Run Around The Square continued to thrive and improve, and I&apos;m grateful for both the registration cap (to maintain the quality of the event) as well as the staggered start. And all the sponsors feeding us afterwards!&lt;/p&gt;
&lt;p&gt;Abby and I were happy to have finished the race, even if we are both less fit now than we have been in years. But I think this is a wake up call for us to get back in shape. For example, I miss the long hikes we used to do last year when we had the stamina to actually do and enjoy them. The example Todd and Gabrielle set as they massively improved their fitness in the past year is inspiring. Abby and I should be able to do this too, if we make it a priority.&lt;/p&gt;
</content:encoded></item><item><title>Celebrating Claude Debussy&apos;s 151st birthday through unusual performances of Syrinx</title><link>https://franklinchen.com/blog/2013/08/23/celebrating-claude-debussys-151st-birthday-through-unusual-performances-of-syrinx/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/23/celebrating-claude-debussys-151st-birthday-through-unusual-performances-of-syrinx/</guid><pubDate>Sat, 24 Aug 2013 03:49:25 GMT</pubDate><content:encoded>&lt;p&gt;There was &lt;a href=&quot;https://jessicamusic.blogspot.com/2013/08/stop-dumbing-down-debussy.html&quot;&gt;much ado&lt;/a&gt; over Google&apos;s &quot;celebrating&quot; Claude Debussy&apos;s 151st birthday through a &lt;a href=&quot;https://www.slate.com/blogs/browbeat/2013/08/22/claude_debussy_google_doodles_claire_de_lune_for_composer_s_151st_birthday.html&quot;&gt;&quot;Claire de Lune&quot; doodle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It turns out that I do totally love this piece of music, but it may well be true that many people do not know much about a lot of the other great music he wrote.&lt;/p&gt;
&lt;h2&gt;Syrinx&lt;/h2&gt;
&lt;p&gt;Anyway, I decided to celebrate the birthday in my own way. I chose Debussy&apos;s famous work for solo flute, &lt;a href=&quot;https://en.wikipedia.org/wiki/Syrinx_%28Debussy%29&quot;&gt;Syrinx&lt;/a&gt;, as a starting point.&lt;/p&gt;
&lt;p&gt;Two years ago, I already linked to a fine performance of it on flute &lt;a href=&quot;/blog/2011/11/22/james-galway-made-me-hate-flute/&quot;&gt;by Emmannuel Pahud&lt;/a&gt;. There are many other good performances on flute, but inspired by &lt;a href=&quot;https://emilysdomain.org/&quot;&gt;Emily O&apos;Brien&lt;/a&gt;&apos;s &lt;a href=&quot;/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/&quot;&gt;performance that I attended last year of Syrinx on tenor recorder&lt;/a&gt;, I looked for other non-flute performances of this music.&lt;/p&gt;
&lt;p&gt;I found two intriguing ones to share.&lt;/p&gt;
&lt;h3&gt;Tenor recorder&lt;/h3&gt;
&lt;p&gt;One is another tenor recorder performance, by Kenjiro Hibi. This Japanese musician made it seem as though it were traditional Japanese shakuhachi music!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/6e0kag3K86Y&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Trumpet&lt;/h3&gt;
&lt;p&gt;Then I found this amazing performance on trumpet, by &lt;a href=&quot;https://alisonbalsom.com/&quot;&gt;Alison Balsom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/FW-8vC9Kpfw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I found this through &lt;a href=&quot;https://musicalassumptions.blogspot.com/2013/08/the-many-faces-of-syrinx-for-debussys.html&quot;&gt;someone else&apos;s blog post on Syrinx for Debussy&apos;s birthday&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;More on Syrinx&lt;/h2&gt;
&lt;p&gt;Here is some interesting discussion of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.flutefocus.com/232-syrinx-by-debussy.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.flutefocus.com/232-syrinx-by-debussy.html&quot;&amp;gt;interpretation and editions&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;At some point, of course, I must work on this piece and play it on flute. But not yet.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have a fascination with music played in a context other than the original, such as on a different instrument. It was fun discovering some performances of Debussy&apos;s Syrinx on recorder and trumpet.&lt;/p&gt;
</content:encoded></item><item><title>RIP Marian McPartland of Piano Jazz</title><link>https://franklinchen.com/blog/2013/08/23/rip-marian-mcpartland-of-piano-jazz/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/23/rip-marian-mcpartland-of-piano-jazz/</guid><pubDate>Sat, 24 Aug 2013 02:30:35 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Marian_McPartland&quot;&gt;Marian McPartland&lt;/a&gt;, longtime host of &lt;a href=&quot;https://www.npr.org/series/15773266/marian-mcpartland-s-piano-jazz&quot;&gt;NPR&apos;s &quot;Piano Jazz&quot;&lt;/a&gt; on the radio, &lt;a href=&quot;https://www.npr.org/blogs/therecord/2013/08/21/161653933/marian-mcpartland-piano-jazz-host-has-died&quot;&gt;has died&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I really enjoyed dipping into her radio program over the years, hearing her play hearing her guests play, listening to the conversations. The main impression I always had was alertness and &lt;em&gt;warmth&lt;/em&gt;. RIP.&lt;/p&gt;
</content:encoded></item><item><title>Another unexpected life change: one month of learning to play ukulele</title><link>https://franklinchen.com/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/</guid><pubDate>Sat, 24 Aug 2013 01:26:10 GMT</pubDate><content:encoded>&lt;p&gt;Almost exactly one month ago, on Monday, July 22, I vowed to spend at least a couple of minutes a day for two weeks attempting to learn to play the ukulele.&lt;/p&gt;
&lt;p&gt;Here is how the story began and how it has unfolded in the past month.&lt;/p&gt;
&lt;h2&gt;Jim Weirich on ukulele almost three years ago (December 2, 2010)&lt;/h2&gt;
&lt;p&gt;The first time I ever remember seing and hearing a ukulele up close was during a Pittsburgh Ruby meetup on December 2, 2010. Jim Weirich was a guest speaker. Before his talk, he and &quot;The Searchers&quot; (Jean Lange on flute, Colin Dean on trumpet, Carol Nichols on clarinet) performed the Ruby song, &quot;Has Anybody Seen My Code?&quot; (alternate lyrics to &lt;a href=&quot;https://en.wikipedia.org/wiki/Has_Anybody_Seen_My_Gal%3F_%28song%29&quot;&gt;&quot;Has Anybody Seen My Gal?&quot;&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vKrr7aXUc1E&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Immediately after this, I thought to myself, it would be fun to be playing ukulele and singing like Jim just did.&lt;/p&gt;
&lt;h2&gt;Discovering Jake Shimabukuro (February 2011)&lt;/h2&gt;
&lt;p&gt;Two months later, on February 5, 2011, I accidentally came across a popular video of &lt;a href=&quot;https://jakeshimabukuro.com/&quot;&gt;Jake Shimabukuro&lt;/a&gt; playing tenor ukulele, &quot;Ukulele weeps&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/puSkP3uym5k&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I was &lt;em&gt;totally&lt;/em&gt; blown away by this performance, and was convinced of the limitless possibilities of the ukulele.  I instantly decided that I wanted to learn to play the instrument. I had never played a string instrument before: once I had tried guitar for a couple of minutes and given up forever because it had seemed way too hard.&lt;/p&gt;
&lt;h2&gt;Quitting Chess&lt;/h2&gt;
&lt;p&gt;Now, at this point in my life, I was very dissatisfied by how I was spending my time outside of work. I had been playing tournament chess, but playing very poorly and without my heart really being in it in the past months of participation. I was feeling miserable about having two more rounds to play in the 2011 Pittsburgh Chess Club Championship. (In retrospect, I should have simply dropped out rather than continue my misery. But I had this idea that I should finish out what I start. Sometimes that&apos;s true, but in this case, it clearly was not.)&lt;/p&gt;
&lt;p&gt;The very same day I discovered Jake Shimabukuro, I sent the link to my friend Farokh, telling him, &quot;I&apos;ve been thinking about taking up the ukulele for a while now. I tried learning guitar some years ago but the instrument was too big for me, so I&apos;m looking for a small stringed instrument I could play a variety of music on.&quot;&lt;/p&gt;
&lt;p&gt;And I made up my mind on the spot that I was retiring from chess after finishing the tournament: the very same day I also wrote my friend Steve, &quot;I have the idea of replacing chess with music seamlessly. If you recall, 2005 was supposed to be my &apos;year of music&apos;, but I started playing chess again after Christmas of 2004. It&apos;s time to retire.&quot;&lt;/p&gt;
&lt;h3&gt;What happened to the &quot;year of music&quot;, 2005?&lt;/h3&gt;
&lt;p&gt;In August 2002, I bought a flute hoping to get back to playing the instrument, after not having done so in two decades, but I quickly gave up because it seemed too hard. This despite buying exactly one piece of sheet music with the plan to play it, &quot;Après un rêve&quot;, which by the way I finally ended up playing a decade later, &lt;a href=&quot;/blog/2013/07/04/more-summer-musical-partying/&quot;&gt;at a party last month&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In late 2004, I decided that in 2005, I would give one more shot at playing music.&lt;/p&gt;
&lt;p&gt;&quot;Unfortunately&quot;, on December 29, 2004, I went to a meeting of the Pittsburgh Chess Club for the first time, got hooked, and shortly after that, joined the club, and &lt;a href=&quot;/blog/2012/08/30/why-i-do-not-play-chess-online-chess-as-a-human-activity/&quot;&gt;began playing in tournaments again for the first time in two decades&lt;/a&gt;. I spent a number of years making chess my main activity outside of work, until &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;I met Abby in late 2006&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Flute had to wait.&lt;/p&gt;
&lt;h2&gt;Recorder vs. ukulele?&lt;/h2&gt;
&lt;p&gt;Back to February 5, 2011: this very day, I immediately told Abby that I wanted to play ukulele. She was skeptical, but had her friend Lynette lend me a soprano ukulele to try out.&lt;/p&gt;
&lt;p&gt;On February 15, 2011, after the last round of the 2011 Pittsburgh Chess Club Championship, I immediately &quot;retired&quot; from chess. (By the way, I &quot;unretired&quot; and &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;returned to tournament chess in fall 2012&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;I immediately started to practice recorder regularly (because it seemed an &quot;easy&quot; gateway to playing any music at all without a steep learning curve: I was discouraged by my failure at flute years earlier), and also planned to start playing ukulele.&lt;/p&gt;
&lt;p&gt;On February 19, 2011, I wrote Farokh about my progress: &quot;After a couple of days of spending a minute or two trying to play the G7 chord on the ukulele, I can finally sort of do it, in isolation. I will keep toughening my left hand for some more days before trying to start real work on the ukulele. Meanwhile, today I took a break from the soprano recorder and started playing the alto, finally. Fingerings are the same, but the pitches are different, so it&apos;s pretty confusing. Obviously it&apos;s not a good idea to try to learn both simultaneously. The alto is harder to play for me because it&apos;s bigger, but I like the sound a lot more, and in the long run, it&apos;s more versatile, suitable for music the modern flute can play. So I may stick with the alto for a while before going back to the soprano. I&apos;m very much enjoying getting back to music. It had kind of exited my life around five years ago (!!) since I got back into chess in 2005. I have now completely quit chess, cold turkey, to make time for music. Music is much more rewarding, in the end.&quot;&lt;/p&gt;
&lt;h2&gt;Recorder wins (March 2011)&lt;/h2&gt;
&lt;p&gt;On March 2, 2011, I finally ordered a soprano ukulele online, because the one lent to me simply had structural defects.&lt;/p&gt;
&lt;p&gt;But I had the same frustrations as with the loaner ukulele. The instrument seemed very hard to play. On March 20, 2011, I went to my first meeting of the Pittsburgh Recorder Society. I was making progress with daily practice, and so I completely abandoned the ukulele. It collected dust for well over two years.&lt;/p&gt;
&lt;p&gt;It turned out that I did continue with recorder, largely because I found the Pittsburgh Recorder Society and joined it, and I have been playing recorder &lt;a href=&quot;/blog/2013/02/23/celebrating-two-years-of-playing-recorder/&quot;&gt;ever since&lt;/a&gt;, even attending my first music camp less than two years later, the week-long &lt;a href=&quot;/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/&quot;&gt;summer 2012 Mideast Early Music Workshop&lt;/a&gt;, which focuses on recorders.&lt;/p&gt;
&lt;p&gt;If there had been a Pittsburgh ukelele group at the time, the course of my entire musical life could have been altered: I would not have spent the last two years of my musical life on recorders, modern flute, &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;, &lt;a href=&quot;/categories/irish-flute/&quot;&gt;Irish flute&lt;/a&gt;, and &lt;a href=&quot;/blog/tin-whistle/&quot;&gt;tin whistle&lt;/a&gt; (years that I treasure, so I am actually glad that I gave up ukulele when I did!).&lt;/p&gt;
&lt;h2&gt;Steel City Ruby music jam (August 2012)&lt;/h2&gt;
&lt;p&gt;Fast-forward a year, to the &lt;a href=&quot;/blog/2012/08/22/steel-city-ruby-conf-review-part-1-its-about-people/&quot;&gt;first Steel City Ruby conference&lt;/a&gt;, where I knew Jim Weirich was going to be a speaker, and therefore that he was going to do a music jam. I brought my Irish flute, not really sure whether I was going to have the courage to join in, since I had only &lt;a href=&quot;/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited/&quot;&gt;just&lt;/a&gt; &lt;a href=&quot;/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/&quot;&gt;begun&lt;/a&gt; &lt;a href=&quot;/blog/2012/07/07/another-terrifying-music-jam-session-but-i-played-a-little-bit-of-blues-and-old-time/&quot;&gt;music jamming&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I ended up completely chickening out and choosing to go out for lunch instead, and when I came back they were still playing and I watched. I silently vowed to myself that the following year, if Jim was coming to Steel City Ruby again, I would not chicken out.&lt;/p&gt;
&lt;h2&gt;Music from August-December 2012&lt;/h2&gt;
&lt;p&gt;I launched myself into the new local French music jam, going to my &lt;a href=&quot;/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/&quot;&gt;second one&lt;/a&gt; just shortly after Steel City Ruby, and then proceeding further, bit by bit overcoming my fear of being incompetent as a musician. The entire past year has been very rewarding for me musically, as I kept on practicing, playing, &lt;a href=&quot;/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/&quot;&gt;anywhere&lt;/a&gt; and &lt;a href=&quot;/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/&quot;&gt;everywhere&lt;/a&gt;, on &lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;recorders&lt;/a&gt;, &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;flute&lt;/a&gt;, &lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;, &lt;a href=&quot;/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/&quot;&gt;Irish flute and tin whistle&lt;/a&gt;, &lt;a href=&quot;/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/&quot;&gt;melodica&lt;/a&gt;, &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;voice&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Music from January-July 2013&lt;/h2&gt;
&lt;p&gt;Some of my newer musical activities this year: &lt;a href=&quot;/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/&quot;&gt;tango on flute&lt;/a&gt;, &lt;a href=&quot;/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/&quot;&gt;blues&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Back to string instruments? Viola da gamba (July 2013)&lt;/h2&gt;
&lt;p&gt;Last month, I went to the week-long Mideast Early Music Workshop for the second time. (I&apos;m still finishing up the full report to post.)&lt;/p&gt;
&lt;p&gt;The day I arrived at music camp, it turned out that the instructor for the class on &quot;viol for the novice&quot; was looking for one more person to show interest in learning viol (also known as viola da gamba), since there was only one student signed up at the time. (The &lt;a href=&quot;https://en.wikipedia.org/wiki/Viol%E2%80%8E&quot;&gt;viol&lt;/a&gt; is a fretted instrument that you play with a bow.)&lt;/p&gt;
&lt;p&gt;I thought to myself, heck, I&apos;ll give this a shot. It would be a no-risk attempt to try again to learn the basics of playing a string instrument!&lt;/p&gt;
&lt;p&gt;So I signed up. I was lent a treble viol.&lt;/p&gt;
&lt;p&gt;It was crazy hard for me to learn how to bow without making horrible sounds, and hard for me to play the most trivial melodies by fretting while bowing. Neither I nor the other beginner after just a week felt ready to even play a simple melody in the final student concert. I had spent quite a bit of time practicing.&lt;/p&gt;
&lt;p&gt;But I learned a couple of things from this experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If I really wanted to, I could play a bowed string instrument; my strokes and control were clearly getting better every day.&lt;/li&gt;
&lt;li&gt;If I really wanted to, I could play a fretted string instrument; I was slowly becoming able to pluck out a melody.&lt;/li&gt;
&lt;li&gt;If I really wanted to, I could learn to be competent at viola da gamba, just like all my other workshop companions who told me they had started as total beginners years ago.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It turns out that I&apos;m not very interested in playing viola da gamba, compared to lots of other things I could be doing. But the &lt;em&gt;confidence&lt;/em&gt; that I could if I wanted to was very empowering.&lt;/p&gt;
&lt;h2&gt;Guitar, ukulele&lt;/h2&gt;
&lt;p&gt;It turns out that in June, before my music camp, Farokh had started learning to play guitar. On July 22, two days after I returned from music camp, he told me he getting very serious about guitar. This was quite impressive because unlike me, he did not even have any musical background at all in K-12. I was deeply moved by Farokh&apos;s dedication and seriousness as an adult latecomer to music.&lt;/p&gt;
&lt;p&gt;So on July 22, I replied to him, &quot;I will pick up my ukulele tonight and give it a go. There&apos;s a new Pittsburgh uke meetup so if I can actually get going with it, there is a good place to continue.&quot;&lt;/p&gt;
&lt;h2&gt;Steel City Ukuleles&lt;/h2&gt;
&lt;p&gt;Yes, there is a &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/&quot;&gt;Steel City Ukuleles&lt;/a&gt; meetup group. I have known about it for over a year, by accident from an &lt;a href=&quot;https://www.pghcitypaper.com/pittsburgh/steel-city-ukuleles-keeps-strummin/Content?oid=1506609&quot;&gt;article in the Pittsburgh Post-Gazette&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So on March 28, I had written the organizer, &quot;Hi, I just saw a local news article about the Steel City Ukuleles. I bought a soprano ukulele a year ago but have barely started learning to play it. I&apos;m interested in getting going on it and maybe joining the group.&quot; I got a friendly response, but given that I could not really play, and that I was already very busy with my recorder and flute activities, I had no time to try again to learn ukulele from scratch.&lt;/p&gt;
&lt;p&gt;There was no way I would attend the meetup until I was at least a beginner.&lt;/p&gt;
&lt;h2&gt;Practice&lt;/h2&gt;
&lt;p&gt;On July 22, I started &quot;practicing&quot; ukulele no more than five minutes a day (that&apos;s as much as I could tolerate without calluses on my left fingers), and just trying to make the most basic chords after C work (which they never had earlier): G7, F. I kept on smudging and buzzing.&lt;/p&gt;
&lt;p&gt;On July 25, I was still having trouble getting an F to work. Farokh chided me for my feelings of discouragement on ukulele, saying he was making progress on guitar: &quot;Have you practiced the F chord every day for weeks until you get it?  If not, you haven&apos;t been sufficiently dedicated.  This is how people learn to play guitar; it&apos;s like digging through a brick wall with a spoon!  You need to build up your dexterity.  It took me two weeks to play the G chord decently.&quot;&lt;/p&gt;
&lt;p&gt;On July 28, six days after starting again with ukulele, and making tiny bits of progress, I wrote Farokh, &quot;My plan with uke is to take just a few minutes a day for the next week or two, then reassess what next. I have to observe the advice I give everyone: something small every day for two weeks before giving anything up.&quot; In my experience, when learning something new, the first two weeks can be very, very discouraging, but if you quit before the two weeks are up, you may never know how close you were to making the breakthrough that everyone else who persevered can make.&lt;/p&gt;
&lt;p&gt;On July 31, I was continuing to make progress, playing longer than five minutes at a time. Calluses started forming. Fingers became more precise. Still could barely actually play, but the improvement was real. I decided to aim to get proficient enough to attend the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/117972052/&quot;&gt;September 4 meeting of the Steel City Ukuleles&lt;/a&gt;. I did not feel I would be ready to attend the &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/117972012/&quot;&gt;August 7 meeting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But at least I used the trick of &lt;em&gt;committing&lt;/em&gt; to the September meeting, by posting to the August event site introducing myself and saying I planned to come in September. I wanted people to know that I was just starting out and had a month to get ready. I also wanted people to remember that when I showed up, so that I wouldn&apos;t be just some random guy, but &lt;em&gt;the guy who told us a month ago he was going to come&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Books&lt;/h3&gt;
&lt;p&gt;I started working through some books on ukulele. Progress through them was very difficult, because some of the books just went way too fast, without explanation. These concise books are worthless.&lt;/p&gt;
&lt;p&gt;On August 3, I got hold of &quot;The Complete Idiot&apos;s Guide to Playing Ukulele&quot;. This was useful, but had confusing orders of presentation and omissions in explanation. Still, I managed to learn some more chords (while still not playing anything quite right) and some fingerpicking while at it. I hit a wall pretty quickly though. The book has a lot of really hard stuff in it, and could occupy me for a year or two, I think.&lt;/p&gt;
&lt;p&gt;On August 10, I started working through &quot;Ukulele for Dummies&quot;, and made good progress.&lt;/p&gt;
&lt;h3&gt;Three weeks up&lt;/h3&gt;
&lt;p&gt;After my three-week trial period of daily practice, I assessed my status.&lt;/p&gt;
&lt;p&gt;Despite the ups and downs of practice, I knew that I had made tremendous progress. Sometimes I would plateau for two days but then suddenly &quot;get&quot; something.&lt;/p&gt;
&lt;p&gt;I still had trouble with the most basic barre chord, but actually, when I counted, I had learned around twelve chords and could do some basic progressions in some keys. I was buzzing out less and my fingers were starting to go just where they needed to go (if the chord changes were slow enough). It was an amazing feeling, the feeling of &lt;em&gt;being a beginner&lt;/em&gt; rather than &lt;em&gt;being nothing at all&lt;/em&gt; (which was the feeling I had during the whole first week and part of the second week).&lt;/p&gt;
&lt;p&gt;Ukulele calluses after one month:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ukulele-calluses.jpg&quot; alt=&quot;Ukulele calluses&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Bad instrument?&lt;/h3&gt;
&lt;p&gt;But I was getting increasingly annoyed by the fact that my instrument seems defective. The A string is sharp when fretted. I still don&apos;t know what the problem is. I regret having bought this instrument years ago online, unseen and unplayed.&lt;/p&gt;
&lt;h2&gt;Steel City Ruby 2013, August 17-18&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;/blog/2013/08/18/steel-city-ruby-2013-my-second-year-and-it-radically-changed-my-life-again-part-1/&quot;&gt;first morning&lt;/a&gt; of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://steelcityruby.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://steelcityruby.org/&quot;&amp;gt;Steel City Ruby&amp;lt;/span&amp;gt; conference, as I was about to leave home, I suddenly had a thought. Originally I was going to bring my Irish flute to the conference, as I had last year, to join a music jam with Jim Weirich (a speaker again at the conference).&lt;/p&gt;
&lt;p&gt;I tweeted, &lt;a href=&quot;https://twitter.com/franklinchen/status/368346099712786432&quot;&gt;&quot;Was thinking of bringing my uke to #scrc13 because of @jimweirich, but been learning it only 3 weeks, feel like imposter.&quot;&lt;/a&gt;. Jim replied, &lt;a href=&quot;https://twitter.com/jimweirich/status/368348104397185024&quot;&gt;&quot;oh yes! Please bring!&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I did bring my ukulele. Early on in the day, it was announced that there would be a music jam on the second day of the conference. So the next day, I brought my ukulele in again. And so we had a music jam: Jim, PJ Hagerty, Carol Nichols, and me.&lt;/p&gt;
&lt;p&gt;I was nervous, and couldn&apos;t keep up with everything, but had a great time. It also happened to be the first time I ever played ukulele outside of just practicing at home. We did Jim&apos;s Ruby song, the very one that I had seen him do almost three years ago at the Pittsburgh Ruby meetup, as well as his Lisp song, and a whole bunch of other stuff, like Hank Williams. (It&apos;s hard to believe, but I hadn&apos;t played music with other people in a month, since the Mideast Early Music Workshop ended, but I was really focused on personal ukulele practice like a monk.)&lt;/p&gt;
&lt;p&gt;Some photos of us (sadly without Carol, who was sitting opposite the three of us):&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://pbs.twimg.com/media/BR4fd0xCUAEwWRq.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://pbs.twimg.com/media/BR4fd0xCUAEwWRq.jpg&quot;&amp;gt;[image: Looking for music to play]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pbs.twimg.com/media/BR4mjIUCYAIde9U.jpg&quot; alt=&quot;PJ, Franklin, Jim&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I ended up playing ukulele with others sooner than I had originally intended or expected. Also, at one point I briefly swapped instruments with Jim so that I could feel what it was like to play a tenor. Surprisingly to me, although it was of course &quot;big&quot;, it was not as unmanageable as I feared it might be. I always imagined that eventually I&apos;d &quot;graduate&quot; to playing a tenor, after first playing soprano, then concert size, sort of like my progression on recorder of first soprano, then alto, then tenor, then finally &lt;a href=&quot;/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/&quot;&gt;bass&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Sunday: the day after&lt;/h2&gt;
&lt;p&gt;The very day after the conference jam session, I got email about the Steel City Ukuleles meeting on &lt;a href=&quot;https://www.meetup.com/Steel-City-Ukuleles/events/117971802/&quot;&gt;Wednesday&lt;/a&gt;. In my &quot;planning&quot;, I had neglected to realize that the group met twice a month, not just once a month! So I didn&apos;t have to wait till September 4 after all. I felt I was probably already competent enough to function on Wednesday; I looked at the musical selections, and felt reassured that even if I still have problems with fast chord changes, I could participate without making a total mess of everything. So I signed up!&lt;/p&gt;
&lt;h2&gt;Monday: need better instrument?&lt;/h2&gt;
&lt;p&gt;I went to the local music store to check out concert size ukuleles, because if I need to get a better instrument, I think I might like that size better than the soprano. I have not made any decisions yet. I feel I need to improve further, to better understand instruments and try different kinds, before buying another one.&lt;/p&gt;
&lt;h2&gt;Wednesday: my first time at Steel City Ukuleles&lt;/h2&gt;
&lt;p&gt;When I arrived, Linda lent me an electric tenor for me to try out. I ended up playing it for the whole two hours because the intonation was good, unlike my soprano. For the most part, I did not have difficulty with the larger instrument.&lt;/p&gt;
&lt;p&gt;Some photos:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://photos4.meetupstatic.com/photos/event/6/d/1/c/highres_274467932.jpeg&quot; alt=&quot;Steel City Ukuleles group photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, I ended up just leaving my soprano ukulele on the ground unused during this session:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://photos1.meetupstatic.com/photos/event/6/d/2/6/highres_274467942.jpeg&quot; alt=&quot;Another group photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As the meetup was winding down, because it got dark outside, and my fingers were tired, I captured some footage of &quot;Has Anybody Seen My Gal?&quot; being done by the group:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/LM1Pi2zX484&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;How fitting it is that the very tune I first heard from Jim Weirich almost three years ago is the one to close out my first attendance of the Steel City Ukuleles!&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;A month ago, when I was only practicing ukulele five minutes a day, I was still doing some flute practice. But I have not been playing flute or recorder for quite some time now (last time was probably a week ago). I feel bad about this, but I seem to be in ukulele mode now.&lt;/p&gt;
&lt;p&gt;I need to keep flute and recorder in &quot;maintenance mode&quot; rather than just abandon them entirely.&lt;/p&gt;
&lt;p&gt;Meanwhile, it is of course very exciting to be a beginner at ukulele. To make massive improvements on ukulele, I &lt;em&gt;must&lt;/em&gt; make it my musical &lt;em&gt;focus&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Instruments&lt;/h2&gt;
&lt;p&gt;Linda warned me that her electric tenor ukulele has a high action. After playing it the next day at home, I realized that indeed it has a high action that shreds my left fingers. So it&apos;s not working for me.&lt;/p&gt;
&lt;p&gt;Meanwhile, Abby yesterday brought home a concert-sized &lt;a href=&quot;https://en.wikipedia.org/wiki/Banjo_uke&quot;&gt;banjolele&lt;/a&gt; borrowed from a friend:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/banjolele.jpg&quot; alt=&quot;Banjolele&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve been using it to get the feel of the concert size while continuing to practice and learn, and so far it&apos;s been working great, giving me confidence that I should in fact buy a concert size ukulele.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-09-23)&lt;/h3&gt;
&lt;p&gt;A month later, I actually did finally &lt;a href=&quot;/blog/2013/09/23/finally-got-a-nice-new-ukulele-mainland-classic-mahogany-concert/&quot;&gt;buy a concert ukulele&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s been quite a journey, getting into music and into ukulele through seemingly chance and trivial events such as music at a Pittsburgh Ruby meetup and hearing about Jake Shimabukuro.&lt;/p&gt;
&lt;p&gt;And I&apos;m so excited that I&apos;m playing ukulele now. It&apos;s a whole different music world for me. I&apos;ll write more about what I mean, as I continue to progress.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-09-04)&lt;/h3&gt;
&lt;p&gt;Two weeks after my first Steel City Ukuleles meeting, I went back for more, attending &lt;a href=&quot;/blog/2013/09/04/my-second-meeting-of-the-steel-city-ukuleles/&quot;&gt;my second meeting&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Data Visualization: D3 and only D3</title><link>https://franklinchen.com/blog/2013/08/22/pittsburgh-data-visualization-d3-and-only-d3/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/22/pittsburgh-data-visualization-d3-and-only-d3/</guid><pubDate>Fri, 23 Aug 2013 02:01:22 GMT</pubDate><content:encoded>&lt;p&gt;Patrick gave a presentation for the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/&quot;&gt;Pittsburgh Data Visualization Meetup&lt;/a&gt; on &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/events/135374702/&quot;&gt;only D3&lt;/a&gt;, because there was interest after the &lt;a href=&quot;/blog/2013/08/07/pittsburgh-data-visualization-d3-and-r/&quot;&gt;previous meetup&lt;/a&gt; for more on D3.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Patrick started with a review of last time, on selections, data, callbacks, and transitions.&lt;/p&gt;
&lt;p&gt;Then he went into the use of &lt;a href=&quot;https://en.wikipedia.org/wiki/Heat_map&quot;&gt;heat maps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, he went into forces.&lt;/p&gt;
&lt;p&gt;I have to confess that I got lost in the presentation because of the volume of code presented and my unfamiliarity with the API. I believe that I&apos;ve reached the limit of what I can passively absorb about using D3, and simply need to get down and dirty and create my own project.&lt;/p&gt;
&lt;p&gt;I was also feeling really tired and on the verge of getting sick. I felt very cold in the room and did not have a jacket on me in the summer.&lt;/p&gt;
</content:encoded></item><item><title>My lightning talk at Steel City Ruby 2013: &quot;Reflections&quot;</title><link>https://franklinchen.com/blog/2013/08/18/my-lightning-talk-at-steel-city-ruby-2013/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/18/my-lightning-talk-at-steel-city-ruby-2013/</guid><pubDate>Mon, 19 Aug 2013 01:54:09 GMT</pubDate><content:encoded>&lt;p&gt;Below is video for, and a transcript of, my five-minute lightning talk I gave at Steel City Ruby 2013, which I reported on &lt;a href=&quot;/blog/2013/08/18/steel-city-ruby-2013-my-second-year-and-it-radically-changed-my-life-again-part-1/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;My 5-minute lightning talk starts at 19:35 and ends at 24:37 in the full video below. (I &lt;a href=&quot;https://vimeo.com/forums/topic:546&quot;&gt;couldn&apos;t figure out how to turn off autoplay&lt;/a&gt; when I initially tried &lt;code&gt;#t=19m35s&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72703334&quot; width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://vimeo.com/72703334&quot;&amp;gt;Lightning Talks Day 1&amp;lt;/a&amp;gt; from &amp;lt;a href=&quot;https://vimeo.com/confbots&quot;&amp;gt;Confbots&amp;lt;/a&amp;gt; on &amp;lt;a href=&quot;https://vimeo.com&quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt; &amp;lt;p&amp;gt;Given on August 16 2013 at Steel City Ruby in Pittsburgh, PA&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;I provide below my best try at transcribing my talk, which was given impromptu without any notes or slides. Unfortunately, I spoke very quickly and I can&apos;t figure out every word I said; if you find any glaring omissions or errors, please let me know!&lt;/p&gt;
&lt;h2&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Hi, my name is Franklin, and I&apos;ve lived in Pittsburgh fifteen years, and this is the largest audience of front of which I&apos;ve ever spoken in my life! (Applause.)&lt;/p&gt;
&lt;p&gt;I&apos;m an extreme introvert, and I&apos;m also shy, but last year, I came to Steel City Ruby Conf, and I saw people giving talks, lightning talks, and I was inspired, so I started talking at local meetup groups, and I decided I had to speak here, and the question was, what was I going to talk about?&lt;/p&gt;
&lt;p&gt;Originally, I was going to title my lightning talk &quot;Confessions&quot;, but somebody already had &quot;Confessions&quot;, so I changed it to &quot;Reflections&quot;.&lt;/p&gt;
&lt;p&gt;So, how many of you have had RSI? How many of you have had RSI from spending too much time at a &lt;a href=&quot;https://en.wikipedia.org/wiki/Keypunch&quot;&gt;keypunch&lt;/a&gt; machine? (I raise my hand. Laughter.) Yes, well, the first programming course I actually took, I coded on &lt;a href=&quot;https://en.wikipedia.org/wiki/Punched_card&quot;&gt;punch cards&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I sat at IBM keypunch machines and typed, and got RSI. And I&apos;m telling you this because I may not look that old, but I&apos;ve been around for some time (laughter). I punched cards, I wrote &lt;a href=&quot;https://en.wikipedia.org/wiki/COBOL&quot;&gt;COBOL&lt;/a&gt; programs, FORTRAN programs. We used cards and had to sort them, had to put in the compiler as well as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Job_Control_Language&quot;&gt;Job Control Language&lt;/a&gt; cards, put them in a deck, ship them off to some place where my teacher took them, and that&apos;s how we coded.&lt;/p&gt;
&lt;p&gt;So, I have some reflections on that, given how long I&apos;ve been doing this stuff. I still don&apos;t know what programming really is. And that&apos;s why I come to places like Steel City Ruby Conf, and go to programming meetups, and I do this for many different programming languages. I try to do things better, and what I like about the Ruby community is that people are open and welcome, and they are care about quality, about different ideas. And also about things that relate to living, not just about coding.&lt;/p&gt;
&lt;p&gt;And so when I was looking at the program for this year&apos;s conference, I was thinking, &quot;how can I contribute here?&quot; I&apos;m not primarily a Ruby developer. But it turns out that programming is about much more than particular programming languages. In fact, I like that at lunch today, and last year, I met people who talked about Clojure, about Python, about Scala, and other languages, and it&apos;s really great to have these conversations.&lt;/p&gt;
&lt;p&gt;So, I&apos;ve seen code using &quot;goto&quot;, and seen books on &lt;a href=&quot;https://en.wikipedia.org/wiki/Structured_programming&quot;&gt;&quot;structured programming&quot;&lt;/a&gt; from the 60s, when I was writing COBOL in the early 1980s. I think some of you here are younger and haven&apos;t had that experience of having to code with &quot;goto&quot;. So, I saw that. I saw C come into play, I saw C++, the object-oriented revolution. I saw functional programming, and now concurrency, and it&apos;s amazing that things keep on happening. I think it&apos;s a great time to be a developer.&lt;/p&gt;
&lt;p&gt;The last thing I want to say is, on the program there was a talk that was just given before lunch, and it was about depression. And that made a big impression on me. I&apos;ve taken this moment to come out, as a 43-year-old, as having suffered from major depression, and really for about twenty-five years, I was unable to function. I even had to drop out of school twice, but I overcame that, and I think it&apos;s time to stop being afraid to talk about it. We need to share it with our friends and talk about what we&apos;ve done to overcome it and how to get help. So that&apos;s my final reflection.&lt;/p&gt;
&lt;h2&gt;Reactions&lt;/h2&gt;
&lt;p&gt;Note that the talk about depression I mentioned was the &lt;a href=&quot;https://vimeo.com/72690223&quot;&gt;morning talk by Greg Baugues, &quot;Developers and Depression&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was very moved that throughout the rest of the first day of the conference, people came up to me and thanked me for talking about my depression. Some of them said they were currently dealing with depression, or had done so. This only reinforced in my mind Greg&apos;s point that there is still a stigma about openly discussing depression.&lt;/p&gt;
&lt;h2&gt;Some historical notes on programming&lt;/h2&gt;
&lt;p&gt;I regret that I did not keep any of my old COBOL programs. I do have some old data decks of punch cards in my basement, but no code!&lt;/p&gt;
&lt;p&gt;I believe that the textbook we used in my high school COBOL class in 1983 was &lt;a href=&quot;https://books.google.com/books?id=cE0gAQAAIAAJ&quot;&gt;Shelly and Cashman&apos;s &quot;Introduction to Computer Programming: Structured COBOL&quot;&lt;/a&gt;. Basically all the programming books of the day for any language boasted of teaching structured programming. Given that, I was amused by the whole &quot;object-oriented programming&quot; fad in all texts in the 1990s. Marketing never changes.&lt;/p&gt;
&lt;h2&gt;To do&lt;/h2&gt;
&lt;p&gt;I still haven&apos;t told publicly the full story of my struggle with depression that finished its last chapter only late in 2004, when, after six years of therapy, I decided I no longer needed to see my therapist, and told her I was discontinuing my weekly visits to her I had been making since 1998. I expect to gradually roll out this story as I feel ready to tell it.&lt;/p&gt;
</content:encoded></item><item><title>Steel City Ruby 2013: my second year and it radically changed my life again (part 1)</title><link>https://franklinchen.com/blog/2013/08/18/steel-city-ruby-2013-my-second-year-and-it-radically-changed-my-life-again-part-1/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/18/steel-city-ruby-2013-my-second-year-and-it-radically-changed-my-life-again-part-1/</guid><pubDate>Mon, 19 Aug 2013 00:57:27 GMT</pubDate><content:encoded>&lt;p&gt;This year, I attended the second &lt;a href=&quot;http://steelcityrubyconf.org/&quot;&gt;Steel City Ruby Conference&lt;/a&gt;, 2013. The first one, last year (2012), was a &lt;a href=&quot;https://franklinchen.com/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;life-changing experience&lt;/a&gt; for me. To my surprise, this second one also ended up being another radically transformative experience.&lt;/p&gt;
&lt;p&gt;This is part 1 of my report, covering the first day (Friday). Part 2, covering the second day (Saturday), was not published.&lt;/p&gt;
&lt;h2&gt;Videos are up!&lt;/h2&gt;
&lt;p&gt;Videos for all of the presentations of Steel City Ruby 2013 are available &lt;a href=&quot;https://web.archive.org/web/20141008072908/http://www.confreaks.com:80/events/scrc2013&quot;&gt;on Confreaks&lt;/a&gt;. I am embedding them also in my reports.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;First things&lt;/h2&gt;
&lt;h3&gt;I signed up to give a lightning talk&lt;/h3&gt;
&lt;p&gt;The very first thing I did, upon arriving Friday morning, was to sign up to give a lightning talk!! This was because I was so inspired by last year&apos;s lightning talks. I wasn&apos;t sure exactly what I was going to talk about, but I knew I wanted to say something about what I learned in the past year since the first Steel City Ruby, and how my life has changed as a result, so I wanted to write &quot;Confessions&quot;, but someone had already written down a &quot;Confessions&quot; lightning talk title, so I changed it to &quot;Reflections&quot;.&lt;/p&gt;
&lt;h3&gt;I signed up for the music jam&lt;/h3&gt;
&lt;p&gt;Since I had just recently started learning to play ukulele, I signed up to participate in Jim Weirich&apos;s music jam. Last year, I had brought my Irish flute, but was too scared to actually play, and just watched as everyone had fun. I vowed that this year I would actually play with Jim and others.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-08-23)&lt;/h4&gt;
&lt;p&gt;I wrote in more detail about &lt;a href=&quot;https://franklinchen.com/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;how and why I took up ukulele and how that has changed my life&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Carina Zona, &quot;Handcrafting Community&quot;&lt;/h2&gt;
&lt;p&gt;Carina Zona opened by asking &quot;What is community?&quot;&lt;/p&gt;
&lt;p&gt;Good question: I&apos;ve been wondering about that myself, since becoming part of various local &quot;communities&quot; in Pittsburgh in the past couple of years. What&apos;s the difference between a mere &quot;network&quot; and a &quot;community&quot;?&lt;/p&gt;
&lt;p&gt;She noted that she is actually an introvert, so it&apos;s been interesting for her to be where she is now.&lt;/p&gt;
&lt;p&gt;Carina said the communities involve &quot;explicit values&quot;. I thought that was a great point. Random people gathering without explicit values don&apos;t really make a community.&lt;/p&gt;
&lt;p&gt;The part of her talk that really encouraged me was when she urged the cultivation of &quot;forkable&quot; communities. This means being able to copy what works and take it somewhere else and develop it. I thought this was a great metaphor, because if I want to build a community, it doesn&apos;t make sense to just do it from scratch, but it makes sense to learn from what has worked elsewhere. In particular, the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; that I&apos;m part of is still small and not yet, in my mind, the kind of established, explicit community that &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby&quot;&gt;Pittsburgh Ruby&lt;/a&gt; clearly is. I have been wondering about doing something to build up more of a Pittsburgh Scala community.&lt;/p&gt;
&lt;p&gt;I took from this tlak a lot to think about and act upon.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72671955&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Julie Pagano, &quot;I am a Front-End Web Dev (And So Can You!)&quot;&lt;/h2&gt;
&lt;p&gt;Julie gave an interesting talk about front-end development, emphasizing that this is serious stuff. She made certain important points that I totally agree with: HTML and CSS are in fact &lt;em&gt;programming languages&lt;/em&gt; in their own right, and should be thought of and used that way, with a mind toward design and &lt;em&gt;semantics&lt;/em&gt;, and not just hacking around. CSS being kind of a crappy language, it&apos;s good to use something like SASS, which is better (for example, enabling the concept of mixins).&lt;/p&gt;
&lt;p&gt;She talked about the asset pipeline, and emphasized that one should learn JavaScript, not just hack jQuery. She listed resources to learn and to adopt good practices.&lt;/p&gt;
&lt;p&gt;All good advice for anyone doing front-end work!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72682175&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Greg Baugues, &quot;Developers and Depression&quot;&lt;/h2&gt;
&lt;p&gt;Greg gave a talk that stunned me.&lt;/p&gt;
&lt;p&gt;He talked about his personal struggle with depression (type II bipolar, specifically). Please watch his talk, &lt;em&gt;the whole thing&lt;/em&gt;, whether you&apos;ve dealt with depression or whether you know someone with depression (and learn about the sometimes very subtle signs of it, since as he detailed in his talk, &lt;em&gt;depressed people do what they can to conceal their problem, out of shame&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;I made a surprising decision after watching his talk. I decided that in my yet-vaguely-thought-out lightning talk, &lt;strong&gt;I was going to confess to having had a very dark period of depression in my life&lt;/strong&gt;, a period that lasted around &lt;em&gt;twenty-five years&lt;/em&gt;, robbing me of a vast amount of my life. I did not want Greg&apos;s talk to go to waste. I wanted to make sure that people at the conference knew that there are those of us who have these kinds of secrets, and that if anyone is having a problem and needs help, that there is no shame in seeking help, because my life was saved thanks to some important help. I will say more about this later.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72690223&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lunch&lt;/h2&gt;
&lt;p&gt;Before the conference, I had signed up to volunteer (as a Pittsburgh local) to take a group of people to lunch. I did this for two reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I wanted to contribute this year by volunteering to help for lunch.&lt;/li&gt;
&lt;li&gt;Last year, there was some overcrowding as too many people went to the same popular restaurants in the Strip District for lunch.&lt;/li&gt;
&lt;li&gt;Selfishly, I wanted a food option I chose!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I took people to &lt;a href=&quot;https://web.archive.org/web/20250306094854/https://www1.iloveindianspices.com/&quot;&gt;Indian Spices&lt;/a&gt; downtown. It has a reasonable lunch buffet (Abby and I went there once), and more to my taste than getting sandwiches somewhere.&lt;/p&gt;
&lt;h2&gt;Lightning talks&lt;/h2&gt;
&lt;p&gt;I ended up being scheduled for the last time slot of lightning talks. I was very nervous, had no notes or slides, and decided to simply get up there and try to make some kind of narrative out of various thoughts that had accumulated in my head for the past year, as well as Greg&apos;s talk on depression.&lt;/p&gt;
&lt;p&gt;Given the anticipation, I confess I could not pay that much attention to the talks that preceded mine!&lt;/p&gt;
&lt;p&gt;Here are all of Friday&apos;s lightning talks. I&apos;ve provided in a separate post a &lt;a href=&quot;/blog/2013/08/18/my-lightning-talk-at-steel-city-ruby-2013/&quot;&gt;transcript of my lightning talk, &quot;Reflections&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72703334&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Angela Harms, &quot;A Collaborative Approach to Making&quot;&lt;/h3&gt;
&lt;p&gt;Angela Harms gave a presentation revolving around the distinction she made between &quot;cooperation&quot; and &quot;collaboration&quot;.&lt;/p&gt;
&lt;p&gt;She led the audience in a short guided meditation before proceeding further.&lt;/p&gt;
&lt;p&gt;The important point she made about &quot;cooperation&quot; was that it is safe, and there is no risk, because you just show up halfway and the other person shows up halfway, and that&apos;s all that happens. In &quot;collaboration&quot; your goal is much higher, to be &quot;fully invested&quot;.&lt;/p&gt;
&lt;p&gt;The rest of the presentation involved quotes and references to authors and books and anecdotes I had seen before. But what resonated with me was this key distinction she made between &quot;cooperation&quot; and &quot;collaboration&quot;. I thought of situations in which I have felt ashamed because I only showed up halfway. I have to think about how to change that: either show up all the way, or perhaps if I cannot do that, then step out so that someone else who can do more than me can step in.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72700176&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Ashish Dixit, &quot;How to be Productive on a New Team&quot;&lt;/h2&gt;
&lt;p&gt;Ashish Dixit spoke about transitions as a programmer, bringing in his own story at Groupon. Some tidbits I took away from his talk: &quot;learning all the things&quot; is overwhelming, and working on bugs is a good way to learn about a system.&lt;/p&gt;
&lt;p&gt;It was 3:30 PM. I have to confess that I was getting tired and the day was getting long!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72745494&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Jim Weirich, &quot;Friendly Flying Robots with Ruby&quot;&lt;/h2&gt;
&lt;p&gt;Jim Weirich gave a demo of controlling a personal drone using a Ruby DSL he wrote wrapping around a C API. An elegant use of DSLs, definitely. One of the selling points of Ruby and Ruby culture is the creation of DSLs to make it easier and more fun to do programming that underneath can be doing low-level things, and it&apos;s great that people like Jim make maximum use of this capability!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/72709097&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Party&lt;/h2&gt;
&lt;p&gt;There was a party held at the &lt;a href=&quot;http://www.consolenergycenter.com/&quot;&gt;Consol Center&lt;/a&gt; after the Friday sessions. I enjoyed socializing and eating appetizer-type food there. I was surprised and touched by how many people privately came up to me and thanked me for speaking up briefly about the depression in my past. Greg himself was present and spoke to me (he had not been present during my lightning talk but had heard from others about it).&lt;/p&gt;
&lt;p&gt;I went home hoarse from talking so much with people about all sorts of things, ranging from financial investment (!) to the new programming language (in progress) &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; (which Steve Klabnik is all excited about) to my experiences this year having &lt;a href=&quot;https://franklinchen.com/blog/2013/01/11/2013-is-my-year-of-scala/&quot;&gt;switched to Scala&lt;/a&gt; for almost all new work and personal coding.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a long and tremendously uplifting first day at the 2013 Steel City Ruby conference. My impromptu lightning talk ended up being a lot more personal than I had expected, but seemed to resonate with some people.&lt;/p&gt;
</content:encoded></item><item><title>Power and the AOL public firing</title><link>https://franklinchen.com/blog/2013/08/13/power-and-the-aol-public-firing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/13/power-and-the-aol-public-firing/</guid><pubDate>Wed, 14 Aug 2013 02:48:43 GMT</pubDate><content:encoded>&lt;p&gt;By sheer coincidence, two articles came to my attention within a short period of time that seemed to go well together well.&lt;/p&gt;
&lt;p&gt;The first: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.digitaljournal.com/article/356229&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.digitaljournal.com/article/356229&quot;&amp;gt;&quot;Power robs the brain of empathy&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;The second: &lt;a href=&quot;https://www.sfgate.com/technology/businessinsider/article/LEAKED-AUDIO-Listen-To-AOL-CEO-Tim-Armstrong-4723680.php&quot;&gt;&quot;Listen To AOL CEO Tim Armstrong Fire A Patch Employee In Front Of 1,000 Coworkers&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not making a judgment on whether the guy deserved to be fired or whatever, just intrigued by the way he was fired.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Java User Group: Java EE 7, 8, and beyond; or done?</title><link>https://franklinchen.com/blog/2013/08/13/pittsburgh-java-user-group-java-ee-7-8-and-beyond/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/13/pittsburgh-java-user-group-java-ee-7-8-and-beyond/</guid><pubDate>Wed, 14 Aug 2013 02:18:11 GMT</pubDate><content:encoded>&lt;p&gt;The Pittsburgh Java User Group has not been meeting regularly for some time now. The &lt;a href=&quot;/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/&quot;&gt;last meeting was almost two months ago&lt;/a&gt;. I attended this one with the impression that it might well be my last attendance of the group, and even more, that it might be the end of the group altogether.&lt;/p&gt;
&lt;p&gt;The meeting did nothing to change my intuition.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittjug-2013-08-13/group.jpg&quot; alt=&quot;Pittsburgh Java User Group, 2013-08-13&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Presentation by Reza Rahman&lt;/h2&gt;
&lt;p&gt;Reza Rahman of Oracle, a &quot;Java EE/GlassFish Evangelist&quot; gave the presentation. His goal was to promote the new and exciting things coming up in Java EE, and try to get community feedback into what next.&lt;/p&gt;
&lt;p&gt;He gave a retrospective on how surprisingly long ago Java EE came on the scene, a decade ago, and described the evolution over the years to improve developer productivity.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittjug-2013-08-13/speaker.jpg&quot; alt=&quot;Reza Rahman&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Also it was good to see that the new APIs have improved since the old ones, including &quot;fluent&quot; APIs, the fact is that everything still seems clunky and &quot;old&quot;.&lt;/p&gt;
&lt;p&gt;Furthermore, the Java community is still stuck with old stuff. He bemoaned the fact that the old J2EE is still most widely used.&lt;/p&gt;
&lt;p&gt;And Java developers are still not keeping up to date with developments. He asked the audience how many had heard of WebSocket, and hardly anyone raised their hands. He asked who knew what &quot;hypermedia&quot; is, and nobody raised their hand. Wow.&lt;/p&gt;
&lt;p&gt;The presentation went very long, to two hours. Near the end, he said that they wanted to know what people wanted next, but nobody really responded. He asked, &quot;What do we need to do in the cloud?&quot;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My overall impression was that I was done attending more PittJUG meetings. In any case, the main organizers have long since moved on to other stuff besides Java anyway, and gotten busy, and it has been hard to find speakers. More generally, those who attend have not seemed very excited and proactive about asking for speakers or topics to be covered.&lt;/p&gt;
&lt;p&gt;I believe it&apos;s the end of an era. After all, I do not write any Java code any more, myself! I came to this talk about Java&apos;s future expecting it to be my last, and it did not disappoint.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-06-10)&lt;/h2&gt;
&lt;p&gt;It&apos;s been almost a year since the last PittJUG meeting, as far as I know. So I think the group really is dead.&lt;/p&gt;
&lt;p&gt;There has been talk of expanding the group to not just be about Java, but anything JVM-related (such as other languages compiling to the JVM, e.g., Scala, Clojure, JRuby). Nothing seems to have happened of that.&lt;/p&gt;
</content:encoded></item><item><title>Why I was so happy to run 5 miles in 63 minutes today when I was doing it in 50 earlier this year</title><link>https://franklinchen.com/blog/2013/08/13/why-i-was-so-happy-to-run-5-miles-in-63-minutes-today-when-i-was-doing-it-in-50-earlier-this-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/13/why-i-was-so-happy-to-run-5-miles-in-63-minutes-today-when-i-was-doing-it-in-50-earlier-this-year/</guid><pubDate>Wed, 14 Aug 2013 01:18:29 GMT</pubDate><content:encoded>&lt;p&gt;I went for a run in Frick Park, my usual 5-mile route, which I haven&apos;t done in a while. It took me 63 minutes. Earlier this year I was doing it in 50. My fitness is pretty low right now, as &lt;a href=&quot;/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/&quot;&gt;I explained three days ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I&apos;m happy to be on the upswing. I&apos;m getting out there, not pushing too hard, but challenging myself. I have faith that I will get back out of my slump. I have done this before. Other people have.&lt;/p&gt;
&lt;p&gt;Do you also have this experience of being happy to do something worse than you used to do it, because you&apos;re doing it at all rather than doing nothing?&lt;/p&gt;
</content:encoded></item><item><title>RIP, Eydie Gormé</title><link>https://franklinchen.com/blog/2013/08/10/rip-eydie/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/10/rip-eydie/</guid><pubDate>Sun, 11 Aug 2013 03:08:41 GMT</pubDate><content:encoded>&lt;p&gt;I learned that American singer &lt;a href=&quot;https://en.wikipedia.org/wiki/Eydie_Gorm%C3%A9&quot;&gt;Eydie Gormé&lt;/a&gt; &lt;a href=&quot;https://www.npr.org/blogs/thetwo-way/2013/08/10/210927460/reports-singer-eydie-gorme-dies-at-84&quot;&gt;just died&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I actually knew very little about her until reading about her death.&lt;/p&gt;
&lt;p&gt;But she made a huge difference in my life!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/c/ca/Eydie_Gorme.jpg&quot; alt=&quot;Eydie Gormé&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Eydie Gormé and Los Panchos&lt;/h2&gt;
&lt;p&gt;I know of her only through her famous recordings from the 1960s of Latin music with &lt;a href=&quot;https://en.wikipedia.org/wiki/Los_Panchos&quot;&gt;Los Panchos&lt;/a&gt;. They recorded a number of classic &lt;a href=&quot;/categories/bolero/&quot;&gt;boleros&lt;/a&gt; that constantly kept me company when I was doing &lt;a href=&quot;/categories/ballroom-dance/&quot;&gt;ballroom dance&lt;/a&gt; over a decade ago.&lt;/p&gt;
&lt;p&gt;In particular, I really enjoyed their performance of &quot;Sabor a mî&quot;, &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;my favorite bolero of all time&lt;/a&gt;, both to listen to and to dance to.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/0Uz6ZDJjXvE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It was interesting for me to learn, just now, that her parents were Sephardic Jews, her father from Sicily and her mother from Turkey.&lt;/p&gt;
&lt;h2&gt;Should I thank people before they die?&lt;/h2&gt;
&lt;p&gt;It is always strange to me when people die and I realize I barely knew anything about them, but feel deep gratitude for how they&apos;ve so much enhanced my life. This was the case with Eydie Gormé.&lt;/p&gt;
&lt;p&gt;I&apos;ve never been into &lt;a href=&quot;https://en.wikipedia.org/wiki/Fandom&quot;&gt;fandom&lt;/a&gt;, but lately I&apos;ve been wondering, in an era when it actually is much easier to contact &quot;celebrities&quot;, whether sending a simple one-shot note to someone expressing gratitude, well before death, might be appropriate. Especially in the case of people who are actually not major celebrities (either because their prime time has passed or because their contribution is in a narrow niche). &lt;strong&gt;What do you think?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Emerging from my three months of illness, self-pitying, and self-loathing</title><link>https://franklinchen.com/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/</guid><pubDate>Sat, 10 Aug 2013 12:39:23 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, I reported on my feelings after &lt;a href=&quot;/blog/2013/08/09/getting-up-when-reality-punches-you-in-the-face-running-the-second-liberty-mile-in-pittsburgh/&quot;&gt;having a very painful and embarrassing performance in the Liberty Mile road race&lt;/a&gt;. I resolved to slowly return myself to health and fitness, starting &lt;em&gt;immediately&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Recently, Leo Babauta wrote a great blog post that really spoke to me, &lt;a href=&quot;https://zenhabits.net/fraud/&quot;&gt;&quot;The Fear of Being Found a Fraud&quot;&lt;/a&gt;. Basically, he writes advice, but he&apos;s not perfect, and doesn&apos;t always successfully do what he preaches. I periodically have feelings like that, since I write about stuff too and also post &quot;advice&quot; links on Twitter, Facebook, and Google+. What would people think if they knew I have been failing myself in the past three months?&lt;/p&gt;
&lt;p&gt;Well, I have to be honest. There&apos;s no point lying. I sometimes &lt;em&gt;know&lt;/em&gt; what&apos;s best and what has worked for me, but don&apos;t take my own advice. This in itself is not the big problem. The real problem is the second-order problem, which is that of believing that I&apos;m not only imperfect (we all are), but sometimes ending also deciding to give up on myself. That&apos;s the worst thing.&lt;/p&gt;
&lt;p&gt;For example, after health conditions disrupted my &quot;normal&quot; routines, I ended up not getting back on track when in fact I should and could have, through a gradual process. In a way, I was too proud to &lt;em&gt;adapt to reality&lt;/em&gt;. I was willing to operate under a different, better reality, but given the worse one, I chickened out, and entered a downward spiral of bad habits.&lt;/p&gt;
&lt;h2&gt;Meditation habit, destroyed&lt;/h2&gt;
&lt;p&gt;For example, I &lt;a href=&quot;/blog/2013/02/01/a-report-on-one-month-of-daily-meditation/&quot;&gt;restarted a daily meditation practice for the new year&lt;/a&gt;, and entered into a 100-day meditation challenge. I encountered setbacks in my first month, but kept bouncing back. I even &lt;a href=&quot;/blog/2013/03/01/dealing-with-setbacks-during-my-second-month-of-meditation/&quot;&gt;continued into a second month&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But then things got worse, and as you can see in the archives to my blog, I &lt;em&gt;never wrote a report for the third month&lt;/em&gt;. According to my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://insighttimer.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://insighttimer.com/&quot;&amp;gt;Insight Timer&amp;lt;/span&amp;gt; journal, I actually did meditate in March almost every day, so I could have written a blog post on that, but I didn&apos;t. &lt;em&gt;That was a mistake&lt;/em&gt;. I have found that public updates on progress keep me more accountable to myself; this is why I have written so much about my personal musical activities: not only to share my journey with those who are interested (because they are friends or because they are themselves on their own journeys), but also to keep myself honest about where I&apos;ve been, what I still need to do, where I intend to go.&lt;/p&gt;
&lt;p&gt;In April, my meditation practice started to fall apart. I missed April 10 and 11, then 13, 14, 15, then 18, 19, 20, 20, 23, and the rest of the month. In May I was erratic, till after May 13, &lt;em&gt;I completely stopped identifying myself as a &quot;meditator&quot; and quit&lt;/em&gt;. That&apos;s right: I felt so ashamed of myself that I did not meditate between May 14 and August 9 this year. Big mistake, this pointless shame, especially given that I know, empirically, that &lt;a href=&quot;/blog/2012/12/30/when-i-dont-have-time-to-sit-and-breathe-something-is-wrong-with-my-life/&quot;&gt;when I don&apos;t &quot;have time&quot; to meditate, something is wrong with my life&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Exercise&lt;/h2&gt;
&lt;p&gt;Also, my exercise schedule completely fell apart. &quot;Normally&quot;, I run every other day and do strength training the other days. None of this has to be a super-long session. Just enough to keep me mentally and physically alert. My strength training has generally been just a simple half-hour &quot;core performance&quot; type of workout at home.&lt;/p&gt;
&lt;p&gt;Well, I lost the habit, partially because marathon training caused me to cut back on strength training and because after the marathon, I took a break from running. The big lesson I learned here is that marathoning is very disruptive to my ordinary life, and I do not plan to ever do a marathon again in my life. But apart from that, I had non-marathon disruptions also, such as the skin rash after a hike that I&apos;ve been dealing with.&lt;/p&gt;
&lt;h2&gt;What I did today&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Today is the first day of the rest of my life.&lt;/strong&gt; Clean slate, forget the past.&lt;/p&gt;
&lt;p&gt;I meditated this morning. And I will continue to make this a high priority and do it daily. I must make sure that if I slip, I simply get back on track, rather than feel shame or whatever. It must simply be a habit.&lt;/p&gt;
&lt;p&gt;Since I ran yesterday, today was a non-running day. I decided that one way to prevent myself from completely slipping is to have a backup &quot;very short&quot; workout in case any kind of laziness or disruption causes me to think about just canceling a workout rather than do a longer one.&lt;/p&gt;
&lt;p&gt;So today was my first experiment with a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://medium.com/editors-picks/e4975b151181&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://medium.com/editors-picks/e4975b151181&quot;&amp;gt;7-minute workout&amp;lt;/span&amp;gt;. It&apos;s intense, but fast to get over with. I highly recommend checking it out!&lt;/p&gt;
&lt;p&gt;Here are more links to this type of workout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://journals.lww.com/acsm-healthfitness/Fulltext/2013/05000/HIGH_INTENSITY_CIRCUIT_TRAINING_USING_BODY_WEIGHT_.5.aspx&quot;&gt;Journal paper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://7minworkoutapp.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://7minworkoutapp.com/&quot;&amp;gt;Online app&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.lifehack.org/articles/lifestyle/master-the-7-minute-workout-with-this-video.html&quot;&gt;Lifehack article&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even if you&apos;re lazy, surely you have 7 minutes a day to squeeze in this little circuit. I did!&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;Back to meditating every day, just 10 minutes a day.&lt;/p&gt;
&lt;p&gt;And I&apos;m going to take it easy to ramp back up to fitness. I know it&apos;s going to take &lt;em&gt;months&lt;/em&gt; to get back to where I was earlier in the year. &lt;em&gt;Patience is a virtue&lt;/em&gt;. I will start small. A little bit of slow running every other day, and the 7-minute workout every other day, to get started, before extending further.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was time to stop my descent into endless self-pitying and self-loathing over all the misfortunes that have come my way in the past months. I&apos;m taking my life back.&lt;/p&gt;
</content:encoded></item><item><title>Getting up when reality punches you in the face: running the second Liberty Mile in Pittsburgh</title><link>https://franklinchen.com/blog/2013/08/09/getting-up-when-reality-punches-you-in-the-face-running-the-second-liberty-mile-in-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/09/getting-up-when-reality-punches-you-in-the-face-running-the-second-liberty-mile-in-pittsburgh/</guid><pubDate>Sat, 10 Aug 2013 00:49:35 GMT</pubDate><content:encoded>&lt;p&gt;Last year, &lt;a href=&quot;/blog/2012/08/17/the-inaugural-liberty-mile-a-review-of-pittsburghs-first-road-mile-race/&quot;&gt;I reported on the excitement I had running in and watching&lt;/a&gt; the first &lt;a href=&quot;https://web.archive.org/web/20240702010808/https://libertymile.org/&quot;&gt;GNC Live Well Liberty Mile&lt;/a&gt;. I was so excited about running it again that late this May, having mostly recovered from my &lt;a href=&quot;/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/&quot;&gt;Pittsburgh Marathon disaster&lt;/a&gt;, I quickly pre-registered for the Liberty Mile for this year. I anticipated training to run well in this year&apos;s Liberty Mile, given that I was not really trained last year.&lt;/p&gt;
&lt;p&gt;Unfortunately, this year I have been in very poor shape since the marathon, because of a whole series of health problems and disruptions in my life resulting from a skin rash I got during a &lt;a href=&quot;/blog/2013/05/12/my-rachel-carson-trail-hike-for-the-year/&quot;&gt;Rachel Carson Trail hike in May&lt;/a&gt;. The upshot is that I have been running (and exercising in general) very little in the past three months. As the Liberty Mile approached, I wished that I had not registered for it at all.&lt;/p&gt;
&lt;p&gt;So I faced a dilemma: what should I do about the race?&lt;/p&gt;
&lt;h2&gt;Deciding to run it&lt;/h2&gt;
&lt;p&gt;The good thing about the mile is that it&apos;s short enough that of course I can finish the thing. So I felt there was no excuse to just bail out and forfeit my pre-registration. I was going to run it.&lt;/p&gt;
&lt;p&gt;The bad thing about the mile is that it is brutal to actually run &lt;em&gt;fast&lt;/em&gt;. I have always felt pukey after running a mile as &quot;fast&quot; as I can.&lt;/p&gt;
&lt;p&gt;In any case, I decided to still try to run the Liberty Mile as fast as I could, knowing that I would probably suffer for it.&lt;/p&gt;
&lt;p&gt;In recent weeks I&apos;ve been trying to go out periodically for short, slow runs, something like two miles at a time, to gain at least have &lt;em&gt;some&lt;/em&gt; kind of conditioning. Also, earlier this week I put in some &quot;fast&quot; repeats of about 300m out in Frick Park: the only &quot;fast&quot; running I&apos;ve done since April!!&lt;/p&gt;
&lt;p&gt;But this whole week I was feeling bad, stress exacerbated by home repair disruptions with the contractors coming over.&lt;/p&gt;
&lt;h2&gt;Support from Abby&lt;/h2&gt;
&lt;p&gt;Last year, I went to the race alone.&lt;/p&gt;
&lt;p&gt;This year, Abby offered to go downtown with me so she could watch the race and be with me. (In May when I was pre-registering for the race, she had just spent months barely mobile because of a broken foot and was simply not certain she would be able to even run a mile again by August.)&lt;/p&gt;
&lt;p&gt;I really appreciated this because I felt rather vulnerable about this race. We planned to watch the first wave start, and then have me run my heat (again the &quot;Unstoppable 40+&quot; heat), then hang out afterwards and watch the elite heats.&lt;/p&gt;
&lt;p&gt;We drove downtown and parked and walked to the packet pickup area in Market Square. I was pleased that it wasn&apos;t raining; it had rained earlier in the day, but that was all over.&lt;/p&gt;
&lt;p&gt;Because we arrived later than other people, they had run out of Small T-shirts and so I got a Medium.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/abby.jpg&quot; alt=&quot;Abby holding my T-shirt&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Changes in the course&lt;/h2&gt;
&lt;p&gt;I should note that the course was changed from last year. The change makes sense because it considerably simplifies the logistics. Last year, the course was a straight shot down Liberty Ave toward downtown. This year, the course was an almost-loop course, first going out on Penn Ave, then turning to head back in on Liberty Ave. The advantage is that the start and finish are close together, so it is much easier for people to plan to spectate or get back to their cars or whatever. I do like the concept of the straight downhill road course, but understand the logistical difficulties.&lt;/p&gt;
&lt;p&gt;My plan was to do my best to avoid going out too fast, and try to push hard in the final downhill portion of the race. Easier said than done, because last year I certainly wanted to avoid going out too fast, but did anyway!&lt;/p&gt;
&lt;h2&gt;Before the race&lt;/h2&gt;
&lt;p&gt;I wore my Vibram FiveFingers Bikila LS shoes again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/before-start.jpg&quot; alt=&quot;Franklin before race&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At the GNC booth, I saw they were giving out free samples of energy bars and other stuff. I was feeling hungry, and although I know that it is best not to race having just eaten, especially unfamiliar foods, I took a &lt;a href=&quot;https://www.gnc.com/product/index.jsp?productId=4468895&quot;&gt;GNC Pro Performance Pro Crunch Lite&lt;/a&gt; energy bar, and ate a couple of bites before giving the remainder to Abby to put away.&lt;/p&gt;
&lt;p&gt;It was probably a big mistake to have eaten from the energy bar, because it didn&apos;t really agree with me. Oops.&lt;/p&gt;
&lt;h3&gt;Start and finish lines&lt;/h3&gt;
&lt;p&gt;We checked out the start and finish lines.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/start-line.jpg&quot; alt=&quot;Start line&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/finish-line.jpg&quot; alt=&quot;Finish line&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;First heat (at 7:00 PM)&lt;/h2&gt;
&lt;p&gt;We watched as the first &quot;fun run&quot; heat went.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/first-heat-start.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My race (heat at 7:20 PM)&lt;/h2&gt;
&lt;p&gt;I got to the start line and lined up &lt;em&gt;at the back&lt;/em&gt;, where I knew I belonged. I was not sure that I would not be last place in my heat!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/my-heat-start.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here I am, looking as tired as I in fact was, still taking medication for my skin problem that is not completely gone (usually showing up as spots on my neck or hands and arms):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/franklin-before.jpg&quot; alt=&quot;Franklin before the race&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As the race began, I tried not to go too fast, but did. 1:34 for the first quarter mile, not good at all! Last year, I ran the mile in 6:39, and went out in 1:29 for the first quarter. This year, I was hoping to go under 7:00 at all.&lt;/p&gt;
&lt;p&gt;I slowed down for the second quarter, then finally found a steady pace for the third quarter. During the final quarter, I saw the finish line and eventually saw the clock ticking up toward 7:00. I was &lt;em&gt;furious&lt;/em&gt; that I might not be able to finish a 7-minute mile. I sprinted all out and didn&apos;t actually finish under 7:00 according to the clock (the &lt;a href=&quot;https://www.areep.com/events/libertymile/&quot;&gt;official race results&lt;/a&gt; say I finished in 7:02), but my chip time was 6:56, so I actually did run the mile in under 7 minutes!!&lt;/p&gt;
&lt;p&gt;My splits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:34 (went too fast)&lt;/li&gt;
&lt;li&gt;1:56 (uphill, deliberately slowed down)&lt;/li&gt;
&lt;li&gt;1:46 (steady)&lt;/li&gt;
&lt;li&gt;1:40 (final kick)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;More photos of the Liberty Mile&lt;/h2&gt;
&lt;p&gt;More photos of the entire event can be seen &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://petemadia.photoshelter.com/gallery/2013-GNC-Live-Well-Liberty-Mile/G0000gQc.MfyoOAE/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://petemadia.photoshelter.com/gallery/2013-GNC-Live-Well-Liberty-Mile/G0000gQc.MfyoOAE/&quot;&amp;gt;here&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;After my race&lt;/h2&gt;
&lt;p&gt;Afterwards, I felt really, really crappy:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2013/done-in-pain.jpg&quot; alt=&quot;Franklin done for a while but still in pain&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In fact, for a full half hour after the race, all I could do was walk and sit around with Abby trying to feel less crappy. &lt;strong&gt;I have never felt so bad for so long after any race of any distance.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Reflections&lt;/h2&gt;
&lt;p&gt;Mentally, also, I was still very &lt;em&gt;angry&lt;/em&gt; at myself: I came in &lt;a href=&quot;https://www.areep.com/events/libertymile/results/13lm_uno.txt&quot;&gt;60th place out of 74&lt;/a&gt;, running a chip time of 6:56, a whopping &lt;em&gt;18 seconds&lt;/em&gt; slower than last year. That&apos;s a huge decrease in fitness for a mile.&lt;/p&gt;
&lt;p&gt;My plan for this year, 2013, was supposed to be to get back into great health and fitness, &quot;the shape I was in five years ago&quot;. It&apos;s why, for the new year, I got into &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;climbing the Cathedral of Learning&lt;/a&gt;. It&apos;s why I got into running in the winter](/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/). It&apos;s why I &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;decided to run the Pittsburgh Marathon&lt;/a&gt;. I blew it my overtraining for the marathon and then suffering freak skin problems after a hike that ended up seeing doctors something like five times, and being put on medication that messed with me.&lt;/p&gt;
&lt;p&gt;I had a lot to be angry about. But after I recovered, I became calm and stopped being angry about being punched in the face by reality. I decided that it was motivation for me to turn my life around. I decided that I was going to get back into a regular exercise routine.&lt;/p&gt;
&lt;p&gt;In just the past three months, I have lost all of my fitness of the past several years. But I have a plan to get back on track, starting &lt;em&gt;tomorrow&lt;/em&gt;. I believe that for 2014, I can still get back into my 2008 shape. It&apos;s a matter of making it a priority, over all the other things I have been doing in my life.&lt;/p&gt;
&lt;h2&gt;Going home&lt;/h2&gt;
&lt;p&gt;After I recovered enough that I felt like eating and walking again, Abby and I went back to our car and we went home.&lt;/p&gt;
&lt;p&gt;Only minutes after getting home did I realize that I had &lt;em&gt;totally forgotten&lt;/em&gt; to stick around to watch the elite runners&apos; races!! That was far from my mind when I was feeling nauseous and reflecting on my poor fitness.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The race was very well organized, and I&apos;m thankful for the continuation of this new Pittsburgh tradition. Although I had a humbling experience in my heat, I totally want to be back for a third try at executing a good mile next year! And I am thankful that I actually ran it, because it gave me the resolve to regain my lost fitness.&lt;/p&gt;
</content:encoded></item><item><title>A haircut leading to my playing &quot;I&apos;ll Always Love You&quot; on flute</title><link>https://franklinchen.com/blog/2013/08/08/a-haircut-leading-to-my-playing-ill-always-love-you-on-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/08/a-haircut-leading-to-my-playing-ill-always-love-you-on-flute/</guid><pubDate>Fri, 09 Aug 2013 02:17:12 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut-2013-08-08/floor.jpg&quot; alt=&quot;New floor&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut-2013-08-08/wall.jpg&quot; alt=&quot;Celebrity wall&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I got a haircut from my barber Joe, whom I have been seeing &lt;a href=&quot;/blog/2011/10/29/my-favorite-barber/&quot;&gt;for sixteen years now&lt;/a&gt; since moving to Pittsburgh. Unexpectedly, this led me to &quot;discovering&quot; a piece of music and going home to play it on flute.&lt;/p&gt;
&lt;p&gt;I was happy to arrive with only one other person in line, just getting into the chair, because Joe has a policy of not taking reservations, and &quot;if you leave, you lose your turn&quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut-2013-08-08/lose-your-turn.jpg&quot; alt=&quot;Lose your turn&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In practice, Joe usually takes 20-25 minutes per person, I figured on being out within 50 minutes. Since I was pretty exhausted because of a tough week, I took the opportunity to do some napping. In practice, I don&apos;t really sleep, but do get rest. Since Joe always has his oldies radio station on, I try to enjoy the music (which is not the kind of music I ordinarily listen to these days) and identify songs and singers I recognize.&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;p&gt;I heard someone sing a song that I recognized but had never truly known. I think it&apos;s a beautiful song, actually (from a melodic and harmonic point of view), although horribly cheesy if you pay attention to the lyrics.&lt;/p&gt;
&lt;p&gt;I recognized the song as being in &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;&quot;I Used to Play Flute&quot;&lt;/a&gt;, although I did not remember the title. I did remember really enjoying playing it on flute.&lt;/p&gt;
&lt;p&gt;So this evening, after dinner, I found the song in the book. It&apos;s called &lt;a href=&quot;https://en.wikipedia.org/wiki/I%27ll_Always_Love_You_%28Taylor_Dayne_song%29&quot;&gt;&quot;I&apos;ll Always Love You&quot;&lt;/a&gt;. I played through the song with the CD track accompaniment.&lt;/p&gt;
&lt;p&gt;I also looked for a sung performance on YouTube, and found one, by the musician who actually created it in 1987, &lt;a href=&quot;https://www.taylordayne.com/&quot;&gt;Taylor Dayne&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/0bGdnMnq40s&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I don&apos;t think this this is who I heard on Joe&apos;s radio station. Taylor Dayne sings more wildly than whoever was on the radio (or maybe in my half-asleep state, I wasn&apos;t paying enough attention). This is not the kind of music I was listening to in 1988, and I have to confess I cringed when watching this video, because although the performance is quite good, her style of singing is just not really to my taste! I prefer the song as an instrumental.&lt;/p&gt;
&lt;h3&gt;Tito Nieves&lt;/h3&gt;
&lt;p&gt;I was very amused to find a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jukebo.com/tito-nieves/music-clip,i-ll-always-love-you,u8quz.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jukebo.com/tito-nieves/music-clip,i-ll-always-love-you,u8quz.html&quot;&amp;gt;salsa cover of this song&amp;lt;/span&amp;gt; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Tito_Nieves&quot;&gt;Tito Nieves&lt;/a&gt;. It&apos;s pretty good, actually:&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&quot;width:480px;&quot;&amp;gt;&amp;lt;iframe src=&quot;https://www.ultimedia.com/swf/iframe_pub.php?width=480&amp;amp;height=385&amp;amp;id=u8quz&amp;amp;url_artist=https://www.jukebo.com/tito-nieves/music-clip,i-ll-always-love-you,u8quz.html&amp;amp;autoplay=0&amp;amp;mdtk=04516441&amp;amp;site=.fr&quot; width=&quot;480&quot; height=&quot;385&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; hspace=&quot;0&quot; vspace=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;span style=&quot;color:#000000; font:bold 11px verdana;&quot;&amp;gt;See all &amp;lt;/span&amp;gt;&amp;lt;a href=&quot;https://www.jukebo.com/tito-nieves/music-clip,i-ll-always-love-you,u8quz.html&quot; style=&quot;color:#000000;text-decoration:underline;  font:bold 11px verdana;&quot; target=&quot;_blank&quot;&amp;gt;music videos Tito Nieves&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;Haircut photos&lt;/h2&gt;
&lt;p&gt;In any case, I was delighted not only to have gotten a haircut, but also learned something about a piece of music that had up till now only been a CD track and a flute part that I had played through months ago.&lt;/p&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut-2013-08-08/before.jpg&quot; alt=&quot;Franklin before haircut&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut-2013-08-08/after.jpg&quot; alt=&quot;Franklin after haircut&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Data Visualization: D3 and R</title><link>https://franklinchen.com/blog/2013/08/07/pittsburgh-data-visualization-d3-and-r/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/07/pittsburgh-data-visualization-d3-and-r/</guid><pubDate>Thu, 08 Aug 2013 02:19:55 GMT</pubDate><content:encoded>&lt;p&gt;Just a week ago, the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/&quot;&gt;Pittsburgh Data Visualization Meetup&lt;/a&gt; launched with a &lt;a href=&quot;/blog/2013/07/30/pittsburgh-data-visualization-meetup-inaugural-meet-and-greet/&quot;&gt;&quot;meet and greet&quot; that I attended&lt;/a&gt;. Today was &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/events/132375562/&quot;&gt;our first actual presentation-based meeting&lt;/a&gt;, with speakers giving introductions to both D3 and R.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Location&lt;/h2&gt;
&lt;p&gt;The meeting was on the Pitt campus. Unfortunately, this meant no WiFi access, because guest WiFi requires a sponsor and is a hassle to set up. So this is not the perfect place to meet, but was available to Patrick in the summer.&lt;/p&gt;
&lt;p&gt;About 15 people showed up.&lt;/p&gt;
&lt;h2&gt;Patrick on D3&lt;/h2&gt;
&lt;p&gt;By popular demand, Patrick gave an introduction to D3.&lt;/p&gt;
&lt;p&gt;He is particularly interested in knowledge discovery in data mining. He gave an example of converting data from HTML to XML to SVG and then finally getting it into D3.&lt;/p&gt;
&lt;p&gt;Although D3 is a JavaScript library, its API feels like its own domain-specific language with its own conventions, so there&apos;s a learning curve. Patrick gave a demo of hooking data up to D3 and then changing the data, and hooking up mouse events. He showed transitions for visualization when data changes. Apparently D3 does an efficient recalculation of what needs to happen when data changes.&lt;/p&gt;
&lt;p&gt;He also showed a force-directed graph.&lt;/p&gt;
&lt;h2&gt;Rihanna on R&lt;/h2&gt;
&lt;p&gt;Rihanna spoke about her use of R for her work.&lt;/p&gt;
&lt;p&gt;She has been using R for 13 years! She gave an overview of her work flow, which involves using a workspace and saving objects. She likes to get data from raw sources into R and use plots to look for patterns, spikes. Then she makes different plots in order to tell a story.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I found it very informative to hear about the work flows Patrick and Rihanna each adopted in order to find and report on interesting data.&lt;/p&gt;
&lt;p&gt;The main drawback of this meeting was that it was very long, because of two talks crammed into one evening. Since this was just the first meeting, I suggested that shorter talks in the future would enable more time for unstructured discussion at meetings.&lt;/p&gt;
</content:encoded></item><item><title>A new hike in Frick Park with Abby</title><link>https://franklinchen.com/blog/2013/08/04/a-new-hike-in-frick-park-with-abby/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/04/a-new-hike-in-frick-park-with-abby/</guid><pubDate>Sun, 04 Aug 2013 21:00:55 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s August and Abby and I have been upset that, unlike all the other years since we&apos;ve been together, most of the year has already gone by without our having gone on a substantial hike together. This is a big deal because hiking is one of the things that &lt;a href=&quot;/blog/2013/05/12/my-rachel-carson-trail-hike-for-the-year/&quot;&gt;first drew us together and that we most enjoy doing together&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The reasons for this utterly unfortunate situation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abby broke her foot in February, at the same time she started a new job, and this totally threw both our lives into chaos. Her full recovery was very slow, and she has still not regained her fitness, and is not in any shape to do any of the &lt;a href=&quot;/blog/2012/03/11/fascinating-bushwhacking-hike-at-pa-state-game-land-51-dunbar/&quot;&gt;Pittsburgh Hiking meetup hikes that we normally start doing in the spring and throughout the summer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I got occupied with Pittsburgh Marathon training, then after the marathon, during a hike, came down with a skin rash that resulted in a lot of trouble for me despite multiple trips to the doctor and treatments, still not completely cleared up even today, and that resulted in my not only losing fitness but also being wary of going out on hikes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anyway, we decided that the past is the past, and we should start doing some smaller-scale hiking on our own, just to enjoy being out together again. Today we simply chose to do a little exploratory (for me, anyway) hike of Frick Park. The hike was probably just over 4 miles long (including walking to the park from home and back), so it was quite short, but it was good.&lt;/p&gt;
&lt;p&gt;Here&apos;s what I discovered:&lt;/p&gt;
&lt;h2&gt;Showing me some trails&lt;/h2&gt;
&lt;p&gt;Basically, Abby showed me some trails she had discovered when taking her own walk in Frick at some point. These were not the trails I usually run on, but narrower, craggier, steeper trails that clearly are used by mountain bikers (in fact, one came our way during the hike).&lt;/p&gt;
&lt;p&gt;Abby leading the way:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/abby.jpg&quot; alt=&quot;Abby&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some views:
&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/view.jpg&quot; alt=&quot;View from trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/another-view.jpg&quot; alt=&quot;Another view from trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fungi:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/fungi.jpg&quot; alt=&quot;Fungi&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A little bridge:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/bridge.jpg&quot; alt=&quot;A bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We ended up in Fern Hollow, familiar territory:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/fern-hollow.jpg&quot; alt=&quot;View from Fern Hollow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Do you see the spider web?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/spider-web.jpg&quot; alt=&quot;Spider web&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We went up the Falls Ravine Trail from Fern Hollow, and then Abby showed me a small trail that leads back up to &quot;civilization&quot;, emerging behind a bench near the meadow across from the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghparks.org/frick-kids&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghparks.org/frick-kids&quot;&amp;gt;Blue Slide Playground&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;This meadow is popular for sledding in the snowy winter, but right now it is popular for some kind of medieval play fighting:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2013-08-04/fighting.jpg&quot; alt=&quot;Play fighting in the meadow&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was very happy to be hiking with Abby again, even if &quot;only&quot; in our backyard park and for a short distance.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Ruby/Python social and some observations about our polyglot world</title><link>https://franklinchen.com/blog/2013/08/02/pittsburgh-ruby-python-social/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/08/02/pittsburgh-ruby-python-social/</guid><pubDate>Sat, 03 Aug 2013 02:17:42 GMT</pubDate><content:encoded>&lt;p&gt;Programming meetups aren&apos;t just about presentations and coding. Abby and I joined others in meeting up for dinner for a &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/120201652/&quot;&gt;joint Pittsburgh Ruby and Pittsburgh Python social&lt;/a&gt; and enjoyed relaxing and socializing outdoors in Bakery Square. Although it perpetually looked like it was going to rain, it turned out we weren&apos;t really rained on.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://instagram.com/p/ch8quus4Kb/embed/&quot; width=&quot;612&quot; height=&quot;710&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; allowtransparency=&quot;true&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Carol, Andre, and Abby:&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://www.flickr.com/photos/carolnichols/9425969330&quot; title=&quot;ttm! by Carol Nichols, on Flickr&quot;&amp;gt;&amp;lt;img src=&quot;https://farm4.staticflickr.com/3754/9425969330_d8ecdbf987.jpg&quot; width=&quot;500&quot; height=&quot;281&quot; alt=&quot;ttm!&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;It was fitting that there was a joint social for two language communities, because we live in a polyglot world.&lt;/p&gt;
&lt;p&gt;Despite my original intention not to engage into any tech-related conversation, I couldn&apos;t help remarking on my current polyglot responsibilities at work at CMU on the METAL project!&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Our polyglot world: Ruby, Python, Perl&lt;/h2&gt;
&lt;p&gt;I mentioned having to cobble together Ruby, Python, and Perl code recently in an NLP project to process Farsi text into corpora to analyze. We used a Ruby gem &lt;a href=&quot;https://github.com/aziz/virastar&quot;&gt;Virastar&lt;/a&gt; in our pipeline, a Perl script for a Farsi stemmer, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://perstem.sourceforge.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://perstem.sourceforge.net/&quot;&amp;gt;Perstem&amp;lt;/span&amp;gt;, and a &lt;a href=&quot;https://github.com/wfeely/farsiNLPTools&quot;&gt;Python script for normalization&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-12-04) C++, Scala, MongoDB&lt;/h3&gt;
&lt;p&gt;The work project ended up becoming even more polyglot than I expected.&lt;/p&gt;
&lt;p&gt;I also used a C++ tagger, TurboTagger from &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.ark.cs.cmu.edu/TurboParser/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.ark.cs.cmu.edu/TurboParser/&quot;&amp;gt;TurboParser&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I wrote Scala to execute and monitor the pipeline, because it turned out that component bugs and timeouts (from infinite loops sometimes) had to be dealt with: the original shell script pipelines did not handle any of that at all. Also, the vast amount of data meant that parallelizing was critical. The Scala ecosystem has  turned out great for me. I didn&apos;t use Akka actors for this task, just futures and parallel collections.&lt;/p&gt;
&lt;p&gt;I also used MongoDB because it is quite a natural fit for document-oriented storage and querying as an intermediate stage I can inspect before the final stage of conversion to Sketch Engine format. And I happened to just &lt;a href=&quot;/blog/2013/12/04/mongodb-free-online-course-a-review/&quot;&gt;finish a free online MongoDB course&lt;/a&gt; which has been useful. In my Scala code, I used the official Scala driver &lt;a href=&quot;https://github.com/mongodb/casbah&quot;&gt;Casbah&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why MongoDB? I needed to track the transformations, and experiment with different parameters while also fixing bugs and rerunning stuff. Because there is so much data and sometimes something crashes in the pipeline, I decided to save all intermediate results in a database in order to avoid repeating work.&lt;/p&gt;
&lt;p&gt;Finally, I used Scala to generate corpora for importing into &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.sketchengine.co.uk/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.sketchengine.co.uk/&quot;&amp;gt;The Sketch Engine&amp;lt;/span&amp;gt; for our Farsi linguistics experts to analyze. Scala&apos;s parser combinator library came in very useful, and I represented each stage in the pipeline as a transformation of a custom AST designed to finally serialize well to the Sketch Engine &quot;vert&quot; file format.&lt;/p&gt;
&lt;p&gt;It was pretty important to work with ASTs, since we actually got text in a variety of formats, which I parsed to a common AST in order to push into the pipeline.&lt;/p&gt;
&lt;p&gt;Whew!&lt;/p&gt;
&lt;h3&gt;(Update of 2014-06-10)&lt;/h3&gt;
&lt;p&gt;A description of some of this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://springfield.metaphor.cs.cmu.edu:8080/MetaphorViz/About.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://springfield.metaphor.cs.cmu.edu:8080/MetaphorViz/About.html&quot;&amp;gt;METAL project&amp;lt;/span&amp;gt; work is in the paper &lt;a href=&quot;https://web.archive.org/web/20230609210549/http://www.lrec-conf.org/proceedings/lrec2014/pdf/596_Paper.pdf&quot;&gt;&quot;The CMU METAL Farsi NLP Approach&quot;&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Node Meetup: Optimizing development workflow with Grunt</title><link>https://franklinchen.com/blog/2013/07/31/pittsburgh-node-meetup-optimizing-development-workflow-with-grunt/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/31/pittsburgh-node-meetup-optimizing-development-workflow-with-grunt/</guid><pubDate>Thu, 01 Aug 2013 01:29:45 GMT</pubDate><content:encoded>&lt;p&gt;I am not a &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node&lt;/a&gt; developer. I&apos;ve only used Node to play around with JavaScript, not for any real work or personal projects (yet). The last time I used Node was two months ago, for a &lt;a href=&quot;https://franklinchen.com/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/&quot;&gt;talk I gave at Pittsburgh TechFest 2013&lt;/a&gt; in which I wrote JavaScript code running on Node, but did not actually talk about it, and only mentioned that I had written it and put it up on my &lt;a href=&quot;https://github.com/franklinchen/talk-on-overusing-regular-expressions&quot;&gt;GitHub repository for the talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That is why it took me so long to attend my first &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Node-js/&quot;&gt;Pittsburgh Node&lt;/a&gt; &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Node-js/events/128439692/&quot;&gt;meeting&lt;/a&gt;. I was simply curious who was involved in the local Node community and what tooling they were using. The meeting was about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://gruntjs.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://gruntjs.com/&quot;&amp;gt;Grunt&amp;lt;/span&amp;gt;, a Make-like task runner. Nate Good of ShowClix presented.&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;There was a fairly large group of people who attended: around thirty. Node seems to be popular in town.&lt;/p&gt;
&lt;h2&gt;The talk&lt;/h2&gt;
&lt;p&gt;Overall, Grunt seemed like Make or Rake. You can use plugins and define your own tasks. So there seemed nothing special about it, other than it is a useful tool corresponding to similar tools for other language ecosystems.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Since I don&apos;t really use Node, I went to the meetup out of curiosity more than anything else. I will probably not attend again. There seemed a lot of enthusiasm though.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Data Visualization Meetup: inaugural meet and greet</title><link>https://franklinchen.com/blog/2013/07/30/pittsburgh-data-visualization-meetup-inaugural-meet-and-greet/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/30/pittsburgh-data-visualization-meetup-inaugural-meet-and-greet/</guid><pubDate>Wed, 31 Jul 2013 03:42:33 GMT</pubDate><content:encoded>&lt;p&gt;There is a new &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/&quot;&gt;Pittsburgh Data Visualization Meetup&lt;/a&gt; and I attended the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Data-Visualization-Group/events/128665542/&quot;&gt;first meeting&lt;/a&gt;, which was a meet and greet at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.fuelandfuddle.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.fuelandfuddle.com/&quot;&amp;gt;Fuel &amp;amp; Fuddle&amp;lt;/span&amp;gt; in Oakland.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;My interest in data visualization&lt;/h2&gt;
&lt;p&gt;Data visualization isn&apos;t something I&apos;ve done much of, but is something I&apos;m interested in, both for work and for my own personal project ideas. For example, I have amassed a lot of personal data about the races I&apos;ve run and the chess games I&apos;ve played.&lt;/p&gt;
&lt;p&gt;The only thing I&apos;ve done for visualization at work is generate static images using &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.graphviz.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.graphviz.org/&quot;&amp;gt;Graphviz&amp;lt;/span&amp;gt; to display, in human-friendly form, &lt;a href=&quot;https://en.wikipedia.org/wiki/Grammatical_relation&quot;&gt;grammatical relations&lt;/a&gt; that are otherwise represented using a text format; this text format is usually automatically generated, but sometimes has errors that humans have to fix. It is hard to either see or fix such errors from the text representation, so the visual display helps a lot. Unfortunately, right now our program only generates a static image, not an interactive and editable representation of each graph, so the user who sees something wrong has to edit the text and regenerate the image to verify the correction visually. Ideally we would like to make the program more interactive, but this task is not performed very often, so I had gone with the simplest possible solution.&lt;/p&gt;
&lt;h2&gt;Summary of meeting&lt;/h2&gt;
&lt;p&gt;This being the first meeting, we all introduced ourselves and chatted over dinner. The creator of the new meetup is Patrick Dudas, who is involved in all kinds of cool projects in collecting data (such as scraping Twitter) and visualizing it.&lt;/p&gt;
&lt;p&gt;People talked about the kind of work they do and the tools they use or would like to switch to using. There was a good variety of people from different disciplines, from science to business, all with a need to create useful visualizations to analyze and report on data.&lt;/p&gt;
&lt;p&gt;Libraries and languages mentioned included D3, ggplot, R, Python, and Tableau. There was particular interest in more effective use of D3 and R. Patrick promised to lead a session on D3 soon.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was good to see a new meetup revolving around a need and a discipline, visualization, that cuts across different disciplines and programming languages.&lt;/p&gt;
</content:encoded></item><item><title>I miss playing chess at the Pittsburgh Chess Club</title><link>https://franklinchen.com/blog/2013/07/30/i-miss-playing-chess-at-the-pittsburgh-chess-club/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/30/i-miss-playing-chess-at-the-pittsburgh-chess-club/</guid><pubDate>Wed, 31 Jul 2013 01:03:33 GMT</pubDate><content:encoded>&lt;p&gt;I haven&apos;t played in any chess tournaments since &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;winning this year&apos;s Pittsburgh Chess Club Championship&lt;/a&gt;: I had too many other projects I wanted to work on.&lt;/p&gt;
&lt;p&gt;But I&apos;ve been missing chess in the past week or so. I can tell because I&apos;ve been playing chess against myself in daydreams. I think I need to start playing again.&lt;/p&gt;
&lt;p&gt;I stopped by the Pittsburgh Chess Club to check out the action. Henry was playing against Ed Dean; I wanted to say hello, but he didn&apos;t even see me during the several minutes I was present watching people&apos;s games. He was so focused and deep in thought, never looking up!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dean-doktorski.jpg&quot; alt=&quot;Dean-Doktorski chess game&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2013-07-31)&lt;/h2&gt;
&lt;p&gt;Henry actually ended up winning the game, in a big upset!&lt;/p&gt;
&lt;p&gt;It&apos;s funny, he&apos;s beaten Ed Dean twice now, while I have never beaten Ed, and Henry has never beaten me.&lt;/p&gt;
</content:encoded></item><item><title>All India: great new Indian restaurant in Pittsburgh</title><link>https://franklinchen.com/blog/2013/07/25/all-india-great-new-indian-restaurant-in-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/25/all-india-great-new-indian-restaurant-in-pittsburgh/</guid><pubDate>Fri, 26 Jul 2013 02:22:09 GMT</pubDate><content:encoded>&lt;p&gt;I have a new favorite Indian restaurant in Pittsburgh: &lt;a href=&quot;https://www.allindiapgh.com/&quot;&gt;All India&lt;/a&gt; in Oakland on North Craig Street.&lt;/p&gt;
&lt;p&gt;Being a fan of Indian food, I&apos;ve tried basically all the Indian restaurants in the city for over a decade in Pittsburgh. Many are not worth mentioning at all. Some I have enjoyed to a degree, but none have really excited me.&lt;/p&gt;
&lt;p&gt;Until now.&lt;/p&gt;
&lt;p&gt;The relatively new All India is now &lt;em&gt;my clear favorite&lt;/em&gt;. Recently, I went with some friends there for their lunch buffet, and it was great. A large selection, very fresh and tasty. Nice interior with pleasant furniture and settings.&lt;/p&gt;
&lt;p&gt;I&apos;m not really a restaurant reviewer, so I apologize for not being more specific.&lt;/p&gt;
&lt;p&gt;I took Abby there for a dinner date tonight. Unfortunately, I accidentally cracked apart a tooth in a freak accident while on my second plate, so we had to leave early. But we will definitely go again.&lt;/p&gt;
&lt;p&gt;My first plate, which I finished:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/all-india.jpg&quot; alt=&quot;All India&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Ruby lightning talk night: RVM, business logic with Rails, IRC, rspec-given, Vagrant</title><link>https://franklinchen.com/blog/2013/07/11/pittsburgh-ruby-lightning-talk-night/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/11/pittsburgh-ruby-lightning-talk-night/</guid><pubDate>Thu, 11 Jul 2013 20:53:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby&quot;&gt;Pittsburgh Ruby meetup&lt;/a&gt; held a &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/120200102&quot;&gt;lightning talks session&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Originally, I was not going to present anything, since I did not feel that I had anything exciting to quickly share (I have not been doing much Ruby programming lately at all other than &lt;a href=&quot;/blog/2013/06/29/nil-non-determinism-exceptions&quot;&gt;debugging my Octopress-generated blog&lt;/a&gt;), and don&apos;t like talking just to talk.&lt;/p&gt;
&lt;p&gt;But at the very last minute, just half an hour before the meeting, I noticed some developments in the world of &lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt; announced on Twitter by Jim Weirich, and I got excited enough that I decided to talk about his &lt;a href=&quot;https://github.com/jimweirich/rspec-given&quot;&gt;&lt;code&gt;rspec-given&lt;/code&gt;&lt;/a&gt;, which was just released at version 3.0.0.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Colin, on &lt;code&gt;rvm_recommended_ruby&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Colin briefly talked about how he likes to automate things, and therefore, in the context of using &lt;a href=&quot;https://rvm.io/&quot;&gt;RVM&lt;/a&gt;, created &lt;a href=&quot;https://github.com/wayneeseguin/rvm/pull/1074&quot;&gt;&lt;code&gt;rvm_recommended_ruby&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Jon, on business logic in pure Ruby&lt;/h2&gt;
&lt;p&gt;Jon gave a short summary of his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jonathandean.com/2013/07/business-logic-in-pure-ruby/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jonathandean.com/2013/07/business-logic-in-pure-ruby/&quot;&amp;gt;blog post&amp;lt;/span&amp;gt; on not putting all business logic into Rails models, but instead, decoupling from &lt;code&gt;ActiveRecord&lt;/code&gt; and Rails altogether. This is a theme that has risen a lot in recent years in the Rails community.&lt;/p&gt;
&lt;h2&gt;Carol, on how to use IRC to get help&lt;/h2&gt;
&lt;p&gt;Carol talked about how to use IRC to get help when working on projects.&lt;/p&gt;
&lt;h2&gt;Me, on &lt;code&gt;rspec-given&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;I talked about cool features in &lt;a href=&quot;https://github.com/jimweirich/rspec-given&quot;&gt;&lt;code&gt;rspec-given&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rspec-given&lt;/code&gt; has actually been around for a while, but I had not used in the past. I plan to use it in the future.&lt;/p&gt;
&lt;p&gt;It provides &lt;code&gt;Given&lt;/code&gt;, &lt;code&gt;When&lt;/code&gt;, &lt;code&gt;Then&lt;/code&gt;, and &lt;code&gt;And&lt;/code&gt; for writing specifications.&lt;/p&gt;
&lt;p&gt;Also, now there is &lt;code&gt;Invariant&lt;/code&gt;, which I think is a great addition to &lt;code&gt;RSpec&lt;/code&gt;, enabling an easy way to check invariants as part of every example.&lt;/p&gt;
&lt;p&gt;Finally, I love the new natural assertions, the ability to write stuff like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Then { stack.top == :second_item }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;instead of&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Then { expect(stack.top).to eq(:second_item) }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;while &lt;code&gt;RSpec&lt;/code&gt; automatically generates useful messages on failure.&lt;/p&gt;
&lt;h2&gt;Colin again, on Vagrant&lt;/h2&gt;
&lt;p&gt;Since all the lightning talks were done in less than half an hour, Carol called for more volunteers to talk about something. Colin ended up impromptu talking about his use of &lt;a href=&quot;http://www.vagrantup.com/&quot;&gt;Vagrant&lt;/a&gt; to create development environments.&lt;/p&gt;
&lt;p&gt;There was particular interest in how to share files with the host file system. Vagrant makes this easy.&lt;/p&gt;
&lt;p&gt;Vagrant is great. Use it.&lt;/p&gt;
&lt;h2&gt;Ruby meets Python&lt;/h2&gt;
&lt;p&gt;Carol reminded everyone that coming up is a Ruby/Python joint social.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;A relatively short Pittsburgh Ruby meetup, and with a smaller crowd than some others in the past, but a fun and instructive one.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget, &lt;a href=&quot;http://steelcityruby.org/&quot;&gt;Steel City Ruby Conference 2013&lt;/a&gt; is in a month! I&apos;m &lt;a href=&quot;https://franklinchen.com/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;excited to attend again&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh JavaScript meetup: functional programming</title><link>https://franklinchen.com/blog/2013/07/10/pittsburgh-javascript-meetup-functional-programming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/10/pittsburgh-javascript-meetup-functional-programming/</guid><pubDate>Wed, 10 Jul 2013 22:37:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://photos3.meetupstatic.com/photos/event/7/f/6/e/global_239372622.jpeg&quot; alt=&quot;Pittsburgh JavaScript&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Because the topic of the featured presentation by &lt;a href=&quot;http://idiotcoder.com/&quot;&gt;Richard Ashkettle&lt;/a&gt; was &lt;a href=&quot;https://en.wikipedia.org/wiki/Functional_programming&quot;&gt;functional programming&lt;/a&gt;, I made sure to attend my first meeting of the newly revived &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript/&quot;&gt;Pittsburgh JavaScript meetup&lt;/a&gt;. (This was actually the third meeting of the revived Pittsburgh JavaScript group, but I hadn&apos;t been able to make it to the first two.)&lt;/p&gt;
&lt;p&gt;I&apos;d met Richard earlier, a month ago at &lt;a href=&quot;https://franklinchen.com/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;Pittsburgh TechFest&lt;/a&gt;. He does not claim to be an expert at functional programming, but is enthusiastic about concepts and techniques that he can and does apply to improving software quality in many dimensions. Since I have been a functional programming enthusiast and practitioner for twenty years, I had these goals in attending his presentations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;evaluate what Richard and others have done with, and think is important about,  functional programming&lt;/li&gt;
&lt;li&gt;offer a few corrections, elaborations, suggestions as appropriate for the situation&lt;/li&gt;
&lt;li&gt;gather information on how I may be able to effectively explain functional programming to those who are new to it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;History of the Pittsbugh JavaScript meetup group&lt;/h2&gt;
&lt;p&gt;Two years ago, in 2011, I had attended the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers&quot;&gt;first incarnation of the group&lt;/a&gt; faithfully, attending several months of meetings before it disbanded when the founder left Pittsburgh. I learned quite a bit from those meetings.&lt;/p&gt;
&lt;p&gt;Two years is a long time in the world of JavaScript. Looking back at &lt;a href=&quot;https://franklinchen.com/blog/2011/09/27/when-jquery-attacks/&quot;&gt;one of my blog posts reporting on the old JavaScript meetup group&lt;/a&gt;, I am amused by how anachronistic that feels to me today, as in my mention of &lt;a href=&quot;http://sproutcore.com/&quot;&gt;Sproutcore&lt;/a&gt;, which I never hear about any more.&lt;/p&gt;
&lt;h2&gt;Up front: my take on the secret of JavaScript&lt;/h2&gt;
&lt;p&gt;Here are some observations (not novel) I have about JavaScript, to set the stage for further discussion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript is full of horrible, disgusting Bad Parts.&lt;/li&gt;
&lt;li&gt;JavaScript has only one shiny Good Part: it has first-class functions.&lt;/li&gt;
&lt;li&gt;People manage to get a lot of amazingly cool and important stuff done using JavaScript, so take it seriously.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Comments on Richard&apos;s presentation&lt;/h2&gt;
&lt;h3&gt;Immutability and &quot;functional languages&quot;&lt;/h3&gt;
&lt;p&gt;Richard talked about &lt;a href=&quot;https://en.wikipedia.org/wiki/Immutable_object&quot;&gt;immutability&lt;/a&gt; as being part of what &quot;functional programming&quot; is about.&lt;/p&gt;
&lt;p&gt;Yes, it is, and in addition, common best practices in many programming languages these days argue for favoring immutability. I want to emphasize that you don&apos;t have to go full-blown into a specialized &quot;functional language&quot; in order to take advantage of immutability as desired: for example, this tip has long since been known as at least a &quot;design pattern&quot; in the &lt;a href=&quot;/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/&quot;&gt;Java world&lt;/a&gt;, in the &lt;a href=&quot;http://www.harukizaemon.com/blog/2010/03/01/functional-programming-in-object-oriented-languages/&quot;&gt;Ruby world&lt;/a&gt;, and basically everywhere else.&lt;/p&gt;
&lt;p&gt;Richard suggested that &quot;functional languages&quot; don&apos;t allow mutation. By my definition, this is &lt;em&gt;not&lt;/em&gt; actually true.  I didn&apos;t raise an objection during the talk because I didn&apos;t want to sidetrack it, but here I have space to elaborate a little. I would argue (but that would have to be another blog post) that the cleanest, most intuitive and novice-accessible &quot;functional languages&quot;) are those in the &lt;a href=&quot;https://en.wikipedia.org/wiki/ML_%28programming_language%29&quot;&gt;ML&lt;/a&gt; family originally developed in the 1970s and lives on today&apos;s popular, industrial-strength dialects of &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt;, &lt;a href=&quot;http://ocaml.org/&quot;&gt;OCaml&lt;/a&gt;, and &lt;a href=&quot;http://fsharp.org/&quot;&gt;F#&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ML fully supports mutation&lt;/em&gt;, through &lt;a href=&quot;http://en.wikibooks.org/wiki/Standard_ML_Programming/Types#References&quot;&gt;reference cells&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Personally, because of notions like this, I&apos;ve been thinking that maybe it would be best if we all stopped using the term &quot;functional language&quot;, because it has sadly become misleading and ambiguous. In particular, people instantly think &quot;Haskell&quot; when they use the word &quot;functional language&quot;, when in fact Haskell is a very unusual, unique language (and ecosystem) among languages that one could call &quot;functional&quot;.&lt;/p&gt;
&lt;h3&gt;Expressions, functions, evaluation, and values&lt;/h3&gt;
&lt;p&gt;As Richard put it, &quot;favor expressions evaluating to a value&quot;. The focus of functional programming is on &lt;em&gt;returning&lt;/em&gt; a value, from an expression that includes function calls, rather than munging some mutable global state, or modifying state through a reference passed into a function as a parameter.&lt;/p&gt;
&lt;h3&gt;Recursion vs. looping?&lt;/h3&gt;
&lt;p&gt;Richard noted that one characteristic of functional programming is the use of recursion instead of looping. He gave examples of writing tail-recursive functions.&lt;/p&gt;
&lt;p&gt;One nitpick (which again, I did not bring up during the talk): recursion and looping (as in through &quot;normal&quot; constructs such as &lt;code&gt;while&lt;/code&gt; and &lt;code&gt;for&lt;/code&gt;) are &lt;em&gt;not&lt;/em&gt; actually opposed. I will write a blog post later about why conventional looping is best thought of as a derived construct built on top of recursion, and why it might be best to consider conventional looping to be a historical accident and mistake (but a very useful invention given the historical circumstances).&lt;/p&gt;
&lt;h4&gt;Efficiency of recursion?&lt;/h4&gt;
&lt;p&gt;Also, people brought up the topic of efficiency. I have learned over the years that for many people, the word &quot;recursion&quot; seems to immediately trigger the word &quot;efficiency&quot;. Richard did a great job in mentioning that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls&quot;&amp;gt;EMCAScript 6 is going to have proper tail calls (also called tail call optimization)&amp;lt;/span&amp;gt;, which will make tail recursion equivalent to ordinary looping in terms of space usage. This is &lt;em&gt;hugely important&lt;/em&gt; news, of course. This mandate shows how serious JavaScript is about embracing functional programming.&lt;/p&gt;
&lt;h4&gt;Recursion for parallelism&lt;/h4&gt;
&lt;p&gt;But beyond the issue tail recursion, I felt I had to point out that recursive algorithms can offer actual &lt;em&gt;speedup&lt;/em&gt;. The classic examples, of course, are the &lt;a href=&quot;http://www.cs.cmu.edu/~scandal/nesl/alg-sequence.html#quicksort&quot;&gt;parallel speedups of divide-and-conquer algorithms such as quicksort that use recursion&lt;/a&gt;. If you expressed the algorithms by removing the recursion (with a hand-rolled stack as often taught in courses), you would destroy the inherent parallelism. So in the world of parallelism, you want your code to stay naturally recursive! As &lt;a href=&quot;https://web.archive.org/web/20160826164036/http://adambom.github.io:80/parallel.js/&quot;&gt;parallel computing comes to JavaScript&lt;/a&gt;, keep this in mind!&lt;/p&gt;
&lt;h3&gt;Higher-order functions, first-class functions&lt;/h3&gt;
&lt;p&gt;Richard: &quot;A function is an object&quot;.&lt;/p&gt;
&lt;p&gt;It&apos;s really as simple as that. Functions can be created, stored, passed around. Functions can return other functions.&lt;/p&gt;
&lt;p&gt;It&apos;s amazing, but I claim that this is JavaScript&apos;s one Good Part, its killer feature that surprisingly many languages don&apos;t have. And it&apos;s the one feature that is used &lt;em&gt;all the time&lt;/em&gt;, not just in esoteric code. From the very beginning, JavaScript had first-class functions, to support callbacks for client code in Web browsers. and &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node&lt;/a&gt; server-side code is nothing if not a whole bunch of &lt;code&gt;function (...)&lt;/code&gt;. Without closures and first-class functions, JavaScript would have been completely useless. Thank goodness &lt;a href=&quot;http://brendaneich.com/2008/04/popularity/&quot;&gt;Brendan Eich was inspired by the Scheme functional language&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;No methods!&lt;/h4&gt;
&lt;p&gt;JavaScript not only provides full-fledged functions, but ironically, its weirdest feature, the prototype-based inheritance instead of class-based inheritance, inadvertently has prevented &quot;interference&quot; from the conventional class-based object-oriented world, which is mostly based not on functions, but on &lt;a href=&quot;https://en.wikipedia.org/wiki/Method_%28computer_programming%29&quot;&gt;methods&lt;/a&gt; that interference with functions because they are meant to &lt;em&gt;replace&lt;/em&gt; functions (since according to &quot;pure&quot; object-oriented thinking, functions are evil and computation should involve method calls on objects). &lt;em&gt;JavaScript does not (really) have methods&lt;/em&gt;; it only simulates them, by storing bona fide closures into fields of (map) objects. For example, if you use &lt;a href=&quot;http://emberjs.com&quot;&gt;Ember&lt;/a&gt;, the following code illustrates how the building blocks of typical JavaScript programming involve creating lots of &lt;code&gt;function&lt;/code&gt;s: &lt;code&gt;valueWillChange&lt;/code&gt; and &lt;code&gt;valudDidChange&lt;/code&gt; are just functions. They are not special things, &quot;methods&quot;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;App.PersonView = Ember.View.extend({
  valueWillChange: function (obj, keyName, value) {
    this.changingFrom = value;
  }.observesBefore(&apos;content.value&apos;),
  valueDidChange: function(obj, keyName, value) {
      // only run if updating a value already in the DOM
      if(this.get(&apos;state&apos;) === &apos;inDOM&apos;) {
          var color = value &amp;gt; this.changingFrom ? &apos;green&apos; : &apos;red&apos;;
          // logic
      }
  }.observes(&apos;content.value&apos;)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Examples&lt;/h3&gt;
&lt;p&gt;Richard gave some standard examples of using higher-order functions such as &lt;code&gt;map&lt;/code&gt; and &lt;code&gt;filter&lt;/code&gt; and &lt;code&gt;foreach&lt;/code&gt; as provided in various popular JavaScript libraries such as &lt;a href=&quot;http://underscorejs.org/&quot;&gt;Underscore&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a matter of style, he recommended against long, obscure one-liners that involve chaining. I agree. For readability and testability of pipelines, I have found that it is good to break things up into intermediate steps. (Just &lt;a href=&quot;/blog/2013/06/26/pittsburgh-python-night-of-the-favorite-module/&quot;&gt;recently&lt;/a&gt;, Tim Lesher also recommended against stupidity masking as excessive cleverness in his Python lightning talk about functional programming with &lt;code&gt;itertools&lt;/code&gt;.)&lt;/p&gt;
&lt;h3&gt;Monads?!&lt;/h3&gt;
&lt;p&gt;Regrettably, Richard brought up the term &lt;a href=&quot;https://en.wikipedia.org/wiki/Monad_%28functional_programming%29&quot;&gt;&quot;monads&quot;&lt;/a&gt;. I&apos;m close to thinking that this word should be &lt;a href=&quot;http://fsharpforfunandprofit.com/posts/why-i-wont-be-writing-a-monad-tutorial/&quot;&gt;banned&lt;/a&gt;, because too many confusions about them have ruined the word. I have yet decided what the best alternative phrase might be. Maybe something like &quot;computational context&quot;?&lt;/p&gt;
&lt;p&gt;Ironically, Richard admitted he was going to abuse the word, and for the sake of example, he said, he was going to say that &quot;jQuery is a monad&quot;. I didn&apos;t want to derail his talk, and since he admitted the abuse, I decided there would be a better time to address this topic.&lt;/p&gt;
&lt;p&gt;It was interesting to me, however, that he gathered that the interesting thing about jQuery, and why he wanted to call it a monad, was the chaining of calls in jQuery. I need to think of a good way to deal with this intuition when I get around to explaining monads.&lt;/p&gt;
&lt;h3&gt;Partial application and currying&lt;/h3&gt;
&lt;p&gt;Richard explained both partial application and currying, then he wondered when one would in practice write a curried function.&lt;/p&gt;
&lt;p&gt;I said (but not very convincingly, I think) that you would write a curried function if you knew you would otherwise have to manually do a bunch of partial application. I have to confess that was a weak answer. I think the practical situation in JavaScript is that full-scale up-front currying is not useful.&lt;/p&gt;
&lt;h3&gt;Libraries&lt;/h3&gt;
&lt;p&gt;Richard recommended checking out the following libraries, especially Lo-Dash, which he judges to be faster than Underscore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://underscorejs.org/&quot;&gt;Underscore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lodash.com/&quot;&gt;Lo-Dash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://osteele.com/sources/javascript/functional/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://osteele.com/sources/javascript/functional/&quot;&amp;gt;Functional JavaScript&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Questions and answers&lt;/h2&gt;
&lt;p&gt;There were many interesting questions raised after the presentation.&lt;/p&gt;
&lt;h3&gt;Introducing functional programming into a team environment&lt;/h3&gt;
&lt;p&gt;Someone asked Richard a good question about whether it&apos;s appropriate to, say, start using Underscore at work and expecting other team members to learn how to use it. Is it fair to expect others to learn a new way of doing things that might seem weird?&lt;/p&gt;
&lt;p&gt;My point of view is that there&apos;s nothing specific about functional programming when it comes to questions like this. The same question comes up when evaluating a particular programming language or a particular MVC framework or a particular version control system, and the answer involve considering all the different realities of who is comfortable with what, whether it is worth learning something new, what the advantages and disadvantages are, how much the decision will affect delivery of business value.&lt;/p&gt;
&lt;h3&gt;Growing parameter list for a function vs. passing in a big object&lt;/h3&gt;
&lt;p&gt;One concern brought up is that if you&apos;re programming in a functional style, you can end up being faced with ever-growing parameter lists for a function to pass in everything that it needs. One solution is to create a big object to stick everything into it that might be needed (for example, a configuration object instead of separate flag parameters). Is this overkill?&lt;/p&gt;
&lt;p&gt;Also, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://tonylukasavage.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://tonylukasavage.com/&quot;&amp;gt;Tony Lukasavage&amp;lt;/span&amp;gt; emphasized that his concern was in the context of the need to evolve an existing API without breaking customers&apos; client code that uses it.&lt;/p&gt;
&lt;p&gt;My first note would be that API design is tricky and checking out &lt;a href=&quot;/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/&quot;&gt;some resources on API design&lt;/a&gt; is very helpful.&lt;/p&gt;
&lt;p&gt;Regarding parameter lists, Richard noted that you might have a design problem if you have a function that needs to know about so many things it depends on. You may want to refactor the function (of course, in the context of evolving a mature API that customers depend on, it may be too late, unfortunately) and the data structures passed in. For example, if you have a number of functions that all take as parameters a &lt;code&gt;firstName&lt;/code&gt; and &lt;code&gt;lastName&lt;/code&gt;, then maybe you want a single &lt;code&gt;name&lt;/code&gt; parameter instead.&lt;/p&gt;
&lt;p&gt;I suggested also that if certain flags are not always needed, then instead of a huge configuration object, how about simply having separate but related functions (in a language supporting overloading, you could provide overloaded functions, although the topic of overloading is another large one to discuss later), each of which takes only the flags the client cares about. Of course, as some people pointed out, then you might end up with annoyingly long and specific function names.&lt;/p&gt;
&lt;p&gt;Nobody said designing an API is easy.&lt;/p&gt;
&lt;h3&gt;Do I actually do functional programming?&lt;/h3&gt;
&lt;p&gt;One question I got, since before the meetup, I had indicated having experience with functional programming, was basically, do I actually use it in JavaScript and elsewhere. The answer is, yes. As I&apos;ve mentioned, you don&apos;t have use a special language in order to program in this way, although it&apos;s much easier and more efficient to use a language that is tailored to support it. Most of the code I&apos;ve written in the past fifteen years has attempted to be primarily functional in style, whatever language I&apos;m using for work (mostly Java, Perl, Python, and recently Scala). I don&apos;t do this out of some kind of ideology, but because it works well in getting stuff done. Before adopting a primarily functional style of programming, I spent years working in traditional imperative and object-oriented styles, and empirically, that was less pleasant.&lt;/p&gt;
&lt;h4&gt;Do I do functional programming in JavaScript?&lt;/h4&gt;
&lt;p&gt;I have not actually done any JavaScript programming for work since doing some UI prototyping two years ago. I don&apos;t know when I&apos;ll return to doing front end work, but meanwhile, I am interested in doing some Web browser stuff for personal projects, so I try to keep up to date on developments in the JavaScript world.&lt;/p&gt;
&lt;p&gt;One thing that has been interesting that I need to check out is the rise of &lt;a href=&quot;https://en.wikipedia.org/wiki/Functional_reactive_programming&quot;&gt;functional reactive programming (FRP)&lt;/a&gt; libraries for JavaScript, such as &lt;a href=&quot;https://github.com/raimohanska/bacon.js&quot;&gt;Bacon.js&lt;/a&gt;. FRP was originally invented in the 1990s by Conal Elliott in the context of Haskell, but almost twenty years later, has finally spread well beyond that now to mainstream visibility and use. For example, Microsoft has thrown its weight behind &lt;a href=&quot;http://rx.codeplex.com/&quot;&gt;Reactive Extensions (Rx)&lt;/a&gt;, which started out in the .NET world, but Microsoft then ported it to JavaScript, C/C++, Python, and Ruby.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was happy to see interest in functional programming in the local JavaScript community. Richard gave an introductory talk on it that I thought was very useful as a starting point for those who are new to it. I made note of some omissions or inaccuracies in order to improve my thinking about how I can contribute in the future to improving people&apos;s understanding and application of functional programming principles.&lt;/p&gt;
</content:encoded></item><item><title>More summer musical partying, and another ten-year-old dream fulfilled!</title><link>https://franklinchen.com/blog/2013/07/04/more-summer-musical-partying/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/04/more-summer-musical-partying/</guid><pubDate>Fri, 05 Jul 2013 03:25:39 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to a party at Gina&apos;s. We hadn&apos;t been over in &lt;a href=&quot;/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/&quot;&gt;more than half a year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We had a great time, sharing a ton of food (I made a cabbage dish of my own invention that included onion, garlic, olive oil, cumin seeds, thyme, lime juice, salt and pepper) and hanging out inside as well as in the backyard.&lt;/p&gt;
&lt;p&gt;I somehow started an arm wrestling competition with the guys, and then we challenged each other to pullups and chinups too.&lt;/p&gt;
&lt;p&gt;I also ended up playing three games of speed chess at a time handicap (my 3 minutes to his 10 minutes). I barely managed to win all three games. The final game should have been a draw, but I won through a swindle.&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;p&gt;I told Henry I was much improved musically since &lt;a href=&quot;/blog/2013/05/03/playing-violin-music-on-flute/&quot;&gt;we played together two months ago&lt;/a&gt;. A lot of things have been falling in place for me. Of course, this only makes me be more ambitious about music to play, and in return, get humbled yet again by how much more improvement is left for me!&lt;/p&gt;
&lt;h3&gt;Telemann&apos;s flute sonata in B minor, TMV 41:h4&lt;/h3&gt;
&lt;p&gt;One piece we tackled was &lt;a href=&quot;https://imslp.org/wiki/Flute_Sonata,_TWV_41:h4_%28Telemann,_Georg_Philipp%29&quot;&gt;Telemann&apos;s flute sonata in B minor, TMV 41:h4&lt;/a&gt;. I had only actually gone over the first two movements, so we were both sight reading the last two. That was something of a wreck for me, but gives me homework to do: originally I had not actually planned on learning the whole sonata, now I want to!&lt;/p&gt;
&lt;h3&gt;Bach&apos;s flute sonata in E major, BWV 1035&lt;/h3&gt;
&lt;p&gt;Another piece we did was &lt;a href=&quot;https://en.wikipedia.org/wiki/Sonata_in_E_major_for_flute_or_recorder_and_basso_continuo&quot;&gt;Bach&apos;s flute sonata in E major, BWV 1035&lt;/a&gt;, which I have already mentioned my obsession with in a &lt;a href=&quot;/blog/2013/03/21/my-second-year-of-celebrating-johann-sebastian-bachs-birthday/&quot;&gt;blog post over three months ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note: I am still not playing this on Baroque flute or modern flute, because of the difficulty! I have been working with a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.universaledition.com/Sonata-F-major-BWV-1035-for-treble-recorder-basso-continuo-Johann-Sebastian-Bach/composers-and-works/composer/32/work/4801&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.universaledition.com/Sonata-F-major-BWV-1035-for-treble-recorder-basso-continuo-Johann-Sebastian-Bach/composers-and-works/composer/32/work/4801&quot;&amp;gt;recorder transcription for F major&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Because I have actually been playing more of this sonata myself in the past months, I have come to change my mind about performances I listed in that blog post! There is nothing like actually studying and playing a piece of music to change one&apos;s perception of it.&lt;/p&gt;
&lt;p&gt;My favorite performance so far I&apos;ve found on YouTube is by Wilbert Hazelzet on Baroque flute. It&apos;s split over two parts:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ZGtjxNeBTAs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Oetbg7eRa60&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Anyway, Henry and I ran through the sonata. Again, I had not actually ever run through the final movement, so it was an embarrassing sight reading scramble for me. But he really enjoyed the last movement, and I did too, and realized that I wanted to actually study and practice it. It&apos;s funny how I came to enjoy this movement much more after having tried to play it.&lt;/p&gt;
&lt;h3&gt;Gabriel Fauré, Après un rêve: fulfilling my ten-year-old dream&lt;/h3&gt;
&lt;p&gt;After all the Baroque stuff, I decided to play something different with Henry. I pulled out my modern flute, and we did Fauré&apos;s song &lt;a href=&quot;https://en.wikipedia.org/wiki/Trois_m%C3%A9lodies,_Op.7_%28Faur%C3%A9%29&quot;&gt;&quot;Après un rêve&quot;&lt;/a&gt; in a flute and piano arrangement that I bought in 2003.&lt;/p&gt;
&lt;p&gt;Here&apos;s a story I have never told anyone until now.&lt;/p&gt;
&lt;p&gt;I bought that score because I was in love with the song, but never imagined that I would be able to sing it properly. So I thought to myself that if I ever played flute again (recall that the last time I had touched flute was twenty years earlier, in childhood), my goal would be to at least be able to play &lt;em&gt;this one song&lt;/em&gt; on flute reasonably close to how I feel it should be played or sung. (There is also a second piece for flute that I wanted to play as well. I will reveal it once I have actually played it with someone.)&lt;/p&gt;
&lt;p&gt;Ever since I &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;got back to flute almost two years ago&lt;/a&gt;, &quot;Après un rêve&quot; has been on my mind as well as on my shelf, and as a measure of progres, I have actually periodically pulled it out to try to play it. For well over a year, I could not play it anywhere near how I want it to sound. Here&apos;s a piano accompaniment track I&apos;ve been using in the past months:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/EAAe0GDO928&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Eight months ago, I fulfilled a childhood dream, by throwing myself into singing, and in fact, one song I did sing was &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;&quot;Après un rêve&quot;&lt;/a&gt;! I still don&apos;t sing it as well as I&apos;d like, and will continue working on singing it, but singing in general has had a tremendous positive transferring effect on my flute playing! I am now almost able to play &quot;Après un rêve&quot; how I want (the remaining difficulties being cleaning up the high passages in the arrangement as well as controlling the breath there as well). In any case, I went and played it with Henry for the first time, and it wasn&apos;t horrible. In summary, ten years after I bought that score with wishful thinking, I made my dream reality.&lt;/p&gt;
&lt;p&gt;By the way, here&apos;s a nice performance on flute that inspires me:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/95f57lYWgks&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Orlande_de_Lassus&quot;&gt;Roland de Lassus&lt;/a&gt;, as recorder duets&lt;/h3&gt;
&lt;p&gt;The surprise of the day was when, after watching me mess around with bass recorder, Henry got the idea of playing recorder duets with me. I hadn&apos;t known that he played recorder. He said he could play recorders in C (soprano and tenor), and since I didn&apos;t have my tenor on me, I gave him my soprano recorder. He picked up a book and went through it to find some early music duets that we could do on recorders. We did some with soprano and bass, then I switched to alto and we did soprano and alto for the rest we found in the book. It was immense fun!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-duets-with-henry.jpg&quot; alt=&quot;Henry and Franklin on recorders&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I feel blessed to have the opportunity and inspiration from Henry to continue improving at playing music, and stretch myself further. I have come so far in the past two years.&lt;/p&gt;
</content:encoded></item><item><title>Second year at July 3 music party: still only listening without playing</title><link>https://franklinchen.com/blog/2013/07/03/second-year-at-july-3-music-party-still-only-listening-without-playing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/07/03/second-year-at-july-3-music-party-still-only-listening-without-playing/</guid><pubDate>Thu, 04 Jul 2013 02:10:07 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/&quot;&gt;Last year Abby and I went&lt;/a&gt; to a July 3 music potluck/party at Susan&apos;s for the first time. We attended again. I brought my flute.&lt;/p&gt;
&lt;p&gt;Again I enjoyed hearing two groups of people playing music. I am not so much into the &quot;old time&quot; music, however, which the group outside in the backyard was playing, so I hung out inside instead, where I liked much better the blues guitar and ukulele and singing and piano. &lt;em&gt;I would like to join in one day&lt;/em&gt; myself, but today did not feel up to it. I never took out my flute; it didn&apos;t seem appropriate for any of the music anyway.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-07-04)&lt;/h2&gt;
&lt;p&gt;At &lt;a href=&quot;/blog/2014/07/03/third-year-at-july-3-music-party-and-finally-participated-in-jamming/&quot;&gt;my third year&lt;/a&gt; of this annual party, I actually played both piano and ukulele!&lt;/p&gt;
</content:encoded></item><item><title>Why I hate calling myself &quot;pragmatic&quot; but do</title><link>https://franklinchen.com/blog/2013/06/30/why-i-hate-calling-myself-pragmatic-but-do/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/30/why-i-hate-calling-myself-pragmatic-but-do/</guid><pubDate>Mon, 01 Jul 2013 02:57:55 GMT</pubDate><content:encoded>&lt;p&gt;For many years, I resisted calling myself &quot;pragmatic&quot;, even though the evolution of my personal philosophy as well as my concrete actions have for much longer been one that broadly should be called pragmatism.&lt;/p&gt;
&lt;p&gt;The thing is that for much of my life, I was &lt;em&gt;not&lt;/em&gt; a pragmatist in &lt;em&gt;any&lt;/em&gt; sense of the word. I think it was only about twenty years ago that I began my journey toward some of the characteristics of pragmatism, both in the broad popular sense and in the philosophical sense, and it was only in the past couple of years that I&apos;ve finally embraced the adjective as an accurate description of my attitude toward not only &lt;a href=&quot;https://en.wikipedia.org/wiki/Pragmatism&quot;&gt;philosophical issues&lt;/a&gt; (about which I will not say more in this post), but also to living and decision-making.&lt;/p&gt;
&lt;p&gt;I was dragged kicking and screaming into the world of pragmatism, because for some reason, I was born with a propensity for everything that is not pragmatic. I&apos;ve taken the official &lt;a href=&quot;https://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator&quot;&gt;Myers-Briggs Type Indicator&lt;/a&gt; a couple of times, including the &lt;a href=&quot;https://en.wikipedia.org/wiki/MBTI_Step_II&quot;&gt;MBTI Step II&lt;/a&gt;, and each time I come out as &lt;strong&gt;INFP&lt;/strong&gt;, which some call the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.personalitypage.com/INFP.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.personalitypage.com/INFP.html&quot;&amp;gt;Idealist&amp;lt;/span&amp;gt;, ha! (Note: I don&apos;t actually take the MBTI terribly seriously, but mention it because a lot of people know about it.)&lt;/p&gt;
&lt;h2&gt;False &quot;pragmatism&quot;?&lt;/h2&gt;
&lt;p&gt;The main reason I resist the word &quot;pragmatic&quot; is that all my life, I have seen it used by people to justify anything in the world they do, usually in conjunction with calling critics &quot;idealistic&quot; or some other such name. The word therefore not only lost its meaning for me, but even acquired a negative connotation.&lt;/p&gt;
&lt;p&gt;Very often, for example, someone in power will use the word &quot;pragmatic&quot; in order to shut out dissent and maintain the status quo, as though considering &quot;other&quot; ideas or implementing them is &lt;em&gt;by itself&lt;/em&gt; suspect. My personal definition of &quot;pragmatic&quot; includes objectively weighing costs and benefits, opportunities and risks. So when I hear someone &lt;em&gt;emotionally&lt;/em&gt; and &lt;em&gt;angrily&lt;/em&gt; calling himself a &quot;pragmatist&quot;, I completely discount that person, whether it&apos;s a politician justifying not taking a stand or whether it&apos;s a bureaucracy unwilling to experiment with some changes.&lt;/p&gt;
&lt;p&gt;Also, I have found that a lot of people who call themselves &quot;pragmatic&quot; have a very cynical view of human nature and don&apos;t believe in people, don&apos;t believe in possibilities. So &quot;pragmatic&quot; for them means not speaking up about injustice, discouraging their children from pursuing some &quot;impractical&quot; talent, etc. For me, a real pragmatist wouldn&apos;t be negative all the time about change or risk, but would confront it head on and look at &lt;em&gt;all&lt;/em&gt; sides, not just the side that conveniently maintains the status quo.&lt;/p&gt;
&lt;p&gt;We see people lie and cheat all the time in the name of pragmatism, justifying what they do by simply stating that everyone else is doing, that you can&apos;t beat the system so you should learn how to win for yourself within it, etc. I think it&apos;s a dangerous slippery slope if you rightfully see and acknowledge the negatives in the world but then decide that the correct thing to do is always to just play along. Is this &quot;idealistic&quot;? I don&apos;t think so. I think the pragmatic thing to do is to pick your fights, rather than not fight at all.&lt;/p&gt;
&lt;h2&gt;Idealism&lt;/h2&gt;
&lt;p&gt;Another reason I have resisted the word &quot;pragmatic&quot; is that I was once academic-oriented. It turns out that I was very badly suited to academia, in large part precisely because I have pragmatic interests and priorities that I finally concluded are hard to shoehorn into an academic environment. But a lot of people I do respect for the quality of their work and their desire to change the world for the better are in fact academic in nature, and are idealists fighting the good fight. I respect this so much that I wanted to be one of them. So it was one of those situations in which I lacked the courage to be my true self. I faced a lot of cognitive dissonance when I was in academia.&lt;/p&gt;
&lt;p&gt;In fact, I&apos;m writing this post because sometimes I wonder whether I still &quot;pass&quot; as an idealist, even over a decade after leaving academia permanently. I decided it was about time for me to officially come out as a pragmatist.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Everything that I think and do these days comes from a pragmatic point of view, and so I&apos;ve decided to embrace that rather than half-hide it.&lt;/p&gt;
</content:encoded></item><item><title>nil, non-determinism, exceptions: a journey in debugging the software that generates my blog</title><link>https://franklinchen.com/blog/2013/06/29/nil-non-determinism-exceptions/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/29/nil-non-determinism-exceptions/</guid><pubDate>Sat, 29 Jun 2013 18:15:00 GMT</pubDate><content:encoded>&lt;p&gt;I mentioned in my &lt;a href=&quot;/blog/2013/06/24/introducing-this-new-programming-blog/&quot;&gt;initial post for this blog&lt;/a&gt; that I have had some problems with the software I use to generate my personal blog, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://octopress.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://octopress.org/&quot;&amp;gt;Octopress&amp;lt;/span&amp;gt;, and was thinking of migrating to a different platform that might in some ways be more robust to such problems. I ended up not doing so, and I still stand by that decision, but I just yet again ran into a problem with Octopress.&lt;/p&gt;
&lt;p&gt;Here I report on how I figured out the problem and begin a conversation about the nature of error handling and API design.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;A disclaimer&lt;/h2&gt;
&lt;p&gt;I want to emphasize that although I will be critiquing some code, I do not mean to imply that I am a perfect programmer or that this software is of really poor quality. I have written software in the past that has crapped out with &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;nil&lt;/code&gt; errors. In addition, the fact that I basically trust and use this software to drive my blogs is a reflection of the fact that it mostly works. Almost all software that has been written, is being written now, and will be written in the future has bugs. Every day we all trust and use software that we know has bugs. And this blogging platform I use is the product of many, many volunteers who contribute to the world through open source through the goodness of their hearts. I happily use this software, warts and all, and am grateful to everyone who works to maintain and improve it!&lt;/p&gt;
&lt;h2&gt;Blog generation&lt;/h2&gt;
&lt;p&gt;The problem arose when I tried to generate &lt;a href=&quot;https://franklinchen.com/&quot;&gt;my personal blog&lt;/a&gt;. I got a &lt;a href=&quot;https://franklinchen.com/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/&quot;&gt;&lt;code&gt;nil&lt;/code&gt;&lt;/a&gt; failure.&lt;/p&gt;
&lt;p&gt;Here&apos;s the error message (I have omitted the 46-line stack trace):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;      Generating... Liquid Exception: undefined method `sub&apos; for nil:NilClass in atom.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is, unfortunately, an example of an error message that is next to useless, and should &lt;em&gt;never&lt;/em&gt; appear. I have stated that &lt;a href=&quot;/blog/2013/06/26/we-should-not-create-this-kind-of-terrible-error-message-for-the-end-user/&quot;&gt;we as programmers should not generate useless end user error messages&lt;/a&gt;, and of course, in context, I am an end user of the blog generating software I use.&lt;/p&gt;
&lt;h2&gt;Debugging and finding the root cause&lt;/h2&gt;
&lt;p&gt;Thanks to all the Ruby libraries being open source and installed on my machine, by using the stack trace and &lt;code&gt;debugger&lt;/code&gt;, I figured out the immediate cause of the stray &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It turns out that Octopress uses Jekyll, which uses &lt;a href=&quot;https://github.com/tmm1/pygments.rb&quot;&gt;pygments.rb&lt;/a&gt; to do HTML highlighting of code blocks. (I use Octopress precisely because of its built-in support for code block highlighting.)&lt;/p&gt;
&lt;p&gt;The bug is that the code in Jekyll that does syntax highlighting using Pygments makes an assumption that the return value of &lt;code&gt;Pygments.highlight()&lt;/code&gt; is never &lt;code&gt;nil&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;              @renderer ||= Class.new(Redcarpet::Render::HTML) do
                def block_code(code, lang)
                  lang = lang &amp;amp;&amp;amp; lang.split.first || &quot;text&quot;
                  output = add_code_tags(
                    Pygments.highlight(code, :lexer =&amp;gt; lang, :options =&amp;gt; { :encoding =&amp;gt; &apos;utf-8&apos; }),
                    lang
                  )
                end

                def add_code_tags(code, lang)
                  code = code.sub(/&amp;lt;pre&amp;gt;/,&apos;&amp;lt;pre&amp;gt;&amp;lt;code class=&quot;&apos; + lang + &apos;&quot;&amp;gt;&apos;)
                  code = code.sub(/&amp;lt;\/pre&amp;gt;/,&quot;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&quot;)
                end
              end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Well, it &lt;em&gt;can&lt;/em&gt; be &lt;code&gt;nil&lt;/code&gt; and was for me, and therefore &lt;code&gt;add_code_tags&lt;/code&gt; was calling &lt;code&gt;code.sub()&lt;/code&gt; with &lt;code&gt;code&lt;/code&gt; being &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The bug exists in all the more recent versions of pygments.rb, including 0.4.2 (which is used for my personal blog) and 0.3.7 (which is used for this blog) and the latest released version, 0.5.1. The bug was actually reported by someone two weeks ago, and I added extra commentary, but &lt;a href=&quot;https://github.com/tmm1/pygments.rb/issues/78&quot;&gt;it has not yet been fixed&lt;/a&gt;, so I plan to contribute a fix and submit a pull request.&lt;/p&gt;
&lt;h2&gt;Whose responsibility to check for &lt;code&gt;nil&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;Whenever there is an error, one has to ask whose responsibility it was to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;detect the error&lt;/li&gt;
&lt;li&gt;handle the error&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think it is poor practice to engage in random and spotty &quot;defensive programming&quot; that checks for &lt;code&gt;nil&lt;/code&gt; here and there, willy-nilly, just to avoid a big program crash. There should be clearly delineated boundaries of error handling.&lt;/p&gt;
&lt;p&gt;In this case, it is surprising that a syntax highlighter for some text could return &lt;code&gt;nil&lt;/code&gt;. One would think that if a syntax highlighter got confused, it could return the text verbatim, for example, without any special formatting. (By the way, don&apos;t get me started on the abominable use of HTML string hacking in this code instead of, say, building a proper HTML AST; I&apos;ll write about that topic later.)&lt;/p&gt;
&lt;h2&gt;Documentation of API&lt;/h2&gt;
&lt;p&gt;Unfortunately, the documentation of the Pygments API was incomplete in &lt;code&gt;lib/pygments/popen.rb&lt;/code&gt;, where &lt;code&gt;highlight&lt;/code&gt; is defined:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    # Public: Highlight code.
    #
    # Takes a first-position argument of the code to be highlighted, and a
    # second-position hash of various arguments specifiying highlighting properties.
    def highlight(code, opts={})
      # If the caller didn&apos;t give us any code, we have nothing to do,
      # so return right away.
      return code if code.nil? || code.empty?

      # Callers pass along options in the hash
      opts[:options] ||= {}

      # Default to utf-8 for the output encoding, if not given.
      opts[:options][:outencoding] ||= &apos;utf-8&apos;

      # Get back the string from mentos and force encoding if we can
      str = mentos(:highlight, nil, opts, code)
      str.force_encoding(opts[:options][:outencoding]) if str.respond_to?(:force_encoding)
      str
    end
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;A problem with dynamically typed language culture&lt;/h2&gt;
&lt;p&gt;The documentation doesn&apos;t actually fully specify what the arguments can be, and does not specify what the result should be either! This is a glaring drawback of most code that I have seen in dynamically typed languages such as Ruby. People don&apos;t document exactly what can come in or out. A newcomer to a code base (such as me in this situation) cannot just read off the types and know immediately what is going on and what has been promised and what is delivered by a function. As a result, the code reader has to play compiler and read a lot more code to try to figure out what is going on.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In principle&lt;/em&gt;, someone writing code in a dynamically typed language could provide very helpful comments that amount to informal type annotations, but in practice people do not. I have found in my two decades of programming that human psychology trumps theoretical possibility any day. If something is optional, people won&apos;t do it, unless there is a very strong de facto community standard. (It turns out, for example, that what I really admire about the Ruby community is that for some reason, there is a very strong de facto community standard of doing at least some &lt;em&gt;unit testing&lt;/em&gt; as part of the whole development process. I find this sadly missing in some statically typed language communities.)&lt;/p&gt;
&lt;p&gt;In code in a statically typed language such as OCaml (or Haskell or Scala), I would expect to see:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let highlight (code : string) (opts : my_map) : string = //...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and expect that the return value should be a &lt;code&gt;String&lt;/code&gt;, or&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let highlight (code : string) (opts : my_map) : string option = //...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to indicate that the return value could be either &lt;code&gt;Some(formatted_code)&lt;/code&gt; or &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;nil&lt;/code&gt; all over the place&lt;/h2&gt;
&lt;p&gt;Reading the Ruby code, I saw that the situation is even more complex than I thought:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;      # If the caller didn&apos;t give us any code, we have nothing to do,
      # so return right away.
      return code if code.nil? || code.empty?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wow: &lt;code&gt;code&lt;/code&gt; can be &lt;code&gt;nil&lt;/code&gt;, in which case &lt;code&gt;nil&lt;/code&gt; is returned.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;All code that can return &lt;code&gt;nil&lt;/code&gt; should document this fact so that the caller knows what to do.&lt;/em&gt; Ideally, the writer of pygments.rb should have documented this fact, and then the writer of Jekyll would in turn have added &lt;code&gt;nil&lt;/code&gt; checking in its rendering code.&lt;/p&gt;
&lt;p&gt;Furthermore, it turns out that &lt;code&gt;mentos()&lt;/code&gt; can return &lt;code&gt;nil&lt;/code&gt; on a non-&lt;code&gt;nil&lt;/code&gt; code string! This was a surprise to me.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;nil&lt;/code&gt; is not even the real problem here: non-determinism is&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;mentos()&lt;/code&gt; is not very well documented. Until I read this code, I didn&apos;t realize that pygments.rb actually embeds a call to the Python interpreter to execute the Python Pygments parser to do the real work! In &lt;code&gt;lib/pygments/popen.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    # Our &apos;rpc&apos;-ish request to mentos. Requires a method name, and then optional
    # args, kwargs, code.
    def mentos(method, args=[], kwargs={}, original_code=nil)
      # Open the pipe if necessary
      start unless alive?

      begin
        # Timeout requests that take too long.
        timeout_time = 8

        Timeout::timeout(timeout_time) do
          # ...[I omitted some code]
        end
      rescue Timeout::Error
        # If we timeout, we need to clear out the pipe and start over.
        @log.error &quot;[#{Time.now.iso8601}] Timeout on a mentos #{method} call&quot;
        stop &quot;Timeout on mentos #{method} call.&quot;
      end

    rescue Errno::EPIPE, EOFError
    stop &quot;EPIPE&quot;
    raise MentosError, &quot;EPIPE&quot;
    end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It turns out that fundamental problem is not &lt;code&gt;nil&lt;/code&gt; so much as &lt;em&gt;non-determinism&lt;/em&gt;: my computer was under heavy load when I was generating my blog, and therefore the timeout kicked in and caused a failure to communicate with the Python process and therefore for &lt;code&gt;nil&lt;/code&gt; to end up being returned. This non-determinism is worse than &lt;code&gt;nil&lt;/code&gt;. I think that in a situation like this, an &lt;em&gt;exception&lt;/em&gt; is called for. &lt;code&gt;highlight()&lt;/code&gt; should actually raise an exception, which would then be propagated to Jekyll, which could give a useful error message about the timeout. I think this is a better design than return &lt;code&gt;nil&lt;/code&gt; (or if using a statically typed language, a &lt;code&gt;None&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;I was also disappointed that logging was used in this code, indicating that it was known that bad things could happen, but the logged information was not used in generating a useful exception.&lt;/p&gt;
&lt;p&gt;Amusingly, upon discovering the logging code, I used it, setting the magic environment variable &lt;code&gt;MENTOS_LOG&lt;/code&gt; (from reading the code) to a file, so that I could see what happens, and verify that the timeout happened:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Logfile created on 2013-06-29 10:26:19 -0400 by logger.rb/36483
I, [2013-06-29 10:26 #13799]  INFO -- : [2013-06-29T10:26:19-04:00] Starting pid 16533 with fd 10.
I, [2013-06-29 10:26 #13799]  INFO -- : [2013-06-29T10:26:19-04:00] Out header: {&quot;method&quot;:&quot;highlight&quot;,&quot;args&quot;:null,&quot;kwargs&quot;:{&quot;lexer&quot;:&quot;console&quot;,&quot;options&quot;:{&quot;encoding&quot;:&quot;utf-8&quot;,&quot;outencoding&quot;:&quot;utf-8&quot;},&quot;fd&quot;:10,&quot;id&quot;:&quot;TVQSJNBV&quot;,&quot;bytes&quot;:147}}
E, [2013-06-29 10:26 #13799] ERROR -- : [2013-06-29T10:26:27-04:00] Timeout on a mentos highlight call
I, [2013-06-29 10:26 #13799]  INFO -- : [2013-06-29T10:26:27-04:00] Killing pid: 16533. Reason: Timeout on mentos highlight call.
I, [2013-06-29 10:26 #13799]  INFO -- : [2013-06-29T10:26:27-04:00] Killing pid: . Reason: Exiting
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;p&gt;It turns out that there &lt;em&gt;is&lt;/em&gt; a place where the intended behavior is in a sense documented: the unit tests in &lt;code&gt;test_pygments.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  def test_returns_nil_on_timeout
    large_code = REDIS_CODE * 300
    code = P.highlight(large_code) # a 30 mb highlight request will timeout
    assert_equal nil, code
  end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The test creates some huge string in hope of triggering a timeout, and then asserts that the result should be &lt;code&gt;nil&lt;/code&gt;!&lt;/p&gt;
&lt;p&gt;OK, fair enough: assuming that the Jekyll authors knew of this intention, then it was Jekyll&apos;s responsibility to test for &lt;code&gt;nil&lt;/code&gt; in the call to &lt;code&gt;Pygments.highlight()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The test is not very satisfactory because it artificially tries to generate a timeout. Instead, one could do some mocking or refactoring of &lt;code&gt;mentos()&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;nil&lt;/code&gt; is still not OK; but are exceptions OK?&lt;/h2&gt;
&lt;p&gt;So everything is OK, now that we can take &lt;code&gt;nil&lt;/code&gt; to mean a timeout, right? No, actually, &lt;code&gt;highlight()&lt;/code&gt; can still return a &lt;code&gt;nil&lt;/code&gt; just because &lt;code&gt;code&lt;/code&gt; was &lt;code&gt;nil&lt;/code&gt;. It is bad to bin random different failure modes into one return value. Personally, I would choose to enforce that the input &lt;code&gt;code&lt;/code&gt; is never &lt;code&gt;nil&lt;/code&gt; and that the output is never &lt;code&gt;nil&lt;/code&gt;, and that an exception is raised if there is a timeout.&lt;/p&gt;
&lt;p&gt;An alternative is to not use an exception, but use a union success/failure type instead. This is the route that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://blog.stackmob.com/2013/03/why-we-avoid-throwing-exceptions-at-stackmob/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://blog.stackmob.com/2013/03/why-we-avoid-throwing-exceptions-at-stackmob/&quot;&amp;gt;StackMob uses for its Scala code&amp;lt;/span&amp;gt;. Other Scala developers such as &lt;a href=&quot;https://web.archive.org/web/20171115163200/http://blog.jessitron.com/2013/06/whats-dirtier-than-comments-exceptions.html&quot;&gt;Jessica Kerr have been arguing against the use of exceptions also&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Google&apos;s systems-level statically typed language &lt;a href=&quot;https://golang.org/&quot;&gt;Go&lt;/a&gt; deliberately &lt;a href=&quot;https://golang.org/doc/faq#exceptions&quot;&gt;does not even have exceptions&lt;/a&gt;, and therefore mandates a style of error handling that involves &lt;a href=&quot;https://web.archive.org/web/20131002191521/http://golang.org/doc/articles/error_handling.html&quot;&gt;returning a success and failure everywhere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think there are situations for exceptions and situations for reifying errors as ordinary values in a success/failure object. I will explore this topic further in this blog. Note that even in the Haskell community, there is continued debate over how to handle errors; a famous post compares &lt;a href=&quot;http://blog.ezyang.com/2011/08/8-ways-to-report-errors-in-haskell-revisited/&quot;&gt;eight different ways to handle errors in Haskell&lt;/a&gt;. There is no consensus because there are a lot of tradeoffs involved when it comes to error handling.&lt;/p&gt;
&lt;h2&gt;My fix&lt;/h2&gt;
&lt;p&gt;For now, before I propose to pygments.rb that an exception be raised (this would be least intrusive to Jekyll, whose source code would not need to be changed for the exception to propagate usefully), I simply hacked &lt;code&gt;8&lt;/code&gt; to &lt;code&gt;80&lt;/code&gt; to avoid a timeout!&lt;/p&gt;
&lt;h3&gt;(Update of 2013-12-18)&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;pygments.rb&lt;/code&gt; library &lt;a href=&quot;https://github.com/tmm1/pygments.rb/commit/e0ed7f73f03aa59680b469f4f26e208d3cf8d999&quot;&gt;has finally been updated with a &lt;code&gt;MENTOS_TIMEOUT&lt;/code&gt; environment variable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is obviously a short-term hack, and I don&apos;t see how a typical Octopress user would even find out about this new environment variable, but until I implement a better solution and submit a pull request to the &lt;code&gt;pygments.rb&lt;/code&gt; team, I have no right to complain!&lt;/p&gt;
&lt;h3&gt;(Update of 2014-08-08)&lt;/h3&gt;
&lt;p&gt;I submitted a &lt;code&gt;pygments.rb&lt;/code&gt; &lt;a href=&quot;https://github.com/tmm1/pygments.rb/pull/132&quot;&gt;pull request&lt;/a&gt; to fix a regression bug in which any use of
&lt;code&gt;MENTOS_TIMEOUT&lt;/code&gt; caused an instant type error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Users/chen/.rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:76:in `timeout&apos;: undefined method `zero?&apos; for &quot;100&quot;:String (NoMethodError)
    from /Users/chen/.gem/ruby/2.1.2/gems/pygments.rb-0.6.0/lib/pygments/popen.rb:220:in `mentos&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;(Update of 2015-01-28)&lt;/h3&gt;
&lt;p&gt;It took over 5 months (!) for my pull request to be looked at, after I
begged that the bug be fixed because it was a show-stopper for anyone
using the environment variable &lt;code&gt;MENTOS_TIMEOUT&lt;/code&gt;. A problem was found
in my fix for the case where the environment variable is &lt;code&gt;nil&lt;/code&gt; (ugh, I
didn&apos;t check the &lt;code&gt;nil&lt;/code&gt; case: it&apos;s so easy to forget about &lt;code&gt;nil&lt;/code&gt;
cases), but I resolved it, and finally my fixed pull request was
merged into &lt;code&gt;pygments.rb&lt;/code&gt; version 0.6.2. Thus ended a two-year journey
to finally fix a cascade of show-stopping type errors.&lt;/p&gt;
&lt;p&gt;The final diff involved trying to parse a string into an integer and
catching the exception if any:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-        timeout_time = ENV[&quot;MENTOS_TIMEOUT&quot;] || 8
+        # Invalid MENTOS_TIMEOUT results in just using default.
+        timeout_time = Integer(ENV[&quot;MENTOS_TIMEOUT&quot;]) rescue 8
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve used my recent frustration at being unable to publish my personal blog as a vehicle to begin a conversation about error handling and the issues of API design and documentation in the face of errors. I hope you enjoyed the ride.&lt;/p&gt;
</content:encoded></item><item><title>We should not create this kind of terrible error message for the end user</title><link>https://franklinchen.com/blog/2013/06/26/we-should-not-create-this-kind-of-terrible-error-message-for-the-end-user/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/26/we-should-not-create-this-kind-of-terrible-error-message-for-the-end-user/</guid><pubDate>Wed, 26 Jun 2013 23:44:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a &lt;a href=&quot;https://franklinchen.com/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;Samsung Galaxy S II smartphone&lt;/a&gt;. I recently encountered a problem: auto-updating of apps failed with this terrible error message:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Application cannot be installed in the default install location.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Also, a lot of time and bandwidth was each time spent on re-downloading the app and then failing, with no way to gracefully recover.&lt;/p&gt;
&lt;p&gt;If you search the Web for this unpleasant error message, you will see hundreds if not thousands of confused end users like me asking on various forums how to deal with this.&lt;/p&gt;
&lt;p&gt;I feel pretty bad about this situation, both as a programmer and as an end user.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;As an end user&lt;/h2&gt;
&lt;p&gt;As an end user, I know very little about smartphones. I am not currently a mobile-device developer. I just want things to work, and I have never read the huge manual that came with my phone. If there is an error in my operation of the phone, I want some kind of useful guidance (ideally very specific and tailored to a common use case known by the vendor), not a mysterious generic error message.&lt;/p&gt;
&lt;h2&gt;As a programmer&lt;/h2&gt;
&lt;p&gt;It turns out that there is internal device storage and SD card storage, and if you run out of space somewhere, an error can happen, and that there is a default install location for apps. The gory details for developers are &lt;a href=&quot;https://developer.android.com/guide/topics/data/install-location.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Clearing some space and also moving a large app to SD card storage solved my problem.&lt;/p&gt;
&lt;p&gt;So why that terrible error message? Why not just tell the end user exactly what is going on? Why not something like:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
The application X could not be installed at (device storage | SD card storage) because you don&apos;t have enough space. You can try clearing more space, or go to your application settings to move it to (SD card storage | device storage).
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;The application should know exactly what is going on, and not only that, should be able to suggest a course of action based on all the relevant variables, such as how much space there is in different places, how large the application is, etc.&lt;/p&gt;
&lt;h3&gt;Why?&lt;/h3&gt;
&lt;p&gt;I haven&apos;t seen the source code that generates the existing error message, but as a programmer, I can guess what might be happening.&lt;/p&gt;
&lt;p&gt;I have been as guilty as anyone else of not providing good end user error messages in software I have written. It is very easy to do the following sloppy things instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Throwing exceptions that contain no useful information except some string&lt;/li&gt;
&lt;li&gt;Not handling an exception close to where useful recovery can actually happen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is superficially &quot;more work&quot; to throw an exception that includes all relevant information, and for handlers to also do something intelligent rather than just pass the buck all the way to some top level catch-all handler.&lt;/p&gt;
&lt;p&gt;Also, why should the phone download the whole app and then fail, if there is actually enough information to guess that the whole update might fail? Surely there is information about how big the app is, before downloading it?&lt;/p&gt;
&lt;p&gt;And what&apos;s with the default concurrent downloads of many updates at the same time, which greatly increases the probability of failure of all of them, when serializing the downloads results in less use of temporary space?&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We programmers clearly are not conscientious enough about error handling and reporting. I believe that today, more than ever, we have a responsibility to &lt;em&gt;handle failure gracefully&lt;/em&gt; in software. I believe that failure should even be considered to be the &lt;em&gt;default&lt;/em&gt; expectation, rather than success, in order to create reliable software. As &lt;a href=&quot;https://franklinchen.com/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;Dick Wall said at the recent 2013 Pittsburgh TechFest&lt;/a&gt;, it&apos;s not enough to design and code and test primarily for the &quot;happy path&quot;.&lt;/p&gt;
&lt;p&gt;There are ways to do error handling better, but they require serious thinking up front. This is a large topic we will be exploring in depth on this blog.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-06-27)&lt;/h3&gt;
&lt;p&gt;By sheer coincidence, a great &lt;a href=&quot;http://programming.oreilly.com/2013/06/human-centered-design-may-be-what-makes-your-app-stand-out.html&quot;&gt;interview on &lt;em&gt;human-centered design&lt;/em&gt;&lt;/a&gt; arrived in my RSS feed. Check it out.&lt;/p&gt;
&lt;p&gt;I will be the first to admit that I don&apos;t know much about UX or human-centered design. I just have some intuitions as an end user. I think we developers should learn more about this stuff in a more formal, serious way. And it&apos;s just a matter of thinking about the ultimate end user. Even if we are not programming for the ultimate end user, we are at least programming for other programmers. If we are writing an API, the principles that guide human behavior must still be valid, even if programmers are an unusual subset of human beings! We write code &lt;em&gt;not&lt;/em&gt; primarily for computers but for other human beings (including our future selves).&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Python: night of the favorite module</title><link>https://franklinchen.com/blog/2013/06/26/pittsburgh-python-night-of-the-favorite-module/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/26/pittsburgh-python-night-of-the-favorite-module/</guid><pubDate>Wed, 26 Jun 2013 22:50:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://photos4.meetupstatic.com/photos/event/d/e/b/e/global_187797022.jpeg&quot; alt=&quot;Pittsburgh Python User Group&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/pghpython/&quot;&gt;Pittsburgh Python User Group&lt;/a&gt; had &lt;a href=&quot;https://www.meetup.com/pghpython/events/120442102&quot;&gt;another &quot;favorite module night&quot;&lt;/a&gt;. I enjoy this format because I get to learn about what people find useful, so that I may perhaps use it myself!&lt;/p&gt;
&lt;h2&gt;How I benefited in the past&lt;/h2&gt;
&lt;p&gt;For example, &lt;a href=&quot;https://franklinchen.com/blog/2012/08/23/pittsburgh-python-meetup-i-gave-my-first-lightning-talk-ever-the-topic-was-scons/&quot;&gt;one of these &quot;favorite module night&quot; sessions&lt;/a&gt; was where I learned about Kenneth Reitz&apos;s &lt;code&gt;requests&lt;/code&gt; library. Very often it is easy to not be aware of the rapidly changing ecology of very useful libraries in a programming language ecosystem outside of the official &quot;standard library&quot;, especially when using a language that is &lt;em&gt;not&lt;/em&gt; one&apos;s primary working language. For example, Python has never been one of my primary working languages, so I&apos;m not as up to date on what all the best tools are to use. But just a couple of weeks ago, I had to do some work with Python, and &lt;code&gt;requests&lt;/code&gt; came in very handy.&lt;/p&gt;
&lt;h2&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://ipython.org/notebook.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://ipython.org/notebook.html&quot;&amp;gt;IPython Notebook&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Josh Adelman opened the show-and-tell with a demo of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://ipython.org/notebook.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://ipython.org/notebook.html&quot;&amp;gt;IPython Notebook&amp;lt;/span&amp;gt;. This is a truly fantastic interactive environment for developing code while creating a full document for publication and sharing. He uses it not only for research but also for his students to use in his teaching.&lt;/p&gt;
&lt;p&gt;If you&apos;ve used Mathematica, the concept is similar to that environment.&lt;/p&gt;
&lt;p&gt;I&apos;m also excited that IPython Notebook has been the direct inspiration for similar projects for other languages, e.g., &lt;a href=&quot;https://github.com/Bridgewater/scala-notebook&quot;&gt;Scala Notebook&lt;/a&gt; for Scala in development.&lt;/p&gt;
&lt;p&gt;Josh gave a link to this &lt;a href=&quot;http://jakevdp.github.io/&quot;&gt;cool blog that uses IPython Notebook&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://getsentry.com/welcome/&quot;&gt;Sentry&lt;/a&gt; and &lt;a href=&quot;http://raven.readthedocs.org/en/latest/&quot;&gt;Raven&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nick Sloan presented on Sentry, a service for collecting errors in your program and notifying you of them, and Raven, the official Python client for Sentry. Sentry is actually open source, so you could host it yourself, but paying for the hosted service provides conveniences.&lt;/p&gt;
&lt;p&gt;Using Sentry is no more than using ordinary Python logging after calling a setup function. The ease of use made it sound like a winner.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;http://docopt.org/&quot;&gt;docopt&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Joe Esposito presented on &lt;code&gt;docopt&lt;/code&gt;, a library for command line parsing. The interesting thing about it is that it implements an &lt;em&gt;external&lt;/em&gt; domain-specific language for describing command lines: you write a usage message, as a string, and &lt;code&gt;docopt&lt;/code&gt; parses it in order to deduce what the expectations and constraints are. This is a very ambitious approach, contrary to the usual internal API-based approaches, some of which are sophisticated and implement an &lt;em&gt;internal&lt;/em&gt; domain-specific language.&lt;/p&gt;
&lt;p&gt;Of course, Joe contrasted this library with one of the standard command line parsing libraries for Python, &lt;code&gt;argparse&lt;/code&gt;, which is lower-level so that when you use it, the high-level end user usage is not as immediately readable.&lt;/p&gt;
&lt;p&gt;There were a lot of good questions about &lt;code&gt;docopt&lt;/code&gt; since it seemed magical. I&apos;ve decided to write more about all this in a separate blog post about command line parsers.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://pypi.python.org/pypi/hypothesis&quot;&gt;hypothesis&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I gave a short 5-minute presentation on &lt;code&gt;hypothesis&lt;/code&gt;, a library in development for doing property-based testing, inspired by QuickCheck and ScalaCheck. As I have done recently when giving a much longer &lt;a href=&quot;https://franklinchen.com/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/&quot;&gt;talk on property-based testing using ScalaCheck&lt;/a&gt;, I focused on motivating the use of property-based testing as an addition to example-based testing.&lt;/p&gt;
&lt;p&gt;Materials for my lightning talk are &lt;a href=&quot;https://github.com/franklinchen/lightning-talk-on-hypothesis&quot;&gt;here&lt;/a&gt;, and my few slides are below:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/23548866&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen/handout-23548866&quot; title=&quot;5-minute intro to property-based testing in Python with hypothesis&quot; target=&quot;_blank&quot;&amp;gt;5-minute intro to property-based testing in Python with hypothesis&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen&quot; target=&quot;_blank&quot;&amp;gt;Franklin Chen&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;http://docs.python.org/2/library/itertools.html&quot;&gt;&lt;code&gt;itertools&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tim Lesher talked about &lt;code&gt;itertools&lt;/code&gt;, a very useful part of the standard library that provides support for efficient functional programming idioms. Part of the efficiency comes from the use of iterators in order to avoid constructing intermediate lists; this is a way of simulating the lazy sequences that are standard in languages such as ML, Haskell, Scala, and Clojure.&lt;/p&gt;
&lt;p&gt;Tim noted that although &lt;code&gt;itertools&lt;/code&gt; is powerful, &quot;don&apos;t be stupid&quot;: don&apos;t write obscure-looking code with it just because you can.&lt;/p&gt;
&lt;p&gt;Josh noted that the documentation for &lt;code&gt;itertools&lt;/code&gt; is great, with recipes that show you not only how to do things, and also with code for the equivalent more complicated code that you would have to write if you didn&apos;t use &lt;code&gt;itertools&lt;/code&gt;. I agree that the documentation for &lt;code&gt;itertools&lt;/code&gt; is a model of high-quality documentation for a library. Check it out, and use it!&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;http://docs.python.org/dev/library/argparse.html&quot;&gt;&lt;code&gt;argparse&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Craig gave a little presentation on &lt;code&gt;argparse&lt;/code&gt;, the aforementioned standard library for command line parsing. He noted it was ironic that he had prepared to speak on it before Joe independently decided to talk about &lt;code&gt;docopt&lt;/code&gt;. (Actually, I like &lt;code&gt;argparse&lt;/code&gt; and had considered talking about it before Craig submitted it already.)&lt;/p&gt;
&lt;p&gt;One feature he uses from &lt;code&gt;argparse&lt;/code&gt; is the ability to create mutually exclusive groups. There was a question of whether this is supported in &lt;code&gt;docopt&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As mentioned earlier, I&apos;ll write more about both &lt;code&gt;argparse&lt;/code&gt; and &lt;code&gt;docopt&lt;/code&gt; in a separate blog post.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;http://doughellmann.com/python-standard-library-by-example&quot;&gt;The Python Standard Library by Example&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Someone shared not a &quot;favorite module&quot;, but a favorite book, &quot;The Python Standard Library by Example&quot;. I&apos;m happy he did, because it is in fact an excellent reference for anyone using the Python standard library, with concrete examples that you can take and use. Too often, I have found that standard documentation is too terse.&lt;/p&gt;
&lt;p&gt;The book is based on &lt;a href=&quot;http://pymotw.com/2/&quot;&gt;&quot;Python Module of the Week&quot;&lt;/a&gt;, which is a great online resource.&lt;/p&gt;
&lt;h2&gt;Introductions for new people&lt;/h2&gt;
&lt;p&gt;An important part of the vibe of the Pittsburgh Python User Group is how it tries to get everyone actively involved in the local Python community.&lt;/p&gt;
&lt;p&gt;There is a tradition of periodically having everyone introduce themselves, to counter the tendency sometimes in these kinds of groups for people to attend a meeting out of curiosity and then silently leave and perhaps not come back, out of intimidation or not knowing how to benefit or contribute. I know I have done that before, especially when attending the meeting of a group where I didn&apos;t really know anybody ahead of time and still knew very little about the topics discussed by the group (such as when I joined the Pittsburgh Ruby group as one who had barely used any Ruby).&lt;/p&gt;
&lt;p&gt;Since so many people showed up, and a lot seemed to be new faces, we had a round of introductions. I hope we&apos;ll continue to see some of these new faces in the future!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Thanks again to Google Pittsburgh for hosting the Pittsburgh Python User Group meeting, and Steve Gross of Google for being the guy who makes it able for us to meet there!&lt;/p&gt;
</content:encoded></item><item><title>Announcing a new blog: &quot;The Conscientious Programmer&quot;</title><link>https://franklinchen.com/blog/2013/06/26/announcing-a-new-blog-the-conscientious-programmer/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/26/announcing-a-new-blog-the-conscientious-programmer/</guid><pubDate>Wed, 26 Jun 2013 21:06:21 GMT</pubDate><content:encoded>&lt;p&gt;I have created a new blog devoted to computer programming, called &lt;a href=&quot;https://ConscientiousProgrammer.com/&quot;&gt;The Conscientious Programmer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will continue to post here on all non-programming topics!&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Java User Group: Building and Evolving a Java API</title><link>https://franklinchen.com/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/25/pittsburgh-java-user-group-building-and-evolving-a-java-api/</guid><pubDate>Tue, 25 Jun 2013 21:49:00 GMT</pubDate><content:encoded>&lt;p&gt;The topic for the featured presentation at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://java.net/projects/pittjug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://java.net/projects/pittjug/&quot;&amp;gt;Pittsburgh Java User Group&amp;lt;/span&amp;gt; (PittJUG) was &quot;Building and Evolving a Java API&quot;, presented by Eric Stein of &lt;a href=&quot;https://web.archive.org/web/20250711221613/http://fulminatus.com/&quot;&gt;Fulminatus Consulting&lt;/a&gt;. I was excited to attend because API design is difficult but important, and today more than ever, because of the trend toward integrating many services to build an application, and toward providing such services (both externally and internally).&lt;/p&gt;
&lt;p&gt;(For past reports of mine on PittJUG, see the &lt;a href=&quot;https://franklinchen.com/categories/pittjug/&quot;&gt;PittJUG archives in my other blog&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;The presentation was very good. (Eric&apos;s slides are available &lt;a href=&quot;https://web.archive.org/web/20140910122257/http://www.fulminatus.com/presentations/PittJUG%20API%20Presentation.pdf&quot;&gt;here&lt;/a&gt;, but as always with slides, be aware that it is just an outline, as good slides really should be, and the actual presentation and group discussion had all the substance.) Note that although some of the specific recommendations and examples are Java-specific, the entire area of good API design is &lt;em&gt;general&lt;/em&gt; and is applicable no matter what programming language you are using.&lt;/p&gt;
&lt;p&gt;However, the presentation also filled me with a combination of &lt;em&gt;sadness&lt;/em&gt;, because our computing profession could have done better up front to make good API design much easier in various ways. On the positive side, it&apos;s better late than never.&lt;/p&gt;
&lt;p&gt;A report on the presentation, with my commentary:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;API design for whom?&lt;/h2&gt;
&lt;p&gt;Whenever doing something at all, the question &quot;for whom?&quot; should always be asked and answered. Eric observed that APIs must meet the different needs of different users, so it&apos;s useful to identify three specific end users with different needs, and look at the situation from each of their points of view:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API owner&lt;/li&gt;
&lt;li&gt;specification owner&lt;/li&gt;
&lt;li&gt;logging owner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;His inclusion of the &quot;logging owner&quot; was intriguing because the point of view from someone whose job it is to wade through logs is often slighted. But in light of ever more complex applications as well as errors and the need for recovery and quick turnaround in fixing them, I believe that Eric is right to argue that logging should be seriously designed, to &quot;tell a consistent story&quot;. I am taking this advice to heart.&lt;/p&gt;
&lt;h2&gt;Design process&lt;/h2&gt;
&lt;p&gt;Eric advised that design should start with use cases. And client code, from the perspective of the end user, as well as tests, should be written up front. He didn&apos;t use the term, but this is &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;test-driven development&lt;/a&gt; (TDD), which in my mind has been an unfortunate term, because it is really &lt;em&gt;test-driven design&lt;/em&gt;, which happens to have the nice effect of kick-starting development as well. (I&apos;ll be writing more later on this blog about TDD; I no longer start a new project without a TDD mentality and process, so productive and efficient I have found it.)&lt;/p&gt;
&lt;p&gt;One thing that Eric said was to start with the &lt;em&gt;most important&lt;/em&gt; cases first, not the easy cases. Very good advice: I have learned the hard way that it is easy to pat yourself on the back and start with easy cases to feel like you&apos;re making progress, but this often leads to hitting a block when getting to the hard cases, and then having to do some major redesign at that point. I&apos;ve found that if something is really important, it needs to be addressed immediately, and often will drive the design of the components required to make the important hard case work. (I&apos;ll be writing more later on this blog about &quot;the hard case&quot;, especially in the context of &quot;sad paths&quot; that are critical.)&lt;/p&gt;
&lt;h2&gt;Stability&lt;/h2&gt;
&lt;p&gt;Stability is the big difficulty in API design. It&apos;s really daunting, actually, to think of the idea of &quot;write once, support forever&quot;, but people get very unhappy, rightfully, if they start using your API and then things break on them after it changes.&lt;/p&gt;
&lt;h2&gt;Simplicity&lt;/h2&gt;
&lt;p&gt;Eric argued that a good API should be easy to read as well as easy to write. This is all about human psychology.&lt;/p&gt;
&lt;p&gt;Also, he noted that a side effect of his recommendation to write client code and tests first is that you get to see the point of view of the client, and can use this experience to weed out, for example, APIs that require a lot of annoying boilerplate code.&lt;/p&gt;
&lt;h2&gt;Subclassing&lt;/h2&gt;
&lt;p&gt;There was a lot of good material covered about the dangers of exposing or mandating or allowing subclassing.&lt;/p&gt;
&lt;p&gt;I agree with Eric about the &lt;em&gt;dangers of subclassing&lt;/em&gt;. The ability to subclass existing classes is the single most abused feature of object-oriented languages, and when it comes to API design, the problems are even more magnified because of the needs for API security and evolution. Almost always, you want to use composition, not subclassing. I&apos;m pretty annoyed that composition, which was well-understood in the 1960s and 1970s, ended up being &quot;forgotten&quot; in some circles. Eric gave the classic example of a totally disastrous API resulting from the Java library originally coming with a &lt;code&gt;Properties&lt;/code&gt; class that was a subclass of &lt;code&gt;Hashtable&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Immutability&lt;/h2&gt;
&lt;p&gt;Immutable objects have huge advantages over mutable objects.&lt;/p&gt;
&lt;p&gt;This is something has been known by the &lt;a href=&quot;https://en.wikipedia.org/wiki/Functional_programming&quot;&gt;functional programming&lt;/a&gt; community since Lisp in the 1950s and [ML](https://en.wikipedia.org/wiki/ML_(programming_language)) in the 1970s and [Haskell](https://en.wikipedia.org/wiki/Haskell_(programming_language)) and [Erlang](https://en.wikipedia.org/wiki/Erlang_(programming_language)) in the 1980s.&lt;/p&gt;
&lt;p&gt;But better late than never.&lt;/p&gt;
&lt;h3&gt;My example: Apache HTTP Components&lt;/h3&gt;
&lt;p&gt;I have observed that APIs in such languages as Java and Ruby have more and more gravitated toward the use of immutable objects. A very good pattern I have seen is to use a builder (which has internal mutable state) to finally build an instance of an immutable object. Just recently, I was using the &lt;a href=&quot;http://hc.apache.org/httpcomponents-client-ga/&quot;&gt;Java Apache HTTP Components library&lt;/a&gt; and moved from the stable version (4.2.5) to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://hc.apache.org/httpcomponents-client-dev/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://hc.apache.org/httpcomponents-client-dev/&quot;&amp;gt;beta version&amp;lt;/span&amp;gt; (4.3-beta2) (because of bugs in the stable version), and happened to notice that a whole slew of methods I was calling were deprecated in favor of a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.apache.org/dist/httpcomponents/httpclient/RELEASE_NOTES.txt&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.apache.org/dist/httpcomponents/httpclient/RELEASE_NOTES.txt&quot;&amp;gt;new builder-based API&amp;lt;/span&amp;gt;. Excerpts from the release notes of the beta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for Java 7 try-with-resources&lt;/li&gt;
&lt;li&gt;Added fluent Builder classes&lt;/li&gt;
&lt;li&gt;Deprecation of preference and configuration API based on HttpParams interface in favor of constructor injection and plain configuration objects&lt;/li&gt;
&lt;li&gt;Reliance on object immutability instead of access synchronization for thread safety&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was very good to see that decades-old lessons about good design are finally making it into important Java libraries!&lt;/p&gt;
&lt;h2&gt;Types&lt;/h2&gt;
&lt;p&gt;A lot of what Eric talked about had to do with types: type safety as well as the ramifications of types when evolving an API.&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;null&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Several of his examples (see his slides) involved the problem of &lt;code&gt;null&lt;/code&gt;, &lt;a href=&quot;http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare&quot;&gt;Hoare&apos;s billion-dollar mistake&lt;/a&gt;, which I gave a little &lt;a href=&quot;https://franklinchen.com/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/&quot;&gt;talk about last year&lt;/a&gt;. Basically, &lt;code&gt;null&lt;/code&gt; is a hole in a type system, and as a result, in Java one has to compensate by documenting in comments (but not having type checked) when and where something could be null or could not be, so that API clients know what to pass into methods and what to expect in return.&lt;/p&gt;
&lt;p&gt;Java is not hopelessly behind: Java 8 has the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://download.java.net/jdk8/docs/api/java/util/Optional.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://download.java.net/jdk8/docs/api/java/util/Optional.html&quot;&amp;gt;Optional&amp;lt;T&amp;gt; class&amp;lt;/span&amp;gt; to help programmers transition away from using &lt;code&gt;null&lt;/code&gt;. C++14 has a &lt;a href=&quot;http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3527.html&quot;&gt;proposal to add to the standard library &lt;code&gt;std::optional&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Admittedly, these are late patches that do not actually prevent continued use of &lt;code&gt;null&lt;/code&gt; (ideally, a programming language should simply not even have it; languages such as ML and Haskell from the 1970s and 1980s happily did without this terrible construct), but these are definitely steps forward. New languages being designed and implemented today from a clean slate have no excuse to perpetuate this billion-dollar error: for example, &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; does not have &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Strings&lt;/h3&gt;
&lt;p&gt;Eric noted that use a string is throwing away type safety.&lt;/p&gt;
&lt;p&gt;I think the use of strings everywhere is a disaster second to that of using &lt;code&gt;null&lt;/code&gt;. The problem is that strings have to be parsed for information. And many people do not actually correctly do such parsing and validation, hence the prevalence of &lt;a href=&quot;https://en.wikipedia.org/wiki/SQL_injection&quot;&gt;injection attacks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even apart from security, the manipulation of strings that actually are supposed to have an intended structure is a major cause of late-caught runtime errors, and of programmer confusion. For example, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding&quot;&amp;gt;this report on URLs&amp;lt;/span&amp;gt; has been recirculating lately, because of errors in both libraries and client code when dealing with URLs as strings rather than as strongly typed data.&lt;/p&gt;
&lt;h3&gt;Booleans&lt;/h3&gt;
&lt;p&gt;Eric observed that even booleans are an API design smell: booleans are a special case of an enumeration of possible states. What happens if you want to add a new state but your old API used booleans?&lt;/p&gt;
&lt;h3&gt;Exceptions&lt;/h3&gt;
&lt;p&gt;Eric recommended &lt;em&gt;unchecked&lt;/em&gt; over Java&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions&quot;&gt;&lt;em&gt;checked&lt;/em&gt; exceptions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sadly, in my Java programming in the past decade, I&apos;ve had to deal with the fact that Java made a big mistake by introducing checked exceptions in the first place; the ramifications were not thought out then. Note that C++11 has finally deprecated exception specifiers, and exceptions in ML have always been unchecked since the introduction in the 1970s, while Java ignored two decades of experience and went ahead and bolted on checked exceptions.&lt;/p&gt;
&lt;h4&gt;Not strings!&lt;/h4&gt;
&lt;p&gt;Eric advised that all failure data should be included in a thrown exception. Too often, we see exception throwing code that just throws a string message. Then the catcher has to try to parse this message for important data (which may not even be present in the string). If you&apos;re going to throw an exception, write a class and stash away important information, not a string message.&lt;/p&gt;
&lt;h2&gt;A short note on primitive obsession&lt;/h2&gt;
&lt;p&gt;My friend Adam who also attended the PittJUG meeting noted that what we&apos;re basically talking about is &lt;a href=&quot;http://c2.com/cgi/wiki?PrimitiveObsession&quot;&gt;primitive obsession&lt;/a&gt;. The larger lesson here is that when designing robust, clear, and safe APIs, using primitives is often a mistake. Everything in the problem domain should really be modeled as its own type, not as a primitive.&lt;/p&gt;
&lt;h2&gt;Evolution of an API&lt;/h2&gt;
&lt;p&gt;The trickiest thing to get right is making an API so that it can evolve in the future without breaking backwards &lt;em&gt;compatibility&lt;/em&gt;. This compatibility can be of different forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;behavioral&lt;/li&gt;
&lt;li&gt;binary&lt;/li&gt;
&lt;li&gt;source&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eric talked a lot about weakening or strengthening contracts. There is a lot of hairy stuff involved, including knowledge of Java compiler internals. I think this is a space where more research is needed for the future in order to get the formal semantics of API evolution done right.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://code.google.com/p/japi-checker/&quot;&gt;japi-checker&lt;/a&gt; was mentioned as one tool that one can use for Java.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;In the context of software development in Java, it is impossible to avoid mentioning &lt;a href=&quot;https://en.wikipedia.org/wiki/Joshua_Bloch&quot;&gt;Joshua Bloch&lt;/a&gt;&apos;s early book (subsequently revised for a second edition), &quot;Effective Java&quot;. It is a daunting book, over 300 pages long, but it is an indispensable reference for anyone caring about good programming in Java. Eric called it the &quot;gold standard&quot;.&lt;/p&gt;
&lt;p&gt;Check out his links to other resources on his slides.&lt;/p&gt;
&lt;h2&gt;Package design&lt;/h2&gt;
&lt;p&gt;A question came up about Eric&apos;s recommendation of using package-private visibility and his observation that a lot of people don&apos;t know about package-private, and don&apos;t design packages.&lt;/p&gt;
&lt;h3&gt;Modules&lt;/h3&gt;
&lt;p&gt;My observation is that people don&apos;t design packages because they&apos;re not actually modules. &lt;em&gt;Java was invented without a module system&lt;/em&gt;, although Java 8 originally was slated to finally include a module system in the form of Jigsaw, which was, however, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.infoworld.com/d/application-development/project-jigsaw-delayed-until-java-9-198007&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.infoworld.com/d/application-development/project-jigsaw-delayed-until-java-9-198007&quot;&amp;gt;delayed to Java 9&amp;lt;/span&amp;gt;. Meanwhile, there is &lt;a href=&quot;https://en.wikipedia.org/wiki/OSGi&quot;&gt;OSGi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&apos;t like sounding like a broken record, but &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML came with a module system in the 1980s&lt;/a&gt;, and there has been further work in the area of module systems, including first-class module systems that go beyond stratified module systems. The reality is that Java was born in the 1990s an &quot;old&quot; language, with no positive technical innovations, that feels more like a language from the 1960s.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Eric Stein gave an excellent talk about API design, both from the broadest perspective, focused on human beings and clients, and down and dirty with Java language features to avoid or use carefully.&lt;/p&gt;
&lt;h2&gt;Addendum: my involvement with Java&lt;/h2&gt;
&lt;p&gt;I had a chance to review some of my feelings I have had about programming in Java myself. I&apos;ve been a member of PittJUG for well over a decade now. I first signed up on the PittJUG mailing list in June 1999. I have not always been a regular attendee of the meetings: after some initial years of interest, I stopped attending for some years, and became regular again in 2009. So I&apos;ve been around Java since it was a very young language, and all the while knowing of all the problems with the language. So why did I chose it as my main programming language a decade ago, and why have I stuck with it for so long, until last last year, when &lt;a href=&quot;https://franklinchen.com/blog/2013/01/11/2013-is-my-year-of-scala/&quot;&gt;I decided to write no &lt;em&gt;new&lt;/em&gt; Java code, and move on to Scala&lt;/a&gt;? I will explain my decision-making in a forthcoming blog post.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-07-05)&lt;/h2&gt;
&lt;p&gt;An interesting &lt;a href=&quot;http://www.infoq.com/presentations/enterprise-api&quot;&gt;presentation on APIs in the enterprise&lt;/a&gt; came my way.&lt;/p&gt;
</content:encoded></item><item><title>Introducing this new programming blog</title><link>https://franklinchen.com/blog/2013/06/24/introducing-this-new-programming-blog/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/24/introducing-this-new-programming-blog/</guid><pubDate>Mon, 24 Jun 2013 09:40:00 GMT</pubDate><content:encoded>&lt;p&gt;Hi. My name is Franklin Chen. I already have a &lt;a href=&quot;https://franklinchen.com/&quot;&gt;personal Web site and blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But I ended up only writing &lt;a href=&quot;https://franklinchen.com/categories/programming/&quot;&gt;a little bit about programming on that blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I decided it was time to start a separate blog to devoted entirely to computer programming. The problem with the all-in-one personal blog was that I ended up never really working up a momentum to post the kinds of articles I wanted to write about programming.&lt;/p&gt;
&lt;h2&gt;Why &quot;The Conscientious Programmer&quot;?&lt;/h2&gt;
&lt;p&gt;At some point in the past year or two, I reflected on how I could best summarize my attitudes and aspirations as a programmer, as someone who loves programming and also works as a professional software developer.&lt;/p&gt;
&lt;p&gt;I came up with the decidedly non-sexy term &lt;em&gt;conscientious programmer&lt;/em&gt;. It is also a term that requires explanation, because you could easily interpret it as having a connotation that is moralistic, pretentious, or boring!&lt;/p&gt;
&lt;p&gt;It is impossible to summarize in a sound bite what I mean by the term, so I have created this blog in order to continually illustrate, by example, the kinds of technical and other issues that come up in software development that I grapple with.&lt;/p&gt;
&lt;p&gt;However, since a sound bite is required in some circumstances, here&apos;s what I currently have:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I am a conscientious computer programmer, committed to designing, building, and testing correct, efficient, documented, maintainable software that meets users&apos; real needs.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;My material will come from my own experiences (successes and failures, past and present) as well as from those of others. See the &lt;a href=&quot;/about/&quot;&gt;About page&lt;/a&gt; for more sound bites about what this blog will be about.&lt;/p&gt;
&lt;p&gt;Let&apos;s start immediately with my personal experience from just the past couple of days!&lt;/p&gt;
&lt;h2&gt;Future topics&lt;/h2&gt;
&lt;p&gt;But first, here is a little sample of topics I will write about in the future:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;positive and negative experiences with statically typed languages&lt;/li&gt;
&lt;li&gt;positive and negative experiences with dynamically typed languages&lt;/li&gt;
&lt;li&gt;the good and bad of the polyglot programming world&lt;/li&gt;
&lt;li&gt;what is object-oriented programming anyway?&lt;/li&gt;
&lt;li&gt;what is functional programming anyway?&lt;/li&gt;
&lt;li&gt;Agile notions&lt;/li&gt;
&lt;li&gt;test-driven development, behavior-driven development, other testing topics&lt;/li&gt;
&lt;li&gt;static analysis&lt;/li&gt;
&lt;li&gt;code performance&lt;/li&gt;
&lt;li&gt;human performance&lt;/li&gt;
&lt;li&gt;controversies over the adjective &quot;pragmatic&quot;&lt;/li&gt;
&lt;li&gt;how much theory should one know or use?&lt;/li&gt;
&lt;li&gt;how to teach&lt;/li&gt;
&lt;li&gt;how to learn&lt;/li&gt;
&lt;li&gt;how to focus and not be a dilettante&lt;/li&gt;
&lt;li&gt;how to spread ideas&lt;/li&gt;
&lt;li&gt;is syntax important?&lt;/li&gt;
&lt;li&gt;are macros a good idea?&lt;/li&gt;
&lt;li&gt;are unsound type systems justified?&lt;/li&gt;
&lt;li&gt;what is a type system anyway or what should it be?&lt;/li&gt;
&lt;li&gt;monads&lt;/li&gt;
&lt;li&gt;editors and IDEs&lt;/li&gt;
&lt;li&gt;are software patterns a mistake in disguise?&lt;/li&gt;
&lt;li&gt;software evolution and maintenance&lt;/li&gt;
&lt;li&gt;planning for the future vs. getting it done today&lt;/li&gt;
&lt;li&gt;role of emotion in decision making&lt;/li&gt;
&lt;li&gt;what is &quot;community&quot;?&lt;/li&gt;
&lt;li&gt;politics of open source vs. free software&lt;/li&gt;
&lt;li&gt;open standards&lt;/li&gt;
&lt;li&gt;questions of diversity in our profession&lt;/li&gt;
&lt;li&gt;education&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The dilemmas I encountered when deciding to create this blog&lt;/h2&gt;
&lt;p&gt;I already encountered a dilemma some years ago when I thought that I should have a personal blog to regularly post to. I had messed around with Blogger and WordPress and they were not at all suitable for me. Luckily, I discovered &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://octopress.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://octopress.org/&quot;&amp;gt;Octopress&amp;lt;/span&amp;gt; and it got me going very quickly. I&apos;m still using it.&lt;/p&gt;
&lt;p&gt;If all were going smoothly with the personal blog, then I probably would not have any dilemma when deciding to create the new blog; I would just use exactly the same Octopress platform.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Or would I?&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Desire for novelty: good or bad?&lt;/h3&gt;
&lt;p&gt;I am not immune to the thrill of novelty. I am not an extreme &lt;a href=&quot;https://en.wikipedia.org/wiki/Early_adopter&quot;&gt;early adopter&lt;/a&gt;, but I also do not entirely subscribe to the philosophy &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://en.wiktionary.org/wiki/if_it_ain%27t_broke,_don%27t_fix_it&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://en.wiktionary.org/wiki/if_it_ain%27t_broke,_don%27t_fix_it&quot;&amp;gt;&quot;if it ain&apos;t broke, don&apos;t fix it&quot;&amp;lt;/span&amp;gt;. I like opportunities for doing something differently and better than in the past, but I like to evaluate these rationally. This is an example of what I mean by &quot;conscientious programmer&quot;: &lt;em&gt;always be aware of risks and tradeoffs when making any kind of decision&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;One thing that is sometimes forgotten in the rush to make a decision is that it is premature to immediately start making lists of risks and tradeoffs. First, you have to step back and figure out what the real goals are. Many projects fail because the assessments and the followup actions were &lt;em&gt;correct&lt;/em&gt;, but toward the &lt;em&gt;wrong&lt;/em&gt; goal. &lt;em&gt;Solving the correct problem&lt;/em&gt; is more important than &lt;em&gt;solving the wrong problem correctly&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In the case of choosing which software to use for my new blog, there were actually several considerations.&lt;/p&gt;
&lt;h3&gt;Unstable branch of Octopress&lt;/h3&gt;
&lt;p&gt;Octopress&apos;s stable &lt;a href=&quot;https://github.com/imathis/octopress&quot;&gt;&lt;code&gt;master&lt;/code&gt; branch&lt;/a&gt; is a continuation of version 2.0. At some point for my personal blog, I got excited about trying out the &lt;a href=&quot;https://github.com/imathis/octopress/tree/2.1&quot;&gt;unstable &lt;code&gt;2.1&lt;/code&gt; branch&lt;/a&gt; because of various improvements. I migrated over, and periodically endured a surprising amount of pain. It wasn&apos;t just because I had to manually move files around and resolve merge conflicts and refactor my config files, but also bugs kept popping up, and I had to spend time fixing them.&lt;/p&gt;
&lt;p&gt;In retrospect, &lt;em&gt;it was a mistake being an early adopter&lt;/em&gt; of branch &lt;code&gt;2.1&lt;/code&gt;. I stopped pulling and merging over a month ago, when it became clear that the migration to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jekyllrb.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jekyllrb.com/&quot;&amp;gt;Jekyll&amp;lt;/span&amp;gt; 1.0 was causing major refactorings by the developers of the Octopress &lt;code&gt;2.1&lt;/code&gt; branch that were breaking everything on my blog.&lt;/p&gt;
&lt;p&gt;It would &lt;em&gt;not&lt;/em&gt; have been a mistake if my goal were to help test and develop Octopress. That is a noble goal, because Octopress has been a &lt;em&gt;huge&lt;/em&gt; positive contributor to the world of blogging, as a static site generator that is programmable and comes with a good default theme (which I still use). But my &lt;em&gt;real goal&lt;/em&gt; is to write and post content, not spend my time fixing or configuring Octopress.&lt;/p&gt;
&lt;h3&gt;Coming back to Octopress &lt;code&gt;master&lt;/code&gt; branch?&lt;/h3&gt;
&lt;p&gt;The official recommendation of the Octopress team right now (&lt;a href=&quot;https://twitter.com/octopress/status/348465809624027136&quot;&gt;as of two days ago, June 22&lt;/a&gt;) is to use &lt;code&gt;master&lt;/code&gt;, because once &lt;code&gt;2.1&lt;/code&gt; is cleaned up, it will actually become &lt;code&gt;3.0&lt;/code&gt; and there will be a tested migration path from &lt;code&gt;2.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I confess to having a psychological resistance to &quot;downgrading&quot;, for this new blog, from my &lt;code&gt;2.1&lt;/code&gt;-based setup on my personal blog, but this is exactly the moment when it is necessary to remember that I want to be a &lt;em&gt;conscientious&lt;/em&gt; programmer.&lt;/p&gt;
&lt;h3&gt;Switching to a new blogging platform?&lt;/h3&gt;
&lt;p&gt;The idea also occurred to me to use a completely different blogging platform. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://jaspervdj.be/hakyll/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://jaspervdj.be/hakyll/&quot;&amp;gt;Hakyll&amp;lt;/span&amp;gt; has always seemed appealing to me, because it is driven by Haskell (Octopress is driven by Ruby). I prefer programming in Haskell to programming in Ruby, both because of the static type safety and because of the expected considerable performance improvement in site generation (right now, full generation of my personal blog takes a very long time).&lt;/p&gt;
&lt;p&gt;But after looking at Hakyll, and being tempted to get into it, I decided that my real goal is &lt;em&gt;not&lt;/em&gt; to spend a lot of time hacking Haskell as a personal side project, and creating cool themes and features for Hakyll, but to get a blog up and running so that I can focus on content for the blog. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://en.wiktionary.org/wiki/bikeshedding&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://en.wiktionary.org/wiki/bikeshedding&quot;&amp;gt;Bikeshedding&amp;lt;/span&amp;gt; is not what I&apos;m here for.&lt;/p&gt;
&lt;p&gt;So I used Octopress again for this new blog.&lt;/p&gt;
&lt;p&gt;By the way, if you are interested in using Octopress, here is a great &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://webdesign.tutsplus.com/tutorials/applications/getting-started-with-octopress/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://webdesign.tutsplus.com/tutorials/applications/getting-started-with-octopress/&quot;&amp;gt;tutorial&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Flexibility&lt;/h3&gt;
&lt;p&gt;Another thing I try to remember is to avoid getting backed into a corner when it comes to decision-making. I like to think about the future as well as the present. &lt;em&gt;What if...?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I know that if I wanted to, in the future I could switch blogging platforms at will, by doing some programming. The decisions that I am making &lt;em&gt;now&lt;/em&gt; are not irreversible. Using a programmable static site generator means that I have full control over paths, styles, generation of RSS feeds, insertion of JavaScript-based features (such as the &lt;a href=&quot;https://web.archive.org/web/20260329090823/https://disqus.com/&quot;&gt;Disqus&lt;/a&gt; commenting system), etc.&lt;/p&gt;
&lt;p&gt;Thinking up front about the future and how it might be different and what I might need or want to do in the future is not just idle daydreaming; I find it an essential final step in making a decision &lt;em&gt;now&lt;/em&gt; and focusing on action &lt;em&gt;now&lt;/em&gt;, with the peace of mind that I no longer have to worry about the future because I already have a &lt;a href=&quot;https://en.wikipedia.org/wiki/Plan_B&quot;&gt;Plan B&lt;/a&gt;. We must always assume possible failure and future change. But we don&apos;t have to panic about it.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve started this new programming blog, using the stable &lt;code&gt;master&lt;/code&gt; branch of Octopress. I hope we&apos;ll share some interesting experiences here!&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala meetup: Introduction to Actors Systems</title><link>https://franklinchen.com/blog/2013/06/18/pittsburgh-scala-meetup-introduction-to-actors-systems/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/18/pittsburgh-scala-meetup-introduction-to-actors-systems/</guid><pubDate>Wed, 19 Jun 2013 03:10:20 GMT</pubDate><content:encoded>&lt;p&gt;Josh Suereth spoke again at the latest &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt; &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/123884682/&quot;&gt;event&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;He gave an introduction to actors using &lt;a href=&quot;https://akka.io/&quot;&gt;Akka&lt;/a&gt;. I&apos;d attended a version of his introductory talk over a year ago, actually, when he gave it at the &lt;a href=&quot;/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/&quot;&gt;first Pittsburgh TechFest&lt;/a&gt;, so it was basically review for me.&lt;/p&gt;
&lt;p&gt;However, the discussion during the presentation and afterwards was what the meetup was really about, and I found that really useful.&lt;/p&gt;
&lt;p&gt;Sadly, I still have not yet written a real actor-based software system yet.&lt;/p&gt;
</content:encoded></item><item><title>Hiking in Boyce Park</title><link>https://franklinchen.com/blog/2013/06/15/hiking-in-boyce-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/15/hiking-in-boyce-park/</guid><pubDate>Sun, 16 Jun 2013 01:32:24 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I did a tiny short hike together in &lt;a href=&quot;https://web.archive.org/web/20150905212321/http://www.alleghenycounty.us/parks/bpfac.aspx&quot;&gt;Boyce Park&lt;/a&gt;. We&apos;ve barely done any hiking at all this year, because of her accident breaking a foot and my doing the Pittsburgh Marathon and then getting poison ivy on a hike I did with a friend last month.&lt;/p&gt;
&lt;p&gt;We thought we&apos;d combine a hike with a trip to Monroeville to &lt;a href=&quot;https://www.patelbros.com/&quot;&gt;Patel Brothers&lt;/a&gt; to buy Indian groceries and then eat at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.udipicafepittsburgh.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.udipicafepittsburgh.com/&quot;&amp;gt;Udipi Cafe&amp;lt;/span&amp;gt;, so we did.&lt;/p&gt;
&lt;p&gt;It was good to be out together again. We miss hiking so much.&lt;/p&gt;
&lt;h2&gt;Boyce Park&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/boyce-park-2013-06-15/sign.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/boyce-park-2013-06-15/ski.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/boyce-park-2013-06-15/playground.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh JazzLive International Festival 2013: dancing salsa to Eddie Palmieri</title><link>https://franklinchen.com/blog/2013/06/08/pittsburgh-jazzlive-international-festival-2013-dancing-salsa-to-eddie-palmieri/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/08/pittsburgh-jazzlive-international-festival-2013-dancing-salsa-to-eddie-palmieri/</guid><pubDate>Sun, 09 Jun 2013 02:57:23 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/eddie-palmieri-2013-06-08/stage.jpg&quot; alt=&quot;Music stage&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby and I went downtown in Pittsburgh to check out the great Eddie Palmieri and his salsa orchestra, one of the main attractions of &lt;a href=&quot;https://web.archive.org/web/20170210084124/http://pressroom.trustarts.org/2013/04/02/pittsburgh-jazzlive-international-festival-2013-artist-biographies/&quot;&gt;this year&apos;s Pittsburgh JazzLive International Festival&lt;/a&gt;. Although I have a number of Eddie Palmieri&apos;s music recordings, this was the first time I saw him live.&lt;/p&gt;
&lt;p&gt;We arrived later than intended, so the place was already packed. There were guards for a taped-off seating section in front of the stage, apparently reserved for VIPs. However, we were asked if we were dancers, and we said yes, so they let us into the dancing area, which was already pretty packed with hardcore Pittsburgh salsa fans.&lt;/p&gt;
&lt;h2&gt;Some videos&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CMbDlkG1wOE&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;You can see some of us local dancers here (Abby and I were dancing further from the stage):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/sDqcweoCqL0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;More footage here from another source here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/O1OH5lgXBs8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PsCZLx21Gnw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I admit to being slightly disappointed (but not surprised at all) that Palmieri and friends did not display as much jazz virtuosity as they possess (and which you can find in their more &quot;Latin jazz&quot; vs. &quot;salsa&quot; work). They played tamer improvisations, as they were playing primarily for dancing here.&lt;/p&gt;
&lt;h2&gt;Crowded&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eddie-palmieri-2013-06-08/stage2.jpg&quot; alt=&quot;Music stage&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Because it got more and more crowded, and also the music was rather loud anywhere near the stage, at some point we left the designated dancing section and exited. We continued dancing for a bit on a side street off Penn Ave. Eventually we had enough and decided to wander off to Point State Park for a cool-down walk and to check out other acts for the Three Rivers Arts Festival (which the jazz portion is a subset of).&lt;/p&gt;
&lt;h2&gt;Point State Park&lt;/h2&gt;
&lt;p&gt;The fountain:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eddie-palmieri-2013-06-08/fountain.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A curiosity that we saw at the bridge to Point State Park was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://changjinlee.net/floating_echo/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://changjinlee.net/floating_echo/index.html&quot;&amp;gt;&quot;Floating Echo&quot;&amp;lt;/span&amp;gt;, a translucent floating Buddha as public art:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eddie-palmieri-2013-06-08/buddha.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was good to get out there and dance with Abby. I had been feeling really tired all day, but insisted on getting out of the house and was glad I did. I felt it was particularly important to do something with Abby this weekend, because last weekend, after &lt;a href=&quot;/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;Pittsburgh TechFest and my health problems that led to going to urgent care&lt;/a&gt;, I had to bail out of a planned hike together on Sunday, and Abby went to the &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/117891642/&quot;&gt;&quot;Getting wet at Ohiopyle hike&quot;&lt;/a&gt; alone, without me, her first hike of the entire year (because of her breaking her foot in winter).&lt;/p&gt;
</content:encoded></item><item><title>Celebrating National Running Day quietly in Frick Park</title><link>https://franklinchen.com/blog/2013/06/05/celebrating-national-running-day-quietly-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/05/celebrating-national-running-day-quietly-in-frick-park/</guid><pubDate>Thu, 06 Jun 2013 02:19:02 GMT</pubDate><content:encoded>&lt;p&gt;Last year, I made something of a &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;big deal&lt;/a&gt; of celebrating &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runningday.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runningday.org/&quot;&amp;gt;National Running Day&amp;lt;/span&amp;gt; in &lt;a href=&quot;https://www.pittsburghparks.org/schenley&quot;&gt;Schenley Park&lt;/a&gt; in Pittsburgh, for sentimental reasons. This year, I celebrated more quietly, by simply running one of my standard easy runs, a 5-mile run in &lt;a href=&quot;https://pittsburghparks.org/frick&quot;&gt;Frick Park&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have nothing to say, other than I&apos;m happy to be out there running.&lt;/p&gt;
&lt;h2&gt;Luna Mono Sandals&lt;/h2&gt;
&lt;p&gt;I wore my &lt;a href=&quot;https://www.lunasandals.com/products/luna-mono&quot;&gt;Luna Mono Sandals&lt;/a&gt;, which is much thicker (12mm) than the &lt;a href=&quot;https://www.lunasandals.com/products/luna-venado&quot;&gt;Luna Venado Sandals&lt;/a&gt; (7mm) that I wore a lot last year. The Mono&apos;s thickness makes it feel much different from the Venado: welcome cushioning, but at the expense of ground feel and flexibility. It&apos;s all about tradeoffs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/luna-sandals-mono.jpg&quot; alt=&quot;Luna Mono Sandals&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Some photos from the run&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/frick1.jpg&quot; alt=&quot;Frick Park&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/frick2.jpg&quot; alt=&quot;Frick Park&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/frick3.jpg&quot; alt=&quot;Frick Park&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/frick4.jpg&quot; alt=&quot;Frick Park&quot; /&gt;
&lt;img src=&quot;../../assets/images/frick-park-2013-06-05/frick5.jpg&quot; alt=&quot;Frick Park&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Some thoughts on starting to give talks a year ago</title><link>https://franklinchen.com/blog/2013/06/02/some-thoughts-on-starting-to-give-talks-a-year-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/02/some-thoughts-on-starting-to-give-talks-a-year-ago/</guid><pubDate>Mon, 03 Jun 2013 00:49:02 GMT</pubDate><content:encoded>&lt;p&gt;One challenge always, in giving a technical talk that is of limited length (in this case, no more than an hour long), is that of how to be helpful to an audience of mixed background knowledge, and in particular, when planning a talk that is geared toward giving an accurate and appealing taste of the gist of some ideas.&lt;/p&gt;
&lt;p&gt;I started giving talks only last year, and I have been learning more and more about how difficult the task is to reach people, to be helpful in giving an introduction, a survey, that aims to &lt;em&gt;help them solve problems in their life&lt;/em&gt;. In my opinion, that is the only valid reason for me to give a talk. I don&apos;t do this because I greatly enjoy it (in fact, I used to be petrified of public speaking, and I&apos;m still quite a nervous novice about it), and I don&apos;t do it because I want to be a showoff who spews information that nobody can either &lt;em&gt;understand&lt;/em&gt; or &lt;em&gt;use&lt;/em&gt;. I think about the talks that I go to (quite a few) and which of them I took something from (and sometimes very profoundly change how I live my life and work practices), and which left me cold, and I am trying to turn that around and somehow &quot;give back&quot; in a similar way. This is a role I have not taken in the past, but I have been truly inspired by the example of people in the local Pittsburgh programming communities.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Tech Fest 2013: my talk &quot;Stop Overusing Regular Expressions!&quot;</title><link>https://franklinchen.com/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/</guid><pubDate>Sun, 02 Jun 2013 03:48:22 GMT</pubDate><content:encoded>&lt;p&gt;At Pittsburgh TechFest 2013 (&lt;a href=&quot;/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;full report here&lt;/a&gt;), I gave a talk for a one-hour time slot before lunch.&lt;/p&gt;
&lt;p&gt;This was &lt;a href=&quot;/blog/2013/01/18/how-justice-clarence-thomas-uncovered-a-seven-year-old-bug-in-my-computer-program/&quot;&gt;my first talk at a conference in three years&lt;/a&gt;, and only my second at a conference in my life! I feel that I have much improved as a presenter since then.&lt;/p&gt;
&lt;p&gt;Here&apos;s how it went.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;My presentation was &quot;Stop overusing regular expressions!&quot;&lt;/p&gt;
&lt;p&gt;Here is my abstract as submitted to Pittsburgh TechFest:
&amp;lt;blockquote&amp;gt;
Regular expressions are very commonly used to process and validate text data. Unfortunately, they suffer from various limitations. I will discuss the limitations and illustrate how using grammars instead can be an improvement. I will make the examples concrete using parsing libraries in a couple of representative languages, although the ideas are language-independent. (I&apos;ll try to squeeze in, say, Ruby, Python, JavaScript, Scala.)&lt;/p&gt;
&lt;p&gt;I will emphasize ease of use, since one reason for the overuse of regular expressions is that they are so easy to pull out of one&apos;s toolbox.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;Revised&lt;/h3&gt;
&lt;p&gt;Just on Wednesday, &lt;a href=&quot;/blog/2013/05/29/pittsburgh-scala-meetup-my-talk-stop-overusing-regular-expressions/&quot;&gt;I had given a version of this talk at the Pittsburgh Scala meetup&lt;/a&gt;, but revised it considerably based on feedback and my own impressions.&lt;/p&gt;
&lt;h3&gt;Slides and code&lt;/h3&gt;
&lt;p&gt;The material for the talk &lt;em&gt;as given&lt;/em&gt; is at &lt;a href=&quot;https://github.com/franklinchen/talk-on-overusing-regular-expressions/tree/pitt-tech-fest-talk&quot;&gt;this tag of my GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;https://github.com/franklinchen/talk-on-overusing-regular-expressions&quot;&gt;master branch of the GitHub repository&lt;/a&gt; will always have my latest revisions. I expect continue to add more code in different languages, for example.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/22302440&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen/handout-22302440&quot; title=&quot;Stop overusing regular expressions!&quot; target=&quot;_blank&quot;&amp;gt;Stop overusing regular expressions!&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen&quot; target=&quot;_blank&quot;&amp;gt;Franklin Chen&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;I tried to minimize discussion of the final Scala code slide, which in one page creates a full parser for &quot;toy JSON&quot; into a tree of Scala objects, because I intended mainly to give this as proof of concept, not to get into explaining the funny operator overloading that makes the parser so concise, but this seemed to be an issue anyway. I now lean toward thinking that in the future, I need to create a parallel slide that replaces the operators with standard method names instead.&lt;/p&gt;
&lt;p&gt;Why did I use Scala for example code anyway? A major reason is that it is indeed very concise, and yet fully statically typed. I could fit all each of my Scala code examples on a single slide. I did that with Ruby also, up to a point. Writing the classes in Ruby (or Python, Java, etc.) would have taken pages of boilerplate, as opposed to using Scala&apos;s case classes. (Of course I wasn&apos;t going to use ML or Haskell at all in the talk for this audience.)&lt;/p&gt;
&lt;p&gt;I was surprised to learn how quickly I had finished my presentation (around 45 minutes), given that I had actually added many slides after my Pittsburgh Scala version (which had lasted around the same time). I think it could have been because of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having practiced the talk once, I was more fluent and stumbled less, and explained some things better.&lt;/li&gt;
&lt;li&gt;My additional transitional and motivational slides were clarifying, and reduced confusion that I had to address in my earlier version.&lt;/li&gt;
&lt;li&gt;I still get the impression that when I speak, I get overexcited and talk too quickly!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Attendance&lt;/h3&gt;
&lt;p&gt;Turnout was small, around eight people, but enthusiastic. Half the people I already knew, but the other half were new to me.&lt;/p&gt;
&lt;p&gt;I have some hypotheses about why attendance was relatively low (I think most of the talks I went to had 20-40 people):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Several people actually told me they would have attended my talk, but they too were giving talks or there were others that just happened to have higher priority.&lt;/li&gt;
&lt;li&gt;The topic is more specialized and yet abstract than others: conceptual rather than devoted to &quot;how to use library X in language Y&quot; or &quot;how to improve your career.&lt;/li&gt;
&lt;li&gt;I have no name recognition outside of Pittsburgh, and I submitted a completely non-self-promotional, vague bio; I will definitely fix this in all future talk submissions anywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thanks to everyone who came to the talk and asked questions and got discussion going! I appreciate having had the opportunity to share my experiences and recommendations at a conference.&lt;/p&gt;
&lt;p&gt;Ha, I was happy that Josh was able to come to my talk, since he missed the Pittsburgh Scala meetup on Wednesday!&lt;/p&gt;
</content:encoded></item><item><title>Report on the second Pittsburgh TechFest, 2013</title><link>https://franklinchen.com/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/</guid><pubDate>Sun, 02 Jun 2013 02:06:17 GMT</pubDate><content:encoded>&lt;p&gt;Last year (&lt;a href=&quot;/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/&quot;&gt;my report here&lt;/a&gt;), I attended the very first &lt;a href=&quot;https://pghtechfest.com/&quot;&gt;Pittsburgh Tech Fest&lt;/a&gt;, held at &lt;a href=&quot;https://www.laroche.edu/&quot;&gt;LaRoche College&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;My second year&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://pghtechfest.com/images/pt_logo_2.png&quot; alt=&quot;Pittsburgh TechFest 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was very excited to attend it again this year, with a twist: I reported last year that I was inspired by seeing people I know giving talks, and two months later, after the very first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://steelcityruby.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://steelcityruby.org/&quot;&amp;gt;Steel City Ruby Conf&amp;lt;/span&amp;gt; &lt;a href=&quot;/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;decided to finally start giving talks myself&lt;/a&gt;, starting with user group talks. When the organizers of this year&apos;s Pittsburgh TechFest put out a call for presentations four months ago, I knew I wanted to submit some, and so I did. My talk &quot;Stop overusing regular expressions!&quot; was accepted!&lt;/p&gt;
&lt;p&gt;This year I had a goal of enjoying the conference even more than I enjoyed last year&apos;s, and I succeeded!&lt;/p&gt;
&lt;h2&gt;Speakers&apos; dinner the evening before the conference&lt;/h2&gt;
&lt;p&gt;All speakers were invited to a speakers&apos; dinner for the evening before the one-day conference, so I eagerly attended, in order to see some old friends as well as meet new people I hadn&apos;t met before. That was fun. This was at &lt;a href=&quot;https://www.foxandhound.com/&quot;&gt;Fox and Hound Bar and Grill&lt;/a&gt; on McKnight Road. I had to fight through considerable rush hour traffic (and also feeling rather ill: more on that later) to get up north out there from the city, but made it. Tortilla chips, veggie trays, baked potatoes, chicken wings: not my usual diet, but those who know me know that I actually love this stuff, ha (thirty pounds ago I ate like that more often)!&lt;/p&gt;
&lt;p&gt;The always eerie thing is meeting people in person &lt;em&gt;finally&lt;/em&gt; that you&apos;ve mainly &quot;known&quot; from Twitter or email. For example, last year, when I was far more &lt;em&gt;shy&lt;/em&gt;, I never actually met the founders of the new conference and talked with them. At the speakers&apos; dinner, I finally met Eric Kepes and Dave Hoerster, for example!&lt;/p&gt;
&lt;p&gt;Last year, I basically made myself invisible and kind of only hung out a little bit with some people, whom I already knew! &lt;a href=&quot;/blog/2012/08/22/steel-city-ruby-conf-review-part-1-its-about-people/&quot;&gt;My experience at Steel City Ruby Conf completely altered how I feel I should relate to people, not only in programming conferences but in life&lt;/a&gt;. I&apos;m still slowly getting out of my shell that I basically lived in for four decades, but I know I&apos;ve made some real progress in the past year.&lt;/p&gt;
&lt;h2&gt;Breakfast the day of the conference&lt;/h2&gt;
&lt;p&gt;Unfortunately, because I was in a rush, I did not eat any breakfast before leaving home. Somehow, I had assumed there would be breakfast provided at the conference (in the form of bagels and fruit, something like that). I was wrong. There was just juice, coffee, tea. Luckily, I had an emergency energy bar in my bag, and ate it.&lt;/p&gt;
&lt;p&gt;Others I talked to were also confused by the lack of food. Maybe in the future it should be made clear whether there is any food provided at the beginning of the day.&lt;/p&gt;
&lt;h2&gt;Keynote&lt;/h2&gt;
&lt;p&gt;This year, the keynote speech was by &lt;a href=&quot;https://www.linkedin.com/in/dickwall&quot;&gt;Dick Wall&lt;/a&gt;, whom some of you may know from the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://javaposse.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://javaposse.com/&quot;&amp;gt;Java Posse&amp;lt;/span&amp;gt; podcast, others from the &lt;a href=&quot;https://web.archive.org/web/20251217041155/https://scalawags.tv/&quot;&gt;Scalawags&lt;/a&gt; podcast that started half a year ago (Scala fans, you have to watch this: it also features &lt;a href=&quot;https://www.linkedin.com/in/djspiewak&quot;&gt;Daniel Spiewak&lt;/a&gt; and Pittsburgh&apos;s own &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Dick gave a passionate, personal, entertaining, and thoughtful talk urging all of us to adopt a mindset of taking risks and embracing &lt;em&gt;failure&lt;/em&gt;, just as he has in his professional life: he has worked at many companies, including Google and small startups, and his own currently, &lt;a href=&quot;https://www.escalatesoft.com/&quot;&gt;Escalate&lt;/a&gt;, which is devoted to Scala training and mentoring.&lt;/p&gt;
&lt;h3&gt;Some lessons from Dick&lt;/h3&gt;
&lt;p&gt;Some of the lessons Dick imparted, while putting up slides of some pretty epic failures (software or otherwise, including mountain biking, which he does):&lt;/p&gt;
&lt;p&gt;Do not overplan; be prepared to adapt to the present situation.&lt;/p&gt;
&lt;p&gt;If something is not working, don&apos;t continue just because you have invested in it already (&lt;a href=&quot;https://en.wikipedia.org/wiki/Sunk_costs&quot;&gt;sunk cost&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Do something new and valuable; for example, don&apos;t write yet another &lt;a href=&quot;https://en.wikipedia.org/wiki/Content_management_system&quot;&gt;CMS&lt;/a&gt;, because people have already done it.&lt;/p&gt;
&lt;p&gt;The worst thing to do is to &quot;waste engineering effort&quot;.&lt;/p&gt;
&lt;p&gt;Fail &lt;em&gt;early&lt;/em&gt;, never in production! Example: the &lt;a href=&quot;https://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge&quot;&gt;Tacoma Narrows Bridge&lt;/a&gt; disaster.&lt;/p&gt;
&lt;p&gt;If you fail repeatedly at something, maybe it&apos;s time to stop it and move on.&lt;/p&gt;
&lt;p&gt;Honest communication is key. Often, late failure happens because someone was afraid to honestly speak up about design flaws, and often this is because there is a culture against such honesty.&lt;/p&gt;
&lt;p&gt;Don&apos;t focus on &lt;a href=&quot;https://en.wikipedia.org/wiki/Happy_path&quot;&gt;happy path testing&lt;/a&gt;, but on the sad path: think up front about how something can fail, before even coding.&lt;/p&gt;
&lt;p&gt;You can&apos;t know whether you&apos;ve succeeded or failed unless you have defined concretely what success means in a given context.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_craftsmanship&quot;&gt;software craftsmanship&lt;/a&gt; movement, which focuses on quality, is well-meaning but often results in people afraid to try new things (such as learn and use a new language) because they are afraid of writing &quot;bad code&quot; at first. It&apos;s OK to start out by writing bad code.&lt;/p&gt;
&lt;p&gt;One way of failing early is to push failure to compile time (he briefly gave a plug for Scala&apos;s type system as one way to do this).&lt;/p&gt;
&lt;h2&gt;Overview of sessions&lt;/h2&gt;
&lt;p&gt;As with last year, or actually far &quot;worse&quot;, there were a huge number of sessions and limited time slots. I counted six major time slots, with an average of nine sessions during each, so anyone who attended a session in a given time slot basically had choose &lt;em&gt;one out of nine&lt;/em&gt;. This is pretty wild. (Depending on logistics, hopefully next year the conference can move to a two-day format.)&lt;/p&gt;
&lt;p&gt;Consistent with my philosophy in the past year of conference attendance, I chose to seek out talks that fulfilled the following criteria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;topics revolving around philosophy, experience, wisdom rather than technical tutorials&lt;/li&gt;
&lt;li&gt;speakers &lt;em&gt;not&lt;/em&gt; from Pittsburgh and whom I do &lt;em&gt;not&lt;/em&gt; already know&lt;/li&gt;
&lt;li&gt;stuff I&apos;m very interested in that benefits particularly from a guided intro versus looking up a tutorial online&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sessions I attended&lt;/h2&gt;
&lt;h3&gt;Messaging with RabbitMQ (&lt;a href=&quot;https://www.linkedin.com/in/handersongomes&quot;&gt;Handerson Gomes&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Actually, I already know Handerson from Pittsburgh meetups. But, as he offered for his session a sequence of lightning talks on RabbitMQ, I thought I would learn something.&lt;/p&gt;
&lt;p&gt;Unfortunately, after his first couple of intro talks, I was feeling so sleepy and ill (more on my physical condition at the end of this report) that I had to bail out and take a nap. I napped for about half an hour, much needed before the second session. Then I realized I wasn&apos;t just sleepy, but also starving, and found a vending machine and got more food! Meanwhile, I immediately logged into my health care provider&apos;s Web site and submitted a request for a doctor&apos;s appointment on Monday.&lt;/p&gt;
&lt;h3&gt;It&apos;s Cool, Nobody Else Knows What They&apos;re Doing Either (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jaredthenerd.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jaredthenerd.com/&quot;&amp;gt;Jared Faris&amp;lt;/span&amp;gt;)&lt;/h3&gt;
&lt;p&gt;This was an interesting philosophical discussion about career and personal development, much in the lines of the keynote speech by Dick Wall.&lt;/p&gt;
&lt;p&gt;Jared said that to really learn, we have to &lt;em&gt;challenge&lt;/em&gt; ourselves. We have to go beyond our comfort zone. How far? He suggested that we should take on stuff that we&apos;re 80% sure we can do: if we are too ambitious and commit to something we feel only 50% sure of, that is too risky, because then we might just fail without really learning something from the experience.&lt;/p&gt;
&lt;h4&gt;Some lessons from Jared&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Ask for help&lt;/em&gt;. Jared related that in the past, he was too proud to ask for help because there&apos;s sometimes an implicit gamesmanship among us software developers: we don&apos;t want to look dumber than our friends, and we fear rejection. But he learned that asking for help was effective, because in the long run it means getting better faster, rather than flailing alone. Stop trying to impress people.&lt;/p&gt;
&lt;p&gt;The way to stretch yourself is to build a base of what you do know, so that when you go beyond that, you have the tools to move to the next level.&lt;/p&gt;
&lt;p&gt;Be &quot;honest but confident&quot;. Do not fear the art of self-promotion: if you hold back on speaking up for yourself because you don&apos;t know it all, then you&apos;ll lose out to someone who does speak up.&lt;/p&gt;
&lt;h3&gt;Stop overusing regular expressions! (me)&lt;/h3&gt;
&lt;p&gt;I could not attend any of the interesting sessions in the third time slot because I was giving a talk.&lt;/p&gt;
&lt;p&gt;Here&apos;s &lt;a href=&quot;/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/&quot;&gt;my report about my talk&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Lunch&lt;/h3&gt;
&lt;p&gt;Lunch was of the usual La Roche College cafeteria high quality, nutritious and filling. (And I also ate some cake and pie as well, ha!) This time I socialized more, sitting with some people I knew (but not so well) and people I didn&apos;t know. It was great.&lt;/p&gt;
&lt;p&gt;I skipped the lunchtime vendor talks. They might have been interesting, but I needed a break from sitting around in talks, and certainly did not feel like taking lunch outside to eat alone while listening to someone talk! There seemed to be a sizable audience for the one outside the cafeteria, however, so I&apos;m happy they found it useful!&lt;/p&gt;
&lt;h3&gt;Redesign is not a four letter word (&lt;a href=&quot;https://www.linkedin.com/pub/adam-kalnas/4/660/638&quot;&gt;Adam Kalnas&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;So this was a short (30-minute) talk about redesign. Although Adam works in the .NET world, the lessons he learned and shared with us are not platform-specific. He described how an architecture at &lt;a href=&quot;https://www.omnyx.com/&quot;&gt;Omnyx&lt;/a&gt; was redesigned successfully. The steps included&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing pinning tests for a system that had no automated tests at all.&lt;/li&gt;
&lt;li&gt;Creating an abstract interface for an existing layer.&lt;/li&gt;
&lt;li&gt;Rewriting code to go through the interface API.&lt;/li&gt;
&lt;li&gt;Creating a parallel implementation for the interface.&lt;/li&gt;
&lt;li&gt;Using &lt;a href=&quot;https://martinfowler.com/bliki/FeatureToggle.html&quot;&gt;feature toggles&lt;/a&gt; to keep both implementations in the code.&lt;/li&gt;
&lt;li&gt;Finally switching off the feature toggle and deleting the old implementation.&lt;/li&gt;
&lt;li&gt;All the while adding more &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;TDD&lt;/a&gt; tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was a really nice story of how a really gnarly legacy architecture was successfully brought into the world of cleaner interfaces and automated tests.&lt;/p&gt;
&lt;h3&gt;Node.js Design Patterns for the Discerning Developer (&lt;a href=&quot;https://www.linkedin.com/pub/constantine-aaron-cois/6/312/824&quot;&gt;Aaron Cois&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;I am fairly new to the &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; world, having first heard of it two years ago at a &lt;a href=&quot;https://meetups.jquery.com/events/nodejs-with-todd-eichel&quot;&gt;March 2011 meeting of the Pittsburgh jQuery meetup&lt;/a&gt; in which Todd Eichel introduced Node to the group.&lt;/p&gt;
&lt;p&gt;I don&apos;t currently actively use Node except, amusingly, as a vehicle for testing non-client JavaScript code for my own purposes.&lt;/p&gt;
&lt;p&gt;Aaron basically talked about how to deal with the whole &quot;callback hell&quot; problem when dealing with the asynchronous APIs of Node. There was hairy looking code that he transformed or wrote wrappers for in order to make less hairy, but to my eye it was still hairy. I have forked his &lt;a href=&quot;https://github.com/cacois/node-patterns-discerning&quot;&gt;GitHub repository for the talk&lt;/a&gt; and hope to go through the code more closely.&lt;/p&gt;
&lt;h3&gt;Scaling out with Akka Actors (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt;)&lt;/h3&gt;
&lt;p&gt;I&apos;m still not an active &lt;a href=&quot;https://akka.io/&quot;&gt;Akka&lt;/a&gt; user, although there is something I believe I could use Akka for fruitfully at work, to considerably improve some efficiency (but in practice, nobody is complaining about the speed, so as a practical matter it has been of no priority to scale out the task in question), and also some personal projects.&lt;/p&gt;
&lt;p&gt;Josh has been promoting Akka for some time: it was at last year&apos;s Pittsburgh TechFest that I got my first real introduction to it. Since then, Josh has given more advanced talks on architectures using Akka, as Akka continues to improve and provide more features.&lt;/p&gt;
&lt;p&gt;I learned quite a bit from this talk about scaling out (vs. scaling up): the focus on topology, the adding of new actors whenever you want to handle some transient state or manage other actors. It&apos;s really a different way of thinking than &quot;ordinary&quot; programming and is perhaps more faithful to the original concept of &quot;object-oriented&quot; (being focused entirely on being asynchronous and passing immutable messages) than what has been considered object-oriented in the past couple of decades.&lt;/p&gt;
&lt;p&gt;For more details, check out his slides and code at his &lt;a href=&quot;https://github.com/jsuereth/intro-to-actors&quot;&gt;GitHub repository&lt;/a&gt;. Note that the code for the clusters talk is on the &lt;a href=&quot;https://github.com/jsuereth/intro-to-actors/tree/clusters&quot;&gt;&lt;code&gt;clusters&lt;/code&gt; branch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am definitely going to start using Akka this year. I think the time for actors has truly come.&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;Dave Hoerster gave the closing speech, thanking all the many sponsors who supported the conference. It was definitely really cool how many sponsors there were. He also noted that there may be an attempt to scale up to a two-day event, which would be really cool if it can be made to happen.&lt;/p&gt;
&lt;p&gt;There were raffle prizes. Amusingly, the vast number of people randomly chosen had already left the premises (hey, it was a long day), so it took a while to give everything away (although some prizes were marked to be emailed to those who were no longer present).&lt;/p&gt;
&lt;p&gt;After the official conclusion of the conference, some people gathered in groups to have dinner together. I wanted to join Josh and Dick, but knew that I was feeling really miserable and had to go home to shower and sleep.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I will apply the lessons I learned from all the talks and conversations I participated in.&lt;/p&gt;
&lt;p&gt;One thing I&apos;ve done is forked a bunch of GitHub repositories for talks that people have posted online (and not just talks I went to) that seem like useful places for me to concretely learn and explore further. Ideas are fine, but working code is working code!&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;I&apos;m really grateful not only to attend this conference, but also speak in it, and learn a lot of things, meet new people (and add their blogs to my RSS feeds as well as follow them on Twitter), and share ideas with everyone. I thank the organizers who put in even more work than last year, because of so many more attendees and speakers! I thank the speakers whose presentations I attended (and those I met whose presentations I would have wanted to attended if not for the time conflicts) for sharing their knowledge and experience. And La Roche College was a good venue (and I noticed that this year there was not the temperature problem of last year, when it was just way too cold in the rooms).&lt;/p&gt;
&lt;p&gt;I hope to come to another Pittsburgh TechFest in 2014. Of course, I would submit some talks for it, and come up with helpful topics that are of increasingly more general interest and use.&lt;/p&gt;
&lt;h2&gt;Note on being sick&lt;/h2&gt;
&lt;p&gt;I&apos;ve been sick for a week with contact dermatitis, which I thought I got from poison ivy, but may have come from somewhere else. I was hoping it would clear up on its own, so that I could avoid taking drugs, but I felt increasingly worse yesterday (the itching was very unpleasant and made sleep very difficult), and then during the conference, got even worse. I went home and immediately fell into a nap from exhaustion. When I woke up, I was feeling really terrible. I clearly needed immediate treatment. Abby had come home and told me she was going t take me to the local &lt;a href=&quot;https://upmc.com/Services/urgent-care/Pages/default.aspx&quot;&gt;UPMC Urgent Care&lt;/a&gt; center. So we went, and I got a truly painful steroid shot in the hip. It didn&apos;t take long before I started feeling better, with relief from itching, so that I could at least sleep.&lt;/p&gt;
&lt;p&gt;I decided that Dick Wall&apos;s advice of not failing repeatedly applied to me. I have failed late and too many times by not going to a doctor earlier. I have reasons (some really terrible experiences with doctors earlier in my life who really botched things up big time, and also I generally don&apos;t like getting shots or drugs), but reason has to kick in. I should have gone to a doctor last week when I started having real problems, or even better, gotten my neck rash checked out three weeks ago when it first appeared. I don&apos;t like to admit my stupidity and stubbornness, but this is &quot;honest communication&quot;. I am publicly admitting that I made my own life miserable for weeks, as well as Abby&apos;s, and also my fellow conference attendees who had to put up with my marred appearance and energy level (when I explained I wasn&apos;t feeling well, people admitted to not wanting to ask me what was up with my neck and skin in general). It wasn&apos;t reasonable for me to resist seeking immediate medical attention, and in the future, I will not only use this as a specific learning experience (check myself after any bites or rashes, and immediately have all affected clothing items washed), but a more general one about admitting failure early rather than hoping something going bad with my body will just get better.&lt;/p&gt;
&lt;p&gt;I have had a habit of pushing myself too hard (really messing up not only my &lt;a href=&quot;/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/&quot;&gt;Pittsburgh Marathon&lt;/a&gt;, but also a &lt;a href=&quot;/blog/2012/06/03/a-totally-exhausting-rachel-carson-trail-challenge-goal-training-hike/&quot;&gt;Rachel Carson Trail hike&lt;/a&gt; where if I had not been so fatigued, I would have paid more attention to plants brushing against me or the like, and even my 9-mile run last Saturday that proved too taxing given my incomplete recovery from both of those. Pushing too hard is just stupid, and I know it. What&apos;s the worst thing: doing something stupid even though you know it; at least if you don&apos;t know it, you can be forgiven.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-06-02)&lt;/h3&gt;
&lt;p&gt;The next day, I was feeling much better, but it&apos;s clear that full recovery will take a while. I will continue taking steroid pills and applying steroid cream as needed to relieve the itching. I hope that in two weeks I&apos;ll be all good again!&lt;/p&gt;
&lt;h3&gt;(Update of 2014-06-05)&lt;/h3&gt;
&lt;p&gt;A year later, I reviewed this post just before my third Pittsburgh TechFest, in 2014, where I am to give another presentation.&lt;/p&gt;
&lt;p&gt;It turned out that my health suffered tremendously for &lt;em&gt;months&lt;/em&gt;. I reported on that &lt;a href=&quot;/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/&quot;&gt;in August 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you&apos;ve attended Pittsburgh TechFest or will do so this year, I&apos;d like to hear your thoughts about what you&apos;ve learned and used, or hope to!&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>100th anniversary: remembering the first time I heard Stravinsky&apos;s &quot;The Rite of Spring&quot;</title><link>https://franklinchen.com/blog/2013/05/29/100th-anniversary-remembering-the-first-time-i-heard-stravinskys-rite-of-spring/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/29/100th-anniversary-remembering-the-first-time-i-heard-stravinskys-rite-of-spring/</guid><pubDate>Thu, 30 May 2013 02:52:45 GMT</pubDate><content:encoded>&lt;p&gt;There&apos;s been a crazy amount of media coverage about the 100th anniversary of the performance of Igor Stravinsky&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Rite_of_Spring&quot;&gt;&quot;The Rite of Spring&quot;&lt;/a&gt; that caused riots (what great publicity then and even now). I&apos;ve been bombarded with a lot of commentary. Some of it was interesting and insightful, but eventually I got tired of reading any further.&lt;/p&gt;
&lt;p&gt;I decided to go back to the source, and listen to it again, and also actually &lt;em&gt;watch&lt;/em&gt; it for the first time ever!&lt;/p&gt;
&lt;h2&gt;My first time&lt;/h2&gt;
&lt;p&gt;I totally remember the first time I ever heard excerpts of &quot;The Rite of Spring&quot;.&lt;/p&gt;
&lt;p&gt;It was in a music class in college in around 1989 or 1990.&lt;/p&gt;
&lt;p&gt;I was taking a two-semester music theory course sequence for non-majors. The instructor at one point played back for us excerpts of this music.&lt;/p&gt;
&lt;p&gt;It was very startling music to me, very harsh and chaotic and confusing. I couldn&apos;t say I hated it, but I certainly did &lt;em&gt;not&lt;/em&gt; enjoy it at all. I had a rather conservative musical taste in college.&lt;/p&gt;
&lt;p&gt;But you know what, I was quite stimulated in that our instructor didn&apos;t require us to love it, but just put it on, showed his enthusiasm, and &lt;em&gt;analyzed&lt;/em&gt; what was going on in some of the music, such as the changing irregular meters; the random accents; the bizarre orchestration; the deliberate violation of conventional harmonic voice leading.&lt;/p&gt;
&lt;p&gt;Noticing some of the structural characteristics of the music didn&apos;t always make them less harsh on my ear, but at least let me understand that this wasn&apos;t just noise but was really thought out for a purpose.&lt;/p&gt;
&lt;p&gt;I didn&apos;t voluntarily listen to this music again for another quarter of a century, but those excerpts still stuck in my mind.&lt;/p&gt;
&lt;h2&gt;Today, a quarter of a century later&lt;/h2&gt;
&lt;h3&gt;Ballet&lt;/h3&gt;
&lt;p&gt;The main thing I decided was to actually watch the music as intended for ballet.&lt;/p&gt;
&lt;p&gt;YouTube made this easy. Here&apos;s the Joffrey Ballet:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ewOBXph0hP4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I will confess that watching the ballet made the music much more engaging, because of correlations with action, and especially the drawn out repetitive nature of the music get boring for me in the absence of &quot;something&quot; going on, a story.&lt;/p&gt;
&lt;p&gt;I was struck by how much I enjoy this music now. The textures Stravinsky creates are fresh and transparent, gorgeous even. The music emerges as though from the world itself. Many moods are portrayed, from the mysterious to the somber to the creepy to the deadly to the ecstatic.&lt;/p&gt;
&lt;p&gt;It&apos;s clearly not something I&apos;d listen to every day, but I would happily revisit it now and then as I would a favorite film. This music lights my brain on fire!&lt;/p&gt;
&lt;h3&gt;Computer animation&lt;/h3&gt;
&lt;p&gt;The other thing I did was check out a computer animation of the score by Stephen Malinowski, thanks to an &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2013/05/27/186461168/watch-a-mind-blowing-visualization-of-the-rite-of-spring&quot;&gt;NPR blog post I saw mentioning it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I loved it! Being able to see all the parts and how the voices flow with or against one another gave me a real thrill, an added dimension to just listening. You can see what is regular, what is irregular, what is sheer freedom.&lt;/p&gt;
&lt;h2&gt;Selected commentary&lt;/h2&gt;
&lt;p&gt;I said I quickly got tired of reading commentary. Nevertheless, here are some interesting links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.therestisnoise.com/2013/05/rite-100.html&quot;&gt;Alex Ross&apos;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2013/05/26/186486269/why-jazz-musicians-love-the-rite-of-spring&quot;&gt;&quot;Why jazz musicians love The Rite of Spring&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2013/05/24/186443524/the-cocktail-party-guide-to-igor-stravinsky&quot;&gt;&quot;The Cocktail Party Guide to Igor Stravinsky&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://soundcheck.wnyc.org/2013/may/14/rite-spring/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://soundcheck.wnyc.org/2013/may/14/rite-spring/&quot;&amp;gt;Leon Botstein&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.the-tls.co.uk/tls/public/article1275660.ece&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.the-tls.co.uk/tls/public/article1275660.ece&quot;&amp;gt;Robert Craft&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was interesting to revisit strange music after a quarter of a century to find that my musical enjoyment had changed considerably. When I was in college, I thought &quot;The Rite of Spring&quot; was weird; now, I think it is a work of amazing beauty, expression, and creative freedom. Wow. And that was a hundred years ago. How could music ever be the same again after that!&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Scala Meetup: my talk &quot;Stop Overusing Regular Expressions!&quot;</title><link>https://franklinchen.com/blog/2013/05/29/pittsburgh-scala-meetup-my-talk-stop-overusing-regular-expressions/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/29/pittsburgh-scala-meetup-my-talk-stop-overusing-regular-expressions/</guid><pubDate>Thu, 30 May 2013 02:37:07 GMT</pubDate><content:encoded>&lt;p&gt;So two days ago, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jamieforrest.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jamieforrest.com/&quot;&amp;gt;Jamie&amp;lt;/span&amp;gt; sent email out to the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala meetup group&lt;/a&gt; saying that our planned speaker Barrett, who was to have talked about his experiences using &lt;a href=&quot;https://akka.io/&quot;&gt;Akka&lt;/a&gt;, was not going to make it, and asked if anyone else could talk about something.&lt;/p&gt;
&lt;h2&gt;I suddenly stepped in as a substitute speaker&lt;/h2&gt;
&lt;p&gt;Since I was already supposed to give a talk on Saturday at the 2013 &lt;a href=&quot;https://pghtechfest.com/&quot;&gt;Pittsburgh TechFest&lt;/a&gt;, and was in the process of finishing my work on it, I volunteered to give an early version of my Pittsburgh TechFest talk &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/115817242/&quot;&gt;at the Scala meetup&lt;/a&gt;, since I actually happen to provide Scala code in the talk. Ha, this meant giving two talks in two successive meetings, because at the last meeting, I gave a &lt;a href=&quot;/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/&quot;&gt;talk on property-based testing using ScalaCheck&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;My presentation was &quot;Stop overusing regular expressions!&quot;&lt;/p&gt;
&lt;p&gt;Here is my abstract as submitted to Pittsburgh TechFest:
&amp;lt;blockquote&amp;gt;
Regular expressions are very commonly used to process and validate text data. Unfortunately, they suffer from various limitations. I will discuss the limitations and illustrate how using grammars instead can be an improvement. I will make the examples concrete using parsing libraries in a couple of representative languages, although the ideas are language-independent. (I&apos;ll try to squeeze in, say, Ruby, Python, JavaScript, Scala.)&lt;/p&gt;
&lt;p&gt;I will emphasize ease of use, since one reason for the overuse of regular expressions is that they are so easy to pull out of one&apos;s toolbox.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;Attendance&lt;/h3&gt;
&lt;p&gt;Turnout was small: five people other than myself. By the way, we&apos;ve discovered unsurprisingly predictable pattern: roughly half the people who RSVP &quot;yes&quot; on the meetups show up.&lt;/p&gt;
&lt;h3&gt;Slides and code&lt;/h3&gt;
&lt;p&gt;The material for the talk &lt;em&gt;as given&lt;/em&gt; is at &lt;a href=&quot;https://github.com/franklinchen/talk-on-overusing-regular-expressions/tree/meetup-talk&quot;&gt;this tag of my GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;https://github.com/franklinchen/talk-on-overusing-regular-expressions&quot;&gt;master branch of the GitHub repository&lt;/a&gt; will always have my latest revisions.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-06-01)&lt;/h4&gt;
&lt;p&gt;I made substantial revisions in the presentation and code before Pittsburgh TechFest. I recommend looking at the latest version. Details in my &lt;a href=&quot;/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/&quot;&gt;report on my talk at Pittsburgh TechFest 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/22302440&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen/handout-22302440&quot; title=&quot;Stop overusing regular expressions!&quot; target=&quot;_blank&quot;&amp;gt;Stop overusing regular expressions!&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen&quot; target=&quot;_blank&quot;&amp;gt;Franklin Chen&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;There was great feedback after the talk. Some material I went through took quickly, without a smooth transition to relate ideas, and my final page of Scala code that contained dense use of all kinds of operators and idioms was something I stumbled through trying to explain, even as I was feeling that explaining it was a tangent from the main points of the talk.&lt;/p&gt;
&lt;p&gt;There was casual discussion of Scala and other topics after the talk as well. I was pretty excited to hear about how useful Akka has become in solving important problems.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thanks to everyone who came to the talk! I enjoyed sharing my experiences and recommendations, and engaging in discussion about the topics, and getting to make a mental note of things to change in my delivery, slides, and code for Pittsburgh TechFest on Saturday.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;https://justin-pihony.blogspot.com/&quot;&gt;Justin&lt;/a&gt; for arranging a meeting place for the Pittsburgh Scala meetup at &lt;a href=&quot;https://mmodal.com/&quot;&gt;M*Modal&lt;/a&gt;, and thanks to M*Modal for providing the space!&lt;/p&gt;
&lt;p&gt;And thanks to Jamie again for creating the Pittsburgh Scala meetup group, and &lt;a href=&quot;https://typesafe.com/&quot;&gt;TypeSafe&lt;/a&gt; for being a sponsor now, thanks to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh&amp;lt;/span&amp;gt; (who sadly did not make it to this meeting).&lt;/p&gt;
</content:encoded></item><item><title>Learning the Congo de Captieux traditional French dance</title><link>https://franklinchen.com/blog/2013/05/25/learning-the-congo-de-captieux-traditional-french-dance/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/25/learning-the-congo-de-captieux-traditional-french-dance/</guid><pubDate>Sun, 26 May 2013 03:29:20 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to a French dance potluck party hosted by Lisa that included a special dance workshop on &quot;Congo de Captieux&quot; taught by her and a visitor, Lynn. This is a set dance for groups of four dancers (two couples) that really moves along and gets you sweaty! Here is a sample of what it looks like (&lt;em&gt;not&lt;/em&gt; of us):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ZHovppdfZBk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;We haven&apos;t been doing French dance or music lately because of lots of things going on (including Abby&apos;s breaking her foot in February; she can finally do a bit of dancing again), so it was good to be back.&lt;/p&gt;
&lt;p&gt;The dance was pretty complex to learn, but it was fun to finally be able to get through the steps, because the coordinating the interleaving continuous motion was strangely satisfying and thrilling!&lt;/p&gt;
</content:encoded></item><item><title>Why I will always pronounce &quot;GIF&quot; like &quot;gift&quot; and not like &quot;Jif&quot;</title><link>https://franklinchen.com/blog/2013/05/24/why-i-will-always-pronounce-gif-like-gift-and-not-like-jif/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/24/why-i-will-always-pronounce-gif-like-gift-and-not-like-jif/</guid><pubDate>Sat, 25 May 2013 01:40:22 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Recently Steve Wilhite, the creator of &lt;a href=&quot;https://en.wikipedia.org/wiki/Graphics_Interchange_Format&quot;&gt;GIF (Graphics Interchange Format)&lt;/a&gt;, tried to settle once and for all the age-old (well, 26-year-old, since the invention of GIF in 1987) question of how to pronounce &quot;GIF&quot;, claiming that it is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://howtopronouncegif.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://howtopronouncegif.com/&quot;&amp;gt;pronounced as &quot;jif&quot;&amp;lt;/span&amp;gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
&quot;The Oxford English Dictionary accepts both pronunciations,&quot; Mr. Wilhite said. &quot;They are wrong. It is a soft ‘G,’ pronounced ‘jif.’ End of story.&quot;
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Of course, whole &quot;debate&quot; is kind of silly, because it doesn&apos;t really matter how it&apos;s pronounced.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Or does it?&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;My first memories of GIF&lt;/h2&gt;
&lt;p&gt;I was in college in the late 1980s when a friend of mine first introduced me to the world of GIF files. Since he pronounced &quot;GIF&quot; like &quot;gift&quot;, I followed suit. Other friends also pronounced it that way, and I simply assumed that was &quot;correct&quot;.&lt;/p&gt;
&lt;h2&gt;Mispronunciation?&lt;/h2&gt;
&lt;p&gt;It was in the early 1990s when at my first job, I noticed that a colleague of mine pronounced &quot;GIF&quot; like &quot;Jif&quot; instead. I was stunned, of course. Meanwhile, at this very time, there was an uproar over the &lt;a href=&quot;https://en.wikipedia.org/wiki/Graphics_Interchange_Format#Unisys_and_LZW_patent_enforcement&quot;&gt;patent enforcement by Unisys on the LZW compression algorithm used by GIF&lt;/a&gt;. I was outraged by the development myself, and chose to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.gnu.org/philosophy/gif.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.gnu.org/philosophy/gif.html&quot;&amp;gt;minimize use of the GIF format&amp;lt;/span&amp;gt;; I used JPEG and the new PNG formats instead for any new image file creation.&lt;/p&gt;
&lt;p&gt;It was around this time that I learned that the official pronunciation of &quot;GIF&quot; was supposed to be &quot;jif&quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But I didn&apos;t care.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I knew that there were people pronouncing it either way, and I was already used to one way, and nobody was enforcing the &quot;correct&quot; way, and I was rarely even saying the word any more, since I was not using the file format for personal or work purposes. In the past two decades, I don&apos;t believe I&apos;ve said the word more than a dozen times, but each time, I stubbornly used the &quot;gift&quot; pronunciation.&lt;/p&gt;
&lt;h2&gt;Ownership?&lt;/h2&gt;
&lt;p&gt;If everyone were saying &quot;jif&quot; all the time, I would have changed my pronunciation. This is how language works. The point of language is to communicate with others, and if nobody knew what I was saying because I was pronouncing a word wrong, then I would have to change my pronunciation.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It means little to me what the inventor of the word intended&lt;/em&gt;, because language serves everyone who uses it meaningfully, not just the inventor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you create something, you don&apos;t own it any more. It belongs to the world.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is considered by some to be a controversial point of view, but I think it is philosophically correct &lt;em&gt;as a starting point&lt;/em&gt; of discussion. Yes, sophisticated systems of &lt;a href=&quot;https://en.wikipedia.org/wiki/Property_rights_%28economics%29&quot;&gt;property rights&lt;/a&gt; have been created and do serve a useful purpose, but always &lt;em&gt;in context of&lt;/em&gt; the fundamental outlook, and as a constraint in the name of greater benefit to society.&lt;/p&gt;
&lt;p&gt;The continuing debates over American copyright and patent laws, for example, illustrate that these laws are not set in stone but are a result of discussions and compromises among different interests and philosophies.&lt;/p&gt;
&lt;p&gt;It is ironic, of course, that more people seem to care about the pronunciation of &quot;GIF&quot; than about the old patent controversy surrounding the format. Then again, as a &lt;a href=&quot;https://www.law.cornell.edu/wex/patent&quot;&gt;limited monopoly&lt;/a&gt;, the patent on LZW did expire in the US in 2003 (and elsewhere in 2004).&lt;/p&gt;
&lt;h2&gt;Ownership of language?&lt;/h2&gt;
&lt;p&gt;If you are reading this and are French, I&apos;m curious what your view is of ownership of language, because the &lt;a href=&quot;https://en.wikipedia.org/wiki/Acad%C3%A9mie_fran%C3%A7aise&quot;&gt;Académie française&lt;/a&gt; has officially controlled the French language since 1635, and there is no analogous institution in the US.&lt;/p&gt;
&lt;h2&gt;Authorial intent?&lt;/h2&gt;
&lt;p&gt;The debate over &quot;GIF&quot; may seem trivial, but I think it is a good starting point for those who are interested in issues of ownership and &lt;a href=&quot;https://en.wikipedia.org/wiki/Authorial_intent&quot;&gt;authorial intent&lt;/a&gt;, as applied to many more important issues, such as &quot;correct&quot; interpretation or use of literature, of music, of law. I have been particularly interested in this debate in the context of music, and my attitude comes from grappling with &lt;a href=&quot;/blog/2012/12/10/rip-charles-rosen/&quot;&gt;Charles Rosen&apos;s writings&lt;/a&gt; over the years; as you can imagine, debate over &quot;composer&apos;s intent&quot; can get &lt;a href=&quot;https://www.pianostreet.com/smf/index.php?topic=2657.0&quot;&gt;very heated&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Dictionaries of English today accept both pronunciations of &quot;GIF&quot;. Furthermore, some informal polls I have seen even come up with the result that most people who participate in such polls favor my pronunciation. So I will continue using my pronunciation.&lt;/p&gt;
&lt;p&gt;But really, &lt;a href=&quot;https://stancarey.wordpress.com/2013/05/24/you-can-pronounce-gif-any-way-you-like/&quot;&gt;it doesn&apos;t matter how you pronounce &quot;GIF&quot;&lt;/a&gt;. The existence of alternate pronunciations of words is not a threat to language. &quot;Either&quot;, &quot;tomato&quot;, &quot;GIF&quot;: let&apos;s call the whole thing off!&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;dskTypuEXoM&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Reflections on Richard Wagner&apos;s 200th birthday: beautiful music without a future</title><link>https://franklinchen.com/blog/2013/05/22/reflections-on-richard-wagners-200th-birthday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/22/reflections-on-richard-wagners-200th-birthday/</guid><pubDate>Wed, 22 May 2013 12:14:55 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;A couple of days ago, I was driving and had the radio on and heard Richard Wagner&apos;s prelude to act 1 of his opera &lt;a href=&quot;https://en.wikipedia.org/wiki/Die_Meistersinger_von_N%C3%BCrnberg&quot;&gt;&quot;Die Meistersinger&quot;&lt;/a&gt;, and was transported into the lush musical world that is so uniquely Wagner: seductive orchestral colors, chromatic harmony, melodic motifs, fine storytelling, stirring climaxes, and in this particular musical excerpt, ironic yet clever use of counterpoint. I had to pull over for a while to finish listening to the prelude and fully enjoy the &lt;em&gt;guilty&lt;/em&gt; rush of emotional excitement in this fun but over-the-top piece. Why the guilt?&lt;/p&gt;
&lt;h2&gt;Controversy&lt;/h2&gt;
&lt;p&gt;The controversial music composer &lt;a href=&quot;https://en.wikipedia.org/wiki/Richard_Wagner&quot;&gt;Richard Wagner&lt;/a&gt; was born 200 years ago. In keeping with the media&apos;s love of arbitrarily nice round numbers and anniversaries, there&apos;s a lot of commentary about celebrations of his birthdays or reasons &lt;em&gt;not&lt;/em&gt; to celebrate. Here are just a few articles that came up during a Web search:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/entertainment/music/germany-celebrates-200th-birthday-of-composer-richard-wagner/2013/05/22/b8f93924-c2b2-11e2-9642-a56177f1cdf7_story.html?tid=pm_entertainment_pop&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/entertainment/music/germany-celebrates-200th-birthday-of-composer-richard-wagner/2013/05/22/b8f93924-c2b2-11e2-9642-a56177f1cdf7_story.html?tid=pm_entertainment_pop&quot;&amp;gt;&quot;Germany celebrates 200th birthday of Richard Wagner, Hitler&apos;s favorite composer&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://fullcomment.nationalpost.com/2013/05/22/barbara-kay-if-you-must-listen-to-wagner-do-it-in-private/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://fullcomment.nationalpost.com/2013/05/22/barbara-kay-if-you-must-listen-to-wagner-do-it-in-private/&quot;&amp;gt;&quot;If you must listen to Wagner, do it in private&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.towntopics.com/wordpress/2013/05/22/whistling-in-the-dark-on-wagners-200th-birthday/&quot;&gt;&quot;Whistling in the dark on Wagner&apos;s 200th birthday&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jessicamusic.blogspot.com/2013/05/dear-richard-i-need-to-tell-you.html&quot;&gt;&quot;Dear Richard, I need to tell you something&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.newyorker.com/online/blogs/culture/2013/05/wagner-bicentennial-birthday-music-recordings.html&quot;&gt;&quot;A Wagner birthday roast&quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this commentary actually addresses my mixed feelings about Wagner.&lt;/p&gt;
&lt;h2&gt;Wagner&apos;s anti-Semitism?&lt;/h2&gt;
&lt;p&gt;Much of the commentary touches upon Wagner&apos;s anti-Semitism and Adolf Hitler&apos;s use of Wagner in Germany for Nazi purposes. I will &lt;em&gt;not be discussing&lt;/em&gt; these (important) issues because others already do, and because I tend toward the view that people are imperfect and I would like to be able to assess their important and good work even if they could be judged as unpleasant or downright evil.&lt;/p&gt;
&lt;h2&gt;Love the music, hate the man?&lt;/h2&gt;
&lt;p&gt;However, I also do not agree with the sentiment of &lt;a href=&quot;https://www.independent.co.uk/voices/comment/on-the-200th-anniversary-of-wagners-birth-lets-learn-to-love-the-music--yet-still-hate-the-man-8614155.html&quot;&gt;&quot;Let&apos;s learn to love the music, yet still hate the man&quot;&lt;/a&gt;. I don&apos;t think there is a total separation between Wagner&apos;s music and everything else about him. In Wagner&apos;s case, in particular, he specifically designed his music around a certain philosophy about the world, about &lt;em&gt;art&lt;/em&gt;. And that is what I really find interesting and unsettling, somewhat along the lines of Friedrich Nietzsche&apos;s critique of his one-time friend, &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Case_of_Wagner&quot;&gt;&quot;The Case of Wagner&quot;&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Nietzsche_contra_Wagner&quot;&gt;&quot;Nietzsche contra Wagner&quot;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Music and philosophy&lt;/h2&gt;
&lt;p&gt;Wagner&apos;s philosophizing about the nature of and purpose of music embraced the notion of &lt;a href=&quot;https://en.wikipedia.org/wiki/Gesamtkunstwerk&quot;&gt;Gesamtkunstwerk&lt;/a&gt;, the &quot;total work of art&quot;, that would unify all the arts, hence his development of his form of opera, the &quot;music drama&quot;, whose purpose was to unify music, poetry, theater in a grand and serious spectacle to inspire the audience. He proposed the &lt;a href=&quot;https://en.wikipedia.org/wiki/Music_of_the_Future&quot;&gt;Zukunftsmusik&lt;/a&gt;, or &quot;music of the future&quot;.&lt;/p&gt;
&lt;h2&gt;Modernism?&lt;/h2&gt;
&lt;p&gt;In Wagner&apos;s day in the late 19th century, there was &lt;a href=&quot;https://en.wikipedia.org/wiki/War_of_the_Romantics&quot;&gt;fierce rivalry among the German Romantics&lt;/a&gt; on the direction of musical evolution. Roughly, there was the camp of Johannes Brahms (whose &lt;a href=&quot;/blog/2013/05/07/happy-birthday-johannes-brahms/&quot;&gt;birthday I celebrated a few weeks ago&lt;/a&gt;, considered &quot;conservative&quot;, and the camp of Wagner, which considered itself &quot;modern&quot;. Aspects of this &quot;war&quot; seem quaint and exaggerated now, and Brahms has been &lt;a href=&quot;https://www.economist.com/node/367351&quot;&gt;re-evaluated&lt;/a&gt; in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/1996/09/29/arts/old-brahms-a-modernist-in-more-ways-than-one.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/1996/09/29/arts/old-brahms-a-modernist-in-more-ways-than-one.html&quot;&amp;gt;recent&amp;lt;/span&amp;gt; &lt;a href=&quot;https://www.americansymphony.org/concert_notes/the-other-voice-of-johannes-brahms&quot;&gt;decades&lt;/a&gt;, and the big tent of Western art music has historically learned from both camps&apos; methods and sensibilities, but Wagner, at least, took very seriously his own self-importance and self-promotion as an artist/philosopher.&lt;/p&gt;
&lt;p&gt;An interesting question to me is, what is Wagner&apos;s relationship to &lt;em&gt;modernism&lt;/em&gt;, both in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Modernism_%28music%29&quot;&gt;musical sense&lt;/a&gt; and in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Modernism&quot;&gt;more general sense&lt;/a&gt;, typically applied to the late 19th century and early 20th century trends in literature, art, architecture, and society that are still relevant today?&lt;/p&gt;
&lt;h3&gt;Tristan&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.guardian.co.uk/friday_review/story/0,,381181,00.html&quot;&gt;harmonic and other innovations&lt;/a&gt; of &lt;a href=&quot;https://en.wikipedia.org/wiki/Tristan_und_Isolde&quot;&gt;Tristan und Isolde&lt;/a&gt; in 1865 (it is arguable that Franz Liszt was the real innovator first) can be considered the beginning of modernism in music (in the sense of dissolution of Western tonality). Check out this performance of the beginning of the prelude to act 1 along with a score annotated with harmonic analysis:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;Pwk3BKipjtQ&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s my favorite full performance of the prelude as well as the final sung Liebestod, by the great Wilhelm Furtwängler conducting and Kirsted Flagstad singing. It truly blew my mind when I first discovered and heard this music while in college.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;SQO7QIgNvA0&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Who claims modernism?&lt;/h3&gt;
&lt;p&gt;But the modernist &lt;a href=&quot;https://en.wikipedia.org/wiki/Second_Viennese_School&quot;&gt;Second Viennese School&lt;/a&gt; under Arnold Schönberg liked to claim Brahms as one of their own, and in even more revisionism recently, there have been attempts to situate &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.upress.umn.edu/book-division/books/modernism-after-wagner&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.upress.umn.edu/book-division/books/modernism-after-wagner&quot;&amp;gt;Wagner as the inspiration for modernism in the larger sense&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;(A few of my notes about Schönberg &lt;a href=&quot;/blog/2012/09/25/thank-you-glenn-gould/&quot;&gt;here&lt;/a&gt;. Also, it is too large a topic for now, but I plan to write more later about modernism and postmodernism and post-postmodernism in music, in the context of today&apos;s music and in my own experience of music, whether listening or performing.)&lt;/p&gt;
&lt;h2&gt;Wagner&apos;s legacy&lt;/h2&gt;
&lt;p&gt;I believe Wagner failed, that his philosophy was a dead end, and that his music was a dead end.&lt;/p&gt;
&lt;p&gt;This despite the fact that, of course, he changed the course of Western musical history, both by provoking the modernist backlash against his theatricalism and chromaticism, while paving the way for, say, Mahler and Bruckner.&lt;/p&gt;
&lt;p&gt;I have enjoyed and continue to occasionally listen again to marvelous music by Wagner, but &lt;em&gt;not in the way he intended&lt;/em&gt;. I have never attended a performance of one of his operas. I have only seen (on TV or video) or listened to bits of his operas that are sung (rather than purely instrumental excerpts). Two decades ago, I did try to watch the mammoth &lt;a href=&quot;https://en.wikipedia.org/wiki/Der_Ring_des_Nibelungen&quot;&gt;Ring cycle&lt;/a&gt; &lt;a href=&quot;https://web.archive.org/web/20150525200259/http://www.nytimes.com/1990/06/18/arts/review-television-taking-the-17-hour-plunge-with-wagner-s-ring-at-the-met.html&quot;&gt;broadcast on TV by the Metropolitan Opera&lt;/a&gt; over four long evenings, but my attention span allowed me to only drift in and out of consciousness periodically during that attempt.&lt;/p&gt;
&lt;p&gt;Perhaps most damning of all is that shortly after that TV experience, I rather enjoyed listening to Lorin Maazel&apos;s album, &lt;a href=&quot;https://www.amazon.com/music/dp/B000003CUJ&quot;&gt;&quot;The Ring Without Words&quot;&lt;/a&gt;, basically showing that for me, Wagner totally failed as a philosopher, because I like his music best without the &quot;poetry&quot; (his lyrics, which he wrote himself, don&apos;t make much sense to me) and without the on-stage drama.&lt;/p&gt;
&lt;p&gt;Even then, I cannot listen to his music much without feeling unclean. There is a sense in which I cannot separate his music from his philosophy and his wider artistic and cultural aims. Even if he had not been an anti-Semite, there should be controversy over him and his legacy. There is a sense in which I agree with some of the old-fashioned concerns about his music: &lt;a href=&quot;https://www.guardian.co.uk/music/2013/may/22/wagner-bad-for-your-mental-health&quot;&gt;&quot;Wagner as mental health menace?&quot;&lt;/a&gt;. In Nietzsche&apos;s words, Wagner and his music are &lt;em&gt;decadent&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-07-13)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2014/07/13/the-one-thing-i-remember-lorin-maazel-for/&quot;&gt;RIP, Lorin Maazel&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Music is powerful&lt;/h2&gt;
&lt;p&gt;But it&apos;s pretty delicious decadence. Last month a friend splurged on going to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ringcycle.metoperafamily.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ringcycle.metoperafamily.org/&quot;&amp;gt;Metropolitan Opera&apos;s performance of the Ring&amp;lt;/span&amp;gt;, and I decided to indulge in listening to Siegfried&apos;s funeral march in &lt;a href=&quot;https://en.wikipedia.org/wiki/G%C3%B6tterd%C3%A4mmerung&quot;&gt;Götterdämmerung&lt;/a&gt;. As usual, the experience left me in tears. Wagner, master psychologist, master manipulator of emotions, master composer, weaving the &lt;a href=&quot;https://en.wikipedia.org/wiki/Leitmotif&quot;&gt;leitmotifs&lt;/a&gt;, summing up the whole tragic story of the Ring:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;L8wHteSOwW4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;And for sheer &lt;em&gt;hypnotism&lt;/em&gt;, listen to Furtwängler again, with the prelude to act 1 of &lt;a href=&quot;https://en.wikipedia.org/wiki/Lohengrin_%28opera%29&quot;&gt;Lohengrin&lt;/a&gt;. Close your eyes, turn out the lights, and listen. Beautiful.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;I_m7PN5sn1U&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;More hypnosis: prelude to act 1 of &lt;a href=&quot;https://en.wikipedia.org/wiki/Parsifal&quot;&gt;Parsifal&lt;/a&gt;. I&apos;ve chosen an old Furtwängler performance again:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;EZhSUX5Ix68&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Back to Die Meistersinger&lt;/h2&gt;
&lt;p&gt;Finally, to end where I started, with the prelude to act 1 of Die Meistersinger that I happened to enjoy on the radio, here is Furtwängler again, conducting a performance of it live. &lt;strong&gt;Warning: this is a video of a live performance in 1942 in Germany with swastikas in the background, so you may not wish to view this.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;3rM96_RS1Os&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Yes, this video is totally creepy, but I thought it would be appropriate to close on this jarring note. Die Meistersinger was, after all, Wagner&apos;s telling of a story to glorify old Germany, and was a favorite opera of the Nazis.&lt;/p&gt;
&lt;p&gt;(And the subject of Furtwängler, a conductor I have many mixed feelings about, will have to wait for another blog post as well.)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I cannot help but admire and be affected by Wagner&apos;s music, but at the same time feel that his entire philosophy and aim was bankrupt. I&apos;ve touched on only a little bit of how I have come to feel this, since the larger issues go beyond Wagner, but I don&apos;t yet have complete thoughts and rationales to offer at this time. As with the towering figure of Beethoven, his musical and cultural legacy is still controversial.&lt;/p&gt;
&lt;h3&gt;Postscript&lt;/h3&gt;
&lt;p&gt;I decided I wanted to end more positively. My favorite piece of Wagner&apos;s is one that was actually always intended to be purely instrumental and is self-contained, not just an excerpt: the &lt;a href=&quot;https://en.wikipedia.org/wiki/Siegfried_Idyll&quot;&gt;Siegfried Idyll&lt;/a&gt;. Oh wait, again we all subvert his intention anyway, because he composed it for his wife Cosima&apos;s birthday (what a beautiful present to wake up to in the morning) and only ever intended it to be performed privately!&lt;/p&gt;
&lt;p&gt;Furtwängler again:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;_jlzEFg-zkY&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-07-11)&lt;/h2&gt;
&lt;p&gt;I just saw yet another article about &lt;a href=&quot;https://www.newrepublic.com/article/118331/forbidden-music-michael-haas-reviewed-james-loeffler&quot;&gt;Wagner and anti-Semitism&lt;/a&gt;. The topic never goes anyway, and I don&apos;t think it should. That said, I don&apos;t personally have anything to add to the discussion, but offer the link if you feel you need to engage further.&lt;/p&gt;
&lt;h2&gt;(Update of 2015-01-14)&lt;/h2&gt;
&lt;p&gt;I saw yet another (and excellent) article &lt;a href=&quot;https://mosaicmagazine.com/essay/2015/01/wagner-and-the-jews/&quot;&gt;&quot;Wagner and the Jews&quot;&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Voting in the face of election apathy</title><link>https://franklinchen.com/blog/2013/05/21/voting-in-the-face-of-election-apathy/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/21/voting-in-the-face-of-election-apathy/</guid><pubDate>Tue, 21 May 2013 23:17:44 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/voter-receipt-primary-2013.jpg&quot; alt=&quot;My voter receipt, May 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Those of you who follow my blog know that I have been conflicted about voting, but go and do it anyway, &lt;em&gt;most of the time&lt;/em&gt;, e.g., &lt;a href=&quot;/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/&quot;&gt;in November 2011 for the municipal election&lt;/a&gt; and &lt;a href=&quot;/blog/2012/11/06/i-decided-to-resign-myself-to-continue-voting/&quot;&gt;in November 2012 for the general election&lt;/a&gt;, when I felt there were some politicians very important to &lt;em&gt;vote against&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Apathy or ignorance?&lt;/h2&gt;
&lt;p&gt;In April 2012&apos;s general primary, however, I was sufficiently apathetic that I didn&apos;t bother voting, although Abby did. For that election, it seemed to me that the winners were all going to be obvious no matter what I did, and there were no close races where I really cared about who won. I feel that in the absence of an informed opinion, the only rational and moral thing to do is to stay out. It is &lt;em&gt;unfashionable&lt;/em&gt; in our society to admit &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://opinionator.blogs.nytimes.com/2013/04/29/the-power-of-i-dont-know/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://opinionator.blogs.nytimes.com/2013/04/29/the-power-of-i-dont-know/&quot;&amp;gt;&quot;I don&apos;t know&quot;&amp;lt;/span&amp;gt;, but if I truly don&apos;t know, then I see no point in participating.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Primary_election&quot;&gt;Primary elections&lt;/a&gt; are particularly problematic for me, because I simply oppose the concept and also resent being forced to register for one of the two major American political parties.&lt;/p&gt;
&lt;h2&gt;May 2013 municipal primary: choosing mayor!&lt;/h2&gt;
&lt;p&gt;But this year&apos;s Democratic primary is &lt;em&gt;critical&lt;/em&gt;, because it will basically determine who becomes the next &lt;a href=&quot;https://en.wikipedia.org/wiki/Pittsburgh_mayoral_election,_2013&quot;&gt;mayor of Pittsburgh&lt;/a&gt;, given that a Democrat will win in the general election in November. And since &lt;a href=&quot;https://en.wikipedia.org/wiki/Luke_Ravenstahl&quot;&gt;Luke Ravenstahl&lt;/a&gt; decided to step down, there is a possibility of &lt;em&gt;real change&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So I was pretty excited to vote today to make a difference (I hope). This will be the first time I have voted for a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/politics/politicalheadlines/4052165-74/percent-mayor-turnout&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/politics/politicalheadlines/4052165-74/percent-mayor-turnout&quot;&amp;gt;mayoral candidate in a primary&amp;lt;/span&amp;gt; in my 15 years as a Pittsburgh resident. For once there may be a crack in the rusty Democratic political machine here?&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/stories/local/neighborhoods-city/polls-open-for-primary-election-688496/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/stories/local/neighborhoods-city/polls-open-for-primary-election-688496/&quot;&amp;gt;Voter turnout today has been crazy low&amp;lt;/span&amp;gt;. There was no line whatsoever when I went to vote or when Abby went. I&apos;ve never participated in an election, I think, with such low turnout.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Maybe this low turnout will end up being a good thing&lt;/em&gt;. If people choose not to vote because they don&apos;t have informed opinions, then it means that I and the surprisingly large number of people I know who also voted for the same guy I did will &lt;em&gt;win&lt;/em&gt;! (That said, it&apos;s sad if &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmagazine.com/Best-of-the-Burgh-Blogs/Pitt-Girl/June-2013/Why-You-Must-Vote-in-Pittsburghs-Mayoral-Election/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmagazine.com/Best-of-the-Burgh-Blogs/Pitt-Girl/June-2013/Why-You-Must-Vote-in-Pittsburghs-Mayoral-Election/&quot;&amp;gt;only 2 percent of us decide the mayor&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;h2&gt;Media coverage&lt;/h2&gt;
&lt;p&gt;I avoided &lt;em&gt;most&lt;/em&gt; media coverage of the election (hard to avoid everything completely, admittedly) until I had already voted. (Yes, that includes ignoring the basically meaningless &quot;endorsements&quot; of the &lt;a href=&quot;https://www.post-gazette.com/&quot;&gt;Post-Gazette&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/&quot;&amp;gt;Tribune-Review&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Then I enjoyed reading &lt;a href=&quot;https://www.pghcitypaper.com/Blogh/archives/2013/05/21/election-day-thoughts&quot;&gt;this little look at what&apos;s been going on with the mayoral race&lt;/a&gt;. And tomorrow I am back to ignoring the news.&lt;/p&gt;
&lt;p&gt;Also, I had to recycle probably 30 or so paper flyers during election season. What a waste. And summarily delete dozens of robocalls on the answering machine. Note to everyone who sent me junk or left junk messages on my answering machine: &lt;em&gt;I did not read a single thing you sent, or listen to a single word you spoke; your junk only made me angry and at least partly less likely to vote for you, if I caught your name and remembered it&lt;/em&gt;. &lt;strong&gt;Pathetic.&lt;/strong&gt; I realize this crap works on some people, but I&apos;m afraid it doesn&apos;t work on me: I&apos;m not going to believe that your opponent eats children for breakfast, no matter what large fonts you use.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In a moment of relief from apathy and cynicism about politics, I eagerly voted today. I hope I&apos;ll get to see whether I was justified.&lt;/p&gt;
</content:encoded></item><item><title>Attending a meeting of the Washington DC Recorder Society while visiting</title><link>https://franklinchen.com/blog/2013/05/21/attending-a-meeting-of-the-washington-dc-recorder-society-while-visiting/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/21/attending-a-meeting-of-the-washington-dc-recorder-society-while-visiting/</guid><pubDate>Tue, 21 May 2013 22:40:00 GMT</pubDate><content:encoded>&lt;p&gt;While in Washington, D.C. with Abby to visit new nephew, I took time out to attend a meeting of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://metosrv2.umd.edu/~baer/WRS/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://metosrv2.umd.edu/~baer/WRS/&quot;&amp;gt;Washington Recorder Society&amp;lt;/span&amp;gt;. It&apos;s a much bigger group than the Pittsburgh Recorder Society! We broke up into many subgroups and I joined a couple of other people to play together. I enjoyed the hospitality and refreshments.&lt;/p&gt;
</content:encoded></item><item><title>Google I/O 2013 Extended: Pittsburgh</title><link>https://franklinchen.com/blog/2013/05/15/google-io-2013-extended-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/15/google-io-2013-extended-pittsburgh/</guid><pubDate>Thu, 16 May 2013 03:44:47 GMT</pubDate><content:encoded>&lt;p&gt;Last year I attended &quot;Google I/O Extended: Pittsburgh&quot; &lt;a href=&quot;/blog/2012/06/27/attending-my-first-google-io-extended-pittsburgh/&quot;&gt;for the first time&lt;/a&gt;. This year, I decided to attend &lt;a href=&quot;https://pittsburghioextended.eventbrite.com/&quot;&gt;again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was shocked by some aspects of my experience.&lt;/p&gt;
&lt;h2&gt;Format changes from last year&lt;/h2&gt;
&lt;p&gt;I was disappointed that there were no live sessions being held this year; in place of that, there were some live demos and the opportunity to play &quot;Ship Wars&quot;.&lt;/p&gt;
&lt;p&gt;I was not interested in the game, and ignored it.&lt;/p&gt;
&lt;p&gt;I stopped by the demo stations but did not find them very interesting or useful.&lt;/p&gt;
&lt;p&gt;Since I already got the tour last year, I had no need to go on a tour again.&lt;/p&gt;
&lt;h2&gt;Keynote at noon, streaming&lt;/h2&gt;
&lt;p&gt;The keynote had multiple speakers, and lasted three hours!!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/9pmPa_KxsAM&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Philosophical stuff&lt;/h3&gt;
&lt;p&gt;One of the speakers mentioned how dramatically the world had changed in just seven years, and showed an event for the Pope in 2005 and in 2013, and you could see a sea of phones held up by people in 2013. I found this horrifically depressing, actually, not something to celebrate. But Google is &quot;working very hard to continue this journey forward&quot; to &quot;make a difference in people&apos;s lives&quot;.&lt;/p&gt;
&lt;p&gt;There was a photo of a baby, and someone holding a phone to the baby&apos;s head.&lt;/p&gt;
&lt;h3&gt;Tech stuff&lt;/h3&gt;
&lt;p&gt;OK, back to technical matters.&lt;/p&gt;
&lt;p&gt;Regarding Android, &quot;activity recognition&quot;. Yeah, I want my phone to know more and more about what I&apos;m doing.&lt;/p&gt;
&lt;p&gt;Android Studio, a new IDE for Android development, based on IntelliJ IDEA, was announced.&lt;/p&gt;
&lt;p&gt;There was a lot of talk about Google+ (which I barely use).&lt;/p&gt;
&lt;p&gt;A lot of talk about music services, &quot;radio without rules&quot; (I don&apos;t use any music services).&lt;/p&gt;
&lt;p&gt;An obsession with images and automatically finding a &quot;best image&quot; for you, and zooming in on flaws in personal photos, etc. Brave New World, anyone? I don&apos;t manipulate any of the photos I take for my own use.&lt;/p&gt;
&lt;p&gt;&quot;Ask Google&quot;. I resisted the temptation to shout out &quot;inappropriate&quot; questions.&lt;/p&gt;
&lt;p&gt;Google Maps, and the incorporation of information submitted by friends.&lt;/p&gt;
&lt;p&gt;I am now seeing the full scale of what Google is trying to do to transform our once private spaces.&lt;/p&gt;
&lt;h3&gt;Larry Page&lt;/h3&gt;
&lt;p&gt;It&apos;s hard for me to summarize what Larry Page said, because it was so radical and so self-assured, a philosophical vision about the primacy and &quot;positivity&quot; of technology. He uses Google Glass with his children.&lt;/p&gt;
&lt;p&gt;It was one of the &lt;em&gt;creepiest&lt;/em&gt; speeches I have heard in my life from someone with power and determined to use that power. I respect that he went all out, nothing held back, in all honesty. I am simply not as optimistic that every advance of technology into our lives is a positive one, and I think things are moving very fast.&lt;/p&gt;
&lt;p&gt;Here&apos;s a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.techhive.com/article/2038841/hello-larry-googles-page-on-negativity-laws-and-competitors.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.techhive.com/article/2038841/hello-larry-googles-page-on-negativity-laws-and-competitors.html&quot;&amp;gt;transcript I found online of Larry Page&apos;s speech&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;After the keynote&lt;/h2&gt;
&lt;p&gt;I was shell-shocked after the keynote, and although I stopped by one of the streaming presentations, I didn&apos;t get much out of it, and then I decided to just go home.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Sitting through the long keynote was well worth it, as far as improving my understanding of what Google is about and what it has done and what it wants to do. I have real concerns about the direction that Google and its leaders wants to take the world.&lt;/p&gt;
</content:encoded></item><item><title>Chatham Baroque: The Pleasures of Purcell</title><link>https://franklinchen.com/blog/2013/05/12/chatham-baroque-the-pleasures-of-purcell/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/12/chatham-baroque-the-pleasures-of-purcell/</guid><pubDate>Mon, 13 May 2013 03:55:23 GMT</pubDate><content:encoded>&lt;p&gt;It was a little crazy, but right after I came home from a mega-long &lt;a href=&quot;/blog/2013/05/12/my-rachel-carson-trail-hike-for-the-year/&quot;&gt;Rachel Carson Trail hike today&lt;/a&gt;, I rushed to shower and change and run over to a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chathambaroque.org/events/pleasures-purcell&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chathambaroque.org/events/pleasures-purcell&quot;&amp;gt;special concert, &quot;The Pleasures of Purcell&quot;&amp;lt;/span&amp;gt; by the &lt;a href=&quot;https://www.chathambaroque.org/&quot;&gt;Chatham Baroque&lt;/a&gt; at the local &lt;a href=&quot;https://www.redeemerpittsburgh.org/&quot;&gt;Church of the Redeemer&lt;/a&gt; in the Squirrel Hill neighborhood. Objectively, I should have just called it a day after the hike, but I love the Chatham Baroque and learning from Annie earlier that they were playing in the neighborhood just several blocks from where I live made me decide to hop over there. (The concert was free to the public, but welcomed donations, of course: please remember to contribute generously when you attend these kinds of community good will events!)&lt;/p&gt;
&lt;p&gt;I attended in part because the musical genre was basically new to me: choral music by Henry Purcell. This is not my kind of thing, but I&apos;m old enough that I&apos;ve gotten tired of only listening to &quot;my kind of thing&quot; rather than exploring what is new to me.&lt;/p&gt;
&lt;p&gt;I ran into Annie as I was limping my way toward the church with sore feet. I also noticed that Sam from the Pittsburgh Recorder Society was a guest performer for some of the music.&lt;/p&gt;
&lt;h2&gt;The concert&lt;/h2&gt;
&lt;p&gt;The Chatham Baroque was joined by a choir and solo vocalists and conductor to fill out the forces needed to perform the music.&lt;/p&gt;
&lt;p&gt;I was completely wowed by the bass soloist. The depth and expression of his voice was amazing.&lt;/p&gt;
&lt;p&gt;As for the music itself, I&apos;ve already confessed that mostly sacred choral music from this time period is not really my thing. I didn&apos;t change my mind, although I was glad to have given it a shot. I have enjoyed playing the instrumental music of Henry Purcell for recorder, but this music for the English court didn&apos;t do much for me.&lt;/p&gt;
</content:encoded></item><item><title>My Rachel Carson Trail hike for the year (13.4 miles): and how this is about love and gratitude</title><link>https://franklinchen.com/blog/2013/05/12/my-rachel-carson-trail-hike-for-the-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/12/my-rachel-carson-trail-hike-for-the-year/</guid><pubDate>Mon, 13 May 2013 02:24:40 GMT</pubDate><content:encoded>&lt;p&gt;Today I did my first hike of the year (normally I would have done hiking already in the spring, but the combination of Abby&apos;s broken foot and my Pittsburgh Marathon training this year resulted in no space for hiking until after the &lt;a href=&quot;/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/&quot;&gt;marathon, which I did seven days ago&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;My first hike of the year just happened to turn out to be a grueling Rachel Carson Trail hike.&lt;/p&gt;
&lt;p&gt;Last year, I reported on the two Rachel Carson Trail Challenge goal training hikes I did in &lt;a href=&quot;/blog/2012/04/29/a-pretty-rachel-carson-trail-challenge-goal-training-hike/&quot;&gt;late April&lt;/a&gt; and &lt;a href=&quot;/blog/2012/06/03/a-totally-exhausting-rachel-carson-trail-challenge-goal-training-hike/&quot;&gt;early June&lt;/a&gt;. This year, I did the fourth of eight of the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc13/goaltraining&quot;&gt;year&apos;s goal training hikes&lt;/a&gt; offered.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sunday, May 12&lt;/li&gt;
&lt;li&gt;Leader: Donna Stolz 412-303-6102, Eileen Lessman 412-760-8863&lt;/li&gt;
&lt;li&gt;13.4 miles&lt;/li&gt;
&lt;li&gt;Elevation change: 5055 ft&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&quot;This hike begins in North Park and heads over to Emmerling Park, then up and over Rich Hill and Lefever Hill. We end at the Log Cabin Road checkpoint location. Meet at Log Cabin Road parking area. Take Route 28 to Exit #12. Turn right at the end of the ramp, then right at the stop sign onto Little Deer Creek Road (aka Russellton Road). Travel about 1.5 miles and turn right on Log Cabin Road. Park about 100 yards ahead on the right.&quot;&lt;/p&gt;
&lt;p&gt;As of this year, I&apos;ve decided to do &lt;em&gt;only one&lt;/em&gt; Rachel Carson Trail hike a year, so this was it.&lt;/p&gt;
&lt;p&gt;Here is my report on the hike, as well as my long-awaited explanation of why this trail means so much to me.&lt;/p&gt;
&lt;h2&gt;Weather&lt;/h2&gt;
&lt;p&gt;The conditions were good. It was kind of chilly and windy, probably 45-50 degrees throughout the hike. The sun came and went. There were only short periods of light drizzling rain, thankfully.&lt;/p&gt;
&lt;h2&gt;Footwear&lt;/h2&gt;
&lt;p&gt;The Vibram FiveFingers KSO Trek shoes I wore last year on the Rachel Carson Trail developed holes, as a result of which I &lt;a href=&quot;/blog/2012/08/28/five-reasons-we-just-stocked-up-on-vibram-fivefingers-kso-trek-shoes/&quot;&gt;stocked up on some new ones&lt;/a&gt;. The pair that I opened, I&apos;ve worn only a couple of times, and I wore this pair today.&lt;/p&gt;
&lt;h2&gt;Comparison with last year&apos;s hike&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/06/03/a-totally-exhausting-rachel-carson-trail-challenge-goal-training-hike/&quot;&gt;Last year on the 18.1 mile hike&lt;/a&gt;, I was stupid about my smartphone, and this year I was smarter. Today&apos;s hike was a shorter 13.4, so I was sure the battery would last long enough, if I didn&apos;t take photos with flash. And of course, I always have a phone charge in my car now.&lt;/p&gt;
&lt;p&gt;Last year&apos;s hike went east to west and ended in North Park. This year&apos;s hike went west to east and started in North Park. But being shorter, it did not end in Springdale. It is really a different hike when you go on the same trail but in a different direction.&lt;/p&gt;
&lt;p&gt;You might enjoy comparing the photos in different directions.&lt;/p&gt;
&lt;h2&gt;Meeting up at Log Cabin Road&lt;/h2&gt;
&lt;p&gt;John and I arrived on time but not early, which meant that when we arrived, we saw a whole contingent of people already carpooling to head to North Park. We never saw those people again. Oops.&lt;/p&gt;
&lt;p&gt;Furthermore, although we were ready to go with the hike leader, Donna, latecomers kept on showing up, and we were lenient and waited for them, before all the rest of us remaining headed to North Park.&lt;/p&gt;
&lt;p&gt;Waiting for latecomers:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.03.20.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Because of Route 910 closures, some detours were necessary as Donna&apos;s husband drove us to North Park.&lt;/p&gt;
&lt;h2&gt;Hike&lt;/h2&gt;
&lt;p&gt;In North Park about to begin:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.45.23.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.45.26.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By the time we started, there were only a handful of us together as a group.&lt;/p&gt;
&lt;p&gt;I was momentarily confused because I saw someone running in the &lt;em&gt;wrong direction&lt;/em&gt; on the trail and thought she might be one of us, and was worried. I tried to follow her to call out to her, but she disappeared quickly:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.45.34.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Meanwhile, Donna called out to me, and I rejoined the group.&lt;/p&gt;
&lt;p&gt;In North Park, a few sections of the trail are on the road, but then we go into the woods for real:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.51.43.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.51.49.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_08.52.15.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a whole bunch of stream crossings while in North Park. Some of them are easier than others. I should note that one of the harder ones had some fast water and basically ensured that your feet would get wet, because the logs were floating and not completely safe to step on. Some people jumped, but that&apos;s not safe. Wearing KSO Trek shoes, since the temperature was around 50, I was fine just getting my feet wet by walking through the water.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.05.16.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.05.22.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.10.50.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.10.56.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Out of the woods onto the railroad tracks (note that hiking in the reverse direction is tricky because it&apos;s not well-marked where to get off the railroad tracks into the woods; John and I got lost the last time we did the reverse hike and had to backtrack!).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.18.50.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.19.23.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a good amount of road walking on this section of the Rachel Carson Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.27.01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.27.14.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.29.46.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_09.53.40.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Crossing Route 8:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.03.01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, the power lines:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.04.28.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.05.59.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.22.47.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I am a bit sentimental about this section of trail in Hampton Park because Abby and I have done some cross country skiing here in winter, when she used to live up here before we got married and she moved to Pittsburgh.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.29.52.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby and I have also hung out here in the past watching birds.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.32.38.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.37.55.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.41.13.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.48.38.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.49.37.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.54.37.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here is where John and I got lost. I was distracted by this sight and made a turn toward it (the trail turned in the opposite direction) to check it out:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.55.25.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;OK, &quot;acidic condensate collection tank&quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.56.02.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hmm, this didn&apos;t look familiar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_10.57.12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.05.31.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;John and I turned back. We lost about ten minutes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.06.42.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.07.38.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.15.12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.18.16.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;No animals out and about today!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.41.38.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_11.43.09.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Funny how this happens to me once or twice each hike:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.01.43.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What the heck is this going on?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.07.33.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Uphill.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.07.53.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.11.35.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.19.47.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally at Emmerling Park, about 3 hours and 45 minutes into the hike.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.28.15.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I hung out at Emmerling Park for about ten or fifteen minutes, using the restroom and then playing on the swing relieving my aching feet while waiting for John and the others to catch up and also use the restroom. The truth is, I was ready to stop hiking already, feeling tired. I was also sore because of two falls I had sustained earlier in the hike. One of the falls involved my tripping on my right foot, causing me to land hard on my left, reinjuring my left knee that I had hurt before the marathon in a fall down the stairs. My left knee was causing me serious pain again now in the hike. I also fell on a steep downhill earlier, landing directly on my butt and on the palm of my left hand, which reinjured my left elbow. Finally, my right Achilles was killing me, because I had not adjusted the strap of my shoe properly; I had readjusted it during the hike, but the damage was already done. I was quite ready to stop hiking, but there were still two hours to go! Oops.&lt;/p&gt;
&lt;p&gt;Red flower:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.49.45.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_12.49.54.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And now we got to sections of the trail that are abused by ATVs and rutted and muddy. (We ended up encountering someone on an ATV, in fact.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.02.18.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Standing water:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.05.17.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.14.42.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.22.04.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.24.59.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;No fun at all hiking through these muddy ruts:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.28.24.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally back into open space:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.29.43.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking back down the big hill:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.33.09.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s John and the rest down at the bottom:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.34.50.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We keep on going up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.34.55.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.38.45.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally at the top, looking back:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.39.36.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.49.12.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.51.14.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_13.58.01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What&apos;s going on here?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.05.03.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.05.28.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.09.45.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.15.19.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.20.47.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.21.07.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally back to the parking lot!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2013-05-12/2013-05-12_14.25.11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;We hiked something like 5 hours and 45 minutes. It felt really long to us, as our first hike of the year. My feet were killing me. I was happy to take my shoes off and drive us back home barefoot!&lt;/p&gt;
&lt;p&gt;By the way, my phone still barely had battery power left when we finished. I&apos;m not sure it would have lasted another hour. This is useful to know. Of course, I immediately plugged it into my car charger! I should get an extra battery.&lt;/p&gt;
&lt;h2&gt;Why hike this trail at all?&lt;/h2&gt;
&lt;p&gt;Abby is confused why I like occasionally (once or twice a year) hiking on the Rachel Carson Trail, even though much of the time I find it tiring and weird. I&apos;ve never fully explained this in words, so here, finally, is my explanation.&lt;/p&gt;
&lt;p&gt;I have many sentimental reasons to hike this trail. One is that eight years ago, in late May of 2005, when a local running friend said he was doing the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc05&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt;, I had taken an entire half year off from running was feeling sad and lonely. I looked up the Challenge online, and happened to find that &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc05/training&quot;&gt;training hikes led by Barb Peterson&lt;/a&gt; were being offered in just a few days, and although I had no intention whatsoever to do the Challenge, I thought the training hikes would be a fun way to do and see something different. After doing the third of four, I was so excited by the novelty that I ended up signing up for the Challenge!! With only three weeks left, there was not much training I could do for it, but I figured that if I just took it slowly, I should be able to finish.&lt;/p&gt;
&lt;p&gt;The 2005 Challenge was an ordeal for me to finish, but I did, and the side effect was that I fell in love with hiking in general. I met people through doing the Challenge, and in 2006 I roped John into joining me on some longer training hikes, where we met more people, and some of them I began hiking with outside the context of the Challenge, in places like the Laurel Highlands. This was before the &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/&quot;&gt;Pittsburgh Hiking Meetup&lt;/a&gt; was formed in May 2007 and made it much easier to find people to hike with. So the 2005 Challenge had the side effect of getting me into making hiking a regular part of my life.&lt;/p&gt;
&lt;p&gt;Finally, as I was training for the 2007 Challenge, that was the time when I had just met Abby and was dancing with her, but we were not dating yet. When we were chatting at a salsa dance, I learned that she liked to hike and was intrigued. I invited her to join me and John for an April 29 Rachel Carson Trail Challenge training hike that happened to be passing through Hampton (as today&apos;s hike did), and she said she would join us for part of it. A comic series of events then took place, in which John and I arrived at Hampton earlier than she had expected, so she had not yet made it to Hampton to meet up with us. When I paused to call her, and she said she would meet us in the trail, John and I got confused and lost because of miscommunication. I kept having to call her again and again until we finally found her, and she set us straight back onto the trail and hiked with us for a bit before turning back. That was my first interaction with Abby outside of dancing; I got to see how she gracefully handled my clumsy mistakes during this outing and how helpful she was. It was a month after that when we finally started dating. Eventually, I proposed right after a hike led by one of the guys I originally first met through a Rachel Carson Trail Challenge training hike.&lt;/p&gt;
&lt;p&gt;So I associate the Rachel Carson Trail not only with falling in love with hiking, and with meeting lots of interesting people I still hike with all these years later, but also I am reminded of how I fell in love with Abby and how hiking is a big part of what we have done and do. It is slightly ironic, of course, that she does not enjoy doing most sections of the Rachel Carson Trail, so in recent years I have been hiking it either alone or with John. And that is why I try to limit how often I hike on the trail; I&apos;ve decided now to do it only once a year, so that I spend less time on hiking that Abby doesn&apos;t do with me, in order to share more hiking with her. But I would like to spend good time on the trail once a year from now on to remember what it means to me.&lt;/p&gt;
&lt;p&gt;Finally, despite the strange hybrid nature of the trail, I believe in its existence and maintenance. It is a reminder that even in urban/suburban environments, there is still an underlying primitive nature that we can enjoy. The volunteers of the Rachel Carson Trails Conservancy work hard to keep this unusual resource open to the public.&lt;/p&gt;
&lt;p&gt;(&lt;a href=&quot;/blog/2012/03/11/fascinating-bushwhacking-hike-at-pa-state-game-land-51-dunbar/&quot;&gt;Example from March 2012 of the kind of hike that Abby and I have enjoyed doing.&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Rachel Carson Trail will always have a special place in my heart.&lt;/p&gt;
&lt;p&gt;Thanks to Donna for keeping us company for most of the hike as trail sweep, and her husband for driving us to the start!&lt;/p&gt;
</content:encoded></item><item><title>Back to what running is really about for me</title><link>https://franklinchen.com/blog/2013/05/09/back-to-what-running-is-really-about-for-me/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/09/back-to-what-running-is-really-about-for-me/</guid><pubDate>Thu, 09 May 2013 12:32:41 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/cloudy-frick-park.jpg&quot; alt=&quot;Cloudy day drizzling rain in Frick Park&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So, four days after my &lt;a href=&quot;/blog/2013/05/07/why-i-feel-sad-when-people-congratulate-me-for-finishing-the-pittsburgh-marathon/&quot;&gt;disappointing&lt;/a&gt; &lt;a href=&quot;/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/&quot;&gt;Pittsburgh Marathon&lt;/a&gt;, I&apos;ve recovered enough to first walk, and now do some light running as well. I did a very slow, short 3-mile run in Frick Park.&lt;/p&gt;
&lt;p&gt;I&apos;m guessing it will take me another two or three weeks to be completely recovered physically, but I&apos;m ecstatic to be out and about again. I&apos;m also happy that I&apos;m &lt;em&gt;emotionally&lt;/em&gt; recovered already; I was pretty unbalanced leading up to and after the ordeal. The big lesson I&apos;ve learned yet again is that losing sight of what is important and focusing on narrow ideas of achievement backfired on me, self-destructively, just as it did when I played &lt;a href=&quot;/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/&quot;&gt;bizarrely&lt;/a&gt; &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;poorly&lt;/a&gt; in a chess tournament last fall before relaxing and then &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;winning the 2013 Pittsburgh Chess Club Championship&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What running is really about&lt;/h2&gt;
&lt;p&gt;Running for me is really about enjoying the outdoors, feeling alive and expressive through rhythmic movement, and getting to know my body better and accept it while working with what nature has given me, to improve how I move and feel. Now that this whole marathon thing is over, I&apos;m back to running on the trails instead of the hard roads, and I&apos;m back to not timing myself. I&apos;m back to being out there alone, not measuring myself against anyone or anything.&lt;/p&gt;
&lt;h2&gt;So what about races?&lt;/h2&gt;
&lt;p&gt;That said, I do enjoy some element of competition, both against myself and against others, in the spirit of play and excellence. So, although I&apos;ll take it easy for a couple of weeks just enjoying maintaining and rebuilding fitness (not just for running, but also getting back to some neglected strength training), I&apos;m looking forward to doing some races this summer, with an intent to run them fast.&lt;/p&gt;
&lt;p&gt;The first one coming up for me is the &lt;a href=&quot;https://web.archive.org/web/20220126044253/http://www.race360.com/running/races/detail.asp?eventid=16822&quot;&gt;Man Up Father&apos;s Day 10K&lt;/a&gt; in June benefiting the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://obcolefoundation.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://obcolefoundation.org/&quot;&amp;gt;Obediah Cole Foundation for Prostate Cancer&amp;lt;/span&amp;gt;. I haven&apos;t done any 10K other than the idiosyncratic Great Race 10K in 5 years, so I look forward to getting back to doing other 10K races. Also, I have done this Father&apos;s Day 10k before, in 2004 and 2006. It would be nice if I could beat my 2006 time, getting back to my fitness level of 7 years ago, but ha, very unlikely.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m ready to have a pleasant summer of outdoors activities. Abby and I already have hiking and kayaking plans. Meanwhile, I&apos;ll continue running. The pain of the marathon season is already a dim memory.&lt;/p&gt;
</content:encoded></item><item><title>Happy birthday, Johannes Brahms! 3 takes on a musical favorite</title><link>https://franklinchen.com/blog/2013/05/07/happy-birthday-johannes-brahms/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/07/happy-birthday-johannes-brahms/</guid><pubDate>Wed, 08 May 2013 00:41:13 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;It turns out today is the 180th birthday of &lt;a href=&quot;https://en.wikipedia.org/wiki/Johannes_Brahms&quot;&gt;Johannes Brahms&lt;/a&gt;, born May 7, 1833, so I thought I&apos;d share some of my favorite music by this great composer.&lt;/p&gt;
&lt;h2&gt;Piano&lt;/h2&gt;
&lt;p&gt;I discovered Brahms while a freshman in college and a total newcomer to classical music, &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;upon taking a course called &quot;Piano Music of the 19th Century&quot;&lt;/a&gt; because it sounded like it was an easy way to get required &quot;core curriculum&quot; credit (no musical background was required for this appreciation course). Instead of being just a throwaway survey course I took just to get credit, the course &lt;em&gt;changed my life&lt;/em&gt;. Sometimes that actually happens, when the instructor is passionate and communicative!&lt;/p&gt;
&lt;p&gt;We listened to and discussed various of Brahms&apos; miniature piano pieces he called &quot;intermezzi&quot;, op. 116, 117, 118, and 119. Part of what we were supposed to do was tell stories about how the pieces made us feel and why (in terms of some kind of story that involved identifying musical ideas and development).&lt;/p&gt;
&lt;p&gt;Although I went on to listen to other music by Brahms, for myself, I still have considerable nostalgia for the piano intermezzi Brahms wrote late in life, and this is so appropriate, I guess, given that they have a decidedly nostalgic, melancholic flavor.&lt;/p&gt;
&lt;p&gt;I have many favorites among these sets of piano pieces, but decided to share just one of them today, &lt;a href=&quot;https://en.wikipedia.org/wiki/Four_Pieces_for_Piano,_Op._119_%28Brahms%29&quot;&gt;op. 119&lt;/a&gt; no. 1 in B minor. The melancholic arpeggiated descending thirds and ambiguous harmonies, with a longing melodic line above the inner voices, make this a perfect example of Brahmsian beauty.&lt;/p&gt;
&lt;h2&gt;Imagery&lt;/h2&gt;
&lt;p&gt;When I listen to this, I imagine sitting by a window, alone, as raindrops slowly and repeatedly drip down, and the clouds come and go, while occasionally a ray of sun peeks through and smiles, and occasionally there is a burst of thunder. Meanwhile, the wind is blowing and sometimes stops a raindrop from continuing to fall, or blows it back upward. I look through the window, and the world is gray and blurry, and the raindrops tell the story of what is going on outside.&lt;/p&gt;
&lt;h3&gt;Three interpretations&lt;/h3&gt;
&lt;p&gt;Here are three interpretations I found on YouTube. I personally like the raindrops to linger and accelerate and decelerate with rubato, and this guy &quot;Ferien7&quot; plays that up, taking a leisurely 3:44 for the whole piece:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;KtWynSHgKH4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I link to this video by an unknown because I like how YouTube can be a source of what I find to be good performances by people who are passionate about a particular piece but are not necessarily famous professionals or well-established recording artists. I have no idea who &quot;Ferien7&quot; is, but I like this performance.&lt;/p&gt;
&lt;p&gt;Another interpretation along similar veins, but by someone much more famous, and tighter (3:38), is by one of my all-time favorite historic pianists, &lt;a href=&quot;https://en.wikipedia.org/wiki/Sviatoslav_Richter&quot;&gt;Sviatoslav Richter&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;ACOvOqLqCkM&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Finally, here is a very different, fascinating interpretation by &lt;a href=&quot;https://en.wikipedia.org/wiki/Heinrich_Neuhaus&quot;&gt;Heinrich Neuhaus&lt;/a&gt;, actually Richter&apos;s teacher, which is very fast (2:52), and emphasizes the unbroken melodic line and the drama, over the individual notes:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;GYrgVp90jvQ&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2014-08-21)&lt;/h3&gt;
&lt;p&gt;A year later, I found another interpretation, by Robert Hill, which I love for its extreme freedom. Check it out in &lt;a href=&quot;/blog/2014/08/21/discovering-the-beautiful-keyboard-playing-of-robert-hill-by-accident-on-youtube-changed-my-life/&quot;&gt;my blog post about Robert Hill&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;More&lt;/h2&gt;
&lt;p&gt;If you liked this piece, check out the other intermezzi by Brahms.&lt;/p&gt;
</content:encoded></item><item><title>Why I feel sad when people congratulate me for finishing the Pittsburgh Marathon</title><link>https://franklinchen.com/blog/2013/05/07/why-i-feel-sad-when-people-congratulate-me-for-finishing-the-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/07/why-i-feel-sad-when-people-congratulate-me-for-finishing-the-pittsburgh-marathon/</guid><pubDate>Tue, 07 May 2013 15:07:36 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/medal.jpg&quot; alt=&quot;2013 Pittsburgh Marathon medal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m on the second day of recovery after &lt;a href=&quot;/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/&quot;&gt;my debacle of a Pittsburgh Marathon&lt;/a&gt; two days ago. The recovery has been going very well; I think I&apos;ll probably be walking &quot;normally&quot; (to a point) tomorrow. But meanwhile, I&apos;ve been dealing with a lot of anger and sadness.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I feel the most angry and sad when people congratulate me for finishing the marathon.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A warning up front: in this post I&apos;m going to talk about some things that might give the wrong impression and make you angry, but I assure you that I am just speaking from the heart, and that my own reaction to finishing my marathon has no bearing on how I feel about &lt;em&gt;your&lt;/em&gt; finishing &lt;em&gt;your&lt;/em&gt; marathon, or anyone else&apos;s. I simply have certain goals for myself when doing things like marathons, and I don&apos;t believe that everyone has or should have the same kinds of goals as I do, and I respect your own goals.&lt;/p&gt;
&lt;p&gt;I&apos;m also writing this because I think I&apos;m speaking not only for myself, but for other runners who might also feel the same way but tiptoe around expressing their feelings, precisely because of the fear of offending those who might take the self-criticism the wrong way.&lt;/p&gt;
&lt;h2&gt;Not my first marathon&lt;/h2&gt;
&lt;p&gt;I think the first thing you have to realize is that this is not my first marathon. It is my second Pittsburgh Marathon. And it is probably the &lt;em&gt;sixth&lt;/em&gt; time I at least mostly run (versus walked) a consecutive 26.2 miles or more.&lt;/p&gt;
&lt;p&gt;I was fairly thrilled to &lt;em&gt;finish&lt;/em&gt; my &lt;em&gt;first&lt;/em&gt; marathon, which was the 2003 Pittsburgh Marathon, even though it was also basically an embarrassing disaster, because it was my first. There is nothing like the first, because before going in, no matter what, you just wonder whether you will finish at all. It is so unknown.&lt;/p&gt;
&lt;h3&gt;Marathon-long training run&lt;/h3&gt;
&lt;p&gt;I did one or two marathon-long training runs just by myself in Frick Park and Homewood Cemetery in 2006, while trying to toughen myself up for the Rachel Carson Trail Challenge. I did those slowly, so that I experienced none of the suffering from going too fast in my first Pittsburgh Marathon. This was a very important experience for me because I needed to prove to myself that simply going very slowly, I could cover a marathon distance any day of my life by just hopping out of bed without any special training. I wanted to defuse the mystique of the marathon.&lt;/p&gt;
&lt;p&gt;I ended up abandoning doing my own marathon-distance runs, however, because even if I didn&apos;t suffer horribly, it still took a long time to fully recover. In fact, I made the mistake of playing in a chess tournament two days after one of these runs and had one of the worst tournaments in my life, in which my brain was deprived of fuel and I could not think. &lt;a href=&quot;https://en.wikipedia.org/wiki/Ben_Finegold&quot;&gt;Ben Finegold&lt;/a&gt;, I never explained to you why I self-destructed while easily winning a game against your (then) wife in the &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?200607092031.1-12226800&quot;&gt;Columbus Open&lt;/a&gt;, but now you know!&lt;/p&gt;
&lt;h3&gt;Sammy&apos;s Birthday Run&lt;/h3&gt;
&lt;p&gt;In 2006, I ran/walked (after completing the Rachel Carson Trail Challenge) Sammy&apos;s Birthday Run, covering 27.5 miles before I quit. I was going pretty slow. I was not doing it for time. I was doing it just to finish at least a marathon distance, although I was kind of hoping to get to 30 miles (I stopped because I felt my body had enough and I didn&apos;t need more punishment). I didn&apos;t time myself, but I know I finished in about &lt;em&gt;5 hours and 15 minutes&lt;/em&gt; (there is a 6 hour time limit for the run, and I arrived about half an hour late for the official start). This was with no carb-loading, any of that stuff. Just showing up an running really slowly, walking some of the uphill sections. I drank some sports drink that I brought, and ate boiled potatoes and pretzels.&lt;/p&gt;
&lt;p&gt;No cramping up, no suffering (other than increasing fatigue and leg heaviness). Here is what I looked like finishing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-finishing-sammys-birthday-run-2006.jpg&quot; alt=&quot;Franklin finishing Sammy&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In 2008, I did Sammy&apos;s Birthday Run again, with even less training and fitness. This time I timed myself. I finished my 27.5 miles in 5:55:22. Hardly a great time, but it was a finish, and without any real suffering except at one moment. At around mile 22, I made the mistake of eating some cookies that someone had brought, and was in instant agony with stomach cramps. I slowed way down for a couple of minutes. Then I sat down for 9 minutes, used the Port-a-pottie, was OK again, and continued. But other than that incident, I had no leg or foot problems. So, basically what I&apos;m saying is that &lt;em&gt;for me&lt;/em&gt;, &lt;em&gt;finishing a marathon distance by simply going slow&lt;/em&gt; is &lt;em&gt;trivial&lt;/em&gt;, and therefore does not give me a sense of accomplishment. &lt;em&gt;For you&lt;/em&gt;, finishing might be nontrivial, in which case you definitely deserve to be proud upon finishing your marathon!&lt;/p&gt;
&lt;h2&gt;Training&lt;/h2&gt;
&lt;p&gt;So another thing that some people have said is, &quot;You should be proud of myself for all the training I put in to finish the marathon!&quot;&lt;/p&gt;
&lt;p&gt;But I&apos;m not proud. I&apos;m embarrassed and angry.&lt;/p&gt;
&lt;p&gt;One reason: it is possible that with &lt;em&gt;no training whatsoever&lt;/em&gt;, I could have finished Sunday&apos;s marathon in 4:38, with far less suffering. I did an average 10:37 pace for that marathon (including the minutes I spent at the side of the road resting). What if I had just gone into the marathon healthy, without messed up legs and feet and body, fully rested, and simply jogged slowly (for me) at 10:37 pace the whole way?&lt;/p&gt;
&lt;p&gt;An even better reason: look at my training record that I&apos;ve documented since February. My cramping and slowing down before mile 11 was a total joke. It wasn&apos;t training that &lt;em&gt;enabled&lt;/em&gt; me to get past that. It was &lt;em&gt;overtraining&lt;/em&gt; that &lt;em&gt;disabled&lt;/em&gt; my fitness.&lt;/p&gt;
&lt;p&gt;Two months ago, in March, I was &lt;em&gt;barely&lt;/em&gt; starting marathon training. I did a &lt;a href=&quot;/blog/2013/03/09/11-pittsburgh-bridge-crossings-in-one-12-mile-run/&quot;&gt;12-mile run crossing Pittsburgh bridges 11 times&lt;/a&gt; that was tough for me. I averaged just a bit faster than 10-minute pace. Just a month later, I had already gotten much stronger: I did my hardest run, a &lt;a href=&quot;/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/&quot;&gt;16-mile run&lt;/a&gt;, in 2:27, for an average of 9:11 pace. And I did that in Luna Sandals, with no blisters, no leg cramping, no problems. And without breakfast and without any Gatorade or gel or food during the entire run! And that was just a training run, not a race where I gave it my all.&lt;/p&gt;
&lt;p&gt;Unfortunately, that 16-mile run was the last time I felt really strong. I screwed things up after that. I could have run the Pittsburgh Marathon that day, probably, and finished in 4:00.&lt;/p&gt;
&lt;h2&gt;Shoes&lt;/h2&gt;
&lt;p&gt;I get the impression that some people are questioning my shoe choice, wondering whether wearing Luna Sandals messed up my marathon.&lt;/p&gt;
&lt;p&gt;This also upsets me, because the last thing I want is for Luna Sandals to get a bad reputation just because I happened to be wearing them when I ran a bad marathon. Fact is, as I explained, I believe the Luna Sandals &lt;em&gt;saved&lt;/em&gt; me from much worse. I had toe cramping wearing non-sandals in all my previous half marathons and marathons. And I have to refer again back to the 16-mile long run that I did in Luna Sandals. I didn&apos;t wear these shoes untested in the marathon.&lt;/p&gt;
&lt;h2&gt;Finishing versus excelling&lt;/h2&gt;
&lt;p&gt;The problem with the marathon is that it is such a public event, and there is so much focus on &quot;finishing&quot; one. I don&apos;t feel good about merely &quot;finishing&quot; a marathon. Here are some analogies I make to myself.&lt;/p&gt;
&lt;p&gt;I&apos;m an amateur flutist, and still a beginner, with only two years of serious self-study so far. Suppose I had the opportunity to somehow get put into a professional orchestra, and got assigned to perform a flute concerto. Suppose we did the performance, and after messing everything up and playing quite poorly, we got to the end. Would I feel proud of &quot;finishing&quot; the performance? This is exactly how I personally feel about what I did in the marathon.&lt;/p&gt;
&lt;p&gt;Here are some possible modifications to the music program that would make me proud of &quot;finishing&quot;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suppose that we took the flute concerto slowly enough that I could get most of the notes and expressiveness in. Then at least it would preserve some integrity that I could be proud of.&lt;/li&gt;
&lt;li&gt;Suppose that we chose a much easier and shorter piece that I could actually master, and we played that.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The analogues in the running world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I could have done the marathon very slowly, like with Sammy&apos;s Birthday Run, and run an even pace, with no suffering other than extreme fatigue, and been proud of that.&lt;/li&gt;
&lt;li&gt;I could have abandoned the idea of finishing a marathon at all and choose to run half marathon or 5K races that I can run fast and well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personally, I am far more proud of my fastest 5K, 10K, and half marathon races than of any marathon I have done or ever will do again, because they stand as gems of perfect execution. I would rather do a smaller thing well and completely than a bigger thing badly and sloppily.&lt;/p&gt;
&lt;p&gt;Nobody ever cheered for me as I performed my greatest feats in the 5K, 10K, and half marathon where I thought I was going to puke or fall apart, but those are the moments I treasure.&lt;/p&gt;
&lt;p&gt;So in fact, I am abandoning the marathon and returning to trying to improve my performances at shorter distances. You will not be congratulating me as I shave off minutes or seconds from my times, but that&apos;s OK.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m very emotional right now, and I felt now was as good a time as any to say something about my personal values and goals when it comes to running races, and by extension, to other aspects of my life.&lt;/p&gt;
&lt;p&gt;I actually do feel good about finishing the marathon in one respect: I proved that even if I totally screwed everything up, and deserved all the pain I experienced, and it was all my own fault that I could have avoided, I went on anyway and got the job done. When I realize that this is what people are trying to communicate to me by congratulate me, I am very appreciative.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-05-09)&lt;/h3&gt;
&lt;p&gt;The following day, the third day after the marathon, I was able to walk normally and was emotionally recovering as well and was embarrassed by this rant.&lt;/p&gt;
&lt;p&gt;The fourth day, I &lt;a href=&quot;/blog/2013/05/09/back-to-what-running-is-really-about-for-me/&quot;&gt;went out for a short run and reflected on what running is really about for me&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>2013 Pittsburgh Marathon: my 135th race was the worst I finished, but I did!</title><link>https://franklinchen.com/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/06/2013-pittsburgh-marathon-my-135th-race-was-my-worst-i-finished/</guid><pubDate>Tue, 07 May 2013 00:23:08 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/runner-of-steel.jpg&quot; alt=&quot;Franklin Chen, runner of steel&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/lying-down.jpg&quot; alt=&quot;Franklin lying down&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, for my birthday, I ran the Pittsburgh Marathon for the second time. The first time was &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;ten years ago, in 2003&lt;/a&gt;. That was an ordeal in which I had aimed at finishing in 3:30 and in fact run the first half in 1:45, but then faltered badly to struggle to finish in a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://runhigh.com/.2003%20Results%20A/R050403AA.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://runhigh.com/.2003%20Results%20A/R050403AA.html&quot;&amp;gt;chip time of 3:53:25&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;My second Pittsburgh Marathon went even worse. I had wanted to finish in 4:00, but instead &lt;a href=&quot;https://results.active.com/events/dicks-sporting-goods-pittsburgh-marathon&quot;&gt;finished in 4:38:21&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was my 135th race in my life, and the worst of them all that I actually finished (I failed to finish one 30K race because of severe illness that should have kept me from going to the start line at all).&lt;/p&gt;
&lt;p&gt;Here&apos;s my report on what happened, why, my thankfulness for all the good that came from the experience, and my running plans for the future.&lt;/p&gt;
&lt;h2&gt;Coming back from injury and burnout&lt;/h2&gt;
&lt;p&gt;I think it&apos;s important to understand that my poor performance did not come from nowhere. I had battled injury and burnout &lt;a href=&quot;/blog/2013/05/04/i-spent-the-past-week-not-knowing-whether-i-could-run-in-the-2013-pittsburgh-marathon-tomorrow/&quot;&gt;for some time&lt;/a&gt;. &lt;em&gt;Logically&lt;/em&gt;, I should not have gone to the start line at all.&lt;/p&gt;
&lt;h2&gt;Night before&lt;/h2&gt;
&lt;p&gt;I got zero sleep the night before the race. Terrible, but my body was probably confused by the carb-loaded diet as well as my insistence on spending the whole day napping because I was so tired. I had felt that I had to do that napping because I was not going to be able to sleep well at night anyway.&lt;/p&gt;
&lt;h2&gt;Early morning on race day&lt;/h2&gt;
&lt;p&gt;Super early, Abby drove us to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.visitpittsburgh.com/essentials/neighborhoods/north-shore/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.visitpittsburgh.com/essentials/neighborhoods/north-shore/&quot;&amp;gt;North Shore&amp;lt;/span&amp;gt; to park. Then we napped for a bit before heading to the nearest &lt;a href=&quot;https://en.wikipedia.org/wiki/Pittsburgh_Light_Rail&quot;&gt;light rail (aka &quot;T&quot;)&lt;/a&gt; station to wait for a ride downtown:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/go-downtown.jpg&quot; alt=&quot;Abby and I wait for T&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We got downtown finally, I dropped off a bag of post-race flip-flops at Gear Check, time was starting to run out, and I got in line for a Port-a-pottie:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/port-a-potties.jpg&quot; alt=&quot;Port-a-potties&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was 15 minutes before I did what I needed to do. Then I had to quickly head to my corral.&lt;/p&gt;
&lt;h2&gt;Clothing&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/franklin-before-marathon.jpg&quot; alt=&quot;Franklin before marathon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What I wore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;em&gt;same blue singlet&lt;/em&gt; I &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;wore in the 2003 Pittsburgh Marathon ten years ago&lt;/a&gt; (my favorite running shirt that I have actually worn for probably at least 70 of my races in over a decade, as well as most of my warm-weather casual runs also!!)&lt;/li&gt;
&lt;li&gt;Brooks Infiniti Short III that I bought at Elite Runners and Walkers before the &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;Just A Short Run half marathon in March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Luna Sandals (Venado) that I&apos;ve been wearing for almost all of my runs in the past month, &lt;a href=&quot;/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/&quot;&gt;maximum distance of 16 miles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CEP compression calf sleeves, which I had worn just &lt;a href=&quot;/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/&quot;&gt;one other time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;my &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;phone&lt;/a&gt;, in a SPIbelt.&lt;/li&gt;
&lt;li&gt;on my back, I pinned a &lt;a href=&quot;/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/&quot;&gt;&quot;We are all Boston Marathoners at heart&quot; bib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;a long-sleeve T-shirt on top of my singlet, since it was cold (under 50 degrees F?) before the race; the plan was to discard this T-shirt before the race (and hope that people collect it and find a good home for it!)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Entering the corral&lt;/h2&gt;
&lt;p&gt;This is the second race in my life in which I have carried a phone. I planned to use it only in case of emergency, and in order to meet up with Abby afterwards, but as you can see, while I had a chance, I took some photos also.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/corral-c.jpg&quot; alt=&quot;Corral C&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was assigned to corral C because of my estimated finish time of 4:00 that I had written down when signing up for the marathon months ago.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This was my first mistake.&lt;/em&gt; Given my comeback from injury and inactivity, the truly logical thing for me to have done was to set a very conservative goal of simply finishing the marathon without terrible suffering. Given that I ended up finishing in 4:38, I might as well have moved back into another corral and &lt;em&gt;planned&lt;/em&gt; to finish in the 4:20-4:30 range, in which case I bet I would have done that with minimal pain and suffering.&lt;/p&gt;
&lt;p&gt;In the future, I resolve to face the facts on the ground in any event as strenuous as a marathon. It doesn&apos;t make any sense what I did, especially given that I was perfectly smart when &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;in March I did my first half marathon in nine years and ran it conservatively and had a great experience&lt;/a&gt;! I am capable of logical reasoning and have actually executed it in the past. But apparently the marathon puts me into a hyper-emotional frame of mind.&lt;/p&gt;
&lt;h2&gt;Pace?&lt;/h2&gt;
&lt;p&gt;Also, I had chosen not to sign up to follow an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmarathon.com/pace-team&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmarathon.com/pace-team&quot;&amp;gt;official pacer&amp;lt;/span&amp;gt;, because on all my long training runs, I had found my own pace by feel, and done well ignoring pacers. My plan was simply to go slow and then get faster. I did look around for pace signs. I only saw one from where I was standing: a sign near the front of the corral for finishing in 3:50. I looked back and saw no other signs.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This was my second mistake.&lt;/em&gt; Given that I had not done any serious running for ten days, with my longest run being only two miles, and my last &quot;long&quot; run was an eleven-mile run fifteen days ago, I should have realized that whatever &quot;feel&quot; I had for pace was gone, and I should have moved back in the corral till I found a 4:00-finishing pacer, at least (but as mentioned earlier, what I should have done was move into a slower corral altogether and then found a suitable pacer there).&lt;/p&gt;
&lt;h2&gt;Race start&lt;/h2&gt;
&lt;p&gt;There was a moment of silence for Boston.&lt;/p&gt;
&lt;p&gt;Star-Spangled Banner, then the waves began. A photo as mine was approaching the start line, around 7:05 AM:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/start-line.jpg&quot; alt=&quot;About to reach the start line&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then we went.&lt;/p&gt;
&lt;h2&gt;Wrong pace&lt;/h2&gt;
&lt;p&gt;I honestly thought I was going slow. I was hardly breathing at all. I was going so &quot;slow&quot; that I pulled out my phone to take some photos. But then I got very confused, because the 3:50 pacer was still in my sight after many minutes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/early.jpg&quot; alt=&quot;Early in the marathon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I could not process this information. Part of me wanted to slow down, but I felt like I was barely running. Part of me believed that the pacer must be slow, but come on, these pacers are supposed to be reliable.&lt;/p&gt;
&lt;p&gt;So I &lt;em&gt;made the mistake&lt;/em&gt; of not trusting the pacer. It sounds crazy, but I really felt like I was going too slow.&lt;/p&gt;
&lt;h2&gt;Slowing down?&lt;/h2&gt;
&lt;p&gt;At some point, I lost sight of the pacer, so I felt reassured that I must have slowed down properly. Here&apos;s another problem: I did not keep track of my mile splits because the mass of people made it hard for me to actually reliably spot any mile markers on the course; I don&apos;t even know how many actually existed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/bridge.jpg&quot; alt=&quot;Crossing bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I even took a photo of myself 40 minutes into the marathon feeling fine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/franklin-early.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There were spectators on bridges, some of them positioned seemingly precariously.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/spectators-on-bridges.jpg&quot; alt=&quot;Spectators on bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At some point I realized that I could see the 3:50 pacer up ahead. I got worried. It was unlikely that I was magically super-fit now. But I didn&apos;t feel like slowing down.&lt;/p&gt;
&lt;p&gt;At some point I must have started slowing down, because eventually I saw a 3:55 pacer pass me.&lt;/p&gt;
&lt;p&gt;Still, it appears from the alert system that I signed up for (to notify my parents by email, and Abby by text message, and my Facebook friends and Twitter followers), that I did the first 10K (6.2 miles) in 55:29, meaning an average pace of 8:56 and estimated finish time of 3:54:04. That&apos;s much faster than the 9:08 pace I had intended for a 4:00 finish.&lt;/p&gt;
&lt;h2&gt;Really slowing down&lt;/h2&gt;
&lt;p&gt;I started really slowing down before even reaching the Birmingham Bridge. I knew I was getting into serious trouble. It was crazy, but my left knee was bothering me, and my left quads had started to twitch. So I had gone only about 11 miles and I was already struggling.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/birmingham-bridge.jpg&quot; alt=&quot;On Birmingham Bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You have to understand how &lt;em&gt;nonsensical&lt;/em&gt; it is for me to be having muscle cramping after running only 11 miles at a pace that is actually slow for an 11-mile run.&lt;/p&gt;
&lt;p&gt;Even if we assumed, falsely, that I got to mile 11 at the same pace as during my first 6.2 miles (8:56), note that I ran an entire half marathon (13.1 miles) in late March, only in the beginning of marathon training, at an average of 8:28 pace, and was totally fine with no cramping during the race. And after a couple of weeks of further training, I had felt much stronger during a 16-mile run.&lt;/p&gt;
&lt;p&gt;So basically, it was a cruel joke I played on myself that I was in such poor condition that I was cramping up after 11 miles at a slow pace. I was very angry at myself that I had made a complete &lt;em&gt;travesty&lt;/em&gt; of my marathon, &lt;em&gt;just like in 2003&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Halfway, and change of plan&lt;/h2&gt;
&lt;p&gt;I slowed down more in Oakland to keep the left quad twitching under control.&lt;/p&gt;
&lt;p&gt;According to the alert system, I got halfway in 1:59:46, average pace of 9:09, and estimated finish time of 3:59:31. But of course, by then, I knew that I was done for. I was just going to continue slowing down and suffering, for &lt;em&gt;over two more hours&lt;/em&gt;, if I finished at all.&lt;/p&gt;
&lt;p&gt;When I finally saw the 4:00 pace group pass me, somehow that was a real blow to me.&lt;/p&gt;
&lt;p&gt;At 9:27 AM, not too long after the halfway point, I texted Abby: &quot;Severe pain. Very slow, just aim finish. Maybe 4:30.&quot;&lt;/p&gt;
&lt;p&gt;Now my main thought was to focus on making it to Annie (of the Pittsburgh Recorder Society), who was going to watch for me in Highland Park, just before mile 20. I had told her to expect me around 10 AM, and Annie had even posted to the &lt;a href=&quot;https://www.facebook.com/photo.php?fbid=463404163737512&amp;amp;set=a.368839359860660.86924.330712777006652&amp;amp;type=1&quot;&gt;Pittsburgh Recorder Society Facebook page&lt;/a&gt; telling everyone I was running.&lt;/p&gt;
&lt;p&gt;I was so not going to make it for 10 AM. But I wanted to go slowly enough that I could hold off the quad cramping.&lt;/p&gt;
&lt;h2&gt;Despair&lt;/h2&gt;
&lt;p&gt;At around 9:49 AM, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runoverit.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runoverit.com/&quot;&amp;gt;Chris&amp;lt;/span&amp;gt; passed me and said hello. I told him I was doing very badly. He wasn&apos;t doing as well as he had hoped, but was moving along, unlike me. Here&apos;s a photo I had the presence of mind to take only as he had already gone way ahead (in the blue shirt):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/chris.jpg&quot; alt=&quot;Chris up ahead in blue shirt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At 9:54 AM, I made a video statement on my phone, just for myself: &quot;I&apos;m after mile 17 or something, in Homewood. I&apos;m doing really badly, but I&apos;m still running, and that&apos;s all I can say about that.&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;12inzKGZGRU&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/despair.jpg&quot; alt=&quot;Despair after mile 17 in Pittsburgh Marathon&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Annie&lt;/h2&gt;
&lt;p&gt;At 10:11 AM, not yet at Annie&apos;s, I was contemplating quitting, because the pains I was experiencing (right quads twitching also, and even my arms and hands, mysteriously, in spots where I had old injuries years ago, plus a really bad blister on my right foot where I had all those skin problems earlier, and less bad but very annoying constant chafing of the Luna Sandals straps) were so terrible. I decided to just take a break at a fluid station and squat and stretch. I texted Abby: &quot;Very bad shape. Rested some.&quot; I also finally &lt;a href=&quot;https://www.facebook.com/franklin.chen/posts/10201315392704609&quot;&gt;posted to Facebook&lt;/a&gt;, &quot;In very bad shape. Trying to finish anyway.&quot; I was not actively reading Facebook during the marathon at all, but did notice a lot of notifications, and assumed they were words of encouragement from my friends; I didn&apos;t want to read them until I was done, because I felt I might let them down. Abby replied, &quot;What is your plan?&quot;&lt;/p&gt;
&lt;p&gt;At 10:19, I said, &quot;Don&apos;t know. Walking, blister and cramping.&quot;&lt;/p&gt;
&lt;p&gt;A note on the blistering and chafing: it got really warm and I got sweaty, so that was part of the problem. I had not run in these sandals in such conditions before: I had mostly run in dry, cold conditions of 35-50 degrees F. Also, I had forgotten about road hazards: there were cups of water and Gatorade all over around the aid stations and my feet were sticky and wet for much of the marathon. It was a rather unpleasant feeling.&lt;/p&gt;
&lt;p&gt;I kept running/walking. I saw Annie. I decided there and then, seeing her, that I was going to finish, rather than just bail out and crash on her couch or something pathetic like that. I shouted that I was in severe pain but planned to continue on! She took a photo of me, which I knew was going to be on Facebook before too long, so I&apos;d better make good on my promise to her!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/franklin-in-highland-park.jpg&quot; alt=&quot;Franklin in Highland Park&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At 10:29, I texted Abby: &quot;Got to Annie. Running again.&quot;&lt;/p&gt;
&lt;p&gt;I then focused on just continuing to move, slowing to a walk if I needed to in order to deal with cramping.&lt;/p&gt;
&lt;h2&gt;Mile 22&lt;/h2&gt;
&lt;p&gt;At 10:51, I reached S Aiken, just before mile 22. This is an important point in the course for me, not only because it begins a downhill, but also because it is where my friend Nathaniel cheered me on ten years ago when I was also suffering.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/aiken.jpg&quot; alt=&quot;S Aiken&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Strip District&lt;/h2&gt;
&lt;p&gt;At some point, I was getting discouraged again and started walking, when I accidentally spotted Deb and Mark watching. Seeing familiar faces among the spectators is definitely helpful! Upon seeing them, I felt ashamed of my walking and my negative thoughts. I went up to them, and they were going to take a picture of me, and I got all determined, and &lt;em&gt;screamed&lt;/em&gt;, &quot;I&apos;m going to finish this thing!!&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/im-going-to-finish-this-thing.jpg&quot; alt=&quot;Franklin determined to finish&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I kept on running, and did not stop, even though I saw many people walking, and also saw many relay runners zooming by. I decided that I was not only going to finish (it was now clear that I could), but that I was going to finish as strong as I could, even though it would count for nothing. I was going to run at the edge of quad twitching, all the way to the end. It was going to hurt far more than if I just ran very slowly to finish, but I didn&apos;t come this far just to walk if I could run. I was determined to push.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/franklin-in-strip.jpg&quot; alt=&quot;Franklin in Strip District&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As I got closer and closer, I periodically texted Abby the street I had just crossed, so that she would know roughly when I was going to finish.&lt;/p&gt;
&lt;h2&gt;Finish line&lt;/h2&gt;
&lt;p&gt;And so I finished. I finished in a state of my quads twitching like firecrackers. I got my medal. I kept on walking. I grabbed a bag of chips and water. I forgot to look for other stuff, like Smiley Cookies (that Abby later said she saw were being handed out). I just wanted to stop the twitching, get my bag from Gear Check, get out of my Luna Sandals into some comfortable, cushioned flip-flops, use a Port-a-potty, and finally find Abby and the &quot;CMU tent&quot;, which I assumed was just a section of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmarathon.com/PCC&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmarathon.com/PCC&quot;&amp;gt;Pittsburgh Corporate Challenge Tent&amp;lt;/span&amp;gt;. (I had bought a bracelet for Abby earlier so that she could have access to the tent.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/after.jpg&quot; alt=&quot;After finishing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I could barely walk after I started cooling down, because I got stiffer and stiffer. It took me forever to make it to the Finish Line Festival area, and I was so mentally drained that I had to call Abby to have her tell me where the tent was.&lt;/p&gt;
&lt;h2&gt;Videos (update of 2013-05-23)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://pittsburgh.cbslocal.com/2013/05/05/2013-marathon-finish-line-videos/&quot;&gt;Videos of the Pittsburgh Marathon have been posted&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I found myself in &lt;a href=&quot;https://pittsburgh.cbslocal.com/video/8844851-2013-marathon-finish-line-44000-45000/&quot;&gt;one of the sets of videos&lt;/a&gt;, for those who finished in a clock time between 4:40:00 and 4:50:00.&lt;/p&gt;
&lt;p&gt;You can see me at around 4:44:35 and finishing at about 4:44:40 here:&lt;/p&gt;
&lt;p&gt;&amp;lt;script is:inline type=&apos;text/javascript&apos; src=&apos;https://CBSPIT.images.worldnow.com/interface/js/WNVideo.js?rnd=998125;hostDomain=video.pittsburgh.cbslocal.com;playerWidth=615;playerHeight=365;isShowIcon=true;clipId=8844851;flvUri=;partnerclipid=;adTag=Sport;advertisingZone=CBS.PITTS%252Fworldnowplayer;enableAds=true;landingPage=;islandingPageoverride=false;playerType=STANDARD_EMBEDDEDscript;controlsType=fixed&apos;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;a href=&quot;https://video.pittsburgh.cbslocal.com&quot; title=&quot;&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;h2&gt;The tent and the Pittsburgh Campus Challenge&lt;/h2&gt;
&lt;p&gt;When I signed up for the Pittsburgh Campus Challenge through Carnegie Mellon University, there was advertised to be &quot;gourmet food, private massages, and more&quot; in the tent. The reality was actually quite different.&lt;/p&gt;
&lt;p&gt;Abby said it was a good thing she made it to the tent before too late (she had gone back to nap in the car after seeing me off), because by 10 AM, half marathoners had eaten much of the food already, and she had remembered to save some for me for later! There was still food left, but much of the good stuff was gone. And it wasn&apos;t really &quot;gourmet&quot;. There was dry fried chicken, rolls, pasta left, as far as I could tell, other than the pancakes Abby had saved from earlier, and  a Panera Bread sandwiches she also saved for me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/abby.jpg&quot; alt=&quot;Abby&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/tent-food.jpg&quot; alt=&quot;Tent food&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was a signup sheet for massage by Massage Envy, however, and a very long wait, as I got my massage after one hour and twenty minutes, which was actually OK because I was so sore I simply needed to be left alone for a while to just eat and eat and rest.&lt;/p&gt;
&lt;h3&gt;CMU won!&lt;/h3&gt;
&lt;p&gt;When I came into the tent, there was confusion because I didn&apos;t have a sticker on my bib indicating that I had access to the tent. Apparently I was supposed to have gotten a sticker at some point, but I don&apos;t remember getting instructions about that.&lt;/p&gt;
&lt;p&gt;When they learned I was with CMU, however, they gave me the prize for CMU winning the Pittsburgh Campus Challenge, to hand over to Pattye at CMU. We beat Pitt!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/pittsburgh-campus-challenge.jpg&quot; alt=&quot;Pittsburgh Campus Challenge prize&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Feet&lt;/h2&gt;
&lt;p&gt;My feet were terribly sore. I got one blood-filled blister:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/blister.jpg&quot; alt=&quot;Blister on right foot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But otherwise, the damage was not as bad as I had thought. During the marathon, I had wondered sometimes about all the stickiness I felt on my feet, but it was not blood after all; it was a mixture of energy gel, Gatorade, orange juice, and whatever else was left on the road that got onto my feet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/feet.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I had two chafing spots from the straps, but they were not serious. All in all, my feet were in much condition after wearing the Luna Sandals than they were ten years ago after wearing standard socks and running shoes. The drawback is that my feet were horribly sore, although after one night of rest, the foot soreness is actually all gone.&lt;/p&gt;
&lt;h3&gt;One day later&lt;/h3&gt;
&lt;p&gt;However, I do have a different problem: one day later, numbness in my left foot remains, because I had adjusted my strap for my left foot too tightly, out of fear of it coming off. &lt;em&gt;Overly tight strap was a big mistake.&lt;/em&gt; I did make an adjustment at some point during the race, but I could at least have loosened the strap earlier when I felt discomfort.&lt;/p&gt;
&lt;p&gt;In all my previous runs, my left foot has never fallen out. I hope the numbness goes away in another day.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/feet-day-after.jpg&quot; alt=&quot;My feet the day after&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Legs&lt;/h2&gt;
&lt;p&gt;My legs were utterly trashed, as might be expected given how I had tortured them for so long. At first, I thought it was just my quads and hamstrings, but once I pulled off the calf sleeves, I realized that my calves were trashed too, but had &lt;em&gt;completely&lt;/em&gt; avoided cramping because of the compression. I count this as a total success for the calf sleeves, because in the marathon ten years ago, my calves were seizing up in the second half, not just my quads. &lt;em&gt;I will always wear calf sleeves in the future in long runs or hikes&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Em of Massage Envy was very helpful in getting me able to sort of walk, so that I could go with Abby back over to the North Shore to our car (I had to walk across the bridge, then waited as she brought the car over).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2013/massage-envy.jpg&quot; alt=&quot;Massage Envy&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Overall, I think wearing the Luna Sandals was the correct decision, despite the drawbacks. I did &lt;em&gt;not&lt;/em&gt; have toe jamming, toe blistering, toe cramping that I believe I would have had in other footwear. I did not have ankle soreness of any kind. Or shin splints. I did not have any right knee pain at all, just left (and almost certainly because of my fall on Thursday). I could have used more cushioning though. But my order of the thicker Luna Sandals (the new Mono model) has not yet shipped.&lt;/p&gt;
&lt;h2&gt;Thanks!&lt;/h2&gt;
&lt;p&gt;I have a lot to be thankful for even though in some sense this marathon was truly a debacle for me.&lt;/p&gt;
&lt;p&gt;I am thankful that this race returned to Pittsburgh after suspension in 2004-2008, as Dick&apos;s Sporting Goods rose up to be the title sponsor. I am amazed by how large and popular the Pittsburgh Marathon has become since I last ran it ten years ago. I think it&apos;s great that the city has this annual celebration of its neighborhoods and of the running community. The Pittsburgh Marathon is &lt;em&gt;not&lt;/em&gt; just about the marathon, but about just regular fitness running, free workshops on health and exercise, and celebrating a sport that brings everyone together.&lt;/p&gt;
&lt;p&gt;I am thankful to Pattye Stragar for spreading word of the Pittsburgh Campus Challenge through the CMU fitness mailing list.&lt;/p&gt;
&lt;p&gt;I am thankful to Steel City Road Runners for their well-organized Saturday long runs that got me out during the cold months when I otherwise might have chosen to just sleep in.&lt;/p&gt;
&lt;p&gt;I am thankful to my friends who encouraged me as I progressed through my training and in my discouraging days before the marathon.&lt;/p&gt;
&lt;p&gt;I am thankful to Annie and Deb and Mark for being spectators I saw and knew who gave me additional motivation to keep going.&lt;/p&gt;
&lt;p&gt;I am thankful to all the spectators and volunteers I don&apos;t know who offered cheers, water, orange slices, music, and everything else that reminded me that humanity is caring and helpful.&lt;/p&gt;
&lt;p&gt;And of course, I am particularly thankful to my wife Abby, who has been so patient these months as I have pursued this marathon thing that she thinks is crazy (OK, I know it is crazy), and helped me every single day. Abby, this whole experience has truly deepened my appreciation of you, and I will never forget what we went through together to make this birthday present happen.&lt;/p&gt;
&lt;h2&gt;Did I achieve my goals?&lt;/h2&gt;
&lt;p&gt;Let&apos;s go back to &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;my blog post from three months ago where I stated my goals for the marathon&lt;/a&gt;. What did I actually achieve?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;maintain a smart pace: failed (totally)&lt;/li&gt;
&lt;li&gt;finish strong: succeeded (insofar as I pushed as hard as I could for the last three miles approximately)&lt;/li&gt;
&lt;li&gt;avoid leg muscle cramping: failed miserably with the quads, succeeded with the calves&lt;/li&gt;
&lt;li&gt;avoid foot blistering: failed (got one bad blister)&lt;/li&gt;
&lt;li&gt;conquer the hills: neutral (didn&apos;t feel particularly bad at hills as such)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So it would seem that I basically failed, as far as the marathon itself.&lt;/p&gt;
&lt;p&gt;But I think I succeeded, in a larger context:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I didn&apos;t expect to be wearing huaraches for a marathon, but I did wear Luna Sandals! I proved to myself it could be done.&lt;/li&gt;
&lt;li&gt;As a side effect of marathon training, I got myself into much better shape than I have been in for the past half decade, and did my first half marathon in nine years, and set up exercise habits I hope to make permanent independent of any future marathoning.&lt;/li&gt;
&lt;li&gt;Abby&apos;s help as I took on the task of training made a profound impression on me.&lt;/li&gt;
&lt;li&gt;The outpouring of support from friends was a welcome surprise to me, because in my last Pittsburgh Marathon, I mostly went about it alone, telling only a few people about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why did I fail so miserably?&lt;/h2&gt;
&lt;p&gt;I believe I failed mostly because I didn&apos;t have the proper training. I started too late, I didn&apos;t have enough time to more gradually absorb increased training volume, I could have used an extra month or two of more long runs.&lt;/p&gt;
&lt;p&gt;I also did not adapt properly to setbacks that should have led me to change my goals drastically. There was a downward spiral in terms of injury, fatigue, and loss of calm reason.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;h3&gt;Done with the marathon&lt;/h3&gt;
&lt;p&gt;I told Abby that this is it: no more racing marathons again, ever. I mean it. I&apos;m facing the reality that this is not the right event for me. I believe I could do a good marathon, but what it would take is not worth the effort. The sacrifices that I made, and Abby made, were considerable. There are other things we could be doing.&lt;/p&gt;
&lt;p&gt;So I look forward to our returning to &quot;normal&quot; life as I recover.&lt;/p&gt;
&lt;h3&gt;Running&lt;/h3&gt;
&lt;p&gt;That said, I totally enjoyed getting back into year-round running. I will never go into winter hibernation again. I still have to figure out ideal footwear for the coldest and snow/ice/water-ridden conditions for next winter, of course.&lt;/p&gt;
&lt;h3&gt;Half marathons&lt;/h3&gt;
&lt;p&gt;Doing Just A Short Run again gave me confidence that I can &quot;master&quot; the half marathon distance. I would like to continue doing half marathons. I have decided to do the &lt;a href=&quot;https://web.archive.org/web/20210624203359/http://www.mtchalfmarathon.com/&quot;&gt;Montour Trail Half Marathon&lt;/a&gt; in September. This means I will have to skip the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;CMU Pretty Good Race&lt;/a&gt;, which is always held the Friday before this Saturday race, but it&apos;s time for me to get back into doing half marathon and 10K and 5K (and even mile) races, distances that I can actually work on being able to run well without wrecking myself.&lt;/p&gt;
&lt;p&gt;Heck, I might even run the Pittsburgh Half Marathon a year from now! (Although I don&apos;t actually want to think about that for a while.)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In isolation, the 2013 Pittsburgh Marathon may be considered to be a total debacle for me, the worst race I&apos;ve finished out of the 135 races I&apos;ve showed up for in my life. But I&apos;m glad I went through the process of training for it, and I&apos;m grateful for it as a vehicle of self-discovery: I faced some unpleasant truths about various poor decisions I made. And I&apos;m grateful for the opportunity to share my journey with friends and family.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://www.guardian.co.uk/sport/blog/2012/jun/22/50-olympic-stunning-moments-emil-zatopek&quot;&gt;Emil Zatopek&lt;/a&gt; said:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
If you want to run, run a mile. If you want to experience a different life, run a marathon.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2013-05-09)&lt;/h3&gt;
&lt;p&gt;The second day after the marathon, I was still in physical and emotional pain, and wrote a &lt;a href=&quot;/blog/2013/05/07/why-i-feel-sad-when-people-congratulate-me-for-finishing-the-pittsburgh-marathon/&quot;&gt;little rant expressing my disappointment&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The third day, I was able to walk normally and was emotionally recovering as well and was embarrassed by my rant.&lt;/p&gt;
&lt;p&gt;The fourth day, I &lt;a href=&quot;/blog/2013/05/09/back-to-what-running-is-really-about-for-me/&quot;&gt;went out for a short run and reflected on what running is really about for me&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-12-22)&lt;/h3&gt;
&lt;p&gt;I just wanted to point out a much healthier attitude and experience of a marathon gone badly: &lt;a href=&quot;https://www.letsrun.com/news/2013/11/time-life/&quot;&gt;this is a really beautiful article&lt;/a&gt; that every disappointed racer should read.&lt;/p&gt;
&lt;p&gt;I recognize that I trapped myself during March and April with increasingly unbalanced expectations of my marathon, and lost all calmness and perspective. I still don&apos;t know whether I will run a marathon again, but if I do, I vow to do it with a clear mind and body.&lt;/p&gt;
</content:encoded></item><item><title>I spent the past week not knowing whether I could run in the 2013 Pittsburgh Marathon tomorrow</title><link>https://franklinchen.com/blog/2013/05/04/i-spent-the-past-week-not-knowing-whether-i-could-run-in-the-2013-pittsburgh-marathon-tomorrow/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/04/i-spent-the-past-week-not-knowing-whether-i-could-run-in-the-2013-pittsburgh-marathon-tomorrow/</guid><pubDate>Sun, 05 May 2013 00:22:17 GMT</pubDate><content:encoded>&lt;p&gt;Tomorrow is my birthday, and I will be running the Pittsburgh Marathon.&lt;/p&gt;
&lt;p&gt;I have no idea how it will turn out, because I spent the past week not knowing whether I would even make it to the start line!&lt;/p&gt;
&lt;p&gt;Here&apos;s what&apos;s been happening.&lt;/p&gt;
&lt;h2&gt;Last Saturday: recovering from injury&lt;/h2&gt;
&lt;p&gt;A week ago I was in despair as &lt;a href=&quot;/blog/2013/04/27/missing-the-final-steel-city-road-runners-taper-run-because-of-injury/&quot;&gt;I skipped a planned Steel City Road Runners final taper run because of injury and burnout&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Sunday&lt;/h2&gt;
&lt;p&gt;I continued to rest and apply cream to my foot skin cracks. My right shin is OK again.&lt;/p&gt;
&lt;h2&gt;Monday&lt;/h2&gt;
&lt;p&gt;After three days off from running, I was worried about losing fitness. My feet were healing slowly. I did just a mile on the treadmill, wearing Vibram FiveFingers Bikila LS, not Luna Sandals, in order to keep my feet from drying out. I felt very sluggish and weak. I wanted to verify that I could at least run at all though.&lt;/p&gt;
&lt;h2&gt;Tuesday&lt;/h2&gt;
&lt;p&gt;My right foot was hurting again, healing not complete. Also, I was feeling simply physically exhausted, like I was getting sick or something: I had a headache waking up. I took a day off work to do a lot of napping.&lt;/p&gt;
&lt;h2&gt;Wednesday&lt;/h2&gt;
&lt;p&gt;I thought my friends who have been following my marathon training progress for the past two months should know what was up, so &lt;a href=&quot;https://www.facebook.com/franklin.chen/posts/10201292146683473&quot;&gt;I posted on Facebook&lt;/a&gt;, &quot;If the marathon were tomorrow, I would not go to the start line. I hope another three days of healing will get me there.&quot;&lt;/p&gt;
&lt;p&gt;Later I did feel better and get in a short 1-mile run, in Luna Sandals.&lt;/p&gt;
&lt;p&gt;I started carb-loading.&lt;/p&gt;
&lt;h2&gt;Thursday&lt;/h2&gt;
&lt;p&gt;I felt better, my feet were mostly healed, and I got in a 2-mile run. I publicly declared &lt;a href=&quot;https://www.facebook.com/franklin.chen/posts/10201298432760621&quot;&gt;on Facebook&lt;/a&gt;, &quot;I&apos;m on for the marathon on Sunday!&quot;&lt;/p&gt;
&lt;p&gt;Later in the day, in a freak accident, unfortunately, I fell down the stairs at work. Basically, I missed one step when taking a step with my left foot. I ended up landing really hard and awkwardly on my left foot on the second step down instead of the first step down, with considerable pressure on my left knee, which buckled to the side a bit, and then I landed on my right foot, with less pressure on my right knee, then I fell to the right and banged up my right ankle also. I was surprised that I didn&apos;t actually break anything, but I was shaken. I tried to joke about this &lt;a href=&quot;https://www.facebook.com/franklin.chen/posts/10201299844715919&quot;&gt;on Facebook&lt;/a&gt;, but the incident did not help me.&lt;/p&gt;
&lt;h2&gt;Friday&lt;/h2&gt;
&lt;p&gt;Tired. No running.&lt;/p&gt;
&lt;h2&gt;Saturday (today)&lt;/h2&gt;
&lt;p&gt;Woke up exhausted, spent the whole day napping. Finished carb-loading. I gained about three pounds in the past three days.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve done what I could in order to make it to the start line of the Pittsburgh Marathon tomorrow. Everything is out of whack, but I didn&apos;t want to cancel doing it, or switch to doing the half marathon. I haven&apos;t had a real run in &lt;em&gt;nine days&lt;/em&gt;. I regret completely messing up my preparation for the marathon, but as long as I think I can finish it, I am doing it.&lt;/p&gt;
&lt;p&gt;This may not be quite logical, but emotionally, in the past week, I have felt that I need to do the marathon, not so much because I have done so much for it (OK, that&apos;s the sunk cost fallacy, I know), but because I signed up for it with an agreement with Abby that this was going to be my last marathon for 15-20 years, and lately, in light of my suffering (and her collateral suffering), I amended that to tell her that I was never going to do a marathon again, ever!&lt;/p&gt;
</content:encoded></item><item><title>Playing violin music on flute</title><link>https://franklinchen.com/blog/2013/05/03/playing-violin-music-on-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/05/03/playing-violin-music-on-flute/</guid><pubDate>Sat, 04 May 2013 03:32:33 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I enjoyed another party at Henry&apos;s. I have been very tired leading up to the Pittsburgh Marathon to run on Sunday. I took the day off from work as planned in order to get more reset, and picked up my race packet at the Expo.&lt;/p&gt;
&lt;p&gt;I didn&apos;t play all that much music at the party, but the highlight for me was playing Fritz Kreisler&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Alt-Wiener_Tanzweisen&quot;&gt;&quot;Liebesleid&quot;&lt;/a&gt; on flute with Henry accompanying on piano. I totally love this little piece that Kreisler wrote for violin, and I enjoy making it work on flute. We were just having fun at the party, but eventually I want to make a real performance out of it, and record it myself, because I have &lt;em&gt;very strong&lt;/em&gt; ideas on how to play it to express what I feel in the music.&lt;/p&gt;
&lt;h2&gt;Some existing performances on violin&lt;/h2&gt;
&lt;h3&gt;Fritz Kreisler himself&lt;/h3&gt;
&lt;p&gt;Here is Kreisler performing his own piece:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/AqQ2_2qd-5Y&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s a fine performance, but ironically, not actually my favorite!&lt;/p&gt;
&lt;h3&gt;David Oistrakh&lt;/h3&gt;
&lt;p&gt;This is an interesting interpretation. It is still not as free as I like, but it is elegant and subtle in its expression.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/x78axkl1q38&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Itzhak Perlman&lt;/h3&gt;
&lt;p&gt;A romantic rendition with great elements, but too fast and tight, not meditative enough, so overall it leaves me disappointed.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/hJEkEL6Obzk&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Joshua Bell&lt;/h3&gt;
&lt;p&gt;Here is a modern performance by Joshua Bell. This is an example of a performance that I &lt;em&gt;don&apos;t like at all&lt;/em&gt;, being very square and without a lilt and freedom.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/6jk16b9pvXY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ryu Goto&lt;/h3&gt;
&lt;p&gt;A fine performance I would put into the category of elegant and subtle.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/DsSii7yDzi0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Katica Illenyi&lt;/h3&gt;
&lt;p&gt;Now this, I really love: a performance of extreme detail and personal expression. One of the most beautiful performances I have encountered!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/D0_hqoX-uXQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Gidon Kremer with Martha Argerich&lt;/h3&gt;
&lt;p&gt;My favorite performance is actually this unusual one of very extreme emotional expression. Note how Kremer stretches out time and also accelerates with many tempo changes (finely covered by Argerich, of course). He takes the dynamics down to an extreme, and varies his vibrato. He plays this piece as a deep story of love rather than just a lighthearted one.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/dOr5mofvjsA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Performances on flute&lt;/h2&gt;
&lt;p&gt;Most of the performances I found on YouTube with flute were really, really bad. Here are some of the exceptions:&lt;/p&gt;
&lt;h3&gt;Unji Chung&lt;/h3&gt;
&lt;p&gt;Very emotional reading. A good performance, but maybe too extroverted for my taste, too driving and with an over-powerful vibrato.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/BnsH-BvFRo4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Oksana Sinkova&lt;/h3&gt;
&lt;p&gt;Expressive phrasing, coloring, tone, and deeply felt. She appears to be playing a wooden flute. Enchanting!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/UQmZMJZcAx4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Celebrating the victory of the CMU Tartans in the 2012-13 Pittsburgh Chess League season</title><link>https://franklinchen.com/blog/2013/04/29/celebrating-the-victory-of-the-cmu-tartans-in-the-2012-13-pittsburgh-chess-league-season/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/29/celebrating-the-victory-of-the-cmu-tartans-in-the-2012-13-pittsburgh-chess-league-season/</guid><pubDate>Tue, 30 Apr 2013 03:36:01 GMT</pubDate><content:encoded>&lt;p&gt;The CMU Tartans won the 2012-13 &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt; (&lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/pcli.htm&quot;&gt;division I&lt;/a&gt;)!&lt;/p&gt;
&lt;p&gt;Out of 6 matches (there were 7 rounds with a bye round for each team), we won the first 5 matches, losing only the final match.&lt;/p&gt;
&lt;p&gt;We celebrated by having dinner at Curry on Murray in Squirrel Hill, organized by our team captain, Jeff. Our team had 8 members, 6 of whom were able to make it to the dinner (Ruan and Ed were unable to attend).&lt;/p&gt;
&lt;h2&gt;Meet the CMU Tartans team&lt;/h2&gt;
&lt;p&gt;I should note that Carnegie Mellon University actually has more than one team. In addition to the CMU Tartans, there is also Carnegie Mellon University I, a lower-rated team in division I, and Carnegie Mellon University II, a team in division II. I assume that these teams are composed primarily of Carnegie Mellon undergrad students.&lt;/p&gt;
&lt;p&gt;On paper, the CMU Tartans was a very strong team, with the highest rating in division I, and therefore a favorite to win (which we did):&lt;/p&gt;
&lt;p&gt;Not all 8 of our team members played in every round. Since it is very important to have at least 4 members show up for each match, because the team match score is based on 4 official games for each team during a round, I would like to recognize, in order of number of games played:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daniel Malkiel: all 6 games!&lt;/li&gt;
&lt;li&gt;Jeffrey Quirke, Edward Dean: 5 games&lt;/li&gt;
&lt;li&gt;Ruan Lufei, Franklin Chen, Avi Schreiber: 2 games&lt;/li&gt;
&lt;li&gt;Iryna Zenyuk, Luka Glinsky: 1 game&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are the team members, in board order:&lt;/p&gt;
&lt;h3&gt;Ruan Lufei, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?14477796&quot;&gt;current rating 2569&lt;/a&gt; (played 2 games)&lt;/h3&gt;
&lt;p&gt;Ruan scored 2-0.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ruan_Lufei&quot;&gt;Ruan&lt;/a&gt; is actually world famous, being one of the top woman chess players in the world. She has the Woman Grand Master (WGM) title and was the runner-up in the 2010 Women&apos;s World Championship, in which she faced Hou Yifan but lost. She is hard at work &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.tepper.cmu.edu/news-multimedia/tepper-stories/queens-gambit-ruan-balances-chess-with-phd-studies/index.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.tepper.cmu.edu/news-multimedia/tepper-stories/queens-gambit-ruan-balances-chess-with-phd-studies/index.aspx&quot;&amp;gt;in the CMU PhD program in accounting&amp;lt;/span&amp;gt;, so she has these years been focused on completing her studies rather than on chess. She is far, far stronger than the rest of the CMU Tartans team!&lt;/p&gt;
&lt;h3&gt;Iryna Zenyuk, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12846035&quot;&gt;current rating 2327&lt;/a&gt; (played 1 game)&lt;/h3&gt;
&lt;p&gt;Iryna scored 0.5-0.5.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.uschesschamps.com/bio/zenyuk&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.uschesschamps.com/bio/zenyuk&quot;&amp;gt;Iryna&amp;lt;/span&amp;gt; has the Woman International Master (WIM) title and is one of the top ten woman chess players in the United States. She has been &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.contrib.andrew.cmu.edu/~izenyuk/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.contrib.andrew.cmu.edu/~izenyuk/&quot;&amp;gt;in the CMU PhD program in mechanical engineering&amp;lt;/span&amp;gt;, but has managed to find time to play in the &lt;a href=&quot;https://www.uschesschamps.com/&quot;&gt;US Chess Championships&lt;/a&gt;. Here is a recent &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.uschesschamps.com/meet-players-iryna-zenyuk&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.uschesschamps.com/meet-players-iryna-zenyuk&quot;&amp;gt;interview of her&amp;lt;/span&amp;gt; leading up to the 2013 US Chess Championships.&lt;/p&gt;
&lt;h3&gt;Daniel Malkiel, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12693164&quot;&gt;current rating 2182&lt;/a&gt; (played 6 games)&lt;/h3&gt;
&lt;p&gt;Dan scored 4.0-2.0.&lt;/p&gt;
&lt;p&gt;Dan has an &lt;a href=&quot;https://web.archive.org/web/20150909140046/http://www.hss.cmu.edu:80/philosophy/alumni.php&quot;&gt;MS from CMU in Logic and Computation&lt;/a&gt;. He was the &lt;a href=&quot;https://www.pscfchess.org/results/12110304.htm&quot;&gt;2012 PA State Champion&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Jeffrey Quirke, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12431107&quot;&gt;current rating 2179&lt;/a&gt; (played 5 games)&lt;/h3&gt;
&lt;p&gt;Jeff scored 3-2.&lt;/p&gt;
&lt;p&gt;Jeff is also a CMU alumnus, with an MSEE in Electrical and Computer Engineering.&lt;/p&gt;
&lt;h3&gt;Franklin Chen, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12226800&quot;&gt;current rating 2164&lt;/a&gt; (played 2 games)&lt;/h3&gt;
&lt;p&gt;I scored 2-0.&lt;/p&gt;
&lt;p&gt;I only played in the first two of the six team matches, my first games upon &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;returning to chess after a long absence&lt;/a&gt;: &lt;a href=&quot;/blog/2012/10/14/pittsburgh-chess-league-round-2-natural-moves-are-often-bad/&quot;&gt;round 2&lt;/a&gt; and &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;round 3&lt;/a&gt;. After that, I became very busy, unfortunately, and did not play for the team in the final four rounds. I took a complete break from chess early this year after &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;winning the 2013 Pittsburgh Chess Club Championship&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Edward Dean, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12670976&quot;&gt;current rating 2136&lt;/a&gt; (played 5 games)&lt;/h3&gt;
&lt;p&gt;Ed scored 3.5-1.5.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.andrew.cmu.edu/user/edean/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.andrew.cmu.edu/user/edean/&quot;&amp;gt;Ed&amp;lt;/span&amp;gt; is currently in the CMU PhD program in Pure and Applied Logic. He was Pittsburgh Chess Club champion in both 2011 and 2012. I have covered two of my games against him on my blog, neither of which I won: &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;a draw&lt;/a&gt; and &lt;a href=&quot;/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/&quot;&gt;a loss&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Luka Glinsky, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12864884&quot;&gt;current rating 2032&lt;/a&gt; (played 1 game)&lt;/h3&gt;
&lt;p&gt;Luka played in the final round, scoring 0-1.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://lukaglinsky.com/&quot;&gt;Luka&lt;/a&gt; is a CMU undergrad in drama (acting), graduating with a BFA in a couple of weeks! I first met him on the chess scene when he was about 14 years old, a strong junior player. He has had very little time for chess in the past 4 years as a student at CMU, ha! We will miss him as he leaves Pittsburgh to pursue his acting career.&lt;/p&gt;
&lt;h3&gt;Avi Schreiber, &lt;a href=&quot;https://www.uschess.org/msa/MbrDtlMain.php?12691059&quot;&gt;current rating 1926&lt;/a&gt; (played 2 games)&lt;/h3&gt;
&lt;p&gt;Avi scored 2-0.&lt;/p&gt;
&lt;p&gt;I first met Avi years ago when he was an undergrad at Pitt playing for one of the Pitt teams, but since he joined the staff at CMU, he joined the CMU Tartans.&lt;/p&gt;
&lt;h2&gt;Some interesting discussions&lt;/h2&gt;
&lt;p&gt;During dinner we had fun just socializing for a while, but then of course Jeff pulled out a chess set, and we enjoyed solving chess puzzles together and analyzing some games.&lt;/p&gt;
&lt;p&gt;I thought it was interesting that people had different opinions about the weight of &quot;talent&quot; versus hard work in getting good at chess, and how good an &quot;average&quot; person could get at chess. Some of us seemed very optimistic about how far one could get in chess simply through hard work, using &lt;a href=&quot;https://en.wikipedia.org/wiki/Practice_%28learning_method%29&quot;&gt;deliberate practice&lt;/a&gt;; others of us acknowledged the importance of work, but felt that there was a lower ceiling of possibility because of talent.&lt;/p&gt;
&lt;p&gt;We went through one of Dan&apos;s games that was particularly interesting that I plan to write a separate blog post about, and also one of Jeff&apos;s games that illustrated subtleties in apparently simplified positions.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The CMU Tartans rule again! It was a fun time. Thank you, Jeff, for organizing this dinner! I hope to be able to play more than two rounds for the team next year.&lt;/p&gt;
&lt;h3&gt;(Update of 2016-01-09)&lt;/h3&gt;
&lt;p&gt;I didn&apos;t play in the Pittsburgh Chess League in 2013-2014 or
2014-2015, but have been enjoying being with the CMU Tartans again,
now on board two, for the 2015-2016 season, which has three more
rounds to go. Jeff and Ed are still on the team, but the rest of the
2012-2013 team have left town.&lt;/p&gt;
</content:encoded></item><item><title>Missing the final Steel City Road Runners taper run because of injury and burnout</title><link>https://franklinchen.com/blog/2013/04/27/missing-the-final-steel-city-road-runners-taper-run-because-of-injury/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/27/missing-the-final-steel-city-road-runners-taper-run-because-of-injury/</guid><pubDate>Sat, 27 Apr 2013 18:01:46 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2013/04/25/back-from-injury-an-unexpected-fast-finish-steel-city-road-runners-training-run/&quot;&gt;Two days ago, I reported on coming back from injury and doing a Steel City Road Runners evening training run&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It turned out that the unexpected fast pace that I &lt;em&gt;stupidly&lt;/em&gt; went along with took its toll on me. I am now in &lt;em&gt;serious&lt;/em&gt; trouble with just one more week to go before the Pittsburgh Marathon. This morning I did not at all feel like running, and so I skipped attending the &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=619967&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=4/6/2013&quot;&gt;final (and 6 mile) Steel City Road Runners Saturday morning run that I had so looked forward to all these months&lt;/a&gt;!! I take these Saturday training runs seriously and have really enjoyed them, writing about each one that I participate in.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I do not know whether I will be able to even go to the start line of the marathon in a week.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Injury and burnout&lt;/h2&gt;
&lt;p&gt;As of yesterday, I simply felt tired and sore. I&apos;ve been battling burnout on marathon training for some time now, basically since my &lt;a href=&quot;/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/&quot;&gt;16-mile long run of two weeks ago&lt;/a&gt;, which was the last time I felt really strong and stable. The last &lt;em&gt;two weeks&lt;/em&gt; have been very worrisome to me, as I&apos;ve reported on overtraining and injury &lt;a href=&quot;/blog/2013/04/19/going-out-too-fast-yet-again-in-my-third-random-distance-run/&quot;&gt;multiple&lt;/a&gt; &lt;a href=&quot;/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/&quot;&gt;times&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My legs are hurting. My left &lt;em&gt;knee&lt;/em&gt; is a little weird, my right &lt;em&gt;shin&lt;/em&gt; is hurting (I have not had shin splints all year so far!), I&apos;ve been waking up with tightness and pain under my left foot (plantar fascia?). These are serious problems, not run-of-the-mill training soreness. It feels like I&apos;ve run my body into the ground. It&apos;s such a shame, because I was feeling so great two weeks ago.&lt;/p&gt;
&lt;p&gt;The worst physical problem is my &lt;em&gt;skin&lt;/em&gt;! My dry cracking skin on my right foot has gotten worse. The crack at the big toe has reopened. A new crack has formed near the ball of my foot. I cannot put pressure on this foot without extreme pain. I also have a crack near the heel of my left foot that had been healing earlier but now is bothering me as well.&lt;/p&gt;
&lt;h2&gt;What now?&lt;/h2&gt;
&lt;p&gt;All I can do is rest and hope to get back my energy, and also fix my skin problems. I am soaking my feet and rubbing off dry skin and rubbing on foot cream in order to try to heal the cracks.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was really stupid of me to have deviated from my tapering plans two days ago and run much faster than I should have, given that I was just coming back from injury. It wasn&apos;t on my schedule to do such a thing. Now I&apos;m in trouble.&lt;/p&gt;
</content:encoded></item><item><title>Back from injury: an unexpected fast finish Steel City Road Runners training run</title><link>https://franklinchen.com/blog/2013/04/25/back-from-injury-an-unexpected-fast-finish-steel-city-road-runners-training-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/25/back-from-injury-an-unexpected-fast-finish-steel-city-road-runners-training-run/</guid><pubDate>Fri, 26 Apr 2013 01:55:57 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/&quot;&gt;Five days ago, I reported on feeling overtrained and injured.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today, I report on my progress with recovery and continued training for the Pittsburgh Marathon during the first week of my taper period.&lt;/p&gt;
&lt;h2&gt;Recovery&lt;/h2&gt;
&lt;p&gt;The good news is that I&apos;m bouncing back. I still have a way to go before I feel completely healthy and strong, but I&apos;m not doing too badly, considering.&lt;/p&gt;
&lt;h3&gt;Knee&lt;/h3&gt;
&lt;p&gt;Earlier this week, I did take Sunday off from running (and from wearing Luna Sandals). My left knee was still shaky on Monday, plus I simply felt tired, so I took Monday off as well. Tuesday, my knee was feeling better, so I did an easy 3.5 mile run and called it a day. That really improved my mood, because I was really upset about whether I could run the marathon at all. Wednesday, my knee seemed completely OK, so I ran an easy 4.5 miles.&lt;/p&gt;
&lt;h3&gt;Feet&lt;/h3&gt;
&lt;p&gt;My left foot skin injuries are healing; two days ago there was still some rawness:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/left-foot-healing.jpg&quot; alt=&quot;Left foot healing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But today, everything is completely scabbed over.&lt;/p&gt;
&lt;p&gt;My right foot is still problematic with a crack in the dry skin at the big toe.&lt;/p&gt;
&lt;p&gt;Still, I have been back to wearing Luna Sandals since two days ago.&lt;/p&gt;
&lt;h2&gt;New shorts&lt;/h2&gt;
&lt;p&gt;All my runs this week have been in a new pair of running shorts that I will probably use for the marathon. I bought this at Elite Runners and Walkers a month ago when picking up my race packet for the &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;Just A Short Run half marathon&lt;/a&gt; there, but hadn&apos;t gotten around to wearing them yet!&lt;/p&gt;
&lt;p&gt;I am liking this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.brooksrunning.com/Infiniti-Short-III/210277,default,pd.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.brooksrunning.com/Infiniti-Short-III/210277,default,pd.html&quot;&amp;gt;Brooks Infiniti Short III&amp;lt;/span&amp;gt; a lot. It seems extremely well-designed. I have not sensed chafing problems, and the pockets for a key and gel seem sturdy. Believe me, I have had all kinds of problems with many running shorts in the past decade, mostly involving chafing, deterioration of materials, and pockets becoming non-functional because of how they are sewn, so I can spot design and quality problems.&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;Today, I wanted to do a marathon pace (9-minute pace) run of no more than 6 miles. It turned out that Steel City Road Runners along with &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.truerunner.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.truerunner.com/&quot;&amp;gt;True Runner&amp;lt;/span&amp;gt; had organized a &lt;a href=&quot;https://www.steelcityrrc.org/events?eventId=675354&amp;amp;EventViewMode=EventDetails&quot;&gt;Thursday evening 6-mile training run&lt;/a&gt;. I almost never run in the evening, but just this once, I decided to check it out, and John joined me also, for our first run together since the &lt;a href=&quot;/blog/2013/03/09/11-pittsburgh-bridge-crossings-in-one-12-mile-run/&quot;&gt;12-miler that put him out of commission almost two months ago and led him to cancel his Pittsburgh Marathon registration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was pretty cold, relatively speaking. The temperature was around 50 and getting colder, windier, and it was cloudy and it looked like it might rain (it turned out that near the end of the run, it did drizzle a bit).&lt;/p&gt;
&lt;h3&gt;Pace&lt;/h3&gt;
&lt;p&gt;We followed a guy who was supposed to lead a roughly 9-minute pace for 6 miles, doing two 3-mile loops.&lt;/p&gt;
&lt;p&gt;My impression was that we shot out noticeably faster, and I fell off the pack and just tried to stay in contact.&lt;/p&gt;
&lt;h3&gt;A note on dense urban evening running&lt;/h3&gt;
&lt;p&gt;Running in the Shadyside area at this time of day is stressful, it turns out, because of all the road traffic, the narrow sidewalks, and stop lights. We had to stop more often than I prefer:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/shadyside-run-stopped.jpg&quot; alt=&quot;Waiting for light in Shadyside run&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Well, this was a learning experience, reminding me of why I prefer to run in the morning, and in less congested areas such as Beechwood Boulevard or Homewood Cemetery in Squirrel Hill, or Frick or Schenley Park!&lt;/p&gt;
&lt;h3&gt;First loop&lt;/h3&gt;
&lt;p&gt;Despite going slower than everyone else in the supposedly 9-minute pace group, I was feeling pretty good, probably finally completely recovered from last week&apos;s overtraining. My stride rate was fast and I felt relatively relaxed and efficient, except that I knew we were going faster than I feel I will be able to sustain in the marathon.&lt;/p&gt;
&lt;p&gt;I saw a guy in front of me wearing calf sleeves. I had forgotten to wear mine. I should wear them more before the marathon in order to make sure to be completely used to them.&lt;/p&gt;
&lt;p&gt;We finished the first loop in around 26:18. Um, that&apos;s 8:47 pace. I was right, we were going faster than 9:00 pace. I had in fact wondered why our pacer had slowed down some blocks before we got back to True Runner, and meanwhile most of the rest of us just followed whoever was in front of the pack!&lt;/p&gt;
&lt;h3&gt;Second loop&lt;/h3&gt;
&lt;p&gt;Some people stopped to drink Gatorade or water, but I didn&apos;t take any. Then we headed off again. This time, the pace was slower, possibly even a bit slower than 9:00 pace. That was fine with me. But after about a mile, we started going faster and faster. I almost had to laugh. We were going considerably faster than in the first loop even.&lt;/p&gt;
&lt;p&gt;The pacer eventually fell back and &lt;em&gt;we all just passed him&lt;/em&gt;. Later I reflected on this bizarre group mentality we engaged in. We must have simply ended up following whoever wanted to go fastest. I decided I might as well treat this run as a super fast finish run rather than the steady run I had originally intended. We were clearly going at 8:30 pace and then even faster, down to 8:00 pace and even possibly 7:45 by the end. It was crazy. I felt like I was running in a race. For some reason, everyone decided to push it.&lt;/p&gt;
&lt;p&gt;We finished the second loop in something like 24:59 (we&apos;d done the first loop in 26:18).&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That I was able to maintain alert turnover and also speed things up as I felt like it gave me some confidence that I am bouncing back OK from the past two really hard weeks of training. I have one more week of tapering to go before the marathon!&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Python: Kenneth Reitz on Heroku</title><link>https://franklinchen.com/blog/2013/04/24/pittsburgh-python-kenneth-reitz-on-heroku/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/24/pittsburgh-python-kenneth-reitz-on-heroku/</guid><pubDate>Thu, 25 Apr 2013 01:31:46 GMT</pubDate><content:encoded>&lt;p&gt;This month, the Pittsburgh Python User Group had a &lt;a href=&quot;https://www.meetup.com/pghpython/events/107277042&quot;&gt;special guest speaker for its meeting&lt;/a&gt;, Kenneth Reitz of Heroku.&lt;/p&gt;
&lt;p&gt;I was eager to see him in person, because he has been a huge contributor to the Python community. His module &lt;code&gt;requests&lt;/code&gt; (which won me over when Chad gave a lightning talk on it last year) is much-loved, as well as his opinionated and reasoned writings about documentation, API design, and packaging (as &lt;a href=&quot;/blog/2013/02/27/pittsburgh-python-distribute-and-other-python-community-controversies/&quot;&gt;I reported on two months ago&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;Kenneth Reitz&apos;s presentation&lt;/h2&gt;
&lt;p&gt;There was a huge turnout for this presentation. The Pittsburgh Python group has grown significantly in the past two years (I had begun attending it in January 2011 when it was meeting at Vivisimo). I think it&apos;s because of publicity from joining Meetup.com in January 2012, and now also because it&apos;s meeting in Google Pittsburgh.&lt;/p&gt;
&lt;p&gt;Kenneth gave a very casual live demo of how to use Heroku with Python, starting by cloning a simple Django &quot;to-do list&quot; project, using &lt;code&gt;virtualenv&lt;/code&gt; and &lt;code&gt;pip&lt;/code&gt; to install project requirements, and then Git pushing to Heroku.&lt;/p&gt;
&lt;p&gt;You can check out the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghpy.herokuapp.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghpy.herokuapp.com/&quot;&amp;gt;resulting site&amp;lt;/span&amp;gt; and amuse yourself by checking out what Pittsburgh Python people had on their minds when randomly creating to-do items and checking them off and deleting them!&lt;/p&gt;
&lt;p&gt;He gave a whirlwind tour of how to do scaling, hook up Postgres as a Heroku add-on, etc. It went by too fast for me to fully process.&lt;/p&gt;
&lt;p&gt;He recommended some random cool sites to check out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://12factor.net/&quot;&gt;The Twelve-Factor App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://crate.io/&quot;&gt;Crate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>On rewatching a TV episode after over 30 years</title><link>https://franklinchen.com/blog/2013/04/23/on-rewatching-a-tv-episode-after-over-30-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/23/on-rewatching-a-tv-episode-after-over-30-years/</guid><pubDate>Wed, 24 Apr 2013 03:54:33 GMT</pubDate><content:encoded>&lt;p&gt;Over 30 years ago, when I was in elementary school in the 1970s, I watched the TV series &lt;a href=&quot;https://en.wikipedia.org/wiki/Lost_in_Space&quot;&gt;&quot;Lost in Space&quot;&lt;/a&gt;. It was very silly, but did engage my imagination.&lt;/p&gt;
&lt;h2&gt;Nightmares&lt;/h2&gt;
&lt;p&gt;One episode haunted me for weeks and gave me nightmares, such that I remembered some scenes very clearly: it was the one in which I first encountered the term &lt;a href=&quot;https://en.wikipedia.org/wiki/Antimatter&quot;&gt;&quot;antimatter&quot;&lt;/a&gt;. For decades, once in a while I wondered whether I would ever get to see that episode again. I was particularly curious about whether my memories were accurate.&lt;/p&gt;
&lt;h2&gt;Today&lt;/h2&gt;
&lt;p&gt;It turns out that now, it is &lt;em&gt;probably&lt;/em&gt; possible to find any TV episode or even commercial that one saw in one&apos;s childhood.&lt;/p&gt;
&lt;p&gt;Today, on a whim, I searched for the &quot;Lost in Space&quot; episode, and not only quickly identified it, but also watched it online for free!&lt;/p&gt;
&lt;p&gt;It was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.imdb.com/title/tt0772539/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.imdb.com/title/tt0772539/&quot;&amp;gt;&quot;The Anti-Matter Man&quot;&amp;lt;/span&amp;gt;, and I watched it on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.hulu.com/watch/23809&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.hulu.com/watch/23809&quot;&amp;gt;Hulu&amp;lt;/span&amp;gt;. Of course, it was not really &quot;free&quot;, because I had to suffer through some ads.&lt;/p&gt;
&lt;p&gt;My memories turned out to be quite accurate, although of course not complete. &quot;Evil&quot; John Robinson was convincingly violent and evil, with the beatings and the cage. The landscape was stark and barren. The misty bridge between two worlds was as creepy as I remembered it.&lt;/p&gt;
&lt;p&gt;The episode was really quite a dark one, perhaps too dark for me at the time.&lt;/p&gt;
&lt;p&gt;Needless to say, as one who eventually obtained a physics degree, I have to say that the whole scenario is complete nonsense.&lt;/p&gt;
&lt;h2&gt;Future&lt;/h2&gt;
&lt;p&gt;The temptation can be high to relive the past by rewatching old TV shows, the way I used to listen to old music recordings for sentimental reasons. I&apos;ve almost completely resisted this temptation in the past several years, but sometimes it is illuminating to compare one&apos;s memories with reality, and also reflect on the changes in taste or maturity.&lt;/p&gt;
</content:encoded></item><item><title>On overtraining and feeling injured two weeks before the Pittsburgh Marathon</title><link>https://franklinchen.com/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/20/on-overtraining-and-feeling-injured-two-weeks-before-the-pittsburgh-marathon/</guid><pubDate>Sun, 21 Apr 2013 02:25:40 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/&quot;&gt;Last week&apos;s 16-mile run with the Steel City Road Runners&lt;/a&gt; was my longest run during the past two months of training for the Pittsburgh Marathon. I knew that it was about time to start &lt;a href=&quot;https://running.competitor.com/2012/08/training/the-art-of-the-marathon-taper_57754&quot;&gt;tapering&lt;/a&gt;, but I felt that because of my relatively low mileage (mostly under 30 miles a week), I should put in one last hard week of training, and then have two weeks of tapering before the marathon.&lt;/p&gt;
&lt;p&gt;Unfortunately, this week I overdid things and &lt;a href=&quot;https://steelcityrrc.org/scrrcevents?eventId=619965&quot;&gt;today&apos;s 11-mile run&lt;/a&gt; was very revealing. I ended that run with a whole slew of real problems that I need to immediately fix, or else I will not be able to even make it to the start line of the marathon in two weeks!!&lt;/p&gt;
&lt;h2&gt;This week&apos;s workouts&lt;/h2&gt;
&lt;h3&gt;Monday&lt;/h3&gt;
&lt;p&gt;After &lt;a href=&quot;/blog/2013/04/19/commuting-on-foot-during-cmu-carnival-week-as-cross-training-for-the-pittsburgh-marathon/&quot;&gt;walking 2 miles to work&lt;/a&gt;, I did a tough &lt;a href=&quot;/blog/2012/02/03/my-favorite-running-workout/&quot;&gt;high-intensity Billat workout&lt;/a&gt; on the CMU track, thinking that having taken Sunday off from running, I was ready to get back into action. After doing about 12 minutes of this workout (after warming up first, of course), I was beat. I was feeling pressure on my knees and shins.&lt;/p&gt;
&lt;p&gt;Basically, I was not sufficiently recovered from my 16-miler on Saturday, and I made a mistake.&lt;/p&gt;
&lt;p&gt;Also, I walked 2 miles back home from work, with sore legs and feet, and still wearing Luna Sandals all day.&lt;/p&gt;
&lt;h3&gt;Tuesday&lt;/h3&gt;
&lt;p&gt;I did an easy 6-mile run, which included 1 mile of running to work, 4 miles of running in Schenley Park on the &lt;a href=&quot;/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/&quot;&gt;Pretty Good Race course&lt;/a&gt;, and 1 mile on the CMU track. Despite taking this run slowly, I felt rather sore afterwards.&lt;/p&gt;
&lt;h3&gt;Wednesday&lt;/h3&gt;
&lt;p&gt;I decided to take a day completely off from running, and off from Luna Sandals, to give my legs and feet a rest.&lt;/p&gt;
&lt;h3&gt;Thursday&lt;/h3&gt;
&lt;p&gt;I ran 5 miles in Frick Park.&lt;/p&gt;
&lt;h3&gt;Friday&lt;/h3&gt;
&lt;p&gt;I did the annual &lt;a href=&quot;/blog/2013/04/19/going-out-too-fast-yet-again-in-my-third-random-distance-run/&quot;&gt;Random Distance Run&lt;/a&gt;. By this time, I was quite looking forward to getting Saturday&apos;s run over with and then resting on Sunday.&lt;/p&gt;
&lt;h1&gt;11-mile run&lt;/h1&gt;
&lt;p&gt;I decided to make the Saturday run a kind of dress rehearsal for the marathon. I would wake up at approximately the same time, and dress and eat as though running the marathon, and run at marathon pace, and the only difference would be that I would do 11 miles, not 26.2.&lt;/p&gt;
&lt;p&gt;So I ate some salted, boiled potatoes for breakfast, and took a gel pack to eat right before the run, and planned to take a gel during the run also.&lt;/p&gt;
&lt;p&gt;It was really cold yet again (temperature below 40F, and I saw some stray snowflakes), even colder than last week, so I substituted a short-sleeve T-shirt and shell and long pants in place of the long-sleeve T-shirt and shorts I wore last Saturday. I still had the glove liners and hat, of course.&lt;/p&gt;
&lt;p&gt;I wore, for the first time, my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cepcompression.com/1922-Allsports-Sleeves.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cepcompression.com/1922-Allsports-Sleeves.aspx&quot;&amp;gt;calf sleeves&amp;lt;/span&amp;gt; that had just arrived, and that I plan to wear during the marathon:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/cep-compression-calf-sleeves.jpg&quot; alt=&quot;CEP Compression calf sleeves&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Moment of silence for Boston&lt;/h2&gt;
&lt;p&gt;The whole week has been very weird for me because the &lt;a href=&quot;/blog/2013/04/15/boston-marathon-tragedy-please-avoid-the-news-porn/&quot;&gt;Boston Marathon bombing on Monday has been on my mind&lt;/a&gt;; I did what I could to avoid media coverage of the hunt for the bombers. It turned out that just last night, they caught the remaining official suspect, so that brought a little closure to the whole thing.&lt;/p&gt;
&lt;p&gt;The training run was preceded by a moment of silence for Boston as well as updates on changes to the Pittsburgh Marathon setup for increased security.&lt;/p&gt;
&lt;p&gt;For this run, I wore blue as well as a &lt;a href=&quot;https://web.archive.org/web/20201111235842/https://races2remember.com/PrintBib.php?bib=BOSTON2013&quot;&gt;&quot;We are all Boston Marathoners at heart&quot; bib&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/boston-marathoners-at-heart.jpg&quot; alt=&quot;We are all Boston Marathoners at heart&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/start.jpg&quot; alt=&quot;Waiting to start run&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I intended to try to follow a 9-minute pace group.&lt;/p&gt;
&lt;p&gt;It turned out that the group went out pretty fast. I could not tell whether it felt fast because it really &lt;em&gt;was&lt;/em&gt; faster than 9-minute pace, or because I was so fatigued from my week of training.&lt;/p&gt;
&lt;p&gt;At some point, I did speed up (as I usually seem to do in my runs, starting out slowly before I&apos;m all warmed up and ready to go faster). Then the problem was that I didn&apos;t know what the route was exactly, once I started passing people! Yes, I got the printed map right before the run, but that&apos;s never a great time for me to study and memorize the map, and I hate pulling out the map while running.&lt;/p&gt;
&lt;h3&gt;Getting &quot;lost&quot;&lt;/h3&gt;
&lt;p&gt;At one point when we reached downtown again in Pittsburgh, and we were supposed to eventually cross over north, I asked some runners around me what the route was, and unfortunately, one guy made some assumption and we followed him. Later I learned he made the wrong assumption. In fact, since I ran past him and was following some other people ahead of me, I got myself into more trouble. At one point, I saw someone behind me go right, while the guy ahead of me by a block kept going straight. I immediately smelled that the guy was &lt;em&gt;not part of our group&lt;/em&gt; (lots of people were out running, I could tell), and sure enough, I looked back and everyone was taking a shortcut through someone&apos;s back yard to get back to Liberty Avenue and cross the 16th Street Bridge, and so I backtracked and followed.&lt;/p&gt;
&lt;p&gt;By that time, I was tired and demoralized by all the weird twists and turns the route had become after having reached downtown earlier, and now that I knew where I was, I just slowed down and didn&apos;t bother to catch up to any pack again, and took some photos:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/bridge.jpg&quot; alt=&quot;View from Sixteenth Street Bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/16th-street-bridge.jpg&quot; alt=&quot;Crossing Sixteenth Street Bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I don&apos;t really know how far I ran or how fast. It just seemed really intense to me.&lt;/p&gt;
&lt;h2&gt;After the run&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/after.jpg&quot; alt=&quot;After run&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After the run, I ate two bananas and some cookies and went inside to stretch and inspect the damage.&lt;/p&gt;
&lt;h3&gt;Feet&lt;/h3&gt;
&lt;p&gt;My Luna Sandals:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/luna-venado.jpg&quot; alt=&quot;Luna Venado&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Tops of feet&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/feet.jpg&quot; alt=&quot;Feet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My right foot felt OK, despite some indentations from tight laces:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/right.jpg&quot; alt=&quot;Right foot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But my left foot took a lot of damage, with skin scraped and some blood; the problem was that the strap had been loose, but I had neglected to stop and tighten and readjust it, and as a result, it shifted around and therefore chafed me:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/left.jpg&quot; alt=&quot;Left foot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was good to learn this lesson once and for all: I will be more careful in the future to make sure the laces are tight enough, and also not ignore sensations of chafing, and take the time to stop and readjust if I really have to. I could not have run a full marathon with my left foot being chafed in this fashion for the whole distance.&lt;/p&gt;
&lt;h4&gt;Soles of feet&lt;/h4&gt;
&lt;p&gt;My soles revealed some developing problems from the entire week.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/soles.jpg&quot; alt=&quot;Soles of feet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My left sole was basically OK, despite some dry skin that I should really deal with, but my right sole had more serious dry and cracking skin problems. In particular, near my big toe, there was a noticeable crack that caused me discomfort with every step:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrr-2013-04-20/right-sole.jpg&quot; alt=&quot;Right sole of foot&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Calves&lt;/h3&gt;
&lt;p&gt;I believe the calf sleeves did help me, even in just an 11-miler. They were not obtrusive at all as I wore them.&lt;/p&gt;
&lt;h3&gt;Knee&lt;/h3&gt;
&lt;p&gt;Later in the afternoon at home, I noticed that I had developed a debilitating left knee problem. I have no idea what exactly caused it, but the general overtraining had clearly caught up to me. When I put weight on my left leg at certain angles, the pain is excruciating. This particular happens when I go down the stairs. On the other hand, I can control whether I feel pain, by stepping very carefully. Something is loose and out of alignment, clearly. This has happened to me before, so I&apos;m not as worried as I could be, but just two weeks away from the marathon, it is not good news.&lt;/p&gt;
&lt;h2&gt;Recovery plans?&lt;/h2&gt;
&lt;p&gt;My left knee is my highest priority right now. I am immediately taking a break from running. I will take tomorrow off, and possibly Monday as well. I will do whatever it takes to get the knee all good again, because there is no way I would even go to the start line of the marathon with the knee being as it is today!&lt;/p&gt;
&lt;p&gt;I really need to fix my feet, and especially the right one. I really dried out my feet by wearing the Luna Sandals exclusively for running (and almost exclusively for walking) in the past week. So I&apos;m putting lotion on my feet and deciding to wear socks and cushioned shoes for a while. There&apos;s more I&apos;m going to have to do for my feet also. I&apos;ve never in my life had this dry skin problem before on my feet, because in the past when it&apos;s been cold and dry, I&apos;ve always worn socks and closed toe shoes, whether of the usual monotoed variety or Vibram FiveFingers. I&apos;ve never had my feet so exposed before. Especially, running in temperatures of the 30s with huaraches seemed to cause some of my problems.&lt;/p&gt;
&lt;p&gt;Finally, the next two weeks really are supposed to be tapering for me. I will be running easy and short and slow for the most part, just to maintain some fitness, but do not plan on doing any super hard workouts any more. We all know that the body takes about two weeks to adapt to any training, and so no hard training I do now will have an effect on my performance in the marathon.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I yet again pushed myself to the edge and overtrained, and have some real knee and feet problems to solve as quickly as possible. I am so ready to dial down the training and get the marathon over with. I don&apos;t want to sound pessimistic or depressed, but that&apos;s the reality of how I&apos;m feeling at this moment. I hope that within the next couple of days, I&apos;ll have recovered from this low point.&lt;/p&gt;
</content:encoded></item><item><title>Going out too fast yet again in my third Random Distance Run</title><link>https://franklinchen.com/blog/2013/04/19/going-out-too-fast-yet-again-in-my-third-random-distance-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/19/going-out-too-fast-yet-again-in-my-third-random-distance-run/</guid><pubDate>Sat, 20 Apr 2013 02:38:23 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/random-distance-run-2013.jpg&quot; alt=&quot;CMU Random Distance Run 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For the third time, I ran in the annual &lt;a href=&quot;https://www.cs.cmu.edu/~RDR/&quot;&gt;Random Distance Run&lt;/a&gt; held on the 400m outdoor track at Carnegie Mellon University. It was a cold, rainy Friday afternoon.&lt;/p&gt;
&lt;p&gt;This was also my first race ever while wearing my Luna Sandals (the 7mm Venado).&lt;/p&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;The Random Distance Run first came to CMU &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/~RDR/results-2003.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/~RDR/results-2003.html&quot;&amp;gt;in 2003&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;The concept is very geeky. What happens is that a giant pair of six-sided dice are rolled, and the sum of the rolls is how many laps you have to run around the track: so the minimum number of total laps is 2 (800m) and the maximum is 12 (4.8K).&lt;/p&gt;
&lt;p&gt;The catch is that &lt;em&gt;only one die&lt;/em&gt; is rolled before the race begins, and then the second die is rolled only when the fastest runner is about to finish the number of laps from the first die. The second die indicates how many more laps to run.&lt;/p&gt;
&lt;p&gt;Therefore, there is an element of luck to who the winner of the race is: someone who went out very fast and then got lucky with a roll of a 1 for the second die could conceivably beat someone who was a fitter runner but went out conservatively for the first die and then found it too late to sprint for an additional lap.&lt;/p&gt;
&lt;p&gt;Since I am not a very fast runner, these gambles don&apos;t really apply to me: my most rational strategy (to avoid a lot of suffering while avoiding going much too slow) would seem to be to run at a pace that is correct for the number of laps for the first die plus 3, or something like that.&lt;/p&gt;
&lt;h2&gt;My first Random Distance Run (2003)&lt;/h2&gt;
&lt;p&gt;However, in my first Random Distance Run, ten years ago, I accidentally went out too fast even given my intent. Not normally running on a track, I have always found it hard to gauge my pace accurately.&lt;/p&gt;
&lt;p&gt;The rolls were 4 and 2, for a total of 6 laps (2.4K).&lt;/p&gt;
&lt;p&gt;For the first die, I went out too fast in the first lap, then tried to slow down to a sustainable pace:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:22.34&lt;/li&gt;
&lt;li&gt;1:38.67&lt;/li&gt;
&lt;li&gt;1:43.68&lt;/li&gt;
&lt;li&gt;1:42.63&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the second die was low, I sped back up to complete the final two laps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:37.22&lt;/li&gt;
&lt;li&gt;1:33.07&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The winner of the 2003 Random Distance Run did in fact gamble for the win, shooting out really fast for the first 4 laps, and the gamble paid off, as you can see in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/~RDR/results-2003.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/~RDR/results-2003.html&quot;&amp;gt;results&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;h2&gt;My second Random Distance Run (2006)&lt;/h2&gt;
&lt;p&gt;In &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/~RDR/results-2006.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/~RDR/results-2006.html&quot;&amp;gt;2006&amp;lt;/span&amp;gt;, the rolls were 6 and 5, for a total of 11 laps (4.4K). I still went out too fast in the first lap, but did slow down enough to not completely die.&lt;/p&gt;
&lt;p&gt;First die:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:32.08&lt;/li&gt;
&lt;li&gt;1:42.27&lt;/li&gt;
&lt;li&gt;1:43.90&lt;/li&gt;
&lt;li&gt;1:45.82&lt;/li&gt;
&lt;li&gt;1:44.93&lt;/li&gt;
&lt;li&gt;1:50.55&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Second die:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:50.41&lt;/li&gt;
&lt;li&gt;1:53.89&lt;/li&gt;
&lt;li&gt;1:54.57&lt;/li&gt;
&lt;li&gt;1:51.49&lt;/li&gt;
&lt;li&gt;1:42.85&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The winner in this year, Arjun, scored partially because he was a fast-improving runner who was not known among the favorites who were in the race. They didn&apos;t know who he was and let him go ahead thinking he would die, but he was strong and they couldn&apos;t catch up in the second half! I still remember them at the end of the race basically asking, &quot;Who is this guy?&quot;&lt;/p&gt;
&lt;h2&gt;My third Random Distance Run (2013)&lt;/h2&gt;
&lt;p&gt;Again, this year, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/~RDR/results-2013.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/~RDR/results-2013.html&quot;&amp;gt;2013&amp;lt;/span&amp;gt;, I had no real track training. Furthermore, I am nowhere as fit as I was seven or ten years ago, and in addition, ran the race as part of a very tough final training week for the Pittsburgh Marathon, so this race was just for fun.&lt;/p&gt;
&lt;p&gt;Worst of all, I had eaten a rather large, heavy lunch, thanks to the annual CMU Carnival BBQ:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cmu-carnival-bbq-2013.jpg&quot; alt=&quot;CMU Carnival BBQ 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Not the kind of food I eat every day, and certain not just before a serious race!&lt;/p&gt;
&lt;p&gt;It was 3 and 3 for a total of 6 laps (2.4K).&lt;/p&gt;
&lt;p&gt;I went out too fast, then deliberately slowed down. Actually, I ended up slowing down too much, because in the final lap I sped up and had more left than I gave. I did put in a silly ferocious finishing sprint that resulted in beating two runners ahead of me by almost four seconds.&lt;/p&gt;
&lt;p&gt;First die:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:36&lt;/li&gt;
&lt;li&gt;1:48&lt;/li&gt;
&lt;li&gt;1:51&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Second die:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:55&lt;/li&gt;
&lt;li&gt;1:54&lt;/li&gt;
&lt;li&gt;1:44&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Amusingly, the runner I beat at the end was the same one I ended up beating near the end of the &lt;a href=&quot;/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/&quot;&gt;Pretty Good Race&lt;/a&gt; last year. I hadn&apos;t actually realized during the race that it was her again that was my target.&lt;/p&gt;
&lt;p&gt;My legs felt banged up after the race, from not only the cumulative fatigue of my marathon training for the week, but also because of that sprint I did. It was probably unwise of me to have thrown that in there, given that tomorrow morning I am scheduled to do a tough training run.&lt;/p&gt;
&lt;h2&gt;Cool T-shirt&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/random-distance-run-2013-t-shirt-front.jpg&quot; alt=&quot;CMU Random Distance Run 2013 T-shirt front&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/random-distance-run-2013-t-shirt-back.jpg&quot; alt=&quot;CMU Random Distance Run 2013 T-shirt back&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed returning to doing the annual CMU Random Distance Run. Unfortunately, I&apos;ve run it poorly each year that I&apos;ve done it, going out too fast. I plan to run this race again next year but actually do some preparation ahead of time in order to figure out how to run consistently on the track amidst the mayhem of slow and fast and lapped runners. I guess I&apos;ll need to watch what I eat on the day of the race, as well.&lt;/p&gt;
</content:encoded></item><item><title>Commuting on foot during CMU Carnival week as cross-training for the Pittsburgh Marathon</title><link>https://franklinchen.com/blog/2013/04/19/commuting-on-foot-during-cmu-carnival-week-as-cross-training-for-the-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/19/commuting-on-foot-during-cmu-carnival-week-as-cross-training-for-the-pittsburgh-marathon/</guid><pubDate>Sat, 20 Apr 2013 02:10:14 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Last year, I reported on deciding to &lt;a href=&quot;/blog/2012/04/16/one-week-of-commuting-on-foot-because-of-cmu-carnival/&quot;&gt;walk to work and back home during CMU Carnival week in order to avoid the hassles of parking on campus&lt;/a&gt;. This year, I decided to do this again, but with a twist.&lt;/p&gt;
&lt;p&gt;I considered my commute to be a deliberate part of cross-training for the Pittsburgh Marathon.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/schenley-drive-carnival-week-2013.jpg&quot; alt=&quot;Walking on Schenley Drive during CMU Carnival week 2013&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;2YjLH7SIHaQ&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why walk instead of run?&lt;/h2&gt;
&lt;p&gt;You might think that I would just run to work and back home, but the logistics were too complicated because of clothing, laptop, and other issues. I ran in to work this week just one time; otherwise, I walked.&lt;/p&gt;
&lt;p&gt;More important, I feel that walking is greatly underrated as a fitness activity. Here is one of many recent articles, for example, reporting that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.theatlantic.com/health/archive/2013/04/study-walking-can-be-as-good-as-running/274738/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.theatlantic.com/health/archive/2013/04/study-walking-can-be-as-good-as-running/274738/&quot;&amp;gt;walking has many underrated health benefits&amp;lt;/span&amp;gt;. Unfortunately, I think the tone of this article is part of the problem: the title is &quot;Study: walking can be as good as running&quot;, which is just sensationalist drivel. I don&apos;t see walking and running as competitors at all. They are just two different activities, with different benefits, really. High-intensity running, for example, does a lot that walking does not do. But walking is less stressful, is slower, takes more time to cover a particular distance, is more meditative and in many cases more sociable (since running paces differ more than walking paces). Both are great.&lt;/p&gt;
&lt;h2&gt;Total mileage&lt;/h2&gt;
&lt;p&gt;I ended up walking about 12 miles total more than I normally walk during the week. Note that this is less than the total of the distances between home and office because when I drive in to work, I have to walk the distance between the parking lot and the office.&lt;/p&gt;
&lt;h2&gt;Footwear: concerns over the Luna Sandals&lt;/h2&gt;
&lt;p&gt;I took the opportunity to put more mileage onto my Luna Sandals, which I&apos;ve been wearing for all my running in recent weeks. I figured that the more time I spend on these minimalist sandals, the more prepared I will be for the sustained impact of running the whole Pittsburgh Marathon in them. Also, I needed more time to get used to the lacing system.&lt;/p&gt;
&lt;p&gt;It turned out that the extra 12 miles on my feet really made a difference in how much more stress on my feet I felt during this training week: not just soreness in my soles, but also some issues with drying, cracking skin.&lt;/p&gt;
&lt;h3&gt;Cushioned shoes&lt;/h3&gt;
&lt;p&gt;After yesterday, I decided I needed a break from all the walking, and so on Friday, I drove to work, parking on Circuit Road, and walking less than half a mile to my office from there, and in my &lt;a href=&quot;https://www.amazon.com/Rockport-Mens-Westshire-Oxford-Black/dp/B000VRUX54&quot;&gt;Rockport Westshire casual shoes&lt;/a&gt; rather than any minimalist shoes! I did this especially because of the &lt;a href=&quot;/blog/2013/04/19/going-out-too-fast-yet-again-in-my-third-random-distance-run/&quot;&gt;Random Distance Run I did in my Luna Sandals&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The Mono&lt;/h3&gt;
&lt;p&gt;I also finally decided to order a pair of thicker Luna Sandals, the new &lt;a href=&quot;https://www.lunasandals.com/products/37-mono&quot;&gt;Mono&lt;/a&gt;, which are 12 mm thick rather than the 7 mm of the Venado I&apos;m currently wearing:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s3.amazonaws.com/lunastore/images/279/full.jpg?1357775828&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s3.amazonaws.com/lunastore/images/279/full.jpg?1357775828&quot;&amp;gt;[image: Luna Sandals, Mono]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a review of these huaraches on &lt;a href=&quot;https://birthdayshoes.com/luna-mono-huaraches-barefoot-sandals-review&quot;&gt;Birthday Shoes&lt;/a&gt;. I will almost certainly &lt;em&gt;not&lt;/em&gt; be receiving these huaraches in time to break in and use in the Pittsburgh Marathon, but I expect to use them this summer for walking around in and longer runs.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was unexpected to me how much more fat burning and soreness for my feet the extra 12 miles of walking this week gave me. I had to eat more just to maintain my weight, and I was so ready to take a break from minimalist shoes. I did decide to order a thicker running sandal for future running and walking.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh OvreArts concert &quot;Art songs and interludes&quot;</title><link>https://franklinchen.com/blog/2013/04/18/pittsburgh-ovrearts-concert-art-songs-and-interludes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/18/pittsburgh-ovrearts-concert-art-songs-and-interludes/</guid><pubDate>Fri, 19 Apr 2013 03:30:35 GMT</pubDate><content:encoded>&lt;p&gt;I heard about a free community concert by a local Pittsburgh music group called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ovrearts.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ovrearts.org/&quot;&amp;gt;OvreArts&amp;lt;/span&amp;gt; and decided to check it out, since it promised to perform new works. Abby came along. The program was called &quot;Art songs and interludes&quot;.&lt;/p&gt;
&lt;p&gt;Here&apos;s a video prelude to the concert:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/zJOAig1fkDw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;And some words from the young composers:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/5Fma5Lv0RWQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;The concert&lt;/h2&gt;
&lt;p&gt;I have a confession to make. I&apos;m not generally so interested in songs, as opposed to purely instrumental music. So I got fatigued by the program of one short work after another.&lt;/p&gt;
&lt;p&gt;Also, much of the music had a sacred setting. Outside of that, there were love songs of a largely gentle nature.&lt;/p&gt;
&lt;p&gt;It was unusual to me to encounter music that had an &quot;old-fashioned&quot; feel to it from such young composers, but this is apparently part of the united mission of the OvreArts group. I respect their philosophical and musical convictions, but I found the program for this particular concert to be too sedate and not stimulating enough for my taste.&lt;/p&gt;
&lt;h2&gt;Other work&lt;/h2&gt;
&lt;p&gt;To be fair, I looked online to see more about previous work of OvreArts and it seems that I would have enjoyed attending a live performance of a ballet by composers of OvreArts, such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ovrearts.org/infinity-a-ballet-in-15-tableau/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ovrearts.org/infinity-a-ballet-in-15-tableau/&quot;&amp;gt;&quot;Infinity&quot;&amp;lt;/span&amp;gt;. I found this excerpt definitely stimulating:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/G-kpzKIZnmY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I will keep an eye out for new music by OvreArts composers, now that it&apos;s on my radar.&lt;/p&gt;
</content:encoded></item><item><title>Boston Marathon tragedy: please avoid the news porn</title><link>https://franklinchen.com/blog/2013/04/15/boston-marathon-tragedy-please-avoid-the-news-porn/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/15/boston-marathon-tragedy-please-avoid-the-news-porn/</guid><pubDate>Mon, 15 Apr 2013 23:49:22 GMT</pubDate><content:encoded>&lt;p&gt;Since I am a runner (and happening to be in the last stages of training for my second Pittsburgh Marathon, which is coming in less than three weeks), I woke up this morning knowing that it was Boston Marathon day. Also, by sheer coincidence, a fellow Pittsburgher I have never met but follow on Twitter happened to tweet a photo of his running gear while ready to run in Boston, and happened to mention some sock sleeves that he wears that I had never seen before, and I tweeted him for the first time in my life, and I got a reply from him after he finished, and I went and ordered a pair of these &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cepcompression.com/1922-Allsports-Sleeves.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cepcompression.com/1922-Allsports-Sleeves.aspx&quot;&amp;gt;sock sleeves online&amp;lt;/span&amp;gt;, since I have a tendency toward calf cramping in long distance races.&lt;/p&gt;
&lt;p&gt;So it was particularly eerie and somewhat personal to me when in the afternoon I heard from my office mate at work that the Boston Marathon had been bombed and people were dead and horribly injured.&lt;/p&gt;
&lt;p&gt;My first thought was, &lt;strong&gt;this is fucking insane&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My second thought was extreme anger that criminals would do such a thing, and sadness for the runners and spectators who were so victimized.&lt;/p&gt;
&lt;p&gt;My third thought was, &quot;Uh oh, here we go again: time for news porn&quot;.&lt;/p&gt;
&lt;h2&gt;9/11 and news&lt;/h2&gt;
&lt;p&gt;Because I remember &lt;a href=&quot;https://en.wikipedia.org/wiki/September_11_attacks&quot;&gt;9/11&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are some excerpts from my journal on September 11, 2001 (at this time in my life I was jotting down journal entries regularly during the waking day):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;11:12: &quot;Oh G-d!!!!!!!!!!!  The World Trade Center has been destroyed.&quot;&lt;/li&gt;
&lt;li&gt;11:36: &quot;Things will never be the same again in this country.&quot;&lt;/li&gt;
&lt;li&gt;12:11: &quot;Can&apos;t let terrorists disrupt my life.&quot;&lt;/li&gt;
&lt;li&gt;18:28: &quot;Wait, are we attacking Afghanistan??????&quot;&lt;/li&gt;
&lt;li&gt;22:14: &quot;Watched some TV footage for the first time.  Disturbing.  Especially people jumping out of the buildings.&quot;&lt;/li&gt;
&lt;li&gt;23:31: &quot;Other people on &lt;a href=&quot;https://en.wikipedia.org/wiki/Zephyr_%28protocol%29&quot;&gt;zephyr&lt;/a&gt; [an internal chat system at Carnegie Mellon University] are saying they watched more TV today than all year.  Same with me.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, during this whole time, I did immediately try to call my sister who lived and worked in New York City, and of course failed. She reached me eventually and said she was OK.&lt;/p&gt;
&lt;p&gt;But I realized something that day. I realized that I could not let relentless news porn rule my life. There was no benefit to my seeing again and again footage about the tragic terrorist attacks and all the speculations, the anger, the crying. I did not quit watching TV that evening, but did realize that I was being manipulated in a way that did not help me or help the world, really.&lt;/p&gt;
&lt;p&gt;Much later, I learned that a high school classmate of mine had died on 9/11. And a college classmate was across the street when it happened.&lt;/p&gt;
&lt;h2&gt;News&lt;/h2&gt;
&lt;p&gt;At some point, years later, I did completely quit following news. By this, I mean that I stopped watching news on TV, I stopped reading printed newspapers, and I stopped reading online news sites as well. Seriously. It has improved my life. Periodically I try to spread the message of news avoidance, having seen the damage that following news has done to some family members and friends, without noticeable benefit in return.&lt;/p&gt;
&lt;p&gt;In fact, just yesterday on Twitter I retweeted &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.guardian.co.uk/media/2013/apr/12/news-is-bad-rolf-dobelli&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.guardian.co.uk/media/2013/apr/12/news-is-bad-rolf-dobelli&quot;&amp;gt;yet another article on news avoidance&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;If you haven&apos;t done the experiment of avoiding news, your first thought might be, &quot;Franklin must be an ignoramus who doesn&apos;t care about the world or know what goes on in it&quot;. But actually, I am not completely ignorant of news: I simply have some filters. I do actively follow blogs, Twitter, Facebook, and Google+, and so I implicitly get a curated summary of whatever news is forwarded around through those channels. I see links and check the headlines, and I can choose to ignore or follow up on the news. And I selectively retweet what I find interesting and &lt;em&gt;useful&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That said, the social media has for the past couple of hours become overwhelmingly dominated by a lot of emotions over the Boston Marathon terrorist attack, so as I write this, I am imposing a complete blackout on blogs, Twitter, Facebook, and Google+.&lt;/p&gt;
&lt;h3&gt;Local&lt;/h3&gt;
&lt;p&gt;The local and federal authorities are, I presume, doing what they can to aid the victims and seek out the criminals, and following their every move would not help me be useful. If this tragedy had happened in Pittsburgh, then I would be monitoring the situation much more closely, in case I can actually be of direct aid.&lt;/p&gt;
&lt;h2&gt;Couldn&apos;t avoid TV today&lt;/h2&gt;
&lt;p&gt;Unfortunately, by coincidence, I could not avoid TV today. This evening, I was in the &lt;a href=&quot;/blog/2012/10/26/yet-another-haircut-from-joe-always-worth-the-wait/&quot;&gt;barber shop&lt;/a&gt; getting a haircut, and not only could people not refrain from commenting on the tragedy, but he also had the radio on and turned on his TV as well. I refused to look at the TV screen, but could not help repeatedly hearing about body parts being blown off, eardrums being perforated, panic, the audio clips of explosions and screaming, again and again. I remained silent and maintained my composure until my haircut was done.&lt;/p&gt;
&lt;h2&gt;A media blackout&lt;/h2&gt;
&lt;p&gt;I am taking a break from the Web overall for the rest of the evening. Last I checked my social media feeds, they are now all about the Boston Marathon attacks. I cannot help anyone by sitting in front of my computer getting all emotional and confused following all these feeds. I humbly recommend that you consider doing this also.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have not found news porn to be useful in helping me cope with tragedy or in enabling me be of aid to those who need help. Given that, I am opting out of the news frenzy.&lt;/p&gt;
</content:encoded></item><item><title>RIP Robert Byrne, American chess grandmaster and columnist who gave my childhood meaning</title><link>https://franklinchen.com/blog/2013/04/15/rip-robert-byrne/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/15/rip-robert-byrne/</guid><pubDate>Mon, 15 Apr 2013 12:50:22 GMT</pubDate><content:encoded>&lt;p&gt;I learned today that the American chess grandmaster and columnist &lt;a href=&quot;https://en.wikipedia.org/wiki/Robert_Byrne_%28chess_player%29&quot;&gt;Robert Byrne&lt;/a&gt; died last Friday, April 12, 2013.&lt;/p&gt;
&lt;p&gt;Upon hearing this news, my mind was flooded immediately with childhood memories.&lt;/p&gt;
&lt;h2&gt;The scene&lt;/h2&gt;
&lt;p&gt;I am eight years old, walking alone on a Sunday morning through the woods. I carry some pocket change given to me by my father. My task: go to a local convenience store in town to buy a copy of the New York Times to bring back home.&lt;/p&gt;
&lt;p&gt;I like the shortcut through the woods. When school is in session, I take that shortcut when I&apos;m walking alone, whether stomping through crunchy autumn leaves, shivering through slushy snow, or getting shade as the school year is ending and the sun is bright.&lt;/p&gt;
&lt;p&gt;I don&apos;t always take the shortcut, because sometimes I walk to school with a friend or two who live in another direction, and in that case we walk over frozen ponds or run up and down the grassy hill instead (where I once fell going too fast and was lifted up by some older kids and brought back home; still have the scar on my right knee today). But the shortcut is my secret. I don&apos;t tell my parents about the shortcut, because they might be worried. But it&apos;s my private time to myself.&lt;/p&gt;
&lt;h2&gt;At home&lt;/h2&gt;
&lt;p&gt;I buy the newspaper, and keep it rolled up as I return home. My father likes to read about world news. But I like to read about chess. Magically, in this huge bundle of paper there is a chess column every week, by someone named Robert Byrne. In this column, he lists the moves to some recent chess game that is interesting, with his annotations and explanations of important moves in the game, places where someone made a bad move or found a great one. There are some diagrams to help out in case one does not have a chess board at hand to play out.&lt;/p&gt;
&lt;p&gt;My job is to clip out and save the chess column so that my father can staple it into his notebook. He likes collecting these chess columns. Where else could we hear about chess news from around the country and the world?&lt;/p&gt;
&lt;p&gt;One of those days, my father gets particularly excited, because a &lt;a href=&quot;/blog/2012/08/30/why-i-do-not-play-chess-online-chess-as-a-human-activity/&quot;&gt;Chinese player beat a Westerner (a Dutchman)&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;And so I keep on following the New York Times chess column, until we move to Michigan a year later, and I lost my ritual of getting the Sunday Times for the family. No longer living in the New York City area, my father buys a subscription to a local newspaper instead; there is no chess column in this paper.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Thank you, Robert Byrne, for enriching the life of a young chess fan.&lt;/p&gt;
</content:encoded></item><item><title>My final 16-mile long run before Pittsburgh Marathon featured two radical experiments</title><link>https://franklinchen.com/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/13/my-final-16-mile-long-run-before-pittsburgh-marathon-featured-two-radical-experiments/</guid><pubDate>Sun, 14 Apr 2013 01:26:37 GMT</pubDate><content:encoded>&lt;p&gt;The Pittsburgh Marathon is just three weeks away. According to some training schedules, today&apos;s long run should be the last really long one, followed by two shorter taper runs in the next two weeks. However, because I had a late start in training, and my mileage is not all that high (I reached a &lt;em&gt;lifetime peak weekly mileage&lt;/em&gt; of &quot;only&quot; 36 last week, before coming back down for this week), I have not yet decided whether to do another really long run next week.&lt;/p&gt;
&lt;p&gt;But one thing was sure: today&apos;s &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=619966&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=4/14/2013&quot;&gt;16-mile run with the Steel City Road Runners&lt;/a&gt; was going to be important.&lt;/p&gt;
&lt;p&gt;I used this run as an opportunity to perform two radical experiments, which succeeded beyond expectation!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-valley-trail-run/trail.jpg&quot; alt=&quot;Steel Valley Trail&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The route&lt;/h2&gt;
&lt;p&gt;Today&apos;s run started at Dick&apos;s Sporting Goods in the Waterfront and was an out-and-back on the &lt;a href=&quot;https://www.traillink.com/trail/steel-valley-trail---great-allegheny-passage-.aspx&quot;&gt;Steel Valley Trail&lt;/a&gt; along the Monongahela River, crossing it to McKeesport before turning back.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://snippets.mapmycdn.com/routes/view/embedded/191220198?width=560&amp;amp;height=400&amp;amp;elevation=true&amp;amp;info=true&amp;amp;line_color=E60f0bdb&amp;amp;rgbhex=DB0B0E&amp;amp;distance_markers=1&amp;amp;unit_type=imperial&amp;amp;map_mode=TERRAIN&amp;amp;last_updated=2013-04-10T11:41:50-04:00&quot; height=&quot;590px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;Experiment one: footwear&lt;/h2&gt;
&lt;p&gt;It was on the cold, cloudy side (temperature started off below 40F and probably never reached 50F), and rather windy, but I was dressed just enough for the conditions: a long-sleeve T-shirt, shorts, glove liners, and a hat. I felt it was particularly important to wear shorts on this long run, because I expect to be wearing (these) shorts in the Pittsburgh Marathon.&lt;/p&gt;
&lt;p&gt;I&apos;ve been running exclusively in Luna Sandals since last week&apos;s long run. I am still breaking them in, but the chafing has decreased (although the scabs are old evidence of it), and the shoes are forming to my feet. I still have a problem with heel slippage on my right foot, but hope to figure that out eventually without lacing too tight.&lt;/p&gt;
&lt;p&gt;My hope has always been that I will be able to wear the Luna Sandals in the marathon itself. I have rather enjoyed running in them instead of Vibram FiveFingers, but the Luna Sandals have their own drawbacks I&apos;m working out.&lt;/p&gt;
&lt;h2&gt;Experiment two: fuel&lt;/h2&gt;
&lt;p&gt;I planned to do this run as a &quot;long, steady run&quot; rather than a &quot;fast finish long run&quot; as I did last week, but with a twist: deliberate &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mcmillanrunning.com/index.php/articlePages/article/2&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mcmillanrunning.com/index.php/articlePages/article/2&quot;&amp;gt;depletion&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I ate &lt;em&gt;no breakfast&lt;/em&gt; before the run. And I planned to &lt;em&gt;drink no Gatorade&lt;/em&gt; and &lt;em&gt;eat no GU gel&lt;/em&gt; during the run, if possible. I wanted to only drink water, and see if I experience glycogen depletion, and if so, try to run through it. The marathon is a hard event. To be ready, I want to at least partially simulate what it might feel like in the second half of a marathon.&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;I had never run on the Steel Valley Trail before, so it was a new, interesting experience. Some of it is on dirt, but most of it is asphalt. I have to confess to not being a fan of smelling fumes from plants in operation, and seeing and hearing a lot of trains up close, but it was otherwise a peaceful, continuous path, and I do like running along a river.&lt;/p&gt;
&lt;p&gt;According to plan, I started out slowly, paying no attention to the pace groups. (I am not going to follow any pace groups in the Pittsburgh Marathon either; all these group runs as well as the Just A Short Run half marathon have taught me that I should just follow my body&apos;s own rhythm).&lt;/p&gt;
&lt;h3&gt;Footwear&lt;/h3&gt;
&lt;p&gt;I was wearing Luna Sandals for the longest run ever in them; the longest run I had done up till now in them was 7.5 miles, less than half of 16! Embarrassingly, for the first mile or so, I kept on stopping to readjust the laces, because of heel slippage. I finally realized that because it was under 40F, and I had just hopped out of bed, my feet were smaller than in other runs I&apos;d done (it&apos;s been crazy warm recently until today).&lt;/p&gt;
&lt;p&gt;After a couple of miles, I was fine in the sandals for the rest of the run!&lt;/p&gt;
&lt;h3&gt;Fuel&lt;/h3&gt;
&lt;p&gt;There were two fluid stations, hence three stops (one of them being at the turnaround point). As planned, I took only water, no Gatorade. And although I carried one gel with me during the entire run, I ended up never using it.&lt;/p&gt;
&lt;h3&gt;Observations&lt;/h3&gt;
&lt;p&gt;My first observation was how &quot;clean&quot; I felt, mentally and physically, running without breakfast and with no fuel in my stomach. Of course, I believe that in the actual marathon I will need fuel, and I will need it regularly, in order to prepare for the final miles, but this was the &lt;em&gt;first time&lt;/em&gt; in my entire life that I had run as far as 16 miles without any prior breakfast or fuel during the run! It was confidence-boosting to me that for at least 16 miles, I could run without external aid, and just rely mainly on fat-burning rather than pumping in carbs. I did start feeling hungry in the second half of the run, and when I finished the run realized I was quite hungry, of course.&lt;/p&gt;
&lt;p&gt;Furthermore, my feet were just fine in the Luna Sandals. Apart from starting off pretty cold, and encountering surprisingly annoying particles that got between my feet and the soles during the dirt sections of the trail, I got no blisters, chafing was minimal, and my knees and toes and hips felt, after the run, better than they had ever felt after a run of this distance. I felt a bit tight, but &lt;em&gt;not crampy yet&lt;/em&gt;. That was a pleasant surprise.&lt;/p&gt;
&lt;p&gt;So I will keep on refining my use of the Luna Sandals, but I fully expect, after this experience, that I will run the Pittsburgh Marathon in these sandals!&lt;/p&gt;
&lt;p&gt;The lack of cushioning is a virtue of these minimalist sandals, I believe: being less cushioned than the Bikila LS, I can better feel if my form is poor, because then I feel jarring impact. And I can also feel when I make subtle form adjustments, which the minimal sole enable me to make at all (in the Bikila LS shoes, I feel they induce too much lateral motion sometimes). The feedback cycle enables me to refine my form constantly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-valley-trail-run/luna-sandals-feet.jpg&quot; alt=&quot;Wearing Luna Sandals&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Speed&lt;/h3&gt;
&lt;p&gt;I timed myself on this run, but without calculating any pace during the run itself: I only made note of the start time, turnaround time, and end time.&lt;/p&gt;
&lt;p&gt;In the first half, when I started really slow (and had to stop to adjust my laces), but then picked it up naturally, I ran 8 miles in 1:15, or 9:23 pace. That&apos;s actually faster than I thought I was going. I did not want to go too fast, since this was not supposed to be a fast run.&lt;/p&gt;
&lt;p&gt;In the second half, I did pick it up, because I was feeling good, and decided to try to find a &quot;natural&quot; faster pace in order to see what I might comfortably do as actual marathon pace. I finished the last 8 miles in 1:12, which is exactly 9:00 pace.&lt;/p&gt;
&lt;p&gt;That translates to a marathon finish time of 3:56, which I&apos;d be completely happy with. So I think it may be realistic after all, despite my abbreviated training season (I really wish I had an additional month, actually, to doing a couple more 16 mile runs), to aim to go under 4:00. I will decide during my final tapering week what my actual plan is for marathon day.&lt;/p&gt;
&lt;h2&gt;Recovery&lt;/h2&gt;
&lt;p&gt;I went home and immediately slurped down a planned snack, before eating more food. My first snack was potatoes I had boiled earlier, along with some garlic salt:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steel-valley-trail-run/potatoes.jpg&quot; alt=&quot;Boiled potatoes with garlic salt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Boiled potatoes go down really well for me. That gives me an idea: on marathon day I will carb-load with potatoes for breakfast, and maybe even bring a potato to the start line to eat before the gun goes off. Despite my fuel-less experiment succeeding for 16 miles, I have every intention of somehow packing in the fuel before marathon day. I need to figure out a plan to top off the fuel without upsetting my stomach.&lt;/p&gt;
&lt;p&gt;This week I had lower total mileage than last week; I&apos;m down from 36 to 31. I hope to ramp it back up for the coming training week.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My two experiments during the 16-mile run gave me increased confidence in my footwear and fueling plans and robustness. I will continue to do some fasting, fuel-less runs as well as wear the Luna Sandals.&lt;/p&gt;
</content:encoded></item><item><title>Singing and playing tango and jazz at an unexpected music party</title><link>https://franklinchen.com/blog/2013/04/12/singing-and-playing-tango-and-jazz-at-an-unexpected-music-party/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/12/singing-and-playing-tango-and-jazz-at-an-unexpected-music-party/</guid><pubDate>Sat, 13 Apr 2013 03:20:59 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/bob-party-2013-04-12/henry-franklin.jpg&quot; alt=&quot;Henry and Franklin performing El Choclo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I suddenly got email from Henry on a Friday afternoon while I was at work. He invited me to join him at some guy&apos;s party in the evening to play some tangos, since the party was going to have an &quot;Argentina&quot; theme. My first thought was that Abby was not going to be able to go, and I myself had made plans to rest up before my very important training run Saturday morning for the Pittsburgh Marathon, but the opportunity to meet some new musicians and other people, and express my love for passionate tango music, made me decide, after consulting with Abby, to attend the party.&lt;/p&gt;
&lt;p&gt;The good news was that I had done some tango music earlier, so there was some reuse possible. Last year, I had finally worked up the courage to do some singing, and rather enjoyed singing classic traditional tango in particular, such as &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;&quot;Por una Cabeza&quot;&lt;/a&gt;. And this year, I had finally given a shot at playing &lt;a href=&quot;/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/&quot;&gt;tango on flute&lt;/a&gt;, playing both &quot;El Choclo&quot; as well as &quot;Por una Cabeza&quot; (as a flute-violin duet).&lt;/p&gt;
&lt;p&gt;The bad news was that someone else was already going to play &quot;Por una Cabeza&quot; on violin, so that left me with only one other tango I had played with Henry before, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://joanveronica.hubpages.com/hub/The-Tango-La-Cumparsita-El-Choclo-and-Mi-Buenos-Aires-Querido&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://joanveronica.hubpages.com/hub/The-Tango-La-Cumparsita-El-Choclo-and-Mi-Buenos-Aires-Querido&quot;&amp;gt;&quot;El Choclo&quot;&amp;lt;/span&amp;gt;, whose contrasts of staccato/legato and minor/major, with a lot of room for rubato and ornamental bravado quite appeal to me.. I wanted a tango to sing, and by sheer coincidence, I knew exactly which tango I always wanted to sing, but had only half-sung it to myself in private: this was &lt;a href=&quot;https://web.archive.org/web/20150916120509/http://joanveronica.hubpages.com/hub/Outstanding-Tango-selection-Mi-Buenos-Aires-Querido-Uno-and-Caminito&quot;&gt;&quot;Uno&quot;&lt;/a&gt;, by &lt;a href=&quot;https://en.wikipedia.org/wiki/Mariano_Mores&quot;&gt;Mariano Mores&lt;/a&gt; from 1943.&lt;/p&gt;
&lt;h2&gt;Uno&lt;/h2&gt;
&lt;p&gt;By coincidence, only a couple of days ago, the Spanish actress/singer &lt;a href=&quot;https://en.wikipedia.org/wiki/Sara_Montiel&quot;&gt;Sara Montiel&lt;/a&gt; died, and in her memory I rewatched and &lt;a href=&quot;https://plus.google.com/100967806642012078047/posts/6xV5iasmXxj&quot;&gt;reposted&lt;/a&gt; a video clip of her singing &quot;Uno&quot; in a film:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;5Z7rHztinaM&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I believe that I first came across &quot;Uno&quot; by accident when some years ago I found Montiel&apos;s performance while searching for other tangos. In any case, it was love at first hearing, and made it to my list of tangos I wanted to sing some day. I&apos;d put off this project for some good reasons, but today I decided I wanted to give it a shot!&lt;/p&gt;
&lt;p&gt;So I hastily found a score, printed out the lyrics, and after eating dinner at home after work, and just an hour or so before the party, I worked on being able to sing the Spanish lyrics without completely stumbling over myself. Most songs in Spanish I can sing with no problem, but &quot;Uno&quot; features a huge number of words in the lyrics, which means there are considerable challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pronouncing Spanish at basically spoken speed (I&apos;m not that fluent yet)&lt;/li&gt;
&lt;li&gt;breaking up the words into logical and emotional groupings at speed&lt;/li&gt;
&lt;li&gt;singing Spanish in the face of many, many instances of word pairs with vowels in between&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I knew I wasn&apos;t going to get everything perfect in time in less than half an hour of determining where to break things up and where to link things, and actually doing this fluently, so I was nervous, but I&apos;ve learned that when it comes to music, perfect technique is not the most important thing; I felt I could reasonably well convey the emotional content of this song despite imperfections.&lt;/p&gt;
&lt;h2&gt;The party&lt;/h2&gt;
&lt;p&gt;It was a great party, with food, music, and conversation, and I was excited to meet a whole bunch of new people of all ages. I hope the next time Bob and his wife host another music party, Abby will be able to attend too!&lt;/p&gt;
&lt;p&gt;Before the musical part of the party began, Henry and I spent about five minutes in the basement, with him on the upright piano down there, and me singing, trying to read through &quot;Uno&quot; together so that it would be at least halfway presentable.&lt;/p&gt;
&lt;p&gt;We performed &quot;El Choclo&quot; and &quot;Uno&quot; near the end of the program (since we were last minute additions that didn&apos;t make it onto the printed program). I was physically shaking while doing both of them, because I was in front of a completely new crowd of people and just wasn&apos;t as prepared as I would have preferred. But it was a friendly crowd, and the audience seemed to enjoy our music-making. I was happy to have contributed something to the &quot;Argentina&quot; theme with some authentic Golden Age tango music.&lt;/p&gt;
&lt;p&gt;What was really enjoyable about this music party was that so many of the guests participated in performing something: young and old, amateur and professional. This welcoming atmosphere was wonderful.&lt;/p&gt;
&lt;h2&gt;Jazz, improvisation&lt;/h2&gt;
&lt;p&gt;After the official music program ended, some people continued to jam. This guy I met, Keith, was particularly interesting to me, as he is a wind player, and played both soprano saxophone and flute on the program, and then after the program, was doing jazz standards on alto saxophone. I was so inspired by this that I decided I wanted to do some jazz also. I bring a little binder of music nowadays when I go to musical parties, just in case, and happened to have on me &lt;a href=&quot;https://www.jazzstandards.com/compositions-0/sweetlorraine.htm&quot;&gt;&quot;Sweet Lorraine&quot;&lt;/a&gt;, which I had never played before other than to myself with a CD track. So I got Henry to the piano so that we could just go for it and improvise to the chord changes. We totally got into it and I really enjoyed the jamming. I really enjoy nothing more than improvisation, and appreciate that Henry is game for doing this with me, as when we were doing it with Latin jazz (bolero and cha cha) &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;last month&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had tremendous fun attending Bob&apos;s party, seeing so many people sing or play an instrument, all of us sharing our love of music together. I was very inspired by everyone who contributed something of their unique soul there, and I feel like this is what life is all about.&lt;/p&gt;
</content:encoded></item><item><title>My Pittsburgh Scala Meetup talk on property-based testing using ScalaCheck</title><link>https://franklinchen.com/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/</guid><pubDate>Fri, 12 Apr 2013 02:49:30 GMT</pubDate><content:encoded>&lt;p&gt;Tonight was the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/108080782/&quot;&gt;third meeting&lt;/a&gt; of the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt;. Our last meeting was &lt;a href=&quot;/blog/2013/02/21/the-second-meeting-of-the-pittsburgh-scala-meetup-josh-suereth-on-functional-patterns-for-the-asynchronous-web/&quot;&gt;in late February&lt;/a&gt;, and we didn&apos;t have a meeting in March.&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;This time there were only six of us in attendance, but that had its advantages, as it resulted in everyone really participating fully in discussion.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;I gave a presentation &quot;Beyond xUnit example-based testing: property-based testing with ScalaCheck&quot; as an introduction to property-based testing, with examples using &lt;a href=&quot;https://www.scalacheck.org/&quot;&gt;ScalaCheck&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I prepared the presentation with the goal of spreading the word on property-based testing as a complement to much more widely used methods of testing in the TDD/BDD software development communities. My impression has been that outside of the functional programming communities such as those in Haskell (the pioneer of &lt;a href=&quot;https://en.wikipedia.org/wiki/QuickCheck&quot;&gt;QuickCheck&lt;/a&gt;), ML, and Haskell, there has not been as much use of property-based methods of design and testing. Fortunately, this has been changing.&lt;/p&gt;
&lt;p&gt;In any case, I personally can no longer imagine not starting out design exploration without using ScalaCheck on Scala or Java based projects. It&apos;s a useful additional tool for the developer&apos;s toolkit.&lt;/p&gt;
&lt;h3&gt;Slides and code&lt;/h3&gt;
&lt;p&gt;My slides are available &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.slideshare.net/FranklinChen/handout-18644963&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.slideshare.net/FranklinChen/handout-18644963&quot;&amp;gt;on slideshare&amp;lt;/span&amp;gt;, and a full SBT project of the code is &lt;a href=&quot;https://github.com/franklinchen/talk-on-scalacheck&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that the slides are not in any way a substitute for the actual talk and the questions and answers and discussion during and after it! They are most useful as memory joggers for those who actually attended the presentation. A set of slides is nothing resembling a technical article or a blog post.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/18644963&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen/handout-18644963&quot; title=&quot;Beyond xUnit example-based testing: property-based testing with ScalaCheck&quot; target=&quot;_blank&quot;&amp;gt;Beyond xUnit example-based testing: property-based testing with ScalaCheck&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/FranklinChen&quot; target=&quot;_blank&quot;&amp;gt;Franklin Chen&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;Out of some questions during the talk, we came up with an idea for improving ScalaCheck that might be an interesting group project to work on.&lt;/p&gt;
&lt;p&gt;There was also more general discussion of using Scala, upcoming and ongoing local Pittsburgh general tech gatherings, Josh filling us in on developments in the Scala world, and ideas for future presentations.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was a small gathering, but I enjoyed presenting on property-based testing, and we had some really good discussions. Another meeting for the Pittsburgh Scala Meetup has already been &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/112652112/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.meetup.com/Pittsburgh-Scala-Meetup/events/112652112/&quot;&amp;gt;scheduled for May&amp;lt;/span&amp;gt;.&lt;/p&gt;
</content:encoded></item><item><title>My first interval workout before the Pittsburgh Marathon</title><link>https://franklinchen.com/blog/2013/04/09/my-first-interval-workout-before-the-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/09/my-first-interval-workout-before-the-pittsburgh-marathon/</guid><pubDate>Wed, 10 Apr 2013 00:41:57 GMT</pubDate><content:encoded>&lt;p&gt;There&apos;s less than one month less before the Pittsburgh Marathon, yet I have done no interval training for it until today. In ordinary circumstances, I would have been doing weekly interval training for some time now, but I had a late start with training in the winter, and so I simply have not felt ready for hard interval training until this week! Up till now, I have simply been scrambling to increase mileage and survive the long runs without injury and burnout, and this has been challenging enough: last week, I was fortunate to &lt;a href=&quot;/blog/2013/04/06/comeback-from-pittsburgh-marathon-overtraining/&quot;&gt;bounce back from clear overtraining&lt;/a&gt;. But now I&apos;m actually starting to feel strong, so it&apos;s time to sharpen up with interval training.&lt;/p&gt;
&lt;h2&gt;Why interval training?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Interval_training&quot;&gt;Interval training&lt;/a&gt; is well-known from research to be extremely beneficial for improving performance at distance running. It builds the body as well as the mind.&lt;/p&gt;
&lt;h2&gt;My workout&lt;/h2&gt;
&lt;p&gt;A decade ago, I used to do interval training on the &lt;a href=&quot;https://athletics.cmu.edu/facilities/gesling&quot;&gt;CMU track of Gesling Stadium&lt;/a&gt;, but I never really liked running around a synthetic track. There are other options, of course. I have good memories of running around the 1K dirt track (not the synthetic 400m track) at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghparks.org/schenley-sports&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghparks.org/schenley-sports&quot;&amp;gt;oval in Schenley Park&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;But nowadays, I find that the most convenient place for interval training is a trail loop near home in Frick Park that just happens to be very close to 800m in length. The drawback, of course, is that the length of this loop means I can only do intervals of multiples of 800m. Unfortunately, I prefer doing 1200m long intervals, while I find 1600m to be on the brutal side for an interval workout. But 800m will do for my first interval workout of the year!&lt;/p&gt;
&lt;p&gt;I ended up doing 6x800. Oh, and it turned out to be a heat training workout too, because it suddenly got very warm, like summer already. I really hope that it cools down quickly and stays cool for the Pittsburgh Marathon! I don&apos;t want summer conditions to come until &lt;em&gt;after&lt;/em&gt; the marathon.&lt;/p&gt;
&lt;p&gt;After 15 minutes of easy running, I launched into the intervals.&lt;/p&gt;
&lt;p&gt;Purely by subjective feel, I ended up running these intervals in an average of about 3:37 each, with 1:50 timed recovery:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3:38, 1:54&lt;/li&gt;
&lt;li&gt;3:40, 1:51&lt;/li&gt;
&lt;li&gt;3:37, 1:47&lt;/li&gt;
&lt;li&gt;3:34, 1:50&lt;/li&gt;
&lt;li&gt;3:35, 1:53&lt;/li&gt;
&lt;li&gt;3:39&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The numbers don&apos;t mean much to me right now, except as a checkpoint for the future. The workout was pretty tough. I felt semi-pukey and exhausted by the end!&lt;/p&gt;
&lt;h2&gt;Footwear&lt;/h2&gt;
&lt;p&gt;I am now running only in Luna Sandals. I still have chafing issues, but we&apos;ll see if they clear up with time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-09/wearing.jpg&quot; alt=&quot;Wearing Luna Sandals&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-09/luna-sandals.jpg&quot; alt=&quot;Luna Sandals&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-09/feet.jpg&quot; alt=&quot;Bare feet&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;What about high-intensity interval training?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/High-intensity_interval_training&quot;&gt;High-intensity interval training&lt;/a&gt; has become very popular in recent years, and for good reason. I was doing some on the treadmill in the winter in order to kickstart my running, but then put it aside when I left the treadmill.&lt;/p&gt;
&lt;p&gt;I expect to start incorporating serious HIIT into my training to get even sharper.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s good to finally be back to interval training, after basically some years of not being serious and strong and disciplined enough to do it systematically.&lt;/p&gt;
</content:encoded></item><item><title>On finally upgrading my Samsung Galaxy S II phone to Jelly Bean</title><link>https://franklinchen.com/blog/2013/04/08/on-finally-upgrading-my-samsung-galaxy-s-ii-phone-to-jelly-bean/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/08/on-finally-upgrading-my-samsung-galaxy-s-ii-phone-to-jelly-bean/</guid><pubDate>Tue, 09 Apr 2013 00:11:58 GMT</pubDate><content:encoded>&lt;p&gt;A year ago, I got my first smartphone, a &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;Samsung Galaxy SII through T-Mobile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At some point I upgraded it to &lt;a href=&quot;https://en.wikipedia.org/wiki/Android_version_history&quot;&gt;Ice Cream Sandwich&lt;/a&gt;. Unfortunately, that introduced a &lt;em&gt;terrible&lt;/em&gt; limitation for my phone: I found that I could not disable the shutter-clicking sound effect when capturing video!! I looked online and found that it was not possible without rooting. This made me truly angry because it meant that my phone was &lt;em&gt;unusable&lt;/em&gt; for capturing video. Friends told me I should &lt;a href=&quot;https://en.wikipedia.org/wiki/Android_rooting&quot;&gt;root&lt;/a&gt; the phone already, rather than submit to Samsung&apos;s draconian disabling of the preference to turn off the shutter sound.&lt;/p&gt;
&lt;p&gt;Jelly Bean just finally arrived for my phone. I installed it, and the problem went away. Whew.&lt;/p&gt;
</content:encoded></item><item><title>Alia Musica concert including flutist Robert Dick</title><link>https://franklinchen.com/blog/2013/04/06/alia-musica-concert-including-flutist-robert-dick/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/06/alia-musica-concert-including-flutist-robert-dick/</guid><pubDate>Sun, 07 Apr 2013 02:40:39 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I attended &lt;a href=&quot;https://www.alia-musica.org/&quot;&gt;Alia Musica&lt;/a&gt;&apos;s &lt;a href=&quot;https://www.facebook.com/events/457110391031166/&quot;&gt;spring concert&lt;/a&gt;, featuring older as well as brand new music. &lt;a href=&quot;https://www.robertdick.net/&quot;&gt;Robert Dick&lt;/a&gt; made an appearance to repeat his famous composition, [Meristem], which had played in his &lt;a href=&quot;/blog/2013/04/04/energetic-robert-dick-solo-flute-recital-in-pittsburgh-with-alia-musica/&quot;&gt;solo recital also&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.henrydoktorski.com/&quot;&gt;Henry Doktorski&lt;/a&gt; played &lt;a href=&quot;https://www.henrydoktorski.com/misc/aliamusica.html&quot;&gt;two pieces in this program with Alia Music as accordionist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And so Robert Dick&apos;s Pittsburgh tour came to an end. What a week it&apos;s been!&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>A comeback from Pittsburgh Marathon overtraining</title><link>https://franklinchen.com/blog/2013/04/06/comeback-from-pittsburgh-marathon-overtraining/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/06/comeback-from-pittsburgh-marathon-overtraining/</guid><pubDate>Sat, 06 Apr 2013 19:59:23 GMT</pubDate><content:encoded>&lt;p&gt;Last week I reported on running Just A Short Run, &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;my first half marathon in nine years&lt;/a&gt;. One very real concern I had &lt;a href=&quot;/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/&quot;&gt;when I put this race on my calendar a month ago&lt;/a&gt; was that recovery from it might interfere with my marathon training. Although I did not race Just A Short Run all out, I did put in a hard effort, and sure enough I did end up having a really tough training week afterwards.&lt;/p&gt;
&lt;p&gt;But the overtraining this week was partly my doing. Here I explain how I ended up feeling like I was falling apart, and how I recovered and felt pretty good during today&apos;s long run.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/wow-run.jpg&quot; alt=&quot;Pittsburgh Marathon Warmup on Walnut run&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;After the half marathon&lt;/h2&gt;
&lt;p&gt;As I mentioned in my report, I had some issues after the race: my right lower calf/Achilles area seized up for a bit, and also my right second and third toes did as well.&lt;/p&gt;
&lt;p&gt;Sure enough, a day later, I was feeling very sore in my right lower calf and second toe. I should mention that I have &lt;a href=&quot;https://en.wikipedia.org/wiki/Morton%27s_toe&quot;&gt;Morton&apos;s toe&lt;/a&gt; on both feet, although my left second toe is only barely longer than the big toe, while it is my right second toe that is noticeably longer than the big toe and therefore has a real tendency to cause me some problems:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mortons-toe.jpg&quot; alt=&quot;My Morton&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I did take a day off running after the half marathon.&lt;/p&gt;
&lt;h2&gt;Monday: trying to be careful&lt;/h2&gt;
&lt;p&gt;But even on Monday, I was still feeling sore. I decided that I should do some light running anyway, to avoid two days off completely from running.&lt;/p&gt;
&lt;p&gt;Also, I very much wanted to finally start running in my new Luna Sandals, which I had received last week but put aside because of the half marathon. These are the &lt;a href=&quot;https://www.lunasandals.com/products/33-venado&quot;&gt;Venado with ATS laces and MGT footbed&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s3.amazonaws.com/lunastore/images/255/full.jpg?1351720427&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s3.amazonaws.com/lunastore/images/255/full.jpg?1351720427&quot;&amp;gt;[image: Luna Sandals: Venado, ATS laces, MGT footbed]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I ended up running just an easy 2 miles on the treadmill in the morning in my Vibram FiveFingers Bikila LS shoes, and then after work, running 1.5 miles in the Luna Sandals.&lt;/p&gt;
&lt;h2&gt;Tuesday: new shoes&lt;/h2&gt;
&lt;p&gt;Tuesday, I was still not yet completely recovered either from the half marathon, but I felt I was ready to go for a normal run. I decided to do a real run in the Luna Sandals and did 5 miles.&lt;/p&gt;
&lt;p&gt;I encountered various problems while trying out the Luna Sandals, beginning to break them in. I got chafed in various places from the straps and buckle:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-02/feet.jpg&quot; alt=&quot;Feet chafed&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-02/side.jpg&quot; alt=&quot;Side view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-02/wearing.jpg&quot; alt=&quot;Feet in&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/luna-sandals-2013-04-02/heel.jpg&quot; alt=&quot;View of heel&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And it was tricky keeping the sandals on at all. I fidgeted a lot with the laces to try to keep my heels from slipping. I kept on having problems with my right heel slipping.&lt;/p&gt;
&lt;p&gt;Meanwhile, although my calf was healing up, I was more worried about my right second toe, which seemed sore and sensitive. I noticed that my tendency to impact the second toe (after all, it is my longest toe) was causing trouble. I had not really encountered any problems until after the half marathon, but the intensity of that effort, and the fact that my Bikila LS shoes were getting worn down at the toes, must have exposed this biomechanical weakness finally.&lt;/p&gt;
&lt;h2&gt;Wednesday: overexcited&lt;/h2&gt;
&lt;p&gt;Wednesday, I was excited about running, and used the Luna Sandals again. I still had slippage and chafing issues, but figured that there was a break-in process. The soles were starting to shape to my feet, for example.&lt;/p&gt;
&lt;p&gt;Unfortunately, I accidentally (because of taking impromptu routes in Homewood Cemetery) ran 9 miles when I had originally intended to run more like 7.&lt;/p&gt;
&lt;p&gt;My second toe was startling to tingle and really complain: even normal walking triggered pain.&lt;/p&gt;
&lt;h2&gt;Thursday: admission of overtraining&lt;/h2&gt;
&lt;p&gt;Thursday was one of those days when I truly &lt;a href=&quot;/blog/2013/01/14/three-questions-to-ask-yourself-when-you-dont-feel-like-doing-your-scheduled-workout/&quot;&gt;had to ask myself three questions&lt;/a&gt;. I was simply feeling &lt;em&gt;exhausted&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I forced myself to completely take Thursday off from running (or strength training, for that matter), while evaluating my situation. This was no longer just about my toe, but about my overall fatigue.&lt;/p&gt;
&lt;p&gt;Meanwhile, I had to fix this toe problem somehow, and soon, because I had a long run planned for Saturday. So I observed myself closely while walking. I noticed that I had a tendency to do a weird retracting motion on the toe when walking, a motion I do not use on my left foot. I questioned the purpose of this reflex. I found that I could &lt;em&gt;choose&lt;/em&gt; not to perform the retracting motion. It was difficult to make this choice, but if I really focused, I could control how I &lt;em&gt;used&lt;/em&gt; my foot. I remembered lessons from &lt;a href=&quot;https://en.wikipedia.org/wiki/Alexander_technique&quot;&gt;Alexander technique&lt;/a&gt; about observing and unlearning habits.&lt;/p&gt;
&lt;p&gt;Furthermore, I discovered the reason my right hip has sometimes felt sore: my right hip has sagged in my posture. I also found that correcting this shifted the balance of weight on my right foot, and alleviated the pressure on my second toe, shifting more weight where it should be, more toward the big toe under the ball of the foot. These were very interesting discoveries.&lt;/p&gt;
&lt;p&gt;In any case, I felt so tired that I decided to go ahead and cancel my Sunday plan to play in the final round of the Pittsburgh Chess League season; I had really wanted to put in one final appearance for our team, after not having actually played for us since &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;last November&lt;/a&gt;, because something kept on coming up every month since then, but I had little confidence that I would be mentally alert on Sunday.&lt;/p&gt;
&lt;h2&gt;Friday: still playing it safe&lt;/h2&gt;
&lt;p&gt;Friday, I was feeling energetic enough to run, but I forced myself to take another day off for the sake of my right toe. It was not easy, but I reminded myself that &lt;em&gt;not being able to do my long run&lt;/em&gt; was not worth one more missed day of training.&lt;/p&gt;
&lt;p&gt;Instead of running, I did one rep of the Cathedral of Learning stair climb, just to get some activity in.&lt;/p&gt;
&lt;h2&gt;Saturday: my 14-mile long run&lt;/h2&gt;
&lt;p&gt;Saturday morning, I felt my right toe had recovered sufficiently that I was going to be OK doing my planned long run.&lt;/p&gt;
&lt;p&gt;The Steel City Road Runners had a 10-mile run lined up starting in Shadyside after a program of dynamics warmups by Dr. Vonda Wright, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmarathon.com/wow.asp&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmarathon.com/wow.asp&quot;&amp;gt;&quot;Warmup on Walnut&quot;&amp;lt;/span&amp;gt;, outside of sponsor &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.truerunner.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.truerunner.com/&quot;&amp;gt;True Runner&amp;lt;/span&amp;gt;. My plan was to skip that program, but create a 14-mile run by running 2 miles from home to the Shadyside point and then joining the group run and then running 2 miles back home afterwards.&lt;/p&gt;
&lt;p&gt;Here is the 10-mile loop:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://snippets.mapmycdn.com/routes/view/embedded/187175578?width=560&amp;amp;height=400&amp;amp;elevation=true&amp;amp;info=true&amp;amp;line_color=E60f0bdb&amp;amp;rgbhex=DB0B0E&amp;amp;distance_markers=1&amp;amp;unit_type=imperial&amp;amp;map_mode=TERRAIN&amp;amp;last_updated=2013-04-01T09:44:11-04:00&quot; height=&quot;590px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h3&gt;My goal&lt;/h3&gt;
&lt;p&gt;My goal for this long run was to make it a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mcmillanrunning.com/index.php/articlePages/article/2&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mcmillanrunning.com/index.php/articlePages/article/2&quot;&amp;gt;&quot;fast finish long run&quot;&amp;lt;/span&amp;gt;. In particular, in planning my run, I had noted that the last 5 miles of the course involved a steady uphill as well as a steeper uphill through Oakland on Forbes Avenue. In the 2003 Pittsburgh Marathon ten years ago, this uphill had proved a bit discouraging to me (because I had, frankly, gone out too fast). In any case, for psychological and physiological reasons, I wanted to do this whole uphill fast and strong in this particular workout. In the actual marathon in a month, of course, I don&apos;t plan to run it as fast, but I did want to remember the landmarks and mental state of doing something difficult but in a relaxed way. I wanted to focus on applying my newly discovered knowledge about my posture and stride asymmetry and &quot;run tall&quot; up the hill, with balanced hips, while monitoring my right second toe to make sure it did not get battered.&lt;/p&gt;
&lt;p&gt;I was still not comfortable with the Luna Sandals, so I fell back to the shoes I&apos;ve been wearing for almost all of my runs in the past three months, the Bikila LS shoes.&lt;/p&gt;
&lt;h3&gt;Showed up late&lt;/h3&gt;
&lt;p&gt;Unfortunately, I strangely miscalculated my departure from home to run 2 miles to Aiken Avenue and Walnut Street, and showed up 4 minutes late, just as runners were already heading off. I grabbed a printed map and picked up the pace so that I could try to catch up to the 10:00 pace group. I did, realizing of course that I was making my task in the final miles of my run more difficult as a result.&lt;/p&gt;
&lt;h3&gt;Conquering the Oakland hill&lt;/h3&gt;
&lt;p&gt;I managed the Oakland hill pretty well, being very focused. I continued going hard all the way back to True Runner in Shadyside. Near the end, I felt my calves getting tight, just as in the half marathon last week when my right calf seized up after I was walking after the finish line. I thought it was very useful to have triggered this exact sensation and knowing where it was, because it meant that maybe I would be able to train my body to accept that state of fatigue (after running 12 miles) and continue. Also, the feeling cleared up fairly quickly after I stopped to walk, so I think last week the real trigger was my pointless little sprint near the end. If I avoid any sprinting during the marathon, I might well be able to avoid cramping. At least, that is the plan.&lt;/p&gt;
&lt;h3&gt;A decision about Gatorade&lt;/h3&gt;
&lt;p&gt;I drank some more Gatorade back at Walnut Street, then ran home. I was really quite tired by this point and my stomach wasn&apos;t feeling so great. I ate some actual food and eventually recovered.&lt;/p&gt;
&lt;p&gt;During this run, no gels were provided, so I drank Gatorade as my only fuel.&lt;/p&gt;
&lt;p&gt;Here is my final conclusion, solidifying a thought I had last week in the half marathon: &lt;em&gt;Gatorade is bad for me&lt;/em&gt;, and I should &lt;em&gt;completely&lt;/em&gt; avoid it in future runs and in the Pittsburgh Marathon! It was good to learn this for sure now. In fact, it is quite possible that some of the issues I had in the 2003 Pittsburgh Marathon were a result of Gatorade.&lt;/p&gt;
&lt;p&gt;GU gel works OK for me, but according to the official &lt;a href=&quot;https://web.archive.org/web/20131128043644/http://www.pittsburghmarathon.com/Course.asp&quot;&gt;Pittsburgh Marathon fluid station table&lt;/a&gt;, GU is provided only starting at mile 9.7. Therefore, I am going to pack some gels to ingest during the first 10 miles of the marathon! I will &lt;em&gt;not&lt;/em&gt; drink any Gatorade!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After some ill-advised overtraining and injury this week after my half marathon, I forced myself to take two days off to recover, and used the time to diagnose possible causes of my biomechanical problems. I found some good hypotheses and possible solutions, and managed a high quality &quot;fast finish long run&quot; and am optimistic about my continuing training for the Pittsburgh Marathon.&lt;/p&gt;
</content:encoded></item><item><title>Energetic Robert Dick solo flute recital in Pittsburgh with Alia Musica</title><link>https://franklinchen.com/blog/2013/04/04/energetic-robert-dick-solo-flute-recital-in-pittsburgh-with-alia-musica/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/04/energetic-robert-dick-solo-flute-recital-in-pittsburgh-with-alia-musica/</guid><pubDate>Fri, 05 Apr 2013 02:39:06 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.pittsburghnewmusicnet.com/wp-content/uploads/2013/03/RD-bass-fl-by-Scott-Friedlander-web.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.pittsburghnewmusicnet.com/wp-content/uploads/2013/03/RD-bass-fl-by-Scott-Friedlander-web.jpg&quot;&amp;gt;[image: Robert Dick]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I attended &lt;a href=&quot;https://www.robertdick.net/&quot;&gt;Robert Dick&lt;/a&gt;&apos;s &lt;a href=&quot;https://www.facebook.com/events/135297873312141/&quot;&gt;solo flute recital&lt;/a&gt; in Pittsburgh with &lt;a href=&quot;https://www.alia-musica.org/&quot;&gt;Alia Musica&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was a real treat. A real master of the flute.&lt;/p&gt;
&lt;p&gt;Here he was during a sound check:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/GNI7_D6BbkU&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Attending a fascinating Robert Dick flute lecture and master class</title><link>https://franklinchen.com/blog/2013/04/04/attending-a-fascinating-robert-dick-flute-lecture-and-master-class/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/04/04/attending-a-fascinating-robert-dick-flute-lecture-and-master-class/</guid><pubDate>Fri, 05 Apr 2013 02:38:33 GMT</pubDate><content:encoded>&lt;p&gt;It was a real treat that flutist &lt;a href=&quot;https://www.robertdick.net/&quot;&gt;Robert Dick&lt;/a&gt; came to Pittsburgh to give lectures, master classes, and performances in town. He&apos;s most known for being a pioneer in &quot;extended techniques&quot;.&lt;/p&gt;
&lt;h2&gt;Interviews&lt;/h2&gt;
&lt;p&gt;Some interviews with Robert Dick before he came to Pittsburgh, thanks to &lt;a href=&quot;https://web.archive.org/web/20250711001014/https://pittsburghnewmusicnet.com/&quot;&gt;Pittsburgh New Music Net&lt;/a&gt;:&lt;/p&gt;
&lt;h3&gt;Part 1&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/AGZgHmNZlGc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Part 2&lt;/h3&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Mnx5Svsnb7s&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lecture and master class&lt;/h2&gt;
&lt;p&gt;I attended his lecture and master class held at CMU.&lt;/p&gt;
&lt;p&gt;It was fantastic. I learned a huge amount about tone, articulation, expression. He began by talking about &quot;throat tuning&quot;. The most fascinating thing he said was that he found that when he was studying flute, he had problems with his tone and found out that when he went to France, he found that nobody had this particular problem. He concluded eventually that it was because American instrumentalists did not have vocal training like Europeans did! He became convinced that everyone should &lt;em&gt;sing&lt;/em&gt;. Hearing him say this, and demonstrate &quot;throat tuning&quot;, immediately had me thinking that of course all musicians should sing, even if not very well, because instruments, especially wind instruments, are surely an extension of our built-in instrument, our body, as Dick said!&lt;/p&gt;
&lt;p&gt;He made mention of various YouTube videos he recommended as supplements to his teaching. Check out his &lt;a href=&quot;https://www.youtube.com/user/robertdick9&quot;&gt;YouTube channel&lt;/a&gt;. An example: &quot;Your first multiphonic&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/yB6_iPUaTWs&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I went home and practiced this. Not because I necessarily want to play a lot of music with multiphonics, because the exercise really sharpened my awareness of sound, and of isolation of the upper and lower lips. Furthermore, his illustration of the finger that leads to the basic multiphonic of D and C immediately brought to mind how the C fingered on Baroque flute is this exact fingering and sounds &quot;hollow&quot;. Everything started to seem unified to me.&lt;/p&gt;
&lt;p&gt;I learned from Robert Dick a huge amount, as a starting point for further investigations into sound as a science, and the flute in particular. Wow.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Report on Just A Short Run: my first half marathon in nine years!</title><link>https://franklinchen.com/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/</guid><pubDate>Sat, 30 Mar 2013 19:06:18 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;(Updated 2013-05-09 with official race videos!)&lt;/p&gt;
&lt;p&gt;Until today, I had not run a half marathon in nine years. This distance had given me a lot of trouble the five times I did it in 2001-2004. So I was very anxious about running &lt;a href=&quot;https://eliterunners.com/just-a-short-run/&quot;&gt;Just A Short Run&lt;/a&gt; this morning.&lt;/p&gt;
&lt;p&gt;Here&apos;s why I feared it, and how I ended up unexpectedly pleased with the experience, including finishing over four minutes faster than my goal time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/franklin.jpg&quot; alt=&quot;Franklin done&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Past participation in Just A Short Run&lt;/h2&gt;
&lt;p&gt;This was the fifth time I participated in Just A Short Run. This race began in 2001, when &lt;a href=&quot;https://eliterunners.com/running-shoes-pittsburgh/about-running-store/&quot;&gt;Kevin Smith&lt;/a&gt; of &lt;a href=&quot;https://eliterunners.com/&quot;&gt;Elite Runners and Walkers&lt;/a&gt; created in in memory of his younger brother who died of leukemia, to &lt;a href=&quot;https://eliterunners.com/just-a-short-run-about/&quot;&gt;support the Leukemia and Lymphoma Society&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;ipDidl-_qpM&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Until today I have done the Just A Short Run four times:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5K in 2001&lt;/li&gt;
&lt;li&gt;half marathon in 2002&lt;/li&gt;
&lt;li&gt;30K in 2003 (my only DNF in my life, because I went into it sick)&lt;/li&gt;
&lt;li&gt;5K in 2004&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Past half marathons&lt;/h2&gt;
&lt;p&gt;I have only once ever partly successfully executed a half marathon race, and even then, some things went rather wrong. Here&apos;s a summary of what went wrong in each of my half marathons up till today:&lt;/p&gt;
&lt;h3&gt;Ikea Montour Trail half marathon, 2001&lt;/h3&gt;
&lt;p&gt;This was my very first half marathon, after having run some good 5K races earlier in the year.&lt;/p&gt;
&lt;p&gt;I went out too fast (because of an initial downhill that got me too excited), and paid the price. I finished in 1:47:23. My splits for the 13.1 miles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6:31.94&lt;/li&gt;
&lt;li&gt;7:59.53&lt;/li&gt;
&lt;li&gt;8:09.44&lt;/li&gt;
&lt;li&gt;8:16.53&lt;/li&gt;
&lt;li&gt;8:16.99&lt;/li&gt;
&lt;li&gt;8:19.28&lt;/li&gt;
&lt;li&gt;8:19.64&lt;/li&gt;
&lt;li&gt;7:44.85&lt;/li&gt;
&lt;li&gt;8:01.41&lt;/li&gt;
&lt;li&gt;8:23.29&lt;/li&gt;
&lt;li&gt;8:28.72&lt;/li&gt;
&lt;li&gt;8:42.36&lt;/li&gt;
&lt;li&gt;9:17.34&lt;/li&gt;
&lt;li&gt;0:49.85&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was just struggling in the last miles, and very demoralized. I almost collapsed on my buddy Jude&apos;s shoulder after I finished. Also, I had major blisters during the race.&lt;/p&gt;
&lt;h3&gt;Just A Short Run half marathon, 2002&lt;/h3&gt;
&lt;p&gt;I did this race without any real training at all, just because it was there.&lt;/p&gt;
&lt;p&gt;I got blisters in the race, and also had to deal with weird existential thoughts like &quot;Why am I running this?&quot;&lt;/p&gt;
&lt;p&gt;I finished in 1:49:34, but actually, the course was found to be long by about a tenth of a mile, so that number does not mean much.&lt;/p&gt;
&lt;h3&gt;Ikea Montour Trail half marathon, 2002&lt;/h3&gt;
&lt;p&gt;I got my revenge in this race, actually training hard specifically for the distance, doing long intervals and a lot of tempo and race-pace runs. Overall I did very well, finishing in 1:38:48, but the experience was marred by some serious problems.&lt;/p&gt;
&lt;p&gt;I ran mile 4 too fast, but since I was carefully monitoring on my watch, I slowed down for mile 5. Still, one pays the price eventually for going too fast.&lt;/p&gt;
&lt;p&gt;Also, I still was not fueling consistently. I erred by taking both water and energy drink, resulting in dilution.&lt;/p&gt;
&lt;p&gt;In mile 12, my calves started cramping up and I had to stop at one point. I lost about half a minute because of this. In mile 13, I had to run conservatively to avoid cramps. It was very frustrating.&lt;/p&gt;
&lt;p&gt;Finally, after I finished, while getting on the shuttle bus, I cramped up quite severely.&lt;/p&gt;
&lt;h3&gt;Ikea Montour Trail half marathon, 2003&lt;/h3&gt;
&lt;p&gt;A total disaster. I finished in 1:45:32, which is 7:44 slower than the previous year. This was while having a 5K fitness similar to the previous year&apos;s. Something just went wrong. I felt sluggish throughout, and I cramped up in mile 10. And I had digestive problems.&lt;/p&gt;
&lt;h3&gt;Chamber Classic half marathon, 2004&lt;/h3&gt;
&lt;p&gt;1:46:12. No real training for it, just did it because it was there and I had not been able to do the Montour Trail one. A fiasco, in which I struggled with my usual problems (slowing down in the final miles, cramping).&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I did not go into this race truly prepared to &lt;em&gt;race&lt;/em&gt; the half marathon. I know what it takes to race a half marathon for time: long tempo and race-pace runs, long intervals. I have done little of that so far this year.&lt;/p&gt;
&lt;p&gt;My hardest training run so far has been &lt;a href=&quot;/blog/2013/03/16/18-miles-in-vibram-fivefingers-training-for-the-pittsburgh-marathon/&quot;&gt;16 miles with the Steel City Road Runners, two weeks ago, on an 18 mile course&lt;/a&gt;. I did not truly taper for the half marathon race, although this week including the race I have a reduced mileage of 25 (easy 6, easy 3, speed ladder 3, and then the race).&lt;/p&gt;
&lt;p&gt;Rather, what I am really training for is the Pittsburgh Marathon, but I felt that I should do a half marathon race in order to get a taste of what it is like to run in a long race. I have been doing long runs every week for a while now, so running the half marathon distance is not a problem: the challenge for me was to figure out if I could partially &lt;em&gt;race&lt;/em&gt; it, to find my limits.&lt;/p&gt;
&lt;p&gt;And I wanted to fix the problems I had in my previous half marathons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;blistering&lt;/li&gt;
&lt;li&gt;going out too fast&lt;/li&gt;
&lt;li&gt;slowing way down&lt;/li&gt;
&lt;li&gt;cramping&lt;/li&gt;
&lt;li&gt;digestive problems&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Blistering&lt;/h3&gt;
&lt;p&gt;Solving the problem of blistering has been trivial for me since I switched to wearing Vibram FiveFingers shoes. I just don&apos;t get serious blisters any more; my feet have adapted completely.&lt;/p&gt;
&lt;p&gt;By the way, I just got my Luna Sandals two days ago, but have not run in them yet. Friends helpfully convinced me that it would be crazy to wear them in the race without any actual test of them (I knew that, but just needed validation).&lt;/p&gt;
&lt;p&gt;This is the &lt;em&gt;first half marathon&lt;/em&gt; I&apos;m running in Vibram FiveFingers. Up till now, the longest distance I&apos;ve raced in FiveFingers has been &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;10K, when I was still getting blistered by the Bikila LS&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Going out too fast&lt;/h3&gt;
&lt;p&gt;By not treating this as an all-out race whose goal is to minimize time, I could afford to run more conservatively and plan on negative-splitting. I decide to target a time of 1:55:00 (reasonable given &lt;a href=&quot;/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/&quot;&gt;my recent 5K&lt;/a&gt; time of 25:11), with the idea of speeding up if it felt right.&lt;/p&gt;
&lt;h3&gt;Slowing way down&lt;/h3&gt;
&lt;p&gt;I consciously carb-loaded for this half marathon and had a race fueling plan.&lt;/p&gt;
&lt;h3&gt;Cramping&lt;/h3&gt;
&lt;p&gt;I have no idea how to really solve this problem. I think I must be genetically predisposed to cramping. People like to claim electrolyte deficiency is the cause, but I don&apos;t believe this at all, because I have tried loading up on electrolytes.&lt;/p&gt;
&lt;h3&gt;Digestive problems&lt;/h3&gt;
&lt;p&gt;I have concluded that it is safest to avoid Gatorade and the like on the course because people mix it in funny proportions. Sticking with predictable gels and water is my new plan. One gel before starting the race, and then one gel every 45 minutes after that (which in the case of a half marathon means two gels on the course).&lt;/p&gt;
&lt;p&gt;Also, I used to drink too much water, resulting in sloshing in the stomach. So I drink less now during a race, and drink more well before it starts.&lt;/p&gt;
&lt;h2&gt;The route&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://snippets.mapmycdn.com/routes/view/embedded/24782?width=560&amp;amp;height=400&amp;amp;elevation=true&amp;amp;info=true&amp;amp;line_color=E60f0bdb&amp;amp;rgbhex=DB0B0E&amp;amp;distance_markers=1&amp;amp;unit_type=imperial&amp;amp;map_mode=TERRAIN&amp;amp;last_updated=2006-03-10T16:46:31-05:00&quot; height=&quot;590px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;Note the big hill at the beginning. Control of effort going up and down hills is critical, to avoid bad spikes in energy usage.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;p&gt;Here are the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runhigh.com/2013RESULTS/R033013AA.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runhigh.com/2013RESULTS/R033013AA.html&quot;&amp;gt;official race results&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Start&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/announcements.jpg&quot; alt=&quot;Announcements&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I started out with the 1:55:00 finish pacer (8:47 pace):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/pacer.jpg&quot; alt=&quot;My initial pacer&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going up the big hill, however, he totally lost me, as I slowed down to avoid prematurely feeling the burn. In fact, a slower pacer even passed me. No problem.&lt;/p&gt;
&lt;p&gt;On the downhill, I quickly started regaining ground. I think after around three miles, I had caught up to the original 8:47 pacer, and then that was feeling too slow for me, so I passed him for good, and never saw a pacer again in the race.&lt;/p&gt;
&lt;h3&gt;Gatorade error&lt;/h3&gt;
&lt;p&gt;I made an error at one of the aid stations when I mistaken grabbed Gatorade and threw it in my face. I got stickiness all over my face and the front of my jacket and fingers. It was really disgusting, actually. I will be more careful in the future to ask what stuff is before taking a cup.&lt;/p&gt;
&lt;p&gt;Otherwise, I stuck well to my plan of taking water and two gels during the entire half marathon. Note that the race provided &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cranksports.com/products/eGel/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cranksports.com/products/eGel/&quot;&amp;gt;e-Gel&amp;lt;/span&amp;gt;, which I had not had before. If I were seriously racing this half marathon, obviously I would have bought and tried this stuff on long runs ahead of time.&lt;/p&gt;
&lt;h3&gt;Passing people&lt;/h3&gt;
&lt;p&gt;The thing about Just A Short Run is that people are running different races and therefore are at different paces, and also in such a huge race, there are always those who are inexperienced and go out too fast and slow down. What this means, in practice, is that if you are running evenly (or for a negative split, like I was doing), you will be needing to pass people constantly. It is very important to be a good judge of your own pace, because otherwise you might think you are doing OK, while the reality is you&apos;re following someone who is slowing down.&lt;/p&gt;
&lt;p&gt;I like to target someone who looks faster than me and then try to keep up with him or her. I did this repeatedly in the race.&lt;/p&gt;
&lt;p&gt;At one point I asked a guy what his pace was, and he said 8:30. I was feeling good, so eventually I passed him. I realized at that moment that I was going to be able to run considerably faster than 1:55:00, despite my very slow start.&lt;/p&gt;
&lt;h3&gt;Last five miles&lt;/h3&gt;
&lt;p&gt;I maintained speed in the last 5 miles of the race; I might even have gone faster, but without the data, I cannot tell, since when fatigue sets in, effort does not equal actual pace. I was definitely getting tired, but I kept pushing, trying to pretend I was running a 10K race or something. I thought that I just might have a shot at finishing under 1:50:00. I didn&apos;t, but that&apos;s OK. I finished in 1:50:52.&lt;/p&gt;
&lt;p&gt;The official &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runhigh.com/2013RESULTS/R033013AF.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runhigh.com/2013RESULTS/R033013AF.html&quot;&amp;gt;split data&amp;lt;/span&amp;gt; shows that I did the last 5 miles in 42:03, which is about 8:25 pace. Since I averaged 8:28 pace for the whole race, I clearly ran faster in the last 5 miles than in the first 8.1 miles.&lt;/p&gt;
&lt;p&gt;If I had known what I was capable of, I could have run faster and more evenly from the start, and finished faster, but that was quite explicitly &lt;em&gt;not&lt;/em&gt; the goal today. The goal was to finish strong, which I did.&lt;/p&gt;
&lt;h2&gt;SPIbelt&lt;/h2&gt;
&lt;p&gt;This was my first time running a race wearing a SPIbelt. It did not cause me any trouble at all; I barely noticed it. I will wear it during the Pittsburgh Marathon, in order to have my phone on me in case of emergency. I did not use my phone during the race, only before and after it, but it&apos;s always nice to know that I can directly contact Abby if something goes wrong.&lt;/p&gt;
&lt;h2&gt;Cramping&lt;/h2&gt;
&lt;p&gt;I did a little bit of a final sprint across the finish line. The moment I crossed was the moment when I felt both of my calves start to twitch. I realized that I almost crossed the line to full-on cramping, and decided to keep moving. I grabbed a banana and ate it while jogging slowly, and planning to jog off the heaviness in my calves.&lt;/p&gt;
&lt;p&gt;Then disaster struck: I stubbed my right toes on the ground and instantly two of my toes cramped up and my lower right calf also cramped up. I ripped off my shoe and luckily, after about twenty seconds, I was OK again. I decided it was unsafe to keep moving, and I went upstairs in the North Park Boat House to just keep warm and stretch in a safe environment. I did not cramp up again.&lt;/p&gt;
&lt;p&gt;So I have not entirely solved the cramping problem. Apparently sprinting was enough to push me over the edge. Also, closed-toe shoes are a problem because my toes inevitably get at least somewhat jammed in the course of running in closed-toe shoes. This is why I want to test out the Luna Sandals, which may completely prevent toe jamming and cramping. As for my calves, I don&apos;t know, maybe I just need to do more hard longer runs in order to get them accustomed to the lactic acid buildup or something.&lt;/p&gt;
&lt;h2&gt;Post-race eating&lt;/h2&gt;
&lt;p&gt;My stomach was entirely OK during the race. No water sloshing, no indigestion, no gnawing hunger. I was hungry after finishing, of course.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/food.jpg&quot; alt=&quot;Post-race food&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I made some mistakes after finishing, however. I ate not only a banana, but also a bagel, a Smiley Cookie, a little bag of chips, and a little bag of cookies. I believe I should have excluded the bag of cookies and the chips, and saved the Smiley Cookie for later. I had some digestive discomfort (nothing serious though) for a while after everything I ate. I will remember next time. After a 5K or 10K, I can eat anything, but apparently, after a half marathon, digestion is trickier.&lt;/p&gt;
&lt;p&gt;But it is hard not to gobble up a Smiley Cookie:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/smiley-cookie.jpg&quot; alt=&quot;Smiley Cookie&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At home, I ended up deciding to eat familiar leftovers rather than going out to a buffet as I had originally thought of doing with Abby.&lt;/p&gt;
&lt;h2&gt;Feet&lt;/h2&gt;
&lt;p&gt;My feet were sore, but actually, less sore than after each of my long runs in the past month. I think I&apos;ve become more efficient. No knee pain either. After the race, just general inflammation. I think I&apos;ll be OK tomorrow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/just-a-short-run-2013/shoes.jpg&quot; alt=&quot;Vibram FiveFingers Bikila LS&quot; /&gt;
&lt;img src=&quot;../../assets/images/just-a-short-run-2013/feet.jpg&quot; alt=&quot;Franklin&quot; /&gt;
&lt;img src=&quot;../../assets/images/just-a-short-run-2013/soles.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I did get one small blister, on my right pinkie toe, but I didn&apos;t actually notice it until I was home and took a shower.&lt;/p&gt;
&lt;h2&gt;What does all this mean for the marathon?&lt;/h2&gt;
&lt;p&gt;This &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runnersworld.co.uk/general/rws-race-time-predictor/1681.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runnersworld.co.uk/general/rws-race-time-predictor/1681.html&quot;&amp;gt;race time predictor&amp;lt;/span&amp;gt; suggests that given that I ran a half marathon in 1:50:52, I can do a full marathon in 3:51:08. I am, frankly, skeptical that I can go under 4:00:00 at all a month from now. I know I want to be conservative in the marathon, and I rather doubt I will be able to negative-split it, and I still have concerns about late-stage cramping or other physical deterioration. We shall see how my training progresses. I am going to start adding &quot;quality&quot; work in the form of interval training in order to toughen up.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Many thanks to my wife Abby, who dropped me off at the race and picked me up after visiting her parents in the vicinity, saving me driving and parking hassles! And thanks to all my friends who have been supportive while I&apos;ve been so nervous for weeks about this race!&lt;/p&gt;
&lt;p&gt;I like to thank &lt;a href=&quot;https://eliterunners.com/&quot;&gt;Elite Runners and Walkers&lt;/a&gt; for putting on a really well-organized race. The instructions were very clear, volunteers giving out water, Gatorade, and gels were everywhere, there was plenty of post-race food, bag check was convenient, and everything seemed to go smoothly. I would like to take this opportunity to say that without Elite Runners and Walkers, I do not know where I would be as a runner. Back over a decade ago, when I started running, the Internet was not what it is now. I got information about running from books and magazines and word of mouth more than anything else. I was told about the new store Elite Runners and Walkers and I got some of my first running shoes and clothing there. I even bought my very first pair of Vibram FiveFingers KSO shoes there, in 2009, before minimalist shoes suddenly became more mainstream and available in other stores, and last year when I got some rips in those first Vibram FiveFingers shoes, I got a new pair of KSO shoes through them also. And the races they put on in the winter and spring are great: I used to run their &lt;a href=&quot;https://eliterunners.com/events/annual-spring-thaw/&quot;&gt;Spring Thaw&lt;/a&gt; as well as Just A Short Run. And when picking up my race packet at the store this week, Abby and I bought some more shirts and shorts in preparation for summer!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This was my slowest half marathon ever, but one of the most satisfying, and one of the best-executed, given my actual fitness level, which is substantially lower than that of a decade ago. I may consider &lt;em&gt;really&lt;/em&gt; racing a half marathon in the fall. Meanwhile, I definitely found the successful completion of this half marathon to be a confidence booster for the upcoming Pittsburgh Marathon. Yes, there is no real comparison between the two distances, but it&apos;s just the fact that this is a long race at all, compared to, say, a 5K or 10K.&lt;/p&gt;
&lt;h2&gt;Race videos are out! (Update of 2013-05-09)&lt;/h2&gt;
&lt;h3&gt;From start to 1:30:00&lt;/h3&gt;
&lt;h4&gt;Start&lt;/h4&gt;
&lt;p&gt;I couldn&apos;t find myself in the half marathon start, because it&apos;s too congested.&lt;/p&gt;
&lt;h4&gt;Additional loop 1&lt;/h4&gt;
&lt;p&gt;I found myself arriving under &quot;Additional loops&quot; at 27:09 on the clock to begin the first of two 5-mile loops.&lt;/p&gt;
&lt;p&gt;(To jump immediately to the spot, click &lt;a href=&quot;https://youtu.be/BukDHKvc7rk?t=12m50s&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;BukDHKvc7rk&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Since I crossed the start line after 21 seconds, I really ran 26:48 for the first 3.1 miles (average 8:39 pace).&lt;/p&gt;
&lt;h4&gt;Additional loop 2&lt;/h4&gt;
&lt;p&gt;Also, watch me cross &quot;Additional loops&quot; at around 1:09:09 on the clock, which means I did 5 miles in 42:00 (average 8:24 pace).&lt;/p&gt;
&lt;p&gt;(To jump immediately to the spot, click &lt;a href=&quot;https://youtu.be/BukDHKvc7rk?t=46m11s&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;h3&gt;From 1:31:00 to 3:21:00&lt;/h3&gt;
&lt;h4&gt;Sprint finish&lt;/h4&gt;
&lt;p&gt;Watch my sprint finish from clock time around 1:51:03 to finish at 1:51:12 (my chip time was 1:50:51, meaning I crossed the start line after 21 seconds), which means I did the last 5 miles in 42:03, almost exactly the same time as I did the first 5-mile loop.&lt;/p&gt;
&lt;p&gt;(To jump immediately to the spot, click &lt;a href=&quot;https://youtu.be/wdjy7eLUlwQ?t=15m41s&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;wdjy7eLUlwQ&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;From 3:23:00 to 4:07:00&lt;/h3&gt;
&lt;p&gt;I was already done, so I am not in this video.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;t4Zwv-tSLVM&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2014-03-09)&lt;/h2&gt;
&lt;p&gt;In 2014, I did not set a goal to run a spring half marathon, so I did not train in the winter months for one, and so I am sadly missing Just A Short Run. Maybe there&apos;s still time for me to get back into regular running and aim to do a half marathon in the fall.&lt;/p&gt;
</content:encoded></item><item><title>Flute master class: becoming a great ensemble player</title><link>https://franklinchen.com/blog/2013/03/25/flute-master-class-becoming-a-great-ensemble-player/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/25/flute-master-class-becoming-a-great-ensemble-player/</guid><pubDate>Tue, 26 Mar 2013 03:41:31 GMT</pubDate><content:encoded>&lt;p&gt;Jennifer Conner, second flute with Pittsburgh Symphony Orchestra, presented a lecture and master class entitled &quot;Becoming a Great Ensemble Player and a Valued Colleague in an Orchestra&quot; at CMU.&lt;/p&gt;
&lt;p&gt;This was the second master class I&apos;ve attended in my life (the first one being at the &lt;a href=&quot;/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/&quot;&gt;Mideast early music workshop last summer&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I took a lot of notes while observing and reflecting on what she said and demonstrated and what the music students did. It was a very educational experience for me.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>OpenHack Pittsburgh: exploring Scala odds and ends</title><link>https://franklinchen.com/blog/2013/03/25/openhack-pittsburgh-exploring-scala-odds-and-ends/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/25/openhack-pittsburgh-exploring-scala-odds-and-ends/</guid><pubDate>Tue, 26 Mar 2013 02:43:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/106184432/&quot;&gt;A third OpenHack Pittsburgh&lt;/a&gt; meeting was organized, and I attended again. It was held again at &lt;a href=&quot;https://www.thebeautyshoppe.org/&quot;&gt;The Beauty Shoppe&lt;/a&gt;, just like the &lt;a href=&quot;/blog/2013/02/25-openhack-pittsburgh-studying-scala/&quot;&gt;previous time&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was pleased by how much progress had been made in the construction inside. The space was looking really nice.&lt;/p&gt;
&lt;h2&gt;Scala stuff&lt;/h2&gt;
&lt;p&gt;My plan was to continue working on a personal project in Scala. That plan kind of changed because Roy wanted to ask me questions about Scala. I told him that I&apos;m still learning stuff myself, but answered his questions as well as I could.&lt;/p&gt;
&lt;h3&gt;Unit testing&lt;/h3&gt;
&lt;p&gt;One question Roy had was about unit test frameworks and generating independent tests (as opposed to writing a single test that makes many generated assertions, because such a test would simply stop at the first failed assertion. I told him this was easy to do with either the &lt;a href=&quot;https://etorreborre.github.com/specs2/&quot;&gt;Specs2&lt;/a&gt; unit testing framework or the &lt;a href=&quot;https://www.scalatest.org/&quot;&gt;ScalaTest&lt;/a&gt; one (I use Specs2).&lt;/p&gt;
&lt;p&gt;Here&apos;s sample code showing &lt;a href=&quot;https://github.com/FranklinChen/test-loop-over-tests&quot;&gt;how to do it&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Property-based testing&lt;/h3&gt;
&lt;p&gt;I also mentioned that I was working on a presentation on a cool Scala library supporting property-based testing, &lt;a href=&quot;https://www.scalacheck.org/&quot;&gt;ScalaCheck&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-04-11)&lt;/h4&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2013/04/11/my-pittsburgh-scala-meetup-talk-on-property-based-testing-using-scalacheck/&quot;&gt;giving a talk at the Pittsburgh Scala meetup in April on ScalaCheck&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Continuations&lt;/h3&gt;
&lt;p&gt;Roy asked about continuations in Scala, in the context of an idea he had for a Web app.&lt;/p&gt;
&lt;p&gt;I said that I hadn&apos;t personally used first-class continuations in Scala, but knew support for delimited continuations existed as a compiler plugin. So I looked up how to use them and created a little project as proof of concept (nothing worth seeing, just typical examples of code with &lt;code&gt;shift&lt;/code&gt; and &lt;code&gt;reset&lt;/code&gt; comparable to how I&apos;d seen them used in other languages with delimited continuations); check out &lt;a href=&quot;https://suereth.blogspot.com/2010/03/how-you-should-think-about-delimited.html&quot;&gt;Josh Suereth&apos;s (somewhat dated) article on delimited continuations in Scala&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;But I asked Roy what he really wanted continuations for anyway. They are a low-level concept, and there are higher-level constructs built on top of continuations that I think are more useful.&lt;/p&gt;
&lt;p&gt;He said that he wanted to be able to have code &quot;look&quot; like it was synchronous but actually be asynchronous.&lt;/p&gt;
&lt;h4&gt;(Update of 2014-04-21)&lt;/h4&gt;
&lt;p&gt;Scala continuations have been deprecated in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://typesafe.com/blog/scala-211-has-arrived&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://typesafe.com/blog/scala-211-has-arrived&quot;&amp;gt;Scala 2.11&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Futures&lt;/h3&gt;
&lt;p&gt;So I told him, that&apos;s the perfect use case for &lt;a href=&quot;https://docs.scala-lang.org/overviews/core/futures.html&quot;&gt;futures&lt;/a&gt;, which are well-supported in Scala, especially because of their compositional monadic properties in conjunction with nice &lt;code&gt;for&lt;/code&gt;-comprehension syntax.&lt;/p&gt;
&lt;p&gt;I said, the only drawback is that you have to write code in monadic style.&lt;/p&gt;
&lt;p&gt;When I went home after OpenHack Pittsburgh, however, I coincidentally found that there was a project to improve the syntax of writing this kind of asynchronous computation! &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://doc.akka.io/docs/akka/snapshot/scala/dataflow.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://doc.akka.io/docs/akka/snapshot/scala/dataflow.html&quot;&amp;gt;Akka Dataflow&amp;lt;/span&amp;gt; does precisely this, using the continuation plugin.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-08-27)&lt;/h4&gt;
&lt;p&gt;There has been other work to improve syntactic support for asynchronous computation. &lt;a href=&quot;https://github.com/scala/async&quot;&gt;&lt;code&gt;async&lt;/code&gt;&lt;/a&gt; uses &lt;a href=&quot;https://scalamacros.org/&quot;&gt;macros&lt;/a&gt; to try to provide the nice syntactic experience without the overhead of the continuation plugin.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-12-17)&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/akka/akka/commit/66e40084946f6f993a2c62d9921718704daf448a&quot;&gt;&lt;code&gt;dataflow&lt;/code&gt; has been deprecated&lt;/a&gt;, now that &lt;code&gt;async&lt;/code&gt; is fully mature (I have been happily using it for a while now).&lt;/p&gt;
&lt;h4&gt;(Update of 2013-12-31)&lt;/h4&gt;
&lt;p&gt;More specifically, &lt;code&gt;async&lt;/code&gt; was much improved just in time for it to be officially used in the Coursera course &quot;Principles of Reactive Programming&quot;, which &lt;a href=&quot;/blog/2013/12/31/review-of-the-free-coursera-course-principles-of-reactive-programming/&quot;&gt;I just completed and reviewed&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Implicits&lt;/h3&gt;
&lt;p&gt;Roy asked me about other interesting features of Scala. I had to say something about implicits, of course, useful for simulating monkey patching as well as simulating Haskell type classes.&lt;/p&gt;
&lt;p&gt;Implicits are probably the single most interesting language feature of Scala.&lt;/p&gt;
&lt;h4&gt;(Update of 2014-02-13)&lt;/h4&gt;
&lt;p&gt;There was a &lt;a href=&quot;/blog/2014/02/13/pittsburgh-scala-meetup-implicits/&quot;&gt;Pittsburgh Scala Meetup session on implicits&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Specialization of generics&lt;/h3&gt;
&lt;p&gt;Roy wanted to know whether generics can be specialized in Scala (in contrast to Java, which treats generics as erasure). I said, yes, actually. Fully automatic, efficient specialization is still being improved on, but for now, there&apos;s a manual way to do specialization through the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://lampwww.epfl.ch/~dragos/files/scala-spec.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://lampwww.epfl.ch/~dragos/files/scala-spec.pdf&quot;&amp;gt;@specialized annotation&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h4&gt;(Update of 2014-07-17)&lt;/h4&gt;
&lt;p&gt;There&apos;s also &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://scala-miniboxing.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://scala-miniboxing.org/&quot;&amp;gt;Miniboxing&amp;lt;/span&amp;gt; for efficiency.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was stimulating talking with Roy about Scala and trying to explain stuff to him on the fly, or look stuff up (thank goodness for WiFi in The Beauty Shoppe!), or code something right there and then. The conversations also caused me to do my homework after the meetup!&lt;/p&gt;
</content:encoded></item><item><title>RIP Bebo Valdés, master pianist of Cuban music</title><link>https://franklinchen.com/blog/2013/03/22/rip-bebo-valdes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/22/rip-bebo-valdes/</guid><pubDate>Sat, 23 Mar 2013 00:08:56 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.billboard.com/files/styles/promo_650/public/media/bebo-chucho-valdes-650-430.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.billboard.com/files/styles/promo_650/public/media/bebo-chucho-valdes-650-430.jpg&quot;&amp;gt;[image: Bebo and Chucho]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I just heard about the death of &lt;a href=&quot;https://en.wikipedia.org/wiki/Bebo_Vald%C3%A9s&quot;&gt;Bebo Valdés&lt;/a&gt; &lt;a href=&quot;https://www.npr.org/blogs/ablogsupreme/2013/03/22/175080694/bebo-vald-s-giant-of-cuban-music-is-dead?ft=1&amp;amp;f=1039&quot;&gt;at age 94 in Sweden&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I discovered this Cuban musician a decade ago, when, as a big fan of Latin (especially Cuban) dance and music, I bought the documentary &lt;a href=&quot;https://en.wikipedia.org/wiki/Calle_54&quot;&gt;&quot;Calle 54&quot;&lt;/a&gt; when it came out. I had heard the playing of his son &lt;a href=&quot;https://en.wikipedia.org/wiki/Chucho_Vald%C3%A9s&quot;&gt;Chucho&lt;/a&gt; and was very curious how Bebo&apos;s playing might differ. The father had a more old-fashioned style, of course. But he was good.&lt;/p&gt;
&lt;p&gt;The most moving scene in the entire film was that of father and son playing together, on two pianos, improvising on the famous Cuban song &quot;La Comparsa&quot; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Ernesto_Lecuona&quot;&gt;Ernesto Lecuona&lt;/a&gt;. The communication between them and the interplay and contrasts were quite fascinating and touching to me. They got very emotional during their session and I could not help being moved to tears myself. The scene made me think about the story of Bebo&apos;s decision to leave Cuba for Sweden, abandoning his family, and how he met up again with Chucho for this documentary! For me, reflecting on my own relationship with my father over the years (who is still very much alive and well; I see him once or twice a year, and will see him again soon), the scene was electric.&lt;/p&gt;
&lt;h2&gt;The Bebo/Chucho scene from &quot;Calle 54&quot;&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/enblfWLM4n0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Some highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At the beginning, Bebo starts off with flourishes and then the theme, while Chucho provides a little bit of harmonic filler.&lt;/li&gt;
&lt;li&gt;Then Chucho starts adding more countermelody.&lt;/li&gt;
&lt;li&gt;At 2:01, they smile at each other as Bebo changes the key and lets Chucho take charge. Bebo goes into a lot of elaborate, passionate ornamentation.&lt;/li&gt;
&lt;li&gt;At 2:46, when the melody goes from minor to major, this is when things start getting intense: watch the two looking at each other with increasing emotion.&lt;/li&gt;
&lt;li&gt;At 3:39, Bebo signals to slow things down. They end, slyly without a harmonic resolution. Then Chucho gets up and hugs his father.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rest in peace, Bebo Valdés.&lt;/p&gt;
</content:encoded></item><item><title>My second year of celebrating Johann Sebastian Bach&apos;s birthday: a tale of accidental love</title><link>https://franklinchen.com/blog/2013/03/21/my-second-year-of-celebrating-johann-sebastian-bachs-birthday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/21/my-second-year-of-celebrating-johann-sebastian-bachs-birthday/</guid><pubDate>Fri, 22 Mar 2013 00:55:43 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Last year I reported on celebrating the birthday of &lt;a href=&quot;https://en.wikipedia.org/wiki/Johann_Sebastian_Bach&quot;&gt;Johann Sebastian Bach, born in 1685&lt;/a&gt;. I was still just barely beginning to play the flute seriously then, and I read through some music of his transcribed for flute.&lt;/p&gt;
&lt;p&gt;I have progressed tremendously on flute in the past year; the difference between having played flute for a few months and playing it for a few months &lt;em&gt;plus a whole year&lt;/em&gt; is really huge. So this year, to celebrate, I played for myself some of Bach&apos;s actual music written for flute: selections from his flute sonatas.&lt;/p&gt;
&lt;p&gt;Of course, &lt;a href=&quot;/blog/2012/09/20/my-first-bobblehead-doll-guess-who/&quot;&gt;my Bach bobblehead&lt;/a&gt; still watches over me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/bach-and-franklin.jpg&quot; alt=&quot;J S Bach bobblehead and Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have a tale of accidental love to tell.&lt;/p&gt;
&lt;h2&gt;Falling instantly in love with Bach&apos;s flute sonata in E major, BWV 1035, first movement&lt;/h2&gt;
&lt;h3&gt;Alto recorder&lt;/h3&gt;
&lt;p&gt;In 2011, I started playing alto &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;, teaching myself and joining the Pittsburgh Recorder Society. I first completed the two-volume method by Orr, over the course of approximately two months, February through April 2011. Then I moved on to the two-volume method by &lt;a href=&quot;https://www.aswltd.com/adultmet.htm#begin&quot;&gt;Mario Duschenes&lt;/a&gt;. One of the great things about the second volume of the Duschenes method is that it contains excerpts of real music. One excerpt that came up was the first movement of &lt;a href=&quot;https://en.wikipedia.org/wiki/Sonata_in_E_major_for_flute_or_recorder_and_basso_continuo&quot;&gt;Bach&apos;s flute sonata in E major&lt;/a&gt;, transposed for alto recorder.&lt;/p&gt;
&lt;p&gt;I had never heard this music before, so I looked for recordings of it. This was not so easy! The reason is that I kept on finding recordings of the original flute version, but at the time, I was not yet playing the flute, only recorder, and only interested in recorder. Then I found a recording by &lt;a href=&quot;https://en.wikipedia.org/wiki/Michala_Petri&quot;&gt;Michala Petri&lt;/a&gt; and Keith Jarrett. So I worked on this &lt;em&gt;adagio ma non tanto&lt;/em&gt; first movement and periodically played along with Petri&apos;s recording.&lt;/p&gt;
&lt;p&gt;Actually, I didn&apos;t much like Petri&apos;s performance at all: it lacked in articulation, contrast, and expression:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;809awZvxx80&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Falling in love&lt;/h3&gt;
&lt;p&gt;What really got to me was this passionate performance I found on YouTube on recorder by Maurice Steger. There are idiosyncratic things he does that I don&apos;t do, but there is no doubt about his commitment to full emotional expression:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;_MGBQy33pkE&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I couldn&apos;t explain why, but seeing this video was one of the first times I really fell in love with Baroque music. To me, the long phrases, chromaticism, and Bach&apos;s own style of ornamentation give a meditative expression of melancholy and longing. I poured myself into playing this on recorder, inspired by Maurice Steger&apos;s passion for it.&lt;/p&gt;
&lt;h2&gt;Baroque flute vs. modern flute?&lt;/h2&gt;
&lt;p&gt;When I &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;accidentally started playing modern flute again in late 2011&lt;/a&gt;, I eventually looked up actual flute recordings of Bach&apos;s flute sonatas. I completely stopped playing Bach transposed for the recorder. I just felt that, despite Maurice Steger&apos;s example, &lt;a href=&quot;/blog/2011/11/17/flute-versus-recorder/&quot;&gt;I could not get everything I wanted out of the recorder&lt;/a&gt;, and I wanted to move to flute. However, the modern flute seemed not so well suited to the music. &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;Eventually, I bought a Baroque flute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, because Bach on the &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; has remained much more difficult for me to play than on the modern flute, I have resigned myself to mostly playing Bach&apos;s flute music on modern flute, while trying to keep the music crisply articulated and with minimal vibrato.&lt;/p&gt;
&lt;p&gt;(I played the first movement of Bach&apos;s flute sonata in E minor, BWV 1034, &lt;a href=&quot;/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/&quot;&gt;at a party earlier this year&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Here are some videos illustrating a little bit of how the sounds and interpretations may differ.&lt;/p&gt;
&lt;h3&gt;Baroque flute: Jed Wentz&lt;/h3&gt;
&lt;p&gt;A performance by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jedwentz.com/jedwentz.com/Welcome.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jedwentz.com/jedwentz.com/Welcome.html&quot;&amp;gt;Jed Wentz&amp;lt;/span&amp;gt; on Baroque flute:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;m0CiLHDH5FQ&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;(Update of 2013-07-04)&lt;/h4&gt;
&lt;p&gt;I no longer like this performance as much as I did initially. It is a bit frantic, with some blazing fast playing that I would like to be a bit slower.&lt;/p&gt;
&lt;h3&gt;Modern flute: Emmanuel Pahud&lt;/h3&gt;
&lt;p&gt;A performance by Emmanuel Pahud on modern flute, but playing with fine sensitivity to elements of Baroque style:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;YyePpU1_lKo&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;(Update of 2013-07-04)&lt;/h4&gt;
&lt;p&gt;My, taste changes in three months: I no longer like this performance. It is simultaneously still too smooth and too restrained.&lt;/p&gt;
&lt;h3&gt;Another modern flutist: Nikos Nikopoulos&lt;/h3&gt;
&lt;p&gt;A random modern flutist playing in a bland legato-all-the-time style:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;uc3ck2MayjE&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Bach&apos;s birthday is a good time to remember and re-create and re-experience what was beautiful and special about the music of the Baroque era, before changes in taste and style came along in the late 18th century and onward. For me, the flute sonatas will always be a source of rediscovery and exploration of the Baroque world.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-07-04)&lt;/h3&gt;
&lt;p&gt;I have more &lt;a href=&quot;/blog/2013/07/04/more-summer-musical-partying/&quot;&gt;thoughts on this sonata&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The final Cathedral of Learning stair climb before the Fight for Air Climb</title><link>https://franklinchen.com/blog/2013/03/20/the-final-cathedral-of-learning-stair-climb-before-the-fight-for-air-climb/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/20/the-final-cathedral-of-learning-stair-climb-before-the-fight-for-air-climb/</guid><pubDate>Thu, 21 Mar 2013 01:53:02 GMT</pubDate><content:encoded>&lt;p&gt;Today, members of Team Ferlee met for a final stair climb at the Cathedral of Learning before we race in the Fight for Air Climb.&lt;/p&gt;
&lt;p&gt;I originally had not planned to attend, because I am still in a state of recovery from all the running I&apos;ve been doing, and had hoped to rest up till tomorrow before doing my own final stair climb. In fact, because I had not intended on a stair climb, I had done a run this morning already as my exercise for the day.&lt;/p&gt;
&lt;p&gt;But circumstances made it most convenient for me to meet up with Becky in order to give her a final donation check as well as receive items to use for agreed-upon team costumes.&lt;/p&gt;
&lt;h2&gt;The workout&lt;/h2&gt;
&lt;p&gt;It turned out it was just Becky, Bill, and me.&lt;/p&gt;
&lt;p&gt;Despite starting from a condition of fatigue, I ended up doing four reps again. This was my most intense workout yet.&lt;/p&gt;
&lt;p&gt;The three of us started with one rep.&lt;/p&gt;
&lt;p&gt;Bill and I both did a crazy fast second rep: he did 6:49, which is a lot faster than the 7:26 he did &lt;a href=&quot;/blog/2013/03/10/now-at-four-reps-of-the-cathedral-of-learning-stair-climb/&quot;&gt;ten days ago&lt;/a&gt;. I went close to all-out, but without knowing for sure when I could start my final sprint. Still, I finished in 7:06, a lot faster than the approximately 7:36 of ten days ago.&lt;/p&gt;
&lt;p&gt;In the third rep, I went at a fairly fast pace.&lt;/p&gt;
&lt;p&gt;In my fourth rep, I did a series of intervals of sprints in order to figure out how long I could go into a full run. My conclusion was that I could not do more than five floors without my quads turning into jelly. That was good to find out.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I am completely beat.&lt;/p&gt;
&lt;p&gt;No more stair climbing tomorrow or Friday, because Saturday is the big day!&lt;/p&gt;
&lt;p&gt;It is unfortunate I left the fine-tuning of speed to the final week before the race, so I won&apos;t get the full benefits of a serious training program, but optimizing the race was never of high priority to me, after all.&lt;/p&gt;
</content:encoded></item><item><title>My second ever blindfold chess game</title><link>https://franklinchen.com/blog/2013/03/17/my-second-ever-blindfold-chess-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/17/my-second-ever-blindfold-chess-game/</guid><pubDate>Mon, 18 Mar 2013 03:56:20 GMT</pubDate><content:encoded>&lt;p&gt;I spent much of the time at Henry&apos;s St. Patrick&apos;s Day party &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;playing music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I decided to take a break, I went to the chess room and thought I&apos;d just sit down and watch some of the kids play chess. I hadn&apos;t played any chess at one of these parties in a long time, because it&apos;s just too one-sided.&lt;/p&gt;
&lt;p&gt;But it turned out that when I sat down, people were leaving the chess board. So  I said to Henry (who was also taking a break from music and socializing), &quot;I&apos;ll play you blindfolded!&quot;&lt;/p&gt;
&lt;h2&gt;Blindfold chess&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Blindfold_chess&quot;&gt;Blindfold chess&lt;/a&gt; is when someone plays a game of chess without having any sight of the board (or equivalent, e.g., touch). The game has to be played using only memory, no recording devices of any kind.&lt;/p&gt;
&lt;p&gt;There&apos;s actually a &lt;a href=&quot;https://www.blindfoldchess.net/&quot;&gt;recent book on blindfold chess&lt;/a&gt; that I have not yet looked at.&lt;/p&gt;
&lt;h2&gt;My blindfold game with Henry&lt;/h2&gt;
&lt;p&gt;At one of Henry&apos;s parties last year, there actually was a blindfold game conducted, between Henry and one of the boys who regularly attends his parties with his family, Ari. Henry played blindfold, while Ari had sight of the board, and I took charge of moving the pieces. That game ended in a draw because although Henry was winning, he forgot where all of his pieces were at a critical point and stalemated young Ari! After that game, I had suggested that someday I would like to play a blindfold game again, having done so once back in around thirteen years ago, when I was in graduate school. In fact, by sheer coincidence, that first ever blindfold game was in the office of my classmate &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;Andrej who was responsible for starting me on listening to Cuban music&lt;/a&gt;!! (Curiously, I don&apos;t actually remember how my first blindfold chess game (with Andrej) turned out. I think we adjourned it at some point and did not continue it.)&lt;/p&gt;
&lt;p&gt;Anyway, I played blindfold against Henry, who had sight of the board. I was nervous because unlike Ari, Henry is actually a seasoned tournament player (currently rated 1823), having actually drawn me in a rated game several years ago (with both of us being sighted).&lt;/p&gt;
&lt;p&gt;My primary concern, not being trained at all in how to play blindfold chess effectively, was to make sure that I did not forget something that could lead to my quickly losing. So I decided to try to simplify. This, of course, meant reducing my own chances of winning.&lt;/p&gt;
&lt;h3&gt;The game&lt;/h3&gt;
&lt;p&gt;I don&apos;t remember all the moves in the game, but remember most of them and the most important positions.&lt;/p&gt;
&lt;p&gt;I took White and won a Pawn out of the opening but then gave it back. Although I eventually acquired a clear advantage in the middle game, I decided to simplify rather than lose track of my pieces. This was an important position in which I was White, to move:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/blindfold/middle.jpg&quot; alt=&quot;Middle game&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ended up winning a Pawn going into a Rook and Pawn endgame, which was clearly supposed to be drawn:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/blindfold/end.jpg&quot; alt=&quot;Ending&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But I acquired some winning chances after a while. I squandered my best chance, as a result of starting to lose track of what pieces were where. It was unexpectedly difficult (without a deliberate attempt on my part at a system) to keep track of exactly where our Rooks and Kings were, since there was so much shuffling around. If I were playing blindfold again, I would come up with a simple system to remember this kind of information.&lt;/p&gt;
&lt;p&gt;I had some other winning chances later, because of my active King, but as a result of some simplification, we finally reached a clearly dead drawn position:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/blindfold/dead-draw.jpg&quot; alt=&quot;Draw is imminent&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The game ended when, after several more moves, I clearly could not make further progress and offered a draw, which Henry accepted.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was pleased not to lose my second ever blindfold chess game, ha! Well, it was just a casual game late at a party, so neither Henry nor I were playing our best. In a real game, I would be very lucky to escape losing against a sighted Henry, I think.&lt;/p&gt;
</content:encoded></item><item><title>Only one easy rep of the Cathedral of Learning stair climb</title><link>https://franklinchen.com/blog/2013/03/17/only-one-easy-rep-of-the-cathedral-of-learning-stair-climb/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/17/only-one-easy-rep-of-the-cathedral-of-learning-stair-climb/</guid><pubDate>Mon, 18 Mar 2013 03:55:52 GMT</pubDate><content:encoded>&lt;p&gt;Team Ferlee met up yet again for a Cathedral of Learning stair climb workout.&lt;/p&gt;
&lt;p&gt;I originally had not planned to even attend this time, for more than one reason:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;recovery from the crazy tough 18 mile Steel City Road Runners training run yesterday, of which I actually ran around 16 miles&lt;/li&gt;
&lt;li&gt;having a Pittsburgh Recorder Society meeting to attend&lt;/li&gt;
&lt;li&gt;having a St. Patrick&apos;s Day party to attend after the recorder society meeting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But I missed not having seen the team since &lt;a href=&quot;/blog/2013/03/10/now-at-four-reps-of-the-cathedral-of-learning-stair-climb/&quot;&gt;last week, when I crazily did four reps&lt;/a&gt;. I decided to show up briefly just to say hello before rushing off to the recorder society meeting.&lt;/p&gt;
&lt;p&gt;Instead, I couldn&apos;t help myself, and ended up doing one leisurely rep before leaving.&lt;/p&gt;
&lt;p&gt;That was actually probably a good thing to have done, because I left feeling less sore and tired. It&apos;s definitely true in my experience that the day after a hard workout (as in my 16 mile run), one should resist the temptation to just be sedentary, and instead do something easy that increases circulation and warms the body in order to speed healing.&lt;/p&gt;
&lt;p&gt;It&apos;s kind of funny to refer to an &quot;easy&quot; rep of doing a 36-floor stair climb, but in reality, after these months of gradual buildups, going up once at a leisurely pace is not actually hard for me at all any more. That&apos;s encouraging.&lt;/p&gt;
&lt;p&gt;The team was amused I did this in my dress shirt and slacks (I did take off my socks and shoes and jacket and carried them in my hands while going up), but this is, after all, how I got started just before New Year!&lt;/p&gt;
&lt;h2&gt;Six days left&lt;/h2&gt;
&lt;p&gt;There are only six more days left till the Fight for Air Climb. I haven&apos;t trained as much for this event as I would have liked, because my priority has been Pittsburgh Marathon training, but at some point this week I need to do some last-minute speed work in order to get at least some race sharpness for the Fight for Air Climb.&lt;/p&gt;
</content:encoded></item><item><title>Finally doing some Latin music jamming on flute; also Irish and French</title><link>https://franklinchen.com/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/</guid><pubDate>Mon, 18 Mar 2013 03:36:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;St. Patrick&apos;s Day weekend means, of course, a party at Henry&apos;s. Last year Abby and I even went to two of his St. Patrick&apos;s Day parties! At the first, &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;I played tin whistle for the first time&lt;/a&gt;, and I played some easy recorder music &lt;a href=&quot;/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/&quot;&gt;at the second&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year, I reflected on how far I&apos;ve come musically, and as usual, wanted to do something new and challenging.&lt;/p&gt;
&lt;p&gt;And I did.&lt;/p&gt;
&lt;h2&gt;Irish music&lt;/h2&gt;
&lt;p&gt;I brought my tin whistle and Irish flute ready to jam. It turned out that Barbara had come with violin ready for some Irish jamming also. When she went at it with Henry on piano, she ended up playing &quot;Danny Boy&quot; (&quot;Londonderry Air&quot;) as one selection. Unfortunately, I had planned on playing it on flute, &quot;redeeming&quot; myself after being terrible on flute a year ago &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;when I tried it&lt;/a&gt;, so since she had already done it, I quietly scrapped my original plan. No problem: there were many other things to play.&lt;/p&gt;
&lt;p&gt;Barbara joined me and Henry in some jigs, reels, and waltzes that I pulled out, some of which I did on tin whistle and some of which I did on Irish flute. That was fun, if pretty exhausting: lots and lots of notes, not so easy to just plain sight read. But of course, nobody has to play all the notes. That&apos;s the beauty of this music. There never were official notes anyway; these are traditional tunes with a certain recognizable rhythm and shape and harmonic movement, but everyone does the notes differently anyway.&lt;/p&gt;
&lt;h2&gt;French music&lt;/h2&gt;
&lt;p&gt;I&apos;d asked Vasili to learn on accordion &quot;Les Ormeaux&quot;, which I had learned just recently &lt;a href=&quot;/blog/2013/02/25/stepping-it-up-at-the-french-and-blues-jam/&quot;&gt;at a French jam&lt;/a&gt;. It&apos;s not actually a traditional tune, but it&apos;s a great one. Unfortunately, it turned out that Vasili had learned it in a different key from the one I was using on modern flute, so one of us (him) transposed on the fly to try to match, and the result therefore wasn&apos;t as good as it could have been. Next time! Anyway, Abby and I jammed with Vasili on stuff.&lt;/p&gt;
&lt;h2&gt;Latin music&lt;/h2&gt;
&lt;h3&gt;Bolero&lt;/h3&gt;
&lt;p&gt;The musical highlight for me was my debut in playing Latin, or more specifically, Cuban music. I fell in love with this music when I was &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;introduced to Latin ballroom dance back in 2000&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started off with an unnamed bolero from a World Music Cuba book I had first encountered &lt;a href=&quot;/blog/2012/02/22/flute-progress-still-hanging-in-there/&quot;&gt;a year ago when I was just barely playing flute&lt;/a&gt;. I got on flute and Henry enthusiastically improvised along on piano and we took a couple of turns. That was great.&lt;/p&gt;
&lt;p&gt;Then I pulled out &lt;a href=&quot;https://www.pbs.org/buenavista/music/songs/dos_gardenias.html&quot;&gt;&quot;Dos Gardenias&quot;&lt;/a&gt;, one of my favorite boleros of all time (and the bolero is one of my favorite musical genres). (By the way, I am working on being ready to sing this and other boleros before too long, making my debut as a bolero singer.) Again, more fun opportunities for inventiveness for Henry and me.&lt;/p&gt;
&lt;h4&gt;Buena Vista Social Club&lt;/h4&gt;
&lt;p&gt;By the way, I first encountered &quot;Dos Gardenias&quot; through Ibrahim Ferrer of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Buena_Vista_Social_Club_%28album%29&quot;&gt;Buena Vista Social Club&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;5pKW7qvYSHU&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&quot;Buena Vista Social Club&quot; was a very important music recording to me. At a time in my life around thirteen years ago when I was trying to explore Latin music and asked around for suggestions, my grad school classmate Andrej recommended this CD to me and my musical world was changed forever.&lt;/p&gt;
&lt;h3&gt;Cha cha&lt;/h3&gt;
&lt;p&gt;Finally, I pulled out an unnamed cha cha from the World Music Cuba book. We really went wild for this one, especially since Chad, one of Henry&apos;s piano students (and a fine improviser) decided to join us and sat at the piano with Henry as both of them played with me and we kept going and going and I became very excited and inspired along with them. Wow. That was one of the most intense musical experiences I&apos;ve ever had. It was frightening (didn&apos;t know when I&apos;d hit the limits of my technique or inventiveness) and exhilarating at the same time. When I was done, I was sweating from all the effort. Abby said she&apos;d never seen me so animated before playing music, since she&apos;s only ever seen me play Baroque and other such music mainly, or Irish and French. Well, Latin jazz is different.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;At some point in the evening, I needed a break from playing music and from socializing and decided to rest. However, it turned out that my &quot;rest&quot; consisted of relaxing in a chair while closing my eyes and... &lt;a href=&quot;/blog/2013/03/17/my-second-ever-blindfold-chess-game/&quot;&gt;playing blindfold chess&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;(Update of 2014-03-16)&lt;/h2&gt;
&lt;p&gt;Abby and I couldn&apos;t make it to Henry&apos;s St. Patrick Day party in 2014. I felt sad about this, but our other plans made earlier made it impractical to try to attend.&lt;/p&gt;
</content:encoded></item><item><title>18 miles in Vibram FiveFingers: training for the Pittsburgh Marathon through a St. Patrick&apos;s Day parade</title><link>https://franklinchen.com/blog/2013/03/16/18-miles-in-vibram-fivefingers-training-for-the-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/16/18-miles-in-vibram-fivefingers-training-for-the-pittsburgh-marathon/</guid><pubDate>Sat, 16 Mar 2013 22:22:34 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/18-miles/st-patricks-day-parade-prep.jpg&quot; alt=&quot;Pittsburgh St. Patrick&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My second &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=619953&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=3/30/2013&quot;&gt;Saturday group training run with the Steel City Runners&lt;/a&gt; happened to be on St. Patrick&apos;s Day weekend, and therefore took place just before the &lt;a href=&quot;https://www.pittsburghirish.org/parade/&quot;&gt;Pittsburgh St. Patrick&apos;s Day parade&lt;/a&gt;, which starts at 10 AM.&lt;/p&gt;
&lt;h2&gt;Overtraining and knees&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/03/09/11-pittsburgh-bridge-crossings-in-one-12-mile-run/&quot;&gt;Last week I mentioned&lt;/a&gt; that I was having problems because of overtraining; I ran five days one week only to have to scale back to three the next. This week I consciously got in four days of running, with higher total mileage than either of the previous two weeks (when I did 26 and 23). This week, I got in 29. It wasn&apos;t easy, especially given that I ran last week&apos;s long run too hard and therefore had left knee oddness that actually lasted three days! It wasn&apos;t so bad that I couldn&apos;t run, but I clearly had to let it heal up, which it did in time for another long run.&lt;/p&gt;
&lt;p&gt;Unfortunately, both of John&apos;s knees were in serious pain the day after last week&apos;s training run, and a week later, he is still waiting for them to heal up, and therefore did not join me for today&apos;s training run. Oops.&lt;/p&gt;
&lt;h2&gt;Plan&lt;/h2&gt;
&lt;p&gt;For today&apos;s run, I decided to run &lt;em&gt;only the first 16 miles&lt;/em&gt; and then walk the last 2 miles. Also, I joined the 10-minute pace group.&lt;/p&gt;
&lt;p&gt;It turned out that a lot of things went &quot;wrong&quot; on this run, but I got back to the start OK in the end!&lt;/p&gt;
&lt;h2&gt;Unknown territory&lt;/h2&gt;
&lt;p&gt;I wore my Vibram FiveFingers Bikila LS shoes again. This is an important test, because I have &lt;em&gt;never&lt;/em&gt; been on the road for 18 miles straight in these shoes before, run or walk! I need to know whether wearing these for the Pittsburgh Marathon will work out.&lt;/p&gt;
&lt;h2&gt;Weather conditions&lt;/h2&gt;
&lt;p&gt;I had watched the forecast all week with concern that it might be pouring rain, but I was committed to do this run regardless of conditions, because if the Pittsburgh Marathon involves running in rain, I need to be ready to deal with that.&lt;/p&gt;
&lt;p&gt;It turned out that we lucked out; although it was cold, there was drizzling rain but no downpour!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/18-miles/start.jpg&quot; alt=&quot;Start of run&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The route&lt;/h2&gt;
&lt;p&gt;Here is the route of the 18-mile training run:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://snippets.mapmycdn.com/routes/view/embedded/180281790?width=560&amp;amp;height=400&amp;amp;elevation=true&amp;amp;info=true&amp;amp;line_color=E60f0bdb&amp;amp;rgbhex=DB0B0E&amp;amp;distance_markers=1&amp;amp;unit_type=imperial&amp;amp;map_mode=TERRAIN&amp;amp;last_updated=2013-03-11T10:51:41-04:00&quot; height=&quot;590px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;I started with the 10-minute pace group. I actually immediately fell back, wanting to start off running more slowly,  but was never too far from the pack.&lt;/p&gt;
&lt;h3&gt;St. Patrick&apos;s Day&lt;/h3&gt;
&lt;p&gt;Immediately and throughout the run, I saw people in green who were a little loud and clearly had a bit to drink. I was amused that they were up and around already at 8 AM in the morning.&lt;/p&gt;
&lt;p&gt;We ended up running on Liberty Avenue through the setup for St. Patrick&apos;s Day parade downtown (which begins at 10 AM). We got some cheers (many of us were wearing green) as well as some jeers. It was a strange experience, and I felt a bit embarrassed to be running through parade preparation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/18-miles/st-patricks-day-parade-prep.jpg&quot; alt=&quot;Pittsburgh St. Patrick&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;First water stop&lt;/h3&gt;
&lt;p&gt;At the first water stop, I drank some water and grabbed a GU gel to go. I caught up to the 10-minute pace group at the first water stop, since a lot of people didn&apos;t immediately keep going but waited for everyone to get water.&lt;/p&gt;
&lt;p&gt;My new system with gels is to take one and then eat it some minutes after drinking water, rather than immediately with water. It saves time.&lt;/p&gt;
&lt;h3&gt;Big uphill and losing my map&lt;/h3&gt;
&lt;p&gt;There&apos;s a big uphill going east on Liberty Ave during which I lost the 10-minute pace group because I prefer to go slower uphill to maintain an even &lt;em&gt;effort&lt;/em&gt; rather than &lt;em&gt;pace&lt;/em&gt;. I always make up the loss on the downhills.&lt;/p&gt;
&lt;h3&gt;Second water stop&lt;/h3&gt;
&lt;p&gt;The second water stop was near mile 8 in Shadyside. I caught up yet again to the 10-minute pace group at that point, and took another GU gel.&lt;/p&gt;
&lt;p&gt;At this point, I realized that I must have lost my paper map while running up Liberty Avenue. This was bad, because although I roughly knew the route, I did not know all the details. I did have my smartphone on me, but the MapMyRun Web site did not display very well on it.&lt;/p&gt;
&lt;p&gt;Worse, it appeared after the second water stop that the 10-minute pace group was either going much slower or I was all &quot;warmed up&quot; and going much faster, because I could not tolerate their pace, and I decided I had to forge ahead into Oakland, even though there was nobody ahead that I could follow.&lt;/p&gt;
&lt;p&gt;I did find two other people who were willing to go at a faster pace along with me, so the three of us took off into Oakland.&lt;/p&gt;
&lt;h3&gt;Birmingham Bridge&lt;/h3&gt;
&lt;p&gt;The three of us crossed the Birmingham Bridge together to the South Side. I remarked that the last time I did the Pittsburgh Marathon ten years ago, I was humbled by the uphill going &lt;em&gt;into&lt;/em&gt; Oakland (in the other direction) on the bridge.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/18-miles/birmingham-bridge.jpg&quot; alt=&quot;Birmingham Bridge to South Side&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;South Side and falling behind&lt;/h3&gt;
&lt;p&gt;The South Side was a total party scene, as might be expected.&lt;/p&gt;
&lt;p&gt;Going east on Carson Street, I suddenly noticed at around mile 11 that I had lost one of my gloves. I had taken off my gloves earlier as it was getting warmer, and put them in my pockets, but just as I had lost my map because I hadn&apos;t zipped my jacket pockets, I had now lost a glove. I apologized to my two companions and said I was turning back to find my glove if possible.&lt;/p&gt;
&lt;p&gt;Luckily, my glove was just a block back, and a group of runners saw it and picked it up and gave it to me. But now my two companions were far away from me. I could still see them, but I didn&apos;t want to run super fast just to catch them.&lt;/p&gt;
&lt;h3&gt;Three Rivers Heritage Trail and getting lost&lt;/h3&gt;
&lt;p&gt;I saw my companions turn onto the Three Rivers Heritage Trail. At this point, I no longer knew exactly what the rest of the route was for the last 8 miles. I knew that there was a water/gel stop at some point in the next 7 miles before the West End Bridge, but had no idea where it was!! I really didn&apos;t want to miss the final water/gel stop, since that would mean going 8 miles without any water or fuel. Of course, I did have some money on me, so I could stop somewhere to refuel, but I didn&apos;t really want to stop if I didn&apos;t have to.&lt;/p&gt;
&lt;p&gt;So now I&apos;d run around 12 miles and my feet were definitely sore. It was a huge relief to be running on the trail, actually.&lt;/p&gt;
&lt;p&gt;But then I made a mistake. I suddenly saw what seemed to be a water stop because a bunch of runners were gathering there. I approached and asked if it was the Steel City Road Runners water stop and they said no, it was Elite Runners and Walkers. They offered to give me some water anyway, but I declined, which was a mistake, because during the seconds I spent on this detour, I lost sight of my two companions!&lt;/p&gt;
&lt;p&gt;I kept on running on the trail but they were just gone, and I never saw them again.&lt;/p&gt;
&lt;h2&gt;Running to the West End Bridge&lt;/h2&gt;
&lt;p&gt;I just kept on running west, figuring I would eventually get to the West End Bridge. I went through Station Square and made it across the West End Bridge. Now, I had planned ahead of time to stop running shortly after crossing the West End Bridge, because it was going to be 16 miles then.&lt;/p&gt;
&lt;p&gt;However, I started feeling cold, and so I did some run/walking east all the way back to the start. It was very lonely going the last 8 miles of the route alone.&lt;/p&gt;
&lt;h2&gt;Safe and warm&lt;/h2&gt;
&lt;p&gt;I made it back OK. I grabbed two energy bars and went inside to get warm and stretch and devour the two energy bars. My feet were totally killing me, but I had survived 18 miles on them in Vibram FiveFingers Bikila LS shoes. I still have no idea whether I can last a whole marathon in them.&lt;/p&gt;
&lt;h3&gt;My feet&lt;/h3&gt;
&lt;p&gt;Although my feet are sore, everything seems to be OK.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/18-miles/feet.jpg&quot; alt=&quot;Franklin&quot; /&gt;
&lt;img src=&quot;../../assets/images/18-miles/shoes.jpg&quot; alt=&quot;Vibram FiveFingers Bikila LS shoes&quot; /&gt;
&lt;img src=&quot;../../assets/images/18-miles/soles.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;On the &lt;a href=&quot;https://www.facebook.com/steelcityrrc&quot;&gt;Steel City Road Runners Facebook site&lt;/a&gt; is a &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.425827677512050.1073741827.391728257588659&amp;amp;type=1&quot;&gt;photo album of the St. Patrick&apos;s Day run&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I ran about 16 miles of the 18-mile route, as planned, but got lost, which I did not plan. I learned some lessons. In the future, I am zipping my jacket pockets, and I am also studying the printed map thoroughly before starting one of these runs. My super-sore feet have me worried about running the marathon in Vibram FiveFingers, so I will investigate alternatives. I&apos;m still waiting for my order this week of &lt;a href=&quot;https://lunasandals.com/&quot;&gt;Luna Sandals&lt;/a&gt; to come in.&lt;/p&gt;
&lt;p&gt;Again, I&apos;m thankful that Steel City Road Runners made it possible for me to do such a long run without feeling completely alone, and not having to haul all the water and fuel I needed during and after the run. Ten years ago when I was marathon training, I did carry along everything I needed, but it really is much nicer to simulate actual race conditions.&lt;/p&gt;
&lt;p&gt;I am grateful that when I was done and called home, Abby baked a pizza for us to share when I got back. Fuel! Abby has been understanding and supportive during my training for the Pittsburgh Marathon. She thinks it&apos;s a crazy thing to do, and it is, but I want to do it this once again while I have the opportunity.&lt;/p&gt;
</content:encoded></item><item><title>Now at four reps of the Cathedral of Learning stair climb!</title><link>https://franklinchen.com/blog/2013/03/10/now-at-four-reps-of-the-cathedral-of-learning-stair-climb/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/10/now-at-four-reps-of-the-cathedral-of-learning-stair-climb/</guid><pubDate>Mon, 11 Mar 2013 01:07:54 GMT</pubDate><content:encoded>&lt;p&gt;Today I joined a Team Ferlee group stair climb workout at the Cathedral of Learning for the second time. &lt;a href=&quot;/blog/2013/02/24/finally-doing-the-cathedral-of-learning-stair-climb-as-part-of-team-ferlee/&quot;&gt;Two weeks ago&lt;/a&gt; I did two reps and ten floors total.&lt;/p&gt;
&lt;p&gt;I am still in recovery from doing yesterday a really tough 12 mile Steel City Road Runners training run for the Pittsburgh Marathon, so I didn&apos;t know what exactly I planned to do.&lt;/p&gt;
&lt;p&gt;It turned out that thanks to Bill, with whom I finally climbed for the first time today, I did more than I had originally intended. In retrospect, I probably shouldn&apos;t have, but I did, so what&apos;s done is done.&lt;/p&gt;
&lt;p&gt;Here&apos;s what happened.&lt;/p&gt;
&lt;h2&gt;The workout&lt;/h2&gt;
&lt;p&gt;The team did the first two reps sort of together, which meant not very fast for Bill or me. That was fine. I like socializing and going easy to warm up.&lt;/p&gt;
&lt;p&gt;On the third rep, Bill decided he wanted to do a fast one, so he timed himself. I tried to follow him, but in my depleted condition had no plan to kill myself to overtake him. I just wanted to test an honest genuinely fast, but not all out, third rep.&lt;/p&gt;
&lt;p&gt;He ended up doing the third rep in 7:26, his new personal record. I did not time myself, but finished probably about ten seconds behind him, I gathered, so I did around 7:36. This was clearly the fastest I&apos;ve also done one rep of the stair climb, not that I&apos;ve been timing myself much in the past months (check out &lt;a href=&quot;/blog/2013/01/19/why-ive-chosen-to-perform-only-two-repetitions-of-the-cathedral-of-learning-stair-climb/&quot;&gt;my reports from two months ago&lt;/a&gt;, when I timed myself just to get an idea of my baseline).&lt;/p&gt;
&lt;h2&gt;My fourth rep&lt;/h2&gt;
&lt;p&gt;Everyone was done after the third rep, but I decided to hang around to do one last rep by myself, since I felt strangely OK even after the hard third rep; recovery from that seemed rather quick. The marathon training I&apos;ve been doing has clearly helped with my endurance for stair climbing as well.&lt;/p&gt;
&lt;p&gt;So I did an untimed fourth rep just because I could.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Having done four reps with good form is starting to give me confidence that in two weeks, I&apos;ll be able to put in a good all-out effort in the Fight for Air Climb.&lt;/p&gt;
</content:encoded></item><item><title>11 Pittsburgh bridge crossings in one 12-mile run</title><link>https://franklinchen.com/blog/2013/03/09/11-pittsburgh-bridge-crossings-in-one-12-mile-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/09/11-pittsburgh-bridge-crossings-in-one-12-mile-run/</guid><pubDate>Sun, 10 Mar 2013 02:21:26 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://sphotos-b.xx.fbcdn.net/hphotos-ash3/602768_422297731198378_798317370_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://sphotos-b.xx.fbcdn.net/hphotos-ash3/602768_422297731198378_798317370_n.jpg&quot;&amp;gt;[image: View from Mount Washington]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;My first ever &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=568739&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=3/16/2013&quot;&gt;Steel City Road Runners Saturday morning training run&lt;/a&gt; was a 12-mile run. My office mate John went with me.&lt;/p&gt;
&lt;p&gt;The last time I ran as far as 12 miles &lt;a href=&quot;/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/&quot;&gt;was in February&lt;/a&gt;, so I expected to do OK. The important difference is that I have been increasing my weekly mileage. I had a monster training week last week, going up from 13 miles to 26 miles last week, the &lt;em&gt;largest&lt;/em&gt; training volume I have had in a single week in years. I&apos;ll confess that this has taken a toll on me.&lt;/p&gt;
&lt;p&gt;As a result, I have backed off this week, such that including this 12-mile run (I will not run tomorrow), this week I will have 23 miles. In the long haul, &lt;em&gt;overtraining&lt;/em&gt; is a huge waste of time and energy. Unfortunately, in my attempt to &quot;catch up&quot; some because of the marathon coming in less than two months, I did in fact overtrain to an extent; last week I ran five out of seven days in order to reach that mileage of 26. This week, I tried to up the mileage but felt tired and wisely decided to rest when I needed to, even though that meant this week I ran only three days! Obviously, in retrospect, it would have been wiser to run four days last week and four this week, with better overall training.&lt;/p&gt;
&lt;p&gt;However, I did enjoy today&apos;s training run. It involved the most bridge crossings I have ever done in my life in a single day (by foot or otherwise): eleven!!&lt;/p&gt;
&lt;p&gt;Here is my report on the training run, including, of course, photos of bridge crossings.&lt;/p&gt;
&lt;h2&gt;Sign in&lt;/h2&gt;
&lt;p&gt;John and I signed in at 8 AM. It was going to be a beautiful, sunny day.&lt;/p&gt;
&lt;p&gt;We received printed maps of the route. I did have my smartphone with me, wearing it in my SPIbelt, so I felt pretty safe about knowing where I am or where to go in case I got lost.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/sign-in.jpg&quot; alt=&quot;Steel City Road Runners sign in&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There is indoor access to restrooms, water fountains, and warmth at these Steel City Road Runners training run meetings. Very nice for winter!&lt;/p&gt;
&lt;p&gt;There were designated pacers. I was uncertain about which pace group I should join, if any at all. I felt that probably the 10-minute pace group might be on the slow side, but definitely I did not expect to keep up with the 9-minute pace group for a long run. But we decided to start off with the 9-minute pace group and see what happens.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/pace-groups.jpg&quot; alt=&quot;Pacers&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I wore my Vibram FiveFingers Bikila LS shoes, which have been my main running shoes all winter (when there is no snow or water on the ground):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/vibram-fivefingers-bikila-ls.jpg&quot; alt=&quot;Franklin wearing Vibram FiveFingers Bikila LS&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The route&lt;/h2&gt;
&lt;p&gt;Here is the route of the 12-mile training run:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://snippets.mapmycdn.com/routes/view/embedded/178234904?width=560&amp;amp;height=400&amp;amp;elevation=true&amp;amp;info=true&amp;amp;line_color=E60f0bdb&amp;amp;rgbhex=DB0B0E&amp;amp;distance_markers=1&amp;amp;unit_type=imperial&amp;amp;map_mode=TERRAIN&amp;amp;last_updated=2013-03-08T12:47:36-06:00&quot; height=&quot;590px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;The bridge crossings&lt;/h2&gt;
&lt;p&gt;The 9-minute pace group was clearly going too fast for me. I hung off the back hoping to simply keep them in sight as they kept getting more ahead of me. To my surprise, John went with the group, even though he has not run in months. I was not sure it was wise of him not to have done any running before this training run, and am worried about his going too fast all of a sudden.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/on-our-way.jpg&quot; alt=&quot;nine-minute pace group&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Rachel Carson Bridge, inbound over the Allegheny River&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/rachel-carson-bridge.jpg&quot; alt=&quot;On Rachel Carson Bridge inbound&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We can see downtown Pittsburgh:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/rachel-carson-bridge-see-downtown.jpg&quot; alt=&quot;On Rachel Carson Bridge, seeing downtown&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;7th Street Bridge, outbound&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/7th-street-bridge.jpg&quot; alt=&quot;On 7th Street Bridge outbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Roberto Clemente Bridge, inbound&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/roberto-clemente-bridge.jpg&quot; alt=&quot;Approaching Roberto Clemente Bridge inbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Fort Duquesne Bridge, outbound&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/fort-duquesne-bridge.jpg&quot; alt=&quot;On Fort Duquesne Bridge outbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;West End Bridge, south over the Monongahela River&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/west-end-bridge.jpg&quot; alt=&quot;On West End Bridge south&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;First water stop and getting lost!&lt;/h3&gt;
&lt;p&gt;Our first water stop was after 4 miles:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/first-water-stop.jpg&quot; alt=&quot;First water stop&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By the time I had reached this water stop, John and the rest of the 9-minute pace group were way ahead of me and barely visible. Unfortunately, after I drank some Gatorade, I noticed that I didn&apos;t see them at all any more. So for almost the rest of the run, the following 8 miles, I was mostly alone! This was disconcerting because it meant that I&apos;d have to try to follow the printed map and directions, and avoid getting lost. It would turn out that I would get lost a couple of times.&lt;/p&gt;
&lt;h3&gt;Fort Pitt Bridge, inbound&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/fort-pitt-bridge.jpg&quot; alt=&quot;On Fort Pitt Bridge inbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Smithfield Street Bridge, outbound&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/smithfield-street-bridge.jpg&quot; alt=&quot;On Smithfield Street Bridge outbound&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Check out this view of bridges along the Monongahela River:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/monongahela-river.jpg&quot; alt=&quot;Monongahela River&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;10th Street Bridge, inbound&lt;/h3&gt;
&lt;p&gt;Leaving the South Side:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/10th-street-bridge.jpg&quot; alt=&quot;On 10th Street Bridge inbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Liberty Bridge, outbound&lt;/h3&gt;
&lt;p&gt;Not having anyone to follow, I got confused about how to get onto the Liberty Bridge, missing the steps, and had to do some backtracking to find the way to get on.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/liberty-bridge-outbound.jpg&quot; alt=&quot;On Liberty Bridge outbound&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;To Mount Washington&lt;/h3&gt;
&lt;p&gt;This training run featured a big, long uphill to Mount Washington, with a water stop at the very top!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/to-mount-washington.jpg&quot; alt=&quot;To Mount Washington&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After being alone for quite some time, I did encounter John and other runners coming back down Mount Washington when I was still going up. They were going really fast downhill!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/up-to-mount-washington.jpg&quot; alt=&quot;Uphill to Mount Washington&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Second water stop&lt;/h3&gt;
&lt;p&gt;My phone started acting funny when I got to the water stop at the top of Mount Washington, so I did not bother to try take any more photos after that. I was bummed that I didn&apos;t get a photo of the view of Pittsburgh from the top, but someone did and posted it on Facebook, so here it is:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://sphotos-b.xx.fbcdn.net/hphotos-ash3/602768_422297731198378_798317370_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://sphotos-b.xx.fbcdn.net/hphotos-ash3/602768_422297731198378_798317370_n.jpg&quot;&amp;gt;[image: View from Mount Washington]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;At this water stop, at mile 9, I felt hungry, and saw some GU gels, and took one and ate it before continuing my run. It was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://guenergy.com/products/products-roctane-gels&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://guenergy.com/products/products-roctane-gels&quot;&amp;gt;GU Roctane&amp;lt;/span&amp;gt;. I didn&apos;t look at the ingredients till after I got home and did a Web search on it. That explained a lot.&lt;/p&gt;
&lt;p&gt;While running down from Mount Washington, I felt a surge of energy and decided to run really, really fast, in hope of possibly catching sight of John at some point. In fact, I did not see any runner again for the next 3 miles until I reached the end.&lt;/p&gt;
&lt;h3&gt;Back across the Liberty Bridge, inbound&lt;/h3&gt;
&lt;p&gt;Then running through downtown.&lt;/p&gt;
&lt;h3&gt;16th Street Bridge outbound&lt;/h3&gt;
&lt;p&gt;I was kind of zoned out and missed the turn onto the bridge because I was just running fast, but luckily, I was off by just a block before I realized my mistake and backtracked.&lt;/p&gt;
&lt;h2&gt;The end&lt;/h2&gt;
&lt;p&gt;I got back to the start in a bit less than two hours, so given my rest stops and getting lost, I definitely averaged under 10-minute pace. But I was definitely not running anywhere near 9-minute pace. I&apos;ll keep that in my mind for the next training run.&lt;/p&gt;
&lt;p&gt;John had finished well before me, but he himself had gotten lost near the end also.&lt;/p&gt;
&lt;p&gt;We snacked on provided orange slices and chips:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/after.jpg&quot; alt=&quot;Steel City Road Runners snacks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/11-pittsburgh-bridge-crossings/franklin.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I drove us back to our places. After both of us had showered and changed, we met up for lunch buffet at Coriander India Grill, a favorite place to eat &lt;a href=&quot;/blog/2012/02/26/snowing-means-sambar-at-coriander-india-grill/&quot;&gt;after getting very hungry after a lot of exercise&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week will be an 18-mile training run. As I have mentioned, &lt;a href=&quot;/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/&quot;&gt;I do not intend to actually do such a long run&lt;/a&gt;, so I will think of a good way to run 16 miles instead: either I start walking earlier, or I walk near the end. And for sure, I will start with the 10-minute pace group rather than then 9-minute pace group. These training runs are not races. I don&apos;t want to run too fast. In fact, I&apos;m worried that I ran the last 3 miles today too fast, especially downhill from Mount Washington. My left knee is feeling a little funny. I hope it will recover after a day of rest.&lt;/p&gt;
&lt;p&gt;I&apos;ve started to figure out the gel thing. I used eat gels a decade ago, but stopped because I had no reason to, but on these long runs, they do help, and I have to start planning what to use for fuel in the Pittsburgh Marathon, which will officially supply GU gel and Gatorade. I did learn, after the fact, that GU Roctane contains an insane amount of caffeine, and that&apos;s probably what got me all hopped up to run super fast, but to my detriment today. So I need to be careful if I use Roctane in the future.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a very instructive and tiring training run. I have a long way to go before being ready for the marathon in less than two months, but am happy to have finally joined a group training run.&lt;/p&gt;
&lt;p&gt;I&apos;m very grateful for the opportunity to train with the Steel City Road Runners. Sometimes, it is much easier to commit to getting up early and going for a long run when you know that you&apos;ll have company, that there will be support (in the form of a planned route and aid stations). Even for an introvert like me who usually prefers to run alone, the unique pains of marathon training cause me to value camaraderie for some tough runs.&lt;/p&gt;
</content:encoded></item><item><title>Finally moving up from two to three Cathedral of Learning reps</title><link>https://franklinchen.com/blog/2013/03/04/finally-moving-up-from-two-to-three-cathedral-of-learning-reps/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/04/finally-moving-up-from-two-to-three-cathedral-of-learning-reps/</guid><pubDate>Tue, 05 Mar 2013 03:46:38 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been over a week since my last Cathedral of Learning stair climb, &lt;a href=&quot;/blog/2013/02/24/finally-doing-the-cathedral-of-learning-stair-climb-as-part-of-team-ferlee/&quot;&gt;which I did with other members of Team Ferlee&lt;/a&gt;. Apart from being very busy generally, I&apos;ve been focusing on getting my Pittsburgh Marathon training going.&lt;/p&gt;
&lt;p&gt;But today after work I had some time to squeeze in a stair climb workout. I ended up finally going to &lt;em&gt;three&lt;/em&gt; full reps! The reason I felt ready to do this was that I have started to find it easier to recover from two reps, and also I have found ways to reduce my boredom, by really getting deep into monitoring the physical sensations of stair climbing: not only the details of efficiently lifting my leg and pushing up, but also even how to make turns effectively. I appreciate the subtleties of stair climbing much more than I did when I started out. So I am now mentally prepared to do more than two reps.&lt;/p&gt;
&lt;h2&gt;My times&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;9:09, then 4:13 recovery&lt;/li&gt;
&lt;li&gt;9:12, then 3:26 recovery&lt;/li&gt;
&lt;li&gt;8:52&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was very conservative in going slower than usual and taking a fairly long recovery, but my goal was to get in three solid reps, with the final rep being fastest. Also, &lt;a href=&quot;/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/&quot;&gt;having just run a 5K race yesterday&lt;/a&gt;, technically today was supposed to be an &quot;easy&quot; workout day.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Doing three reps of the Cathedral stair climb wasn&apos;t too bad. I can see myself doing the reps faster and with less recovery time in the future.&lt;/p&gt;
</content:encoded></item><item><title>My first Steel City Road Runners winter 5K race</title><link>https://franklinchen.com/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/</guid><pubDate>Sun, 03 Mar 2013 23:33:03 GMT</pubDate><content:encoded>&lt;p&gt;Today was the first time I ever ran Vibram FiveFingers for a winter race! As planned &lt;a href=&quot;/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/&quot;&gt;last week&lt;/a&gt;, I ran in a &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=620982&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=3/16/2013&quot;&gt;Steel City Road Runners 5K race&lt;/a&gt; to gauge my current fitness level while training for the 2013 Pittsburgh Marathon.&lt;/p&gt;
&lt;p&gt;I was a little disappointed by how &quot;slow&quot; I ran, but actually, given the amount of training I&apos;ve had so far this winter, I&apos;m not doing too badly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrrc-5k-2013-03-04/franklin-finish.jpg&quot; alt=&quot;Franklin finishing 5K&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(explanation of misleading clock time below)&lt;/p&gt;
&lt;h2&gt;The route&lt;/h2&gt;
&lt;p&gt;The route was actually kind of a complement to the &lt;a href=&quot;/categories/pretty-good-race/&quot;&gt;Pretty Good Race 5K&lt;/a&gt; course, overlapping the turnaround point of that race but on the same trail in Schenley Park.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe id=&quot;mapmyfitness_route&quot; src=&quot;https://www.mapmyrun.com/routes/view/embedded/176780548?width=560&amp;amp;height=400&amp;amp;&amp;amp;line_color=7f0000ff&amp;amp;distance_markers=1&amp;amp;map_mode=TERRAIN&quot; height=&quot;420px&quot; width=&quot;100%&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;div style=&quot;text-align: right; padding-right: 20px;&quot;&amp;gt;&amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/create/&quot;&amp;gt;Create Maps&amp;lt;/a&amp;gt; or &amp;lt;a target=&quot;_blank&quot; href=&quot;https://mapmyrun.com/routes/&quot;&amp;gt;search&amp;lt;/a&amp;gt; from 80 million at &amp;lt;a href=&quot;https://mapmyrun.com&quot;&amp;gt;MapMyRun&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;Shoes&lt;/h2&gt;
&lt;p&gt;Because there is still some snow (and ice and mud) on the ground in the trails, I wore my &lt;a href=&quot;/blog/2012/08/28/five-reasons-we-just-stocked-up-on-vibram-fivefingers-kso-trek-shoes/&quot;&gt;Vibram FiveFingers KSO Trek shoes&lt;/a&gt;. Also, because of the cold temperature and the water on the ground, I wore Injinji socks, to prevent frostbite! For any run longer than a 5K, I would not even wear the FiveFingers with socks at this temperature. But I figured that I would generate enough heat during a 5K to keep my toes sufficiently warm to avoid frostbite even when wet.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;h3&gt;Before the race&lt;/h3&gt;
&lt;p&gt;I happened to bump into &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;Kurt&lt;/a&gt;, who said he was there because his daughter was running in the race. Pittsburgh is small; I always keep encountering familiar faces in new contexts.&lt;/p&gt;
&lt;p&gt;I encountered Pattye Stragar, who is so instrumental in the &lt;a href=&quot;/blog/2012/02/08/public-shame-a-great-way-to-maintain-a-habit/&quot;&gt;fitness program at CMU&lt;/a&gt;, and in publicizing the Pittsburgh Marathon and the Steel City Road Runners, and notifying the CMU community of the special deal that I ended up taking advantage of. I asked her if she was doing the marathon and she said she did it the year it came back (it was canceled 2004-2008 and came back in 2009) and she was done with marathons.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pbs.twimg.com/media/BEek8kdCYAAcX2v.jpg:large&quot; alt=&quot;Pattye Stragar and others&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;During the race&lt;/h3&gt;
&lt;p&gt;Yes, my feet did get wet, but I did not have any problems with them freezing. Also, although there were some slippery, icy spots and wet, muddy spots on the trails, they were not too bad. After I got home, my shoes and socks looked like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrrc-5k-2013-03-04/vibram-and-injinji.jpg&quot; alt=&quot;Shoes and socks afterwards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The race course was hilly and not so easy, even if it weren&apos;t slippery out there.&lt;/p&gt;
&lt;p&gt;After about the first mile, I noticed a guy running around my pace ahead of me. I decided he was going to be my target to beat in the race. There was plenty of time to make up the gap. It turned out that I actually passed him at one point, but later he passed me; I am used to this kind of thing because I tend to run downhills much better than I run uphills. In the final quarter mile or so, I took off and passed him for the last time. You can see him way back in this photo of me crossing the finish line:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/scrrc-5k-2013-03-04/franklin-finish.jpg&quot; alt=&quot;Franklin finishing 5K&quot; /&gt;&lt;/p&gt;
&lt;p&gt;An explanation about the clock: the race was held in two ways, with bib numbers 1-50 arbitrarily assigned to the first wave, then the rest (including me) assigned to the second wave two minutes later, to avoid congestion on the trails. So in fact, my official finish time was 25:11. I&apos;d hoped I would be in shape to run faster than that, but this number is important real data to have, in forming my expectations for how fast I might be able to do the Pittsburgh Marathon. I think it is unlikely I&apos;ll be in shape to attempt a four-hour marathon in two months.&lt;/p&gt;
&lt;p&gt;By the way, on the &lt;a href=&quot;https://www.facebook.com/steelcityrrc&quot;&gt;Steel City Road Runners Facebook site&lt;/a&gt; is a &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.419910474770437.1073741825.391728257588659&amp;amp;type=1&quot;&gt;photo album of the race&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;After the race&lt;/h3&gt;
&lt;p&gt;There was water set out for us to drink after the race. Also, bags of potato chips, plates of cookies, and &lt;a href=&quot;https://www.dibellas.com/&quot;&gt;DiBella&apos;s&lt;/a&gt; subs! Tasty and filling!&lt;/p&gt;
&lt;p&gt;Thanks to the Steel City Road Runners for putting on this race, having the people on the course to direct us, and feeding us afterwards! I had a really fun experience.&lt;/p&gt;
&lt;h2&gt;Signing up for another race&lt;/h2&gt;
&lt;p&gt;By the way, a couple of days ago I decided to commit to doing &lt;a href=&quot;https://eliterunners.com/just-a-short-run/&quot;&gt;Just A Short Run&lt;/a&gt; in late March. I will be doing the half marathon version of it as a final checkpoint of my fitness before the marathon, which is a month later.&lt;/p&gt;
&lt;p&gt;This will be my first half marathon race in nine years: my last half marathon was in 2004.&lt;/p&gt;
&lt;p&gt;I have actually done Just A Short Run four times in my life so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2001: I did the 5K&lt;/li&gt;
&lt;li&gt;2002: I did the half marathon (the course ended up actually a bit long)&lt;/li&gt;
&lt;li&gt;2003: I attempted the 30K as part of training for the 2003 Pittsburgh Marathon, but I was very ill and dropped out after running around 13 miles (my only DNF)&lt;/li&gt;
&lt;li&gt;2004: I did the 5K&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do not know yet whether I will be &lt;em&gt;racing&lt;/em&gt; Just A Short Run or just using it as part of training. &lt;em&gt;Objectively&lt;/em&gt;, I should not be all-out racing such a distance while marathon training, because recovery from racing a half marathon will only cut into valuable marathon training time. However, there may be psychological benefits in doing well in a half marathon, if I am sufficiently fit to attempt that. I will decide when the time is nearer.&lt;/p&gt;
&lt;p&gt;I am not doing any other races, because they would interfere with my long run progression plans. I will wait until after the marathon to enjoy training for and running 5K and 10K races. So this year I&apos;m going to skip the &lt;a href=&quot;https://www.marthadixon.org/&quot;&gt;Martha&apos;s Run 10K&lt;/a&gt; that I&apos;ve only ever done once (in 2004), as well as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.montourtrail.org/events/displayevent.asp?id=1&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.montourtrail.org/events/displayevent.asp?id=1&quot;&amp;gt;Burgh&apos;s Pizza and Wings Pub 10K&amp;lt;/span&amp;gt; that I also did once (in 2004). Since I&apos;m not going to be doing the Pittsburgh Marathon again next year, maybe next year I can run these races.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-30)&lt;/h3&gt;
&lt;p&gt;I ended up partially racing Just A Short Run, which I think was the correct decision. I had a &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;great experience&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Doing my first 5K race this year was a confidence booster for me, being a hard workout. It was also an opportunity to start really quantifying my progress and realistic timeline of improvement over the next months.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-03-01)&lt;/h3&gt;
&lt;p&gt;I did not run in 2014&apos;s &lt;a href=&quot;https://www.steelcityrrc.org/events?eventId=797046&amp;amp;EventViewMode=EventDetails&quot;&gt;Steel City Road Runners Campus Challenge 5K&lt;/a&gt;, sadly, because I have not been running much this winter, thanks to not signing up for either the Pittsburgh Marathon (or half marathon) or even for the annual CMU Fitness Challenge.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Geek Out Day #8: &quot;Learning&quot;</title><link>https://franklinchen.com/blog/2013/03/02/pittsburgh-geek-out-day-number-8-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/02/pittsburgh-geek-out-day-number-8-learning/</guid><pubDate>Sat, 02 Mar 2013 21:45:31 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-geek-out-day-2013-03-02/board.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today was the eight &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt;. I hadn&apos;t been one in a whole year, because of big changes in my life that have affected my use of time and energy.&lt;/p&gt;
&lt;p&gt;A topic I proposed that we discussed was &quot;test-driven learning&quot;.&lt;/p&gt;
&lt;p&gt;A session summary is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/sessions/2013&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/sessions/2013&quot;&amp;gt;here&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Dealing with setbacks during my second month of meditation</title><link>https://franklinchen.com/blog/2013/03/01/dealing-with-setbacks-during-my-second-month-of-meditation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/03/01/dealing-with-setbacks-during-my-second-month-of-meditation/</guid><pubDate>Fri, 01 Mar 2013 15:50:25 GMT</pubDate><content:encoded>&lt;p&gt;A month ago, &lt;a href=&quot;/blog/2013/02/01/a-report-on-one-month-of-daily-meditation/&quot;&gt;I reported on my meditation practice in January 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The month of February was even more problematic for me than January was. I&apos;ve noticed a pattern that January tends to start our fairly well, because of rebooting after the winter holidays, but then &quot;feature creep&quot; catches up in life.&lt;/p&gt;
&lt;p&gt;I did &lt;em&gt;not&lt;/em&gt; manage to meditate every single day, but thanks to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://insighttimer.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://insighttimer.com/&quot;&amp;gt;Insight Timer&amp;lt;/span&amp;gt; mobile app I use, with its &quot;journal&quot; feature, I have a lot of when I did and my brief thoughts after each session.&lt;/p&gt;
&lt;h2&gt;Problems&lt;/h2&gt;
&lt;h3&gt;Breaking the chain for the first time&lt;/h3&gt;
&lt;p&gt;I first &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;broke my chain&lt;/a&gt; of daily meditation on Wednesday, February 6. This was the day after a long &lt;a href=&quot;/blog/2013/02/05/pittsburgh-chess-club-championship-2013-round-4-fascinating-attacking-defending-game/&quot;&gt;chess tournament game in the evening&lt;/a&gt;. According to my journal, I was very busy with exercise, work, and starting to pack for the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;NE Scala&amp;lt;/span&amp;gt; conference that &lt;a href=&quot;/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/&quot;&gt;I was going to&lt;/a&gt; travel to Philadelphia for the next day, Thursday (which I took off from work). I ended up &quot;forgetting&quot; to meditate, and then staying up late, until I realized I had forgotten, and so it was past midnight when I did the meditation session, so it counted for Thursday rather than Wednesday.&lt;/p&gt;
&lt;p&gt;The piling up of being &quot;too busy&quot; clearly wrecked my routine. In retrospect, the only solution is to plan better when my routine is going to be broken up by travel or other significant disruptions. Also, there was the matter of just having too much in my routine anyway: I did recognize that Tuesday night chess tournaments were clearly  causing me to stay up too late at night, and so decided already in late January to &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;stop playing in them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note: I did manage to get in my daily meditation while at the conference, using the Android version of the app. I squeezed it in on the floor of the hotel suite I shared with Josh and Jamie while they were in the other room.&lt;/p&gt;
&lt;h2&gt;A one-minute meditation session&lt;/h2&gt;
&lt;p&gt;Monday, February 11 was a tough day for me (still recovering from the conference trip, and going back to work) and more so for Abby, who broke her foot late at night coming back from mandolin rehearsal. We spent nearly two hours at the emergency room (time mostly spent waiting; we spent another two hours Tuesday morning), during which I decided to steal a quiet minute meditating, so I did a &lt;em&gt;one-minute&lt;/em&gt; meditation using the mobile app at one point. In my whole meditation log, this is the only time in the past two months that I did anything other than a ten-minute meditation on a day when I meditated at all.&lt;/p&gt;
&lt;p&gt;The next two weeks of our lives were very tough. I put aside most of what I had planned to do in my life during that period, in order to take care of &lt;em&gt;our&lt;/em&gt; life, but I made sure to meditate every day. I think having the meditation practice really helped a lot, actually.&lt;/p&gt;
&lt;h2&gt;Problems with the evening schedule&lt;/h2&gt;
&lt;p&gt;I never got back onto a reliable morning meditation schedule, although I did continue to meditate before bed. But because of variability in my schedule, I again missed a daily evening session, by mere minutes, on Monday, February 25, when I had a crazy busy day that concluded with &lt;a href=&quot;/blog/2013/02/25/stepping-it-up-at-the-french-and-blues-jam/&quot;&gt;not only stopping by OpenHack Pittsburgh but also attending a music jam&lt;/a&gt;. I didn&apos;t forget to meditate; I just stayed up too late for the session to count for Monday.&lt;/p&gt;
&lt;p&gt;Again, the real solution is to get the meditation in early in the morning. Having a better home evening routine would also help: I have found that if I stay out too late outside the home for some event, I end up &quot;shifting&quot; my schedule at home rather than cutting things out that I would normally do during an evening staying at home. Abby has advised me on this and I agree with her that this is the right thing to do. On days when I&apos;m out in the evening, I simply cannot expect to have the time to do what I would normally do when not out. I should not shift, but should cut out.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Despite all the setbacks, I still keep on meditating. It is easy to stop doing something when you realize you&apos;re doing it &quot;badly&quot;. It is easy to say &quot;what&apos;s the point?&quot; or &quot;I&apos;ll never get this right&quot; or &quot;I&apos;m a loser&quot;. But I keep in mind that meditation is meditation, however it is done. I don&apos;t stop flossing my teeth just because I don&apos;t always do it perfectly, after all. And sometimes the benefits do not become apparent until an unexpected turn (such as Abby&apos;s accident) that showcases the need to be present and calm in the face of challenges.&lt;/p&gt;
&lt;p&gt;It&apos;s been two months now since New Year. Do you have New Year habits that you threw yourself into with enthusiasm that you have now fallen away from or are ashamed of not keeping up the way you had hoped? How have you coped with your own imperfection?&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-10)&lt;/h3&gt;
&lt;p&gt;I never wrote up a report on March meditation, or April, or my giving up meditation in May. Here is an &lt;a href=&quot;/blog/2013/08/10/emerging-from-my-three-months-of-illness-self-pitying-and-self-loathing/&quot;&gt;explanation of what happened and how I decided to get back on track&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Another exciting concert at Bar Marco: Chris Norman and the Chatham Baroque playing a tasty assortment of dynamic music</title><link>https://franklinchen.com/blog/2013/02/28/another-exciting-concert-at-bar-marco-chris-norman-and-the-chatham-baroque-playing-a-tasty-assortment-of-dynamic-music/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/28/another-exciting-concert-at-bar-marco-chris-norman-and-the-chatham-baroque-playing-a-tasty-assortment-of-dynamic-music/</guid><pubDate>Fri, 01 Mar 2013 04:47:52 GMT</pubDate><content:encoded>&lt;p&gt;Just this week, Annie of the &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt; sent out email reminding us of upcoming musical performances of interest, including some by the &lt;a href=&quot;https://www.chathambaroque.org/&quot;&gt;Chatham Baroque&lt;/a&gt; joined by visiting &lt;a href=&quot;https://chrisnorman.com/&quot;&gt;Chris Norman&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://chrisnorman.com/images/home_feature.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://chrisnorman.com/images/home_feature.jpg&quot;&amp;gt;[image: Chris Norman]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;When I heard that Chris Norman was coming, I frantically started rethinking my schedule for the week, because I really wanted to see him playing his wooden flutes. He has been one of my primary musical heroes since I first encountered him at a &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;public music jam session last year&lt;/a&gt; sponsored by the &lt;a href=&quot;https://www.rbsp.org/&quot;&gt;Renaissance and Baroque of Pittsburgh&lt;/a&gt;. That day was one of the most important days of my life, which I will never forget, because not only did I see and hear a real master, but also was encouraged to participate myself in playing music.&lt;/p&gt;
&lt;p&gt;I&apos;ve always also been a big fan of Chatham Baroque, for their lively, alert performances of the standard repertoire as well as &lt;a href=&quot;/blog/2012/10/04/chatham-baroque-thoughts-on-playing-new-non-baroque-music-on-baroque-instruments/&quot;&gt;new collaborations and projects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I managed to attend one of this week&apos;s concerts, and I was not disappointed!&lt;/p&gt;
&lt;h2&gt;Why I rarely attend concerts&lt;/h2&gt;
&lt;p&gt;First, a reminder: nowadays, I rarely attend concerts (or even listen to recorded music). &lt;a href=&quot;/blog/2011/10/02/i-love-music-but-rarely-listen-to-it-now/&quot;&gt;I explained why over a year ago&lt;/a&gt;: time is limited (on weekdays and particularly on weekends). Furthermore, when I do attend concerts, I am much pickier about what I attend, because when I think about it, in the past I have often been disappointed by concerts.&lt;/p&gt;
&lt;h2&gt;Bar Marco and nature of music venues&lt;/h2&gt;
&lt;p&gt;One thing I came to realize is that the standard &quot;classical music&quot; concert is not to my taste. First of all, the programs tend to be very long, such as two hours with an intermission, which, frankly, taxes both my attention span as well as takes up an entire block of time in an evening. Second, and most important actually, is that there is a sense of &quot;distance&quot; and even formality in the standard concert. This is reinforced by certain choices of clothing and demeanor.&lt;/p&gt;
&lt;p&gt;Note: I&apos;m speaking as one who did not grow up in &quot;classical music&quot; culture, but only really discovered and fell in love with Western art music upon &lt;a href=&quot;/blog/2012/12/10/rip-charles-rosen/&quot;&gt;attending college&lt;/a&gt;. So there have always been things about the culture that initially struck me as strange, and are probably at least partially responsible for the relative lack of popularity of the music among younger people (just peek into the average classical music concert hall and you&apos;ll see geezers and middle-aged people).&lt;/p&gt;
&lt;p&gt;I rather enjoyed the use of Bar Marco last fall as non-traditional music venue, where &lt;a href=&quot;/blog/2012/11/14/classical-revolution-pittsburghs-aquitango-delivers-passionate-traditional-tango/&quot;&gt;I saw AquiTango performing, and sat up close&lt;/a&gt; and enjoyed the relative intimacy and informality of the occasion. Not only that, but from a technical, performance point of view (now that I play music myself), it is extremely educational for me to be up front seeing what the musicians do and relating to it and learning from it, whether it&apos;s cues and signals among them or details of physical technique. This is stuff you can&apos;t get sitting far away in a big concert hall, and you certainly can&apos;t get at all from audio recordings or even videos really. You have to be there, anticipating, thinking actively, hearing the breaths, seeing the faces, in real time. Music is not just sound, not just wave forms or digital bits. It&apos;s a live, active creation.&lt;/p&gt;
&lt;p&gt;So I jumped at the opportunity to see &lt;a href=&quot;https://www.showclix.com/event/3745641&quot;&gt;Chris Norman and Chatham Baroque also at Bar Marco&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This venue has its limitations, of course. Primarily, the bar downstairs is very noisy, and it would be nice if there were a barrier to avoid the noise and music blasting downstairs from so easily being heard upstairs. That said, for the most part I wasn&apos;t too bothered by the noise, because I sat up front very near the musicians, and so when they were playing, I didn&apos;t hear the noise. But in moments of dead silence the distraction was real. I would suggest putting up a temporary barrier at the stairway during performances.&lt;/p&gt;
&lt;h2&gt;The music&lt;/h2&gt;
&lt;p&gt;A single hour of musical selections was presented (a good length for me; as I mentioned earlier, two hours is a very long time).&lt;/p&gt;
&lt;h3&gt;Scottish Baroque: James Osvald&lt;/h3&gt;
&lt;p&gt;The concert started out with a &lt;a href=&quot;https://en.wikipedia.org/wiki/Scottish_Baroque_music&quot;&gt;Scottish Baroque&lt;/a&gt; sonata by &lt;a href=&quot;https://en.wikipedia.org/wiki/James_Oswald_%28composer%29&quot;&gt;James Osvald&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was interested to actually see Scottish Baroque music being performed live because up till now, I had only &lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;played it without listening to it, through a &quot;Baroque Around the World&quot; series of books&lt;/a&gt;. And I had played it on flute, even though the music was clearly geared toward violin.&lt;/p&gt;
&lt;h3&gt;Instruments&lt;/h3&gt;
&lt;p&gt;Chris played the same keyed wooden &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.oldflutes.com/classical.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.oldflutes.com/classical.htm&quot;&amp;gt;classical flute&amp;lt;/span&amp;gt; for the most part through the concert, although in the slow movement of just this sonata he switched to a deeper alto flute.&lt;/p&gt;
&lt;p&gt;Throughout the concert, Andrew Fouts played Baroque violin, while Patrician Halverson played different sizes of viola da gamba, and Scott Pauley played theorbo as well as a banjo and a Baroque guitar.&lt;/p&gt;
&lt;h3&gt;No program notes&lt;/h3&gt;
&lt;p&gt;There were no program notes for this concert, by the way: &lt;a href=&quot;/blog/2011/11/11/on-not-reading-concert-program-notes/&quot;&gt;just how I like it&lt;/a&gt;! Instead, Chris introduced each piece before he and Chatham Baroque performed it. I liked how he added colorful and humorous touches to his brief introductions. &lt;em&gt;All concerts should work this way&lt;/em&gt;. Long program notes are as pointless, in my opinion, as voluminous printed slides at a lecture: they are only a distraction from the presentation.&lt;/p&gt;
&lt;h3&gt;American old-time music&lt;/h3&gt;
&lt;p&gt;Then they switched things up and played some American &lt;a href=&quot;https://en.wikipedia.org/wiki/Old-time_music&quot;&gt;old-time music&lt;/a&gt;, including &lt;a href=&quot;https://en.wikipedia.org/wiki/Man_of_Constant_Sorrow&quot;&gt;&quot;Man of Constant Sorrow&quot;&lt;/a&gt;. It was interesting hearing Baroque instruments used for this kind of music.&lt;/p&gt;
&lt;p&gt;Chris was really in his element playing this folk music. He became very expressive and walked around and stamped his feet. You can&apos;t experience this kind of concentration and passion just sitting at home listening to some CD or music file: you had to be there, up front! This is what I want to live when I attend a concert.&lt;/p&gt;
&lt;h3&gt;Back to Scottish Baroque: William McGibbon&lt;/h3&gt;
&lt;p&gt;Another name familiar to me (because of having played on flute one of his sonatas) came up, the Scottish Baroque composer &lt;a href=&quot;https://en.wikipedia.org/wiki/William_McGibbon&quot;&gt;William McGibbon&lt;/a&gt;. Apparently the composer was inspired by the Italian style and incorporated into his piece, a sonata in the style of Corelli. I think it&apos;s important to remember that even back in the 18th century, musicians were eager to learn from their counterparts in remote places in the world. Think of how much effort it took to visit or get word of what was going on in Italy, from Scotland!&lt;/p&gt;
&lt;h3&gt;Maritime Canada&lt;/h3&gt;
&lt;p&gt;Then we entered the world of Chris&apos;s own heritage: he is from &lt;a href=&quot;https://en.wikipedia.org/wiki/Music_of_the_Maritimes&quot;&gt;Maritime Canada&lt;/a&gt;. He did some singing in French as well as flute playing. It was the first time I had ever heard him sing, and it sounded similar to Cajun singing.&lt;/p&gt;
&lt;h3&gt;Back to Osvald&lt;/h3&gt;
&lt;p&gt;Then we returned to Osvald, for the &quot;Hawthorn&quot; sonata. I was very curious to hear this because I had never heard it played, but had &lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;played it myself on Baroque flute with Henry on piano&lt;/a&gt;, and run into problems because it was clearly meant for violin, given the crazy fast jig movement at the end.&lt;/p&gt;
&lt;p&gt;It turned out that Chris took a break and sat out most of this sonata, ha! I enjoyed the opportunity to observe how Andrew on Baroque violin would play the first movement, to compare his style and choice of ornamentations with what I&apos;ve done myself. He played it rather differently than how I play it. This is one of the fascinating things I like about Baroque music: there is a good deal of personal choice in how we feel and interpret it.&lt;/p&gt;
&lt;p&gt;To my amusement, Chris did come in for the brief but crazy fast jig that was the third movement, showing off his triple-tonguing chops on flute. Whew!&lt;/p&gt;
&lt;h3&gt;Scottish smallpipes&lt;/h3&gt;
&lt;p&gt;We ended with Chris pulling out his &lt;a href=&quot;https://en.wikipedia.org/wiki/Scottish_smallpipes&quot;&gt;Scottish smallpipes&lt;/a&gt; and playing on them. I had never seen this instrument before and was fascinated. In contrast to mouth-blown bagpipes, these are played with the arms only. A vigorous conclusion to the concert!&lt;/p&gt;
&lt;h2&gt;Afterwards&lt;/h2&gt;
&lt;p&gt;I chatted with Chris Norman a little afterwards. He seemed to recognize me from the jam session a year ago; that surprised me since I was just some quiet guy in the crowd who was still quite a beginner and didn&apos;t play all that much. Anyway, I told him I was inspired by that jam session to not only play more traditional music of the kind that he plays (I got into Irish and French, buying myself an &lt;a href=&quot;/categories/irish-flute/&quot;&gt;Irish flute&lt;/a&gt;), but also improving my technique considerably on &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;. I asked him about his new work on making wooden flutes; I thought it was really cool that he not only plays them, but now makes them too, and why not, if you&apos;re interested in the engineering aspects of creating the kind of sounds you want? This utter physicality of (non-digital) music is something that I&apos;ve come to particularly appreciate.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a really great time at the concert at Bar Marco by Chris Norman and Chatham Baroque. I left inspired again to continue my own music-making and improve on it and incorporate my own personality into it, the way these fine musicians do. It was an hour well-spent.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Python: distribute and other Python community controversies</title><link>https://franklinchen.com/blog/2013/02/27/pittsburgh-python-distribute-and-other-python-community-controversies/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/27/pittsburgh-python-distribute-and-other-python-community-controversies/</guid><pubDate>Thu, 28 Feb 2013 03:12:03 GMT</pubDate><content:encoded>&lt;p&gt;I was very interested to attend this month&apos;s &lt;a href=&quot;https://www.meetup.com/pghpython/&quot;&gt;Pittsburgh Python User Group&lt;/a&gt; &lt;a href=&quot;https://www.meetup.com/pghpython/events/95504432/&quot;&gt;meeting&lt;/a&gt; because Nick Sloan was going to give a talk about packaging with &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pythonhosted.org/distribute/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pythonhosted.org/distribute/&quot;&amp;gt;distribute&amp;lt;/span&amp;gt;: packaging in Python has been a &lt;em&gt;huge source of confusion&lt;/em&gt; to me, both as a user and as a developer.&lt;/p&gt;
&lt;p&gt;Since my use of Python at work or for personal purposes has not been very large scale, I have limped along with settling on a clean setup to use for packaging my code. This is in stark contrast to my management of libraries in Perl, Ruby, and Java, where I think there has been more of a consensus in adoption of certain tools and conventions.&lt;/p&gt;
&lt;p&gt;Also, Joe Esposito sent around some links to interesting discussions and news in the global Python community, so I looked forward to hearing what everyone thought.&lt;/p&gt;
&lt;h2&gt;The problem with Python packaging&lt;/h2&gt;
&lt;p&gt;OK, so the big problem I faced when trying to nicely set up packaging for a personal project a while ago was that there are many options. The &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less&quot;&gt;paradox of choice&lt;/a&gt; is insidious, and it is surprising to me in the Python community, which has generally prided itself on a general consensus on a philosophy of &lt;a href=&quot;https://wiki.python.org/moin/TOOWTDI&quot;&gt;&quot;There&apos;s Only One Way To Do It&quot;&lt;/a&gt;, in sharp and deliberate contrast to the Perl community&apos;s philosophy of &lt;a href=&quot;https://en.wikipedia.org/wiki/There&apos;s_more_than_one_way_to_do_it&quot;&gt;&quot;There&apos;s More Than One Way To Do It&quot;&lt;/a&gt; (TIMTOWTDI).&lt;/p&gt;
&lt;h2&gt;Nick Sloan on packaging with &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pythonhosted.org/distribute/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pythonhosted.org/distribute/&quot;&amp;gt;distribute&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Nick summarized the situation of existing packaging systems for Python:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.python.org/2/distutils/&quot;&gt;&lt;code&gt;distutils&lt;/code&gt;&lt;/a&gt; is lacking in features&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pythonhosted.org/setuptools/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pythonhosted.org/setuptools/index.html&quot;&amp;gt;setuptools&amp;lt;/span&amp;gt; is stagnant&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pythonhosted.org/distribute/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pythonhosted.org/distribute/&quot;&amp;gt;distribute&amp;lt;/span&amp;gt; is a fork of &lt;code&gt;setuptools&lt;/code&gt; and aims to replace it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;He then illustrated the basics of packaging with writing &lt;code&gt;setup.py&lt;/code&gt;, referencing &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://medium.com/kr-projects/b8388ba7c1a&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://medium.com/kr-projects/b8388ba7c1a&quot;&amp;gt;Kenneth Reitz&apos;s recommendations on repository structure&amp;lt;/span&amp;gt;, based on &lt;code&gt;distribute&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Kenneth Reitz&apos;s recommendations on repository structure&lt;/h3&gt;
&lt;p&gt;The most interesting thing about Kenneth Reitz&apos;s recommendations was that he advocated separating out &lt;em&gt;tests&lt;/em&gt; from the code of a module, to reduce dependencies for the installer and user of the module. I definitely prefer to have a separate directory tree for tests, as is standard by &lt;em&gt;convention&lt;/em&gt; when I write tests for projects in many other languages. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Perl: &lt;code&gt;t/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ruby: &lt;code&gt;spec/&lt;/code&gt; when using RSpec&lt;/li&gt;
&lt;li&gt;Java: &lt;code&gt;src/test/&lt;/code&gt; when using JUnit&lt;/li&gt;
&lt;li&gt;Scala: &lt;code&gt;src/test/&lt;/code&gt; when using Specs2 and ScalaCheck&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&apos;t really like his &lt;code&gt;tests/context.py&lt;/code&gt; system of imports, as it is too dynamic in chasing down imports, and therefore may not play well by default with standard tools:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import os
import sys
sys.path.insert(0, os.path.abspath(‘..’))

import sample
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;from .context import sample
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That said, I decided to give his recommendations a shot.&lt;/p&gt;
&lt;h3&gt;Another twist&lt;/h3&gt;
&lt;p&gt;Meanwhile, Nick noted that there is also a &lt;a href=&quot;https://pythonhosted.org/Distutils2/&quot;&gt;&lt;code&gt;distutils2&lt;/code&gt;&lt;/a&gt; project now, to improve &lt;code&gt;distutils&lt;/code&gt;, and that nobody is working on &lt;code&gt;distribute&lt;/code&gt; any more. This sounds like a crazy soap opera in the Python world.&lt;/p&gt;
&lt;h2&gt;Python community debates and news&lt;/h2&gt;
&lt;p&gt;Joe opened up the discussion on Python community news.&lt;/p&gt;
&lt;h3&gt;&quot;Start Writing More Classes&quot;?&lt;/h3&gt;
&lt;p&gt;In the Python community, there has always been some controversy over whether to go all-out object-oriented with classes or write in a more functional style. The language supports both styles, although classes were a fairly late addition to the language.&lt;/p&gt;
&lt;h4&gt;&quot;Stop Writing Classes&quot;?&lt;/h4&gt;
&lt;p&gt;Last year, at PyCon 2012, there was a talk, &quot;Stop Writing Classes&quot;, that made waves:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/o9pEzgHorH0&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I thought it was a good talk, because it exposed how many things done with classes are superfluous, creating code bloat and deeply nested hierarchies: often you can just use a functional style with data that is not all wrapped into classes.&lt;/p&gt;
&lt;h4&gt;A rebuttal&lt;/h4&gt;
&lt;p&gt;Just two weeks ago, someone wrote a post on how &lt;a href=&quot;https://lucumr.pocoo.org/2013/2/13/moar-classes/&quot;&gt;Python programmers should be writing more classes, not less&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was not happy about this post because it set up a straw man. Really, he was simply arguing for modular code vs. monolithic code, and observing that some people who don&apos;t use classes end up writing monolithic code. He even states as much at the end of his post. So the title of his post is misleading.&lt;/p&gt;
&lt;h3&gt;Other news&lt;/h3&gt;
&lt;p&gt;There were various other smaller topics discussed, but &lt;code&gt;distribute&lt;/code&gt; and classes dominated this evening.&lt;/p&gt;
&lt;h2&gt;(Updates after the meetup)&lt;/h2&gt;
&lt;p&gt;After I went home, I updated &lt;a href=&quot;https://github.com/FranklinChen/project-euler-python&quot;&gt;one of my sample Python projects&lt;/a&gt; to adhere to Kenneth Reitz&apos;s guidelines.&lt;/p&gt;
&lt;p&gt;Also, some weeks later, I noticed an &lt;a href=&quot;https://mail.python.org/pipermail/distutils-sig/2013-March/020126.html&quot;&gt;announcement that &lt;code&gt;setuptools&lt;/code&gt; and &lt;code&gt;distribute&lt;/code&gt; were going to merge efforts&lt;/a&gt;. Hooray!&lt;/p&gt;
</content:encoded></item><item><title>Stepping it up at the French and blues jam</title><link>https://franklinchen.com/blog/2013/02/25/stepping-it-up-at-the-french-and-blues-jam/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/25/stepping-it-up-at-the-french-and-blues-jam/</guid><pubDate>Tue, 26 Feb 2013 04:09:11 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Last month, I reported on &lt;a href=&quot;/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/&quot;&gt;exciting new developments in the local French/blues music jam&lt;/a&gt; that happens approximately once a month. We continued with the excitement this month, playing more complex and difficult tunes that Lisa, John, Donna, and others have been transcribing.&lt;/p&gt;
&lt;p&gt;By the way, if you are interested in checking out some of our growing French repertoire, take a look at our &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://drawthedots.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://drawthedots.com/&quot;&amp;gt;transcriptions&amp;lt;/span&amp;gt;, choosing tunebook &quot;Campanule by Gregory Dyke&quot; and &quot;Tunes for Mondays by Lisa Tamres&quot;. These tunebooks are always in progress, so not everything we know or are working on has been put up yet.&lt;/p&gt;
&lt;p&gt;And if you live in the Pittsburgh area and would like to join in playing with us in the future, contact me!&lt;/p&gt;
&lt;h2&gt;French jam&lt;/h2&gt;
&lt;p&gt;I arrived somewhat late because I was coming from leaving the &lt;a href=&quot;/blog/2013/02/25/openhack-pittsburgh-studying-scala/&quot;&gt;second OpenHack Pittsburgh&lt;/a&gt; early (regrettably); in retrospect, I was trying to squeeze in too much on a Monday evening and should have skipped attending OpenHack Pittsburgh, but I had too much enjoyed &lt;a href=&quot;/blog/2013/01/21/attending-the-first-openhack-pittsburgh-meeting/&quot;&gt;the first one&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I arrived, Lisa, John, and Allison were already playing together (on fiddle, accordion, piano), and I joined them for two hours of jamming and playing for the dancers who arrived later.&lt;/p&gt;
&lt;p&gt;I was excited to be learning new (to me) music, in various different keys and modes and rhythms, while all still falling in the categories of waltz, mazurka, bourrée, Schottisch. Because of all the different keys, I ended up only playing my modern flute, not ever switching to my Irish flute.&lt;/p&gt;
&lt;p&gt;We took turns looking through some transcriptions and deciding what to work on, and one song I chose was something called &quot;Les Ormeaux&quot;. It&apos;s a lovely song. Here is a performance of it on accordion I found:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;MxuXoaH5L2k&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Upcoming French dance workshop&lt;/h3&gt;
&lt;p&gt;Another French dance workshop is &lt;a href=&quot;https://www.facebook.com/events/161251944027578/&quot;&gt;being held at CMU on Saturday, March 9&lt;/a&gt;. There was discussion of getting a group of us together to play live music for the workshop. This reminded me that it was a year ago that I &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/&quot;&gt;first became involved in French dance&lt;/a&gt; and also hoped to eventually play music at a workshop. Normally, I would jump at the opportunity to play for the next French dance workshop, taking up the main melody role on flute, but I simply anticipated being too busy to be involved in the next one coming up so soon, so I had to decline to join in. I hope that for the April workshop I&apos;ll have more time to commit to joining in, rehearsing, etc.&lt;/p&gt;
&lt;h2&gt;Blues jam&lt;/h2&gt;
&lt;p&gt;I was exhausted after two hours of the French jam and dance, plus I needed to get home as I promised Abby I would be home before she got back from being driven home from her mandolin practice, so I don&apos;t know how the blues jam went. Maybe next month I&apos;ll be able to check it out.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a great time further exploring French music and continuing to play with Lisa, John, and Allison, whom I&apos;ve played with several times now, getting to feel like a solid core group.&lt;/p&gt;
</content:encoded></item><item><title>OpenHack Pittsburgh: studying Scala</title><link>https://franklinchen.com/blog/2013/02/25/openhack-pittsburgh-studying-scala/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/25/openhack-pittsburgh-studying-scala/</guid><pubDate>Tue, 26 Feb 2013 03:58:33 GMT</pubDate><content:encoded>&lt;p&gt;Last month was the very first meeting of &lt;a href=&quot;/blog/2013/01/21/attending-the-first-openhack-pittsburgh-meeting/&quot;&gt;OpenHack Pittsburgh&lt;/a&gt;, so I eagerlly looked forward to attending &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/100822012/&quot;&gt;the second one&lt;/a&gt;, which was held at &lt;a href=&quot;https://www.thebeautyshoppe.org/&quot;&gt;The Beauty Shoppe&lt;/a&gt;, a new coworking space in East Liberty.&lt;/p&gt;
&lt;p&gt;The space was still under construction and so it was kind of surreal being in there with a half-finished bathroom, walls and rooms that were not completely done yet, missing light fixtures, etc. It was cool that we were allowed to use the space though.&lt;/p&gt;
&lt;h2&gt;Ashamed of leaving early&lt;/h2&gt;
&lt;p&gt;Unfortunately, there was something of a schedule conflict, because I was also looking forward to attending, in the same evening, another edition of the French and blues music jam I&apos;ve been participating in. I ended up decided to attend OpenHack Pittsburgh for a while before leaving early and going to the music jam. &lt;a href=&quot;/blog/2013/02/25/stepping-it-up-at-the-french-and-blues-jam/&quot;&gt;I did make it to the music jam&lt;/a&gt;, but in retrospect, I should have simply chosen not to attend OpenHack Pittsburgh at all.&lt;/p&gt;
&lt;p&gt;I felt bad about leaving early, when everyone was so excited about the projects they were working on for the evening. There was even a &lt;a href=&quot;https://en.wikipedia.org/wiki/3D_printing&quot;&gt;3d printer&lt;/a&gt; in action!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://openhack.github.io/pittsburgh/images/2013-01/whit-coin-counter.jpg&quot; alt=&quot;Chad and the coin counter&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Because I knew I was leaving early, I spent the time there just continuing to learn more Scala on my own.&lt;/p&gt;
&lt;p&gt;I felt it was impolite for me to attend an event when I knew I had to leave early. I will remember this in the future.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fear_of_missing_out&quot;&gt;Fear of missing out&lt;/a&gt; is insidious. It is better to be fully present and engaged in &lt;em&gt;fewer&lt;/em&gt; activities rather than try to do too much. I felt deeply ashamed of leaving early, and vowed that if I attend OpenHack Pittsburgh meetings in the future, I will never leave early again. Something like this should be all or none.&lt;/p&gt;
</content:encoded></item><item><title>2013 Pittsburgh Marathon training progress since signing up three weeks ago: finally coming up with a plan!</title><link>https://franklinchen.com/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/</guid><pubDate>Mon, 25 Feb 2013 00:00:09 GMT</pubDate><content:encoded>&lt;p&gt;Today, I finally started creating an &lt;em&gt;actual&lt;/em&gt; training plan for myself for the 2013 &lt;a href=&quot;https://web.archive.org/web/20220430074504/http://pittsburghmarathon.com/&quot;&gt;Pittsburgh Marathon&lt;/a&gt;, three whole weeks after &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;signing up&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Why so &lt;em&gt;late&lt;/em&gt; in the game (the marathon is just two months away, basically), and is it too late to start serious training?&lt;/p&gt;
&lt;h2&gt;Why late&lt;/h2&gt;
&lt;p&gt;My excuse is that life seriously got in the way this February.&lt;/p&gt;
&lt;p&gt;I was out of town for days at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;NE Scala&amp;lt;/span&amp;gt; [during one week]((/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/). Then immediately after I came back, Abby broke her foot, throwing our lives into considerable disarray for about two weeks.&lt;/p&gt;
&lt;p&gt;So I never actually formulated a marathon training plan until today.&lt;/p&gt;
&lt;h2&gt;My running status so far&lt;/h2&gt;
&lt;p&gt;I have been tracking my total weekly mileage from Monday through Sunday. I have mostly been trying to build up a base by running slowly, doing only short spurts of faster running to stimulate some strength and efficiency.&lt;/p&gt;
&lt;h3&gt;Week of February 4&lt;/h3&gt;
&lt;p&gt;Got in only 10 miles, including one session of early morning hotel treadmill running at the conference.&lt;/p&gt;
&lt;h3&gt;Week of February 11&lt;/h3&gt;
&lt;p&gt;Got in 18 miles, while dealing with the situation of Abby&apos;s broken foot; long run was 8 miles.&lt;/p&gt;
&lt;p&gt;I skipped the &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=619944&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=2/16/2013&quot;&gt;Steel City Road Runners 15-mile Saturday training run&lt;/a&gt; because I simply was not in any shape to run that long.&lt;/p&gt;
&lt;h3&gt;Week of February 18&lt;/h3&gt;
&lt;p&gt;Got in 13 miles, while continuing to spend much of time helping Abby; long run was 12 miles (I managed to squeeze in no other running this week besides a 1 mile treadmill run).&lt;/p&gt;
&lt;p&gt;I skipped the &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=619948&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=2/16/2013&quot;&gt;Steel City Road Runners 10-mile Sunday training run&lt;/a&gt; (it was Sunday because of the &lt;a href=&quot;https://eliterunners.com/spring-thaw/&quot;&gt;Spring Thaw&lt;/a&gt; race on Saturday) because it just didn&apos;t fit in my schedule for today, so I did my long run on my own yesterday instead.&lt;/p&gt;
&lt;h2&gt;The plan for the Pittsburgh Marathon&lt;/h2&gt;
&lt;p&gt;Now that Abby and I have adapted sufficiently to her situation and she is regaining mobility, I finally have the time and energy to gather myself and try to figure out how to proceed with marathon training.&lt;/p&gt;
&lt;p&gt;I casually mentioned &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;when I signed up&lt;/a&gt; that it would be nice to finish close to the &quot;completely arbitrary magic number of 4:00:00&quot;. I now believe that is very unlikely, and therefore it is no longer really a goal. My goal is to get enough training in so that I can actually survive the marathon experience without doing too much damage to myself. There is no way I can build up either huge mileage or a lot of fast training in the time that I have left, so I&apos;m going to focus on ramping up both bit by bit and monitoring myself, watching out for overtraining.&lt;/p&gt;
&lt;p&gt;Also, I want to finally start making it to some Steel City Road Runners training runs, in order to better simulate the experience of running with groups of people on roads in the morning, since that will be the situation on race day.&lt;/p&gt;
&lt;h3&gt;Hansons Marathon Method&lt;/h3&gt;
&lt;p&gt;The plan I have created is my own not-enough-time modification of &quot;beginner program&quot; in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hansonscoachingservices.com/hansons-marathon-method-the-book/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hansonscoachingservices.com/hansons-marathon-method-the-book/&quot;&amp;gt;&quot;Hansons Marathon Method&quot;&amp;lt;/span&amp;gt;, something I&apos;ve heard about over the years. The primary &quot;renegade&quot; idea behind the book is that the super-long-run that is advocated by &quot;traditional&quot; training programs is not ideal. Sometimes the training philosophy is oversimplified to being about the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://hansonscoachingservices.com/hansons-marathon-method-the-16-miler/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://hansonscoachingservices.com/hansons-marathon-method-the-16-miler/&quot;&amp;gt;16-mile long run&amp;lt;/span&amp;gt;, but really what it&apos;s about is not the number of miles, but the amount of wear and tear on your body during long runs that leaves you less ready to bounce back immediately and continue training. The Hansons method focuses on building &quot;cumulative fatigue&quot; by avoiding cycles of training so hard that you need a lot of down time. So my focus will be on running more days per week, while keeping more runs shorter and easier, while putting in an honest long run per week.&lt;/p&gt;
&lt;p&gt;So actually, this is, relatively speaking, a high mileage training method, rather than a low mileage method: instead of doing a whole lot of hard work in fewer days, you spread out the work over more days and run more. So I am in fact deciding to back away from what I thought I would experiment with when I signed up, and I am substituting a different experiment: choosing not to do any long runs of more than about 16 miles (in practice, since the toll on the body is really about time, this means that I don&apos;t really want to run for longer than about 2.5 hours in training; it was these kinds of runs that ten years ago really left me worn out).&lt;/p&gt;
&lt;h3&gt;Schedule&lt;/h3&gt;
&lt;p&gt;I plan to run the &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=620982&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=2/16/2013&quot;&gt;Steel City Road Runners 5K race in Schenley Park&lt;/a&gt; as a way to gauge my current level of fitness (and also count it as a tempo workout).&lt;/p&gt;
&lt;p&gt;I also figured out my tentative weekend schedules for the next nine weeks till marathon day, to make sure I can get in the training I need. When training for a marathon, you kind of have to arrange your life around your training! I will be so happy when the marathon is over.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Sometimes we face setbacks of various kinds when trying to achieve some goal. We have to bounce back by adapting: changing up our expectations as well as the details of our plans. The way I&apos;ve done this is to go back to my original motivations and priorities and examine how to modify them. It&apos;s easier to deal with setbacks when you already decided up front, before the setbacks, what your priorities are. In my case, &lt;em&gt;finish time&lt;/em&gt; was the least of my priorities, and the easiest to let go of.&lt;/p&gt;
</content:encoded></item><item><title>Finally doing the Cathedral of Learning stair climb as part of Team Ferlee</title><link>https://franklinchen.com/blog/2013/02/24/finally-doing-the-cathedral-of-learning-stair-climb-as-part-of-team-ferlee/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/24/finally-doing-the-cathedral-of-learning-stair-climb-as-part-of-team-ferlee/</guid><pubDate>Sun, 24 Feb 2013 23:01:42 GMT</pubDate><content:encoded>&lt;p&gt;I have not been doing a lot of Cathedral of Learning stair climbing in the past month, because of life getting in the way. I did do a &lt;a href=&quot;/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/&quot;&gt;fast single rep while tired&lt;/a&gt;, and then &lt;a href=&quot;/blog/2013/01/31/doing-an-unexpected-workout/&quot;&gt;another single rep when short on time&lt;/a&gt;, and &lt;a href=&quot;/blog/2013/02/02/an-unexpected-afternoon-tour-9-miles-of-running/&quot;&gt;a single rep in the middle of a long run&lt;/a&gt;, but that was it.&lt;/p&gt;
&lt;p&gt;Today, however, I started getting back into things. It&apos;s been hard motivating myself to do the Cathedral of Learning stair climb, in part because I don&apos;t inherently enjoy doing more than one rep. But now, I am part of an official &lt;em&gt;team&lt;/em&gt; for the Fight for Air Climb! This makes all the difference.&lt;/p&gt;
&lt;h2&gt;Team Ferlee&lt;/h2&gt;
&lt;p&gt;It turned out that a month ago, Chris, upon learning the Bill and I wanted to do the Fight for Air Climb, told us his coworker Becky had created a team and was looking for people to join it. So I joined it, but had been too busy, for a long time, to actually meet my fellow team members to train at the Cathedral.&lt;/p&gt;
&lt;p&gt;But today, I finally carved out time to meet on a Sunday afternoon. I met Becky for the first time, as well as Natacha and the two Jennifers. (Bill was the only one who couldn&apos;t make it.)&lt;/p&gt;
&lt;p&gt;We have exactly a month before racing the actual Fight for Air Climb.&lt;/p&gt;
&lt;h2&gt;The workout&lt;/h2&gt;
&lt;p&gt;The plan was to do one rep and then an extra ten floors after going back down by elevator.&lt;/p&gt;
&lt;p&gt;I have not been doing the stair climb for speed at all, so I was happy to do the first rep at my usual &quot;comfortable&quot; pace. Since each of us had a different pace, we regrouped at the top after everyone arrived. Then we took the elevator down.&lt;/p&gt;
&lt;p&gt;Since we were to do just ten floors more, I decided to try to race up, to start some serious training finally. Up till now, I was just putting in a rep here or there, without doing any sprinting. I tried to &quot;sprint&quot; ten floors. It turns out that I can&apos;t go all out (running two steps up a time) for ten entire floors. That&apos;s good data to have, because in the actual race in a month, I want to know exactly how long a sprint I can actually sustain.&lt;/p&gt;
&lt;h2&gt;More than two reps!&lt;/h2&gt;
&lt;p&gt;The other team members were done for the day for this workout and left.&lt;/p&gt;
&lt;p&gt;But now that I was &quot;warmed up&quot;, I decided to stick around to do another full rep by myself, which I did. So this was actually the &lt;em&gt;first time in my life&lt;/em&gt; I did more than two reps: I did two reps and ten floors.&lt;/p&gt;
&lt;p&gt;Over a month ago, I wrote about my deliberately &lt;a href=&quot;/blog/2013/01/19/why-ive-chosen-to-perform-only-two-repetitions-of-the-cathedral-of-learning-stair-climb/&quot;&gt;limiting myself to just two repetitions of the Cathedral of Learning stair climb&lt;/a&gt;. The situation has changed now. It is time to not only add on more endurance, but also add more speed.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was great to meet the team and socialize and get in some exercise also. I left feeling more motivated to continue training and meeting up. The sprint also changed things up and reminded me that it has always been part of the plan to sharpen up before race day.&lt;/p&gt;
</content:encoded></item><item><title>Celebrating two years of playing recorder</title><link>https://franklinchen.com/blog/2013/02/23/celebrating-two-years-of-playing-recorder/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/23/celebrating-two-years-of-playing-recorder/</guid><pubDate>Sun, 24 Feb 2013 04:33:58 GMT</pubDate><content:encoded>&lt;p&gt;I was very excited to celebrate two years of playing recorder by attending the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt; &quot;Midwinter Musical Feast&quot; potluck and informal recital at Helen&apos;s. Last year (2012) we didn&apos;t have a winter party, but I still remember when two years ago (2011), on February 19, I started learning the alto recorder at home by myself, and then &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;decided to join the Pittsburgh Recorder Society&lt;/a&gt;. Helen was actually my first email contact from the group, and she had immediately invited me to come to the Midwinter Musical Feast, but not having actually met anybody yet, and also barely just beginning to play recorder, I was too intimidated and decided to skip the party and instead practice for two weeks before attending my first meeting of the group.&lt;/p&gt;
&lt;p&gt;The last recorder potluck/recital I went to was &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;half a year ago&lt;/a&gt;, when I played a bit on soprano recorder, Baroque flute, and modern flute. Abby had come with me, and her parents also attended. This time, Abby came again, as did her parents, and Abby brought her &lt;a href=&quot;tambura&quot;&gt;https://en.wikipedia.org/wiki/Tamburica&lt;/a&gt; to play some Balkan music selections:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-midwinter-2013/DSCN0017.JPG&quot; alt=&quot;Abby on tamburitza&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Additional photos of food and people are now &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.445931198818142.1073741825.330712777006652&amp;amp;type=3&quot;&gt;up on Facebook&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;My two collaborations&lt;/h2&gt;
&lt;p&gt;As for me, I prepared two pieces to play, both of which required a continuo accompanist. Because of time constraints, I did not actually get together with either of my collaborators, but did send them sound files of myself playing at home, as well as scores. So we never had any rehearsal together, but heck, this was just a party, so it wasn&apos;t a big deal that we were going to wing it.&lt;/p&gt;
&lt;h3&gt;Handel&apos;s recorder sonata in G minor&lt;/h3&gt;
&lt;p&gt;Last month, I ran through Handel&apos;s short four-movement recorder sonata in G minor &lt;a href=&quot;/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/&quot;&gt;with Henry on piano at a party&lt;/a&gt;, but my goal was always to perform it for real, to the best of my technical and interpretive ability, with period accompaniment.&lt;/p&gt;
&lt;p&gt;I actually rehearsed this with Annie, with her playing my portable electronic keyboard that has a harpsichord setting, but then it turned out she could not make it to the party, so I scrambled to find someone else, and I was thankful that Mike agreed to step in and play the continuo on bass recorder!&lt;/p&gt;
&lt;p&gt;I worked rather hard on this piece, actually, in the sense of coming up with some fluency to be able to come up with spontaneous and personally expressive Baroque ornamentation in all the movements, especially the first. (I did not want to compose a fixed ornamentation to play.) I believe I had some success doing so, and felt that my effort was a respectful way to celebrate two years of recorder playing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-midwinter-2013/DSCN0018.JPG&quot; alt=&quot;Franklin and Mike playing Handel&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Niccolò Dôthel&apos;s first flute and cello sonata, first movement&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorder-midwinter-2013/DSCN0020.JPG&quot; alt=&quot;Franklin and Karen playing Dôthel&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Two months ago, I had actually run through this piece on Baroque flute with piano accompaniment &lt;a href=&quot;/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/&quot;&gt;at a party&lt;/a&gt;, but just sight read by Henry on piano and in a noisy environment that was not ideal.&lt;/p&gt;
&lt;p&gt;This time, I actually worked on playing it in a quiet environment. Karen Parsons, whom I actually formally met just before &lt;a href=&quot;/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/&quot;&gt;last year&apos;s Mideast early music workshop&lt;/a&gt;, which we both participated in, was kind enough to agree to play the continuo part on viola da gamba.&lt;/p&gt;
&lt;p&gt;I had a false start and a scare though! What happened was that I had planned to play the piece on Annie&apos;s wooden Baroque flute that she had lent to me, and I had in fact practiced it on this instrument just fine for days, but somehow, I could not make a sound at all on her flute after I performed the Handel recorder sonata. I was completely mystified. Luckily, I had a backup plan: I had brought along my own plastic Aulos Baroque flute, and I was perfectly able to play it instead, and so we proceeded. I am still not entirely certain why Annie&apos;s flute suddenly failed to work for me; upon arriving at the party, I had actually warmed up the flute and played a few notes on it for confidence. My speculation is that it was a mistake to play recorder right before flute, and maybe my embouchure was slightly off on the particular instrument I had only been playing for a few days.&lt;/p&gt;
&lt;p&gt;Anyway, Karen and I had fun playing this light, elegant piece. I do wish I could have played it on Annie&apos;s flute, though.&lt;/p&gt;
&lt;h2&gt;Other people&lt;/h2&gt;
&lt;p&gt;I enjoyed hearing others in the recorder group playing their musical selections as well, especially those who were newer to the group. It makes me profoundly happy to be among others sharing music together.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Pittsburgh Recorder Society usually holds these potluck/recitals twice a year, in winter and summer. I always cherish the opportunity to make a special dish to share for the potluck (this time I brought my own hearty vegetable soup) as well as prepare interesting music to share that I hope others will enjoy. And this time, being basically the second anniversary of my playing recorder, I felt especially grateful for all that everyone in the group has shared with me in the past two years! I actually do not know what my life would be like today if I had not begun playing music with the Pittsburgh Recorder Society two years ago. It changed everything for me.&lt;/p&gt;
</content:encoded></item><item><title>The second meeting of the Pittsburgh Scala Meetup: Josh Suereth on functional patterns for the asynchronous Web</title><link>https://franklinchen.com/blog/2013/02/21/the-second-meeting-of-the-pittsburgh-scala-meetup-josh-suereth-on-functional-patterns-for-the-asynchronous-web/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/21/the-second-meeting-of-the-pittsburgh-scala-meetup-josh-suereth-on-functional-patterns-for-the-asynchronous-web/</guid><pubDate>Fri, 22 Feb 2013 03:56:50 GMT</pubDate><content:encoded>&lt;p&gt;Tonight was the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/99077622/&quot;&gt;second meeting&lt;/a&gt; of the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala Meetup&lt;/a&gt;. It was our first &quot;real&quot; meeting, in the sense that &lt;a href=&quot;/blog/2013/01/11/2013-is-my-year-of-scala/&quot;&gt;our first meetup&lt;/a&gt; was just a little gathering in a bar, and this time, we were able to use a nice space in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.revvoakland.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.revvoakland.com/&quot;&amp;gt;Revv Oakland&amp;lt;/span&amp;gt; to meet in.&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;A large number of people showed up, which was encouraging, indicating local Pittsburgh interest in Scala.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt; gave the first presentation for the group, a version targeted more to novices of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/scala/2013/02/13/nescala-intro-to-fp-talk.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/scala/2013/02/13/nescala-intro-to-fp-talk.html&quot;&amp;gt;talk he gave at NE Scala 2013&amp;lt;/span&amp;gt;, &quot;Functional Programming Patterns for the Asynchronous Web&quot;.&lt;/p&gt;
&lt;p&gt;By the way, his NE Scala talk, which was constrained because it had be squeezed into 30 minutes and for a diverse audience, is available &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/#t-12229286&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/#t-12229286&quot;&amp;gt;at the NE Scala site as both video and slides&amp;lt;/span&amp;gt;. I didn&apos;t attend his talk when &lt;a href=&quot;/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/&quot;&gt;we went to NE Scala&lt;/a&gt; because he test-drove it with Jamie and me and I wanted to see people I didn&apos;t already know, and different topics.&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;After the talk, there was general discussion.&lt;/p&gt;
&lt;p&gt;We also brainstormed ideas for a group project. One of the ideas was to create a Web site using &lt;a href=&quot;https://web.archive.org/web/20260226070344/https://www.playframework.com/&quot;&gt;Play&lt;/a&gt;. Jamie created an initial &lt;a href=&quot;https://github.com/pghscala/web&quot;&gt;GitHub repository for this&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s great that the Pittsburgh Scala Meetup is really getting off the ground now. Now that we have a space to use, hopefully we will begin a regularly occurring meeting. And of course, volunteers are needed to start giving talks!&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 6: Winning as Black like a madman!</title><link>https://franklinchen.com/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/</guid><pubDate>Wed, 20 Feb 2013 06:15:56 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/wallnau-chen-2013-02-19_files/round-6.jpg&quot; alt=&quot;Round 6 panorama&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/wallnau-chen-2013-02-19_files/round-6-game.jpg&quot; alt=&quot;Round 6 Wallnau-Chen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the 6th and final round of the Pittsburgh Chess Club Championship of 2013, I was Black against Kurt Wallnau, as I mentioned I would be in &lt;a href=&quot;/blog/2013/02/14/pittsburgh-chess-club-championship-2013-round-5-surprised-at-move-4-of-the-opening/&quot;&gt;my report on round 5&lt;/a&gt;. I&apos;d promised him before the game that I was going to &lt;em&gt;play for a win as Black&lt;/em&gt; (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.gmsquare.com/BlackisOKAdorjan.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.gmsquare.com/BlackisOKAdorjan.html&quot;&amp;gt;Black is OK!&amp;lt;/span&amp;gt;), even though I only needed a draw to secure undisputed first place in the tournament, since I went into the final round one full point ahead of him.&lt;/p&gt;
&lt;p&gt;I played aggressively like a madman and brought home the full point, thereby becoming the Pittsburgh Chess Club Champion of 2013!&lt;/p&gt;
&lt;p&gt;I have to admit that objectively, my opening choice was risky, but I&apos;ll explain why I played so wildly as Black.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/wallnau-chen-2013-02-19_files/final-position.jpg&quot; alt=&quot;Final position&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/wallnau-chen-2013-02-19.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;As &lt;a href=&quot;/blog/2013/02/14/pittsburgh-chess-club-championship-2013-round-5-surprised-at-move-4-of-the-opening/&quot;&gt;I mentioned last week&lt;/a&gt;, I have played one tournament game against Kurt before, and I lost &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;that game&lt;/a&gt;. So yes, I was out for revenge.&lt;/p&gt;
&lt;p&gt;I had no time to prepare any particular opening surprise against Kurt, because of the personal emergency that Abby and I have been dealing with for over a week now (her fracturing a foot last Monday), the consequence of which our lives have (temporarily, we hope) turned upside down!&lt;/p&gt;
&lt;p&gt;I was very happy that only one game remained in this tournament. Immediately after the accident, I had informed the captain of the &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;Pittsburgh Chess League&lt;/a&gt; team I&apos;m on that yet again, I was not going to be able to play in the month&apos;s round (which is next Sunday). That means I&apos;ll have missed the December, January, and February rounds because of unforeseen circumstances.&lt;/p&gt;
&lt;p&gt;All I can say is that the only preparation I&apos;ve had in the past two rounds has been doing a ten-minute meditation at home half an hour before the round began, in order to calm myself after a very stressful and tiring day.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;Amusingly, it did not matter that I did not prepare anything against any of what I remembered Kurt&apos;s opening repertoire to be, because he played something I&apos;d never seen him play before, &lt;code&gt;Nf3&lt;/code&gt;, going for a Reti! So he was the one who &quot;surprised&quot; me, rather than vice versa. Or so he thought.&lt;/p&gt;
&lt;p&gt;I &quot;threatened&quot; to go into an ultra-aggressive reversed &lt;a href=&quot;https://en.wikipedia.org/wiki/King%27s_Indian_Defence&quot;&gt;King&apos;s Indian&lt;/a&gt; against him (normally Black does not play the White side of a King&apos;s Indian one tempo down), and he allowed me to do so, and so I did!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkbnr/pp3ppp/2n5/2ppp3/8/3P1NP1/PPP1PPBP/RNBQK2R w KQkq -&quot; caption=&quot;Reversed King&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Subtleties of playing Black&lt;/h4&gt;
&lt;p&gt;What was really crazy of me, however, was playing a provocative and surely not quite sound wing attack &lt;code&gt;g5&lt;/code&gt; against him:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/pp2bp1p/2n5/2ppp1p1/8/P2P1NP1/1PP1PPBP/RNBQ1RK1 w kq -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I was inspired to do this by profoundly technical as well as philosophical thoughts both by &lt;a href=&quot;https://en.wikipedia.org/wiki/Andr%C3%A1s_Adorj%C3%A1n&quot;&gt;András Adorján&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/John_L._Watson&quot;&gt;John Watson&lt;/a&gt; about the nature of playing Black in &quot;reversed&quot; openings. The idea is that in many variations, being one tempo down is not necessarily a disadvantage, because White&apos;s extra tempo means having committed to something, and therefore &quot;giving&quot; Black some &lt;em&gt;information&lt;/em&gt; that can be useful. In this particular case, for example, I started off with a reversed &lt;a href=&quot;https://en.wikipedia.org/wiki/King%27s_Indian_Defence#Averbakh_Variation&quot;&gt;Averbakh variation&lt;/a&gt;, but then because I had not yet committed to putting a Bishop on &lt;code&gt;g4&lt;/code&gt; or on &lt;code&gt;e6&lt;/code&gt;, and White has committed to castling already, the flank attack &lt;code&gt;g5&lt;/code&gt; looks interesting, because of ideas Black might have of not only getting in &lt;code&gt;g4&lt;/code&gt;, but maybe also prying open the &lt;code&gt;h&lt;/code&gt; file while lifting the Queen possibly to &lt;code&gt;d6&lt;/code&gt; and to &lt;code&gt;g6&lt;/code&gt;. The point is that there are very &lt;em&gt;concrete&lt;/em&gt; reasons to justify this bizarre attack. This is not to say that it is entirely sound (I don&apos;t believe it is!), but at least this attack has some real basis.&lt;/p&gt;
&lt;p&gt;I should note that John Watson&apos;s book &lt;a href=&quot;https://www.amazon.com/Secrets-Modern-Chess-Strategy-Watson/dp/1901983072&quot;&gt;&quot;Secrets of Modern Chess Strategy&quot;&lt;/a&gt; was the single primary reason for my returning to serious chess play in 2005 after twenty years of absence: I had accidentally come across this book in a book store and been so profoundly captivated by it that I bought it (and also &lt;a href=&quot;https://www.amazon.com/Chess-Strategy-Action-John-Watson/dp/1901983692&quot;&gt;&quot;Chess Strategy in Action&quot;&lt;/a&gt;) and completely altered my perception of the concrete beauty and excitement of chess.&lt;/p&gt;
&lt;p&gt;In any case, I also played &lt;code&gt;g5&lt;/code&gt; because I was sure that Kurt would be completely surprised by it: he may have surprised me first, but I was going to surprise him in return!&lt;/p&gt;
&lt;h4&gt;White playing the reverse also&lt;/h4&gt;
&lt;p&gt;As I expected, Kurt went into a reversed &lt;a href=&quot;https://en.wikipedia.org/wiki/Benko_Gambit&quot;&gt;Benko Gambit&lt;/a&gt; sacrificial attack against me (and it is completely sound here for White):&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/pp2bp1p/8/4p3/1nPp2p1/3P2P1/4PPBP/RNBQNRK1 w kq -&quot; caption=&quot;Reversed Benko&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;I fell into a bad position&lt;/h4&gt;
&lt;p&gt;At an important point, after some not entirely accurate play on both sides, I could have engaged in a consistent and good &lt;code&gt;h4&lt;/code&gt; attack as follows:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/pp2bp2/8/4p3/1nPp2pp/1Q1PP1P1/5PBP/RNB1NRK1 w kq -&quot; caption=&quot;h4 was best&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But I got cold feet and decided to try to castle. This was actually a serious mistake and led to very frightening positions in which I was not confident that I would be able to defend against White&apos;s initiative.&lt;/p&gt;
&lt;p&gt;Even after I managed to get in a thematic Rook lift to &lt;code&gt;a6&lt;/code&gt;, I was not confident in my position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2bqk2r/1p2bp2/r6n/p6p/2Pp2p1/3P2P1/2Q2PBP/RNB1R1K1 w k -&quot; caption=&quot;Black Rook lift&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;After much complex play, we arrived at an important position in which the question is, how can White continue to press?&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2bq1rk1/5pb1/1p4r1/pN1B1n1p/2Pp1Bp1/3P2P1/2Q1RP1P/R5K1 w - -&quot; caption=&quot;Tense&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White erred by moving his Bishop to &lt;code&gt;c7&lt;/code&gt; to chase the Black Queen to &lt;code&gt;d7&lt;/code&gt;, which is not really a problem for Black at all:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5rk1/2Bq1pb1/bp4r1/pN1B1n1p/2Pp2p1/3P2P1/2Q1RP1P/1R4K1 w - -&quot; caption=&quot;Bishop at c7 is useless&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Then White allowed Black to develop both &lt;code&gt;Ba6&lt;/code&gt; and &lt;code&gt;Rc8&lt;/code&gt; led to a decent position for Black at last:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2r3k1/3q1pb1/bp4r1/pN1BBn1p/2Pp2p1/3P2P1/2Q1RP1P/1R4K1 w - -&quot; caption=&quot;Black is OK&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I was finally feeling safe in the game.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/wallnau-chen-2013-02-19_files/white-thinking.jpg&quot; alt=&quot;Kurt thinking&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;White&apos;s first blunder was a terrible one&lt;/h4&gt;
&lt;p&gt;White then blundered away two pieces (the Knight on &lt;code&gt;b5&lt;/code&gt; and the Bishop on &lt;code&gt;d5&lt;/code&gt; for a Rook. After this, I was finally happy, knowing I had a completely won game. The only question was, how to consolidate?&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/3q1pb1/1p4r1/pb1PBn1p/3p2p1/3P2P1/Q3RP1P/1R4K1 w - -&quot; caption=&quot;White blundered&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It turned out that we both started running low on time, and also I started playing less than perfectly. I was obsessed with winning the &lt;code&gt;d5&lt;/code&gt; Pawn, but it was not really necessary to go for that in order to win the game. Focusing on the passed Pawns on the Queen side was best, because White could not break through on the King side anyway.&lt;/p&gt;
&lt;p&gt;I allowed White some counterplay, but still had a won position anyway. Then White tried an idea with &lt;code&gt;h4&lt;/code&gt; to get the Queen to &lt;code&gt;g5&lt;/code&gt;, but this was too slow:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/1b1q1p2/1p3rk1/p2PRn1p/3pQ1pP/6P1/5P2/4R1K1 b - h3&quot; caption=&quot;h4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black&apos;s &lt;code&gt;Rd6&lt;/code&gt; guaranteed winning the &lt;code&gt;d5&lt;/code&gt; Pawn and therefore the game along the long diagonal to &lt;code&gt;h1&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/1b1q1p2/1p1r2k1/p2PRn1p/3pQ1pP/6P1/5P2/4R1K1 w - -&quot; caption=&quot;White is lost&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The final position when White resigned:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/1b4k1/1p2Rp2/p2q1n1Q/3p2pP/6P1/5P2/6K1 w - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned from my game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;There&apos;s not much use &quot;preparing&quot; anyway against an opponent who plays all kinds of openings, not just a narrow set.&lt;/li&gt;
&lt;li&gt;When playing a &quot;reversed&quot; opening, Black may have subtle additional opportunities to complicate the game.&lt;/li&gt;
&lt;li&gt;When on the attack out of the opening, getting cold feet and not continuing it can result in much pain.&lt;/li&gt;
&lt;li&gt;White lost a long-held advantage and then quickly blundered badly; this flow of &quot;momentum&quot; is a common feature of chess games between humans.&lt;/li&gt;
&lt;li&gt;Black also lost some momentum after achieving a won game, but managed to keep the winning advantage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Statistics&lt;/h2&gt;
&lt;p&gt;Here is the final rated &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?201302193592&quot;&gt;crosstable for the Pittsburgh Chess Club Championship&lt;/a&gt;. As a result of my winning all six games, my rating has finally bounced back upward, from 2126 to 2164: I defeated opponents rated 1728, 1947, 2050, 1999, 2072, 2077. My lifetime peak was in 2008 when &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?200801273991.1-12226800&quot;&gt;I reached 2197&lt;/a&gt; (3 points short of getting a US Chess National &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_master&quot;&gt;Master&lt;/a&gt; title).&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I felt proud of myself for playing hard for the win and not for a draw as Black when I did not need to for tournament purposes. I am of course ecstatic that I finally won the Pittsburgh Chess Club Championship again, and that I played fairly well in this tournament, after so many years of not really performing anywhere near how I used to.&lt;/p&gt;
&lt;p&gt;In August I wrote about my goals in returning to &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;tournament play again&lt;/a&gt; and the &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;Tuesday night tournaments in particular&lt;/a&gt;. Despite not playing as well as I knew I could in the first two tournaments, because of poor time/energy/psychology management, I finally got my act together and played reasonably well in this one.&lt;/p&gt;
&lt;p&gt;I wish I could say that I look forward to continuing my &quot;streak&quot; soon, but the reality is that in January, I had already decided, well before the conclusion of this tournament, and before Abby&apos;s fractured foot, to &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;stop playing in Tuesday night tournaments for several months, until possibly fall&lt;/a&gt;. At the time, I had already concluded that I have many projects to work on in the coming months, and it&apos;s really been quite difficult to squeeze in the time and energy to play in Tuesday night tournaments, especially given how my games seem to always last past 11 PM, and that messes up my ideal sleep schedule.&lt;/p&gt;
&lt;p&gt;As explained in my August posts, I no longer have any particular rating or title goals; I found that having them backfired badly on me. I will never again play competitive chess with any goals other than to play logically and creatively to the best of my abilities given my real life constraints.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-21)&lt;/h3&gt;
&lt;p&gt;So much for giving up competitive goals: two years later, I made a
focused push, temporarily putting many things aside in my life, in the
fall of 2015 to &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieve my US Chess National Master&lt;/a&gt; title, and finally
made it, a dream come true.&lt;/p&gt;
&lt;p&gt;However, during all this time, my real passion for chess has always
been the teaching that I started in 2013.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;I would like to thank tournament director Mike Holsinger for doing a fine job running yet another Tuesday night tournament, handling pairings and attending to players&apos; questions during rounds. It is quite a commitment to direct a tournament for six straight weeks!&lt;/p&gt;
&lt;p&gt;I would like to thank all of my opponents, as co-creators of these fascinating games that we have played together.&lt;/p&gt;
&lt;p&gt;I would also like to thank everyone who follows my chess postings on my blog and has encouraged me to do chess writing.&lt;/p&gt;
&lt;p&gt;Finally, I dedicate the win of this tournament to Abby, who has never seen me win a Pittsburgh Chess Club Championship since we&apos;ve known each other, and supported my effort this year to finally win it again.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed the really tense game with Kurt in the final round, in which he applied considerable pressure that forced me to think very hard.&lt;/p&gt;
&lt;p&gt;I had a great time playing in the Pittsburgh Chess Club Championship of 2013, and managing to win it.&lt;/p&gt;
&lt;p&gt;Although I&apos;m taking a break from tournament chess, &lt;strong&gt;I&apos;ll be back!&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why flatten a tree when you can just traverse it?</title><link>https://franklinchen.com/blog/2013/02/15/why-flatten-a-tree-when-you-can-just-traverse-it/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/15/why-flatten-a-tree-when-you-can-just-traverse-it/</guid><pubDate>Fri, 15 Feb 2013 20:11:08 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://michaelfeathers.typepad.com/michael_feathers_blog/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://michaelfeathers.typepad.com/michael_feathers_blog/&quot;&amp;gt;Michael Feathers&amp;lt;/span&amp;gt; wrote a blog post about &lt;a href=&quot;https://web.archive.org/web/20250910104905/https://michaelfeathers.typepad.com/michael_feathers_blog/2013/02/sub-tree-selection-with-flattenselect.html&quot;&gt;avoiding explicitly traversing a tree recursively&lt;/a&gt; by taking advantage of its representation as nested arrays and using array operations to flatten.&lt;/p&gt;
&lt;p&gt;I was unhappy about this solution because&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it creates a bunch of intermediate arrays&lt;/li&gt;
&lt;li&gt;it concatenates arrays repeatedly, which is expensive for a very large tree&lt;/li&gt;
&lt;li&gt;the recursive solution seems more simple, clear, and efficient&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I wrote up the recursive solution. Some features of the solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it uses Ruby&apos;s idiomatic &lt;code&gt;yield&lt;/code&gt; construct&lt;/li&gt;
&lt;li&gt;for convenience, it creates an &lt;code&gt;Enumerable&lt;/code&gt; so that you can do whatever you want while iterating through the tree&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&apos;s the code:&lt;/p&gt;
&lt;p&gt;&amp;lt;script src=&quot;https://gist.github.com/FranklinChen/4963218.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 5: Surprised at move 4 of the opening!</title><link>https://franklinchen.com/blog/2013/02/14/pittsburgh-chess-club-championship-2013-round-5-surprised-at-move-4-of-the-opening/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/14/pittsburgh-chess-club-championship-2013-round-5-surprised-at-move-4-of-the-opening/</guid><pubDate>Fri, 15 Feb 2013 03:06:16 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-edahl-2013-02-12_files/after-move-4.jpg&quot; alt=&quot;Franklin in deep throught after move 4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Round 5 of the annual &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship involved a very unusual (for me) situation: being surprised at move 4 out of the opening! (Amusingly, Kurt was taking a bunch of photos at the time and happened to get a photo of me being surprised, and later sent it to me.)&lt;/p&gt;
&lt;p&gt;I coped well and played what I thought to be perhaps my cleanest game yet in this tournament.&lt;/p&gt;
&lt;p&gt;I report on the psychology of how to deal with opening surprises, and other turning points in the game.&lt;/p&gt;
&lt;h2&gt;My complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-edahl-2013-02-12.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;As I &lt;a href=&quot;/blog/2013/02/05/pittsburgh-chess-club-championship-2013-round-4-fascinating-attacking-defending-game/&quot;&gt;mentioned after last week&apos;s game&lt;/a&gt;, for this week I was paired against Expert Richard Edahl, whom I had never played against before, so I had nothing special prepared against him.&lt;/p&gt;
&lt;p&gt;Furthermore, I was occupied with a personal emergency (Abby broke her foot late last night, so we spent two hours at the emergency room) that had me taking the day off work and not knowing for sure whether I was going to even make it to the game (we spent another two hours in the morning at the hospital for more X-rays and a plan for recovery). I managed to get done what I needed to do and arrive at the club for the game.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;Richard as Black played the first moves in the opening very quickly, then spent two minutes on his fourth move, playing a move, &lt;code&gt;e5&lt;/code&gt;, that I had &lt;em&gt;never&lt;/em&gt; seen before or considered in this opening, and rose and walked away from the board:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqk2r/pppp1pbp/5np1/4p3/2P1P3/2N2N2/PP1P1PPP/R1BQKB1R w KQkq -&quot; caption=&quot;e5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;So what should one do when encountering a totally unexpected move in the opening? There are only a few possible explanations for an unexpected move:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it is a known good move, and I just have a bad memory or incomplete theoretical study of the opening&lt;/li&gt;
&lt;li&gt;it is a theoretical novelty that improves on previous play&lt;/li&gt;
&lt;li&gt;it is a bad move, and that&apos;s why I have never seen it before&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case, since the &quot;new&quot; move was at move 4, not deep in some obscure variation, I was sure that the move was a &lt;em&gt;bad&lt;/em&gt; one. So then the question was, how to &lt;em&gt;punish&lt;/em&gt; it? I spent 16 minutes calculating a whole series of lines in depth until I convinced myself of why the move was bad and how I could prove it no matter what my opponent&apos;s followup moves.&lt;/p&gt;
&lt;h4&gt;Does Black lose a Pawn?&lt;/h4&gt;
&lt;p&gt;The first thing to note is that Black does not lose the unprotected &lt;code&gt;e5&lt;/code&gt; Pawn to &lt;code&gt;Nxe5&lt;/code&gt;, because there is, at least, the discovered attack &lt;code&gt;Nxe4&lt;/code&gt; that regains the Pawn. However, just because Black regains a Pawn does not mean that the position is then equal. I quickly concluded that if Black played &lt;code&gt;Nxe4&lt;/code&gt;, I could force Black to accept a clearly inferior position by blocking up his Bishop and weakening his King side. (This is in fact what happened in the game.)&lt;/p&gt;
&lt;p&gt;However, I had to consider the possibility that Black could try to regain the Pawn a different way, with &lt;code&gt;Qe7&lt;/code&gt;. Here, I had to find out why this move &lt;em&gt;had&lt;/em&gt; to be bad (given my assumption that &lt;code&gt;e5&lt;/code&gt; in the first place was bad). Surely, if Black can regain the Pawn by chasing White&apos;s Knight away, the position would be equal?&lt;/p&gt;
&lt;p&gt;It took a while for me to find and verify the refutation of &lt;code&gt;Qe7&lt;/code&gt;, which in fact does &lt;em&gt;not&lt;/em&gt; regain the Pawn. The trick is the sacrificial pin &lt;code&gt;Bg5&lt;/code&gt; threatening &lt;code&gt;Nd5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnb1k2r/ppp1qpbp/3p1np1/4N1B1/2PPP3/2N5/PP3PPP/R2QKB1R b KQkq -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;So I offer this as an example of thinking a long time about a possible game continuation that did &lt;em&gt;not&lt;/em&gt; take place, but &lt;em&gt;could have&lt;/em&gt;, and therefore had to be considered.&lt;/p&gt;
&lt;h4&gt;The game continuation&lt;/h4&gt;
&lt;p&gt;After Black played &lt;code&gt;Nxe4&lt;/code&gt;, I forced the following position, clearly favorable to White:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqk2r/pppp2bp/5pp1/8/2PPN3/4B3/PP3PPP/R2QKB1R b KQkq -&quot; caption=&quot;Forced line after Nxe4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;What next? I decided to keep my options open and possibly aim to attack on the King side. Things were helped when my opponent moved his Queen away from the King side:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnb2r1k/ppp3bp/5pp1/q7/2BP4/2N1B3/PP1Q1PPP/R3K2R w KQ -&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;At this point, I had a choice: either safely castle King side with a huge positional advantage in the center and in development, or continue my King side attack plan, while setting a diabolical trap. I opted to set the trap with &lt;code&gt;h4&lt;/code&gt;; my opponent fell into the trap by playing &lt;code&gt;h5&lt;/code&gt;, after which my &lt;code&gt;Nd5&lt;/code&gt; won a Pawn, at the cost of a Queen trade and my giving up a Bishop for a Knight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnb2r1k/ppp3b1/5pp1/q2N3p/2BP3P/4B3/PP1Q1PP1/R3K2R b KQ -&quot; caption=&quot;Win a Pawn&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The endgame&lt;/h3&gt;
&lt;p&gt;After I grabbed the Pawn on &lt;code&gt;c7&lt;/code&gt;, we arrived at this position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1rbr3k/p1N3b1/p4pp1/7p/3P3P/1P2B3/P2K1PP1/R6R w - -&quot; caption=&quot;White a Pawn up&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Then after some inaccurate play by Black, we arrived at an important position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1r1r3k/p1N5/pb4p1/5b1p/2R2B1P/1P6/P3KPP1/2R5 w - -&quot; caption=&quot;Black in trouble&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here, &lt;code&gt;Nd5&lt;/code&gt; was best, but instead I passively defended against &lt;code&gt;Bd3+&lt;/code&gt; with &lt;code&gt;R1c3&lt;/code&gt;, after which Black could have played actively with &lt;code&gt;Ba5&lt;/code&gt; and caused trouble, equalizing into a drawn position. Instead, he immediately lost with &lt;code&gt;Rd7??&lt;/code&gt;, which fell victim to &lt;code&gt;Be5+&lt;/code&gt; followed by &lt;code&gt;Nd5&lt;/code&gt; winning an exchange:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1r4k1/p2r4/pb4p1/3NBb1p/2R4P/1PR5/P3KPP1/8 b - -&quot; caption=&quot;White wins the exchange&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black could have resigned, but did not; the rest of the game was anticlimactic, with Black blundering further and hanging a piece on &lt;code&gt;h4&lt;/code&gt; and immediately resigning:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1B4k1/p7/p1R3p1/3r1b1p/3b3P/1P3PR1/P3K1P1/8 b - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned from my game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Do not panic when surprised in the opening; if you have prepared well, chances are the surprising move is a bad one, so just calculate out why it is bad.&lt;/li&gt;
&lt;li&gt;Even in a completely winning position, one small passive move could lead to the losing side having enough active counterplay to equalize.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;So after round 5, I am leading the tournament by an entire point, with a score of 5.0/6.0 going into round 6, and nobody else having 5.0 or even 4.5 points. This means that &lt;em&gt;no matter what happens in round 6&lt;/em&gt;, I am already tied for first for the title of Pittsburgh Chess Club Champion of 2013. I could lose and tie for first; if I draw or win, I get clear first, no tie.&lt;/p&gt;
&lt;p&gt;For round 6, I am paired against Kurt Wallnau, &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;who won a game against me in the last Tuesday night tournament&lt;/a&gt;. I get Black again.&lt;/p&gt;
&lt;p&gt;There will be some interesting psychology for our game, because &lt;a href=&quot;/blog/2013/01/15/how-the-best-player-won-the-last-pittsburgh-chess-club-tuesday-night-tournament/&quot;&gt;just as in the last tournament, he needs to win in order to tie for first place&lt;/a&gt;: a draw leaves me the sole champion.&lt;/p&gt;
&lt;p&gt;Needless to say, I am playing in round 6 for the &lt;em&gt;win&lt;/em&gt;, not for the &lt;em&gt;draw&lt;/em&gt;. Although I would be very happy to become the clear Pittsburgh Chess Club Champion, prizes and titles don&apos;t actually mean that much to me. My goal remains to play the best chess I can: a correct and creative game.&lt;/p&gt;
&lt;p&gt;As a corollary, of course, if I manage to do that, I should also &lt;em&gt;as a side effect&lt;/em&gt; totally &lt;em&gt;destroy and crush&lt;/em&gt; my opponent, which also happens to be fun, I have to confess. There&apos;s no way to euphemize this fundamentally warlike nature of chess. I&apos;m a bit uneasy about it, but part of me enjoys releasing my aggression through chess. Check out this interview with current world number one Magnus Carlsen:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;Qc_v9mTfhC8&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Click in the video to 4:10, where he answers the interview question, &quot;But you enjoy it when you see you opponents squirm?&quot; He answers candidly, for all of us serious chess players:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Yes, I do. I enjoy it when I see my opponent, you know, really suffering, when he knows that I&apos;ve outsmarted him. If I lose just one game, then usually, you know, I just really want to [gestures violently and angrily] get revenge.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I can&apos;t deny this part of chess. I lost to Kurt in the last tournament, so what can I say? I&apos;m itching to win.&lt;/p&gt;
&lt;p&gt;By the way, check out &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jamesrachels.org/stuart/stuchess.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jamesrachels.org/stuart/stuchess.htm&quot;&amp;gt;former American prodigy Stuart Rachels&amp;lt;/span&amp;gt;&apos; fascinating essay on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jamesrachels.org/stuart/Chessay.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jamesrachels.org/stuart/Chessay.pdf&quot;&amp;gt;&quot;The Reviled Art&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed thinking for myself, outside of &quot;book&quot;, after move 4 in the opening in this game. I feel like I&apos;ve been playing reasonably well in this tournament, and hope to conclude it with a good game next week.&lt;/p&gt;
</content:encoded></item><item><title>Attending J-Jam in Squirrel Hill but not playing music in it</title><link>https://franklinchen.com/blog/2013/02/10/attending-j-jam-in-squirrel-hill-but-not-playing-music-in-it/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/10/attending-j-jam-in-squirrel-hill-but-not-playing-music-in-it/</guid><pubDate>Mon, 11 Feb 2013 04:23:13 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://d2bm3ljpacyxu8.cloudfront.net/width/496/crop/0,0,496x661/jjampgh.webs.com/jjam%20feb%202013.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://d2bm3ljpacyxu8.cloudfront.net/width/496/crop/0,0,496x661/jjampgh.webs.com/jjam%20feb%202013.jpg&quot;&amp;gt;[image: February 10 2013 J-Jam flyer]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today in Dunkin&apos; Donuts in Squirrel Hill was another &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jjampgh.webs.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jjampgh.webs.com/&quot;&amp;gt;J-Jam&amp;lt;/span&amp;gt; of music. I&apos;d performed in a &lt;a href=&quot;/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/&quot;&gt;J-Jam in October over three months ago&lt;/a&gt;, but did not perform or attend the J-Jam in December. This time, I again did not perform, but did attend with Abby to watch and listen.&lt;/p&gt;
&lt;p&gt;The reason I did not perform is that I came back from a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;Scala conference&amp;lt;/span&amp;gt; just &lt;a href=&quot;/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/&quot;&gt;late yesterday night&lt;/a&gt;, so I was yet again too busy to meet up with Ben to prepare something to perform, and also even if we had something, I was not confident I would be up to performing just after coming home. I was right: I came home exhausted and slept in today before making it to J-Jam at all.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2013-02-10/j-jam.jpg&quot; alt=&quot;J-Jam&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was glad we did attend, however, because it&apos;s so wonderful to see local musicians come together and have fun. As a reminder, this community event also serves as a fundraiser for the &lt;a href=&quot;https://web.archive.org/web/20171103063900/http://www.sqfoodpantry.org:80/&quot;&gt;Squirrel Hill Food Pantry&lt;/a&gt;: donations are accepted at J-Jam.&lt;/p&gt;
&lt;p&gt;Abby had to leave early, and I myself did not stay until the very end, but saw most of the performances, and left very happy. I hope that later this year I&apos;ll perform in it again.&lt;/p&gt;
&lt;p&gt;Thank you, &lt;a href=&quot;https://cantorben.com/&quot;&gt;Ben&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boulevardoftheallies.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boulevardoftheallies.com/&quot;&amp;gt;Joel&amp;lt;/span&amp;gt;, for putting this together again!&lt;/p&gt;
&lt;h2&gt;(Update of 2013-03-03)&lt;/h2&gt;
&lt;p&gt;Check out a recent article in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thejewishchronicle.net/view/full_story/21685320/article-Performing-for-tzedaka&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thejewishchronicle.net/view/full_story/21685320/article-Performing-for-tzedaka&quot;&amp;gt;The Jewish Chronicle&amp;lt;/span&amp;gt; about the event, without a video clip.&lt;/p&gt;
</content:encoded></item><item><title>NE Scala 2013: my first Scala conference!</title><link>https://franklinchen.com/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/</guid><pubDate>Mon, 11 Feb 2013 01:20:13 GMT</pubDate><content:encoded>&lt;p&gt;I went to my first ever Scala conference, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;NE Scala&amp;lt;/span&amp;gt;, held in Philadelphia, with Josh and Jamie, as mentioned in my report on &lt;a href=&quot;/blog/2013/01/11/2013-is-my-year-of-scala/&quot;&gt;the very first Pittsburgh Scala meetup group meeting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was intense. Being a novice to Scala, most of the talks I attended covered stuff completely new to me.&lt;/p&gt;
&lt;p&gt;I returned determined to dig deeper into the Scala ecosystem and use the language effectively.&lt;/p&gt;
&lt;h2&gt;Videos&lt;/h2&gt;
&lt;p&gt;Videos of the talks are available at &lt;a href=&quot;https://www.youtube.com/playlist?list=PLndbWGuLoHeaOpTHoNhelI4NdnSqpeXA7&quot;&gt;this play list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By the way, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://scalawags.tv/scalawags-live-at-ne-scala&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://scalawags.tv/scalawags-live-at-ne-scala&quot;&amp;gt;an episode of Scalawags was recorded live at NE Scala&amp;lt;/span&amp;gt; and does not appear in that play list. I was present and thought it was a very useful question and answer session.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
&lt;p&gt;Meanwhile, almost a year later, I am still using Scala. I really did stop writing new Java code at work and switch to Scala.&lt;/p&gt;
&lt;p&gt;NE Scala 2014 registration recently opened up; unfortunately, it is in New York City, far away, and space is limited, so I am not attending.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 4: fascinating attacking-defending game!!</title><link>https://franklinchen.com/blog/2013/02/05/pittsburgh-chess-club-championship-2013-round-4-fascinating-attacking-defending-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/05/pittsburgh-chess-club-championship-2013-round-4-fascinating-attacking-defending-game/</guid><pubDate>Wed, 06 Feb 2013 04:48:21 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/jansen-chen-2013-02-05_files/round-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Round 4 of the annual &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship had me playing one of the most &lt;em&gt;fascinating&lt;/em&gt; games I have played in my entire life. My opponent tried to wipe me off the board with a brute-force attack in the early moves of the opening and I managed to defend, but there were various subtleties involved. He engaged in &lt;em&gt;sacrifice&lt;/em&gt; after sacrifice, not all sound, but all interesting.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/jansen-chen-2013-02-05_files/final-position.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/jansen-chen-2013-02-05.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In fact, it is necessary to read the detailed annotations to get a full picture of all the best moves that neither player saw but existed.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;As I mentioned in &lt;a href=&quot;/blog/2013/02/03/pittsburgh-chess-club-championship-2013-round-3-attack-defense-and-sacrifices/&quot;&gt;my report on the previous round&lt;/a&gt;, I knew that for today, I would face Peter Jansen (currently rated 1999), and that I know how he plays the openings. I knew that he tries to play solidly for a draw against stronger players, so I had to figure out a way to maximize my winning chances. I planned a particular &lt;em&gt;ultra-aggressive&lt;/em&gt; opening as Black against him, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Dutch_Defence&quot;&gt;Dutch Defense&lt;/a&gt;, the goal of which is avoid early contact while preparing to stake out a claim in the center as well as on the King side.&lt;/p&gt;
&lt;p&gt;In particular, I remembered that some years ago, Peter had been White against Grandmaster &lt;a href=&quot;https://en.wikipedia.org/wiki/Alexander_Shabalov&quot;&gt;Alexander Shabalov&lt;/a&gt; (who is a four-time winner of the US Chess Championship, and also happens to live in Squirrel Hill in Pittsburgh) and Shabalov had used the Dutch as Black against him. (Actually, I had misremembered the occasion as a simultaneous exhibition; after our game, when I told Peter about my preparation, he said that the game had been an actual tournament game. I looked and verified that it was a &lt;a href=&quot;https://www.uschess.org/assets/msa_joomla/XtblMain.php?200710142921.1-12533530&quot;&gt;Pittsburgh Chess League game in 2007&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;Peter played &lt;em&gt;exactly&lt;/em&gt; as I predicted he would, and we reached a position that I had concluded was fine for Black. After playing &lt;code&gt;h6&lt;/code&gt; to kick White&apos;s Bishop, I fully expected a retreat and then a slow progression to an interesting middlegame:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkb1r/pppnp3/3p1npp/5pB1/3P3P/2P2N2/PP1NPPP1/R2QKB1R w KQkq -&quot; caption=&quot;Dutch after h6&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, Peter uncorked a series of remarkable disruptive sacrificial ideas!&lt;/p&gt;
&lt;p&gt;First, he did not retreat the Bishop, but instead played &lt;code&gt;Qb3&lt;/code&gt; exploiting the weakness of Black&apos;s &lt;code&gt;e6&lt;/code&gt; and &lt;code&gt;f7&lt;/code&gt; squares:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkb1r/pppnp3/3p1npp/5pB1/3P3P/1QP2N2/PP1NPPP1/R3KB1R b KQkq -&quot; caption=&quot;Qb3&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White&apos;s Bishop cannot be captured by Black. (See the annotations for details.) So I calmly developed with &lt;code&gt;Bg7&lt;/code&gt;. Then Peter went totally wild with &lt;code&gt;h5&lt;/code&gt;, which is not really sound, but is definitely &lt;em&gt;interesting&lt;/em&gt;. Not only did he leave the Bishop unprotected, but he was sacrificing the &lt;code&gt;h&lt;/code&gt; Pawn.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/pppnp1b1/3p1npp/5pBP/3P4/1QP2N2/PP1NPPP1/R3KB1R b KQkq -&quot; caption=&quot;h5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I calmly took the Pawn. He followed up with the wild &lt;code&gt;Nh4&lt;/code&gt; that continued to offer the Bishop as a sacrifice while attacking Black&apos;s &lt;code&gt;g6&lt;/code&gt; Pawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/pppnp1b1/3p2pp/5pBn/3P3N/1QP5/PP1NPPP1/R3KB1R b KQkq -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I did not take, but defended &lt;code&gt;g6&lt;/code&gt; while also opening up a defense of the &lt;code&gt;e6&lt;/code&gt; square. He then continued by sacrificing his Knight on &lt;code&gt;g6&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkn1r/ppp1p1b1/3p2Np/5pBn/3P4/1QP5/PP1NPPP1/R3KB1R b KQkq -&quot; caption=&quot;Nxg6&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;This is not a true sacrifice, because he gets the Knight on &lt;code&gt;h5&lt;/code&gt; in return. But the Bishop on &lt;code&gt;g5&lt;/code&gt; is still being offered.&lt;/p&gt;
&lt;p&gt;It turns out that this whole series of blows by White was unsound, and could have been refuted calmly by &lt;code&gt;Kf8&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1k1r/ppp1p1b1/3p2np/5pBR/3P4/1QP5/PP1NPPP1/R3KB2 w Q -&quot; caption=&quot;Kf8 refutes attack&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But I saw a related idea and did not play the correct refutation, so the game continued to be interesting rather than ending quickly. I played &lt;code&gt;d5&lt;/code&gt;, which has a similar idea but has the drawback of allowing a good tactical save by White.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1N1R/ppp1pkn1/3p4/5pp1/3P4/2P5/PP1NPPP1/R3KB2 w Q -&quot; caption=&quot;d5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White could have used a tactic to win the Pawn on &lt;code&gt;d5&lt;/code&gt; while saving his Bishop from being trapped by attacking Black&apos;s Knight on &lt;code&gt;g6&lt;/code&gt;. Oops! But neither Peter nor I saw this resource, and he did not play it.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/ppp1p1b1/6np/3p1pBR/3PP3/1QP5/PP1N1PP1/R3KB2 b Qkq -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, he played a completely unsound sacrifice &lt;code&gt;e4&lt;/code&gt; that I could have punished by taking the Bishop on &lt;code&gt;g5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/ppp1p1b1/6n1/3p1ppR/3PP3/1QP5/PP1N1PP1/R3KB2 w Qkq -&quot; caption=&quot;Black wins a piece for real&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But in a collective hallucination, neither of us saw that the Bishop was in danger, because for so many moves up till &lt;code&gt;d5&lt;/code&gt;, it was &lt;em&gt;not&lt;/em&gt; in danger!&lt;/p&gt;
&lt;p&gt;Instead, I opted to take the Pawn on &lt;code&gt;e4&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;So White&apos;s opening attack finally came to an end, and we reached a middlegame in which Black has to get his King to safety but is one Pawn up. Objectively, the game is actually quite equal. I was happy to have reached this middlegame, after all the turmoil, not having seen the big refutations earlier.&lt;/p&gt;
&lt;p&gt;After some natural moves, after which both sides were castled Queen side, I expected some kind of struggle on the King side in which White had pressure against Black&apos;s &lt;code&gt;h6&lt;/code&gt; Pawn and possibly could regain it at some point.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr3r/ppqbp1b1/2p3np/3p3R/3Pp3/1QP1B1P1/PP1NBP2/2KR4 w - -&quot; caption=&quot;Both castled&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, Peter &lt;em&gt;blundered&lt;/em&gt; with another sacrifice, or &lt;em&gt;so I thought&lt;/em&gt;. It turns out from extensive computer analysis that the sacrifice was actually &lt;em&gt;sound&lt;/em&gt; and should have led to an equal position through some extremely fascinating play. Let me explain.&lt;/p&gt;
&lt;p&gt;Peter played &lt;code&gt;Nxe4&lt;/code&gt;, with the idea of regaining the piece after &lt;code&gt;Qf7&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr3r/ppqbp1b1/2p3np/3p3R/3PN3/1QP1B1P1/PP2BP2/2KR4 b - -&quot; caption=&quot;Nxe4 sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr3r/ppqbpQb1/2p3np/7R/3Pp3/2P1B1P1/PP2BP2/2KR4 b - -&quot; caption=&quot;Qf7&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It turns out that White does &lt;em&gt;not&lt;/em&gt; regain the piece, after Black defends (as I did) with &lt;code&gt;Qd6&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr3r/pp1bpQb1/2pq2np/7R/3Pp3/2P1B1P1/PP2BP2/2KR4 w - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It turns out that White has a miraculously deep move &lt;code&gt;Ra5&lt;/code&gt; that equalizes through threats on Black&apos;s King!! But neither of us saw this.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr3r/pp1bpQb1/2pq2np/R7/3Pp3/2P1B1P1/PP2BP2/2KR4 b - -&quot; caption=&quot;Ra5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, Peter blundered straight into having his Queen trapped:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2k3rr/pp2pQ2/2pqb1np/7R/3Pp3/2P1B1P1/PP2BP2/2KR4 w - -&quot; caption=&quot;Queen trapped&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The game was effectively over at this point.&lt;/p&gt;
&lt;h3&gt;The endgame&lt;/h3&gt;
&lt;p&gt;However, Peter kept playing, and we ended up going into an endgame that was clearly lost for him (being a piece down):&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2k3rr/pp6/2pp2nR/8/3Pp3/2P3P1/bP2BP2/2K4R b - -&quot; caption=&quot;Lost endgame for White&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The rest of the game is only worth looking at for its efficient technique.&lt;/p&gt;
&lt;p&gt;Peter finally resigned after losing more and more material:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/1pk5/p1p4R/2Pp4/1P1np1r1/8/3K1P2/8 w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned from my game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Don&apos;t take for granted that your opponent will play in exactly the same style you&apos;ve seen for years.&lt;/li&gt;
&lt;li&gt;I don&apos;t think I have ever &lt;em&gt;in my entire life&lt;/em&gt; played a game in which I have been offered so many sacrifices. It is important to keep one&apos;s cool and try to figure out the truth of each one.&lt;/li&gt;
&lt;li&gt;A sacrifice could be &lt;em&gt;sound&lt;/em&gt;, yet not work because it is not followed up properly.&lt;/li&gt;
&lt;li&gt;A sacrifice could be &lt;em&gt;unsound&lt;/em&gt;, yet work because the defender fails to respond correctly.&lt;/li&gt;
&lt;li&gt;It takes careful calculation to determine which sacrifices are sound and which are unsound, and we humans do not always see the full truth, but &lt;em&gt;computers&lt;/em&gt; do.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;For round 5 next week, I have White against fellow Expert Richard Edahl. He is doing pretty well in the tournament, considering that, as he mentioned when he entered the tournament, he has not played in a single chess tournament in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://main.uschess.org/msa/MbrDtlTnmtHst.php?10333784&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://main.uschess.org/msa/MbrDtlTnmtHst.php?10333784&quot;&amp;gt;over twenty years&amp;lt;/span&amp;gt;! So I expect an interesting fight. I have no idea how idea how he plays, so this will be new and exciting.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I give credit to Peter for completely surprising me by attacking and sacrificing aggressively for a win, totally contrary to how I&apos;ve usually seen him play. The result was a fascinating game.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 3: attack, defense, and sacrifices</title><link>https://franklinchen.com/blog/2013/02/03/pittsburgh-chess-club-championship-2013-round-3-attack-defense-and-sacrifices/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/03/pittsburgh-chess-club-championship-2013-round-3-attack-defense-and-sacrifices/</guid><pubDate>Mon, 04 Feb 2013 01:30:41 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-ahlborg-2013-01-29_files/round-3.jpg&quot; alt=&quot;PCC Championship Round 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Round 3 of the annual &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship had me playing another very long game, the last game to finish (which it did after four hours, when nobody else was around any more except the tournament director).&lt;/p&gt;
&lt;p&gt;For once, I am actually fairly proud of my game, in which I pressed hard with an attack and won. I have submitted the score for consideration in the &lt;a href=&quot;/blog/2013/01/16/pittsburgh-chess-club-championship-2013-round-1-the-art-of-swindling/&quot;&gt;&quot;Best Attack&quot; special prize category for the tournament&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-ahlborg-2013-01-29_files/final-position.jpg&quot; alt=&quot;Our final position&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This week&apos;s chess theme is &lt;a href=&quot;https://en.wikipedia.org/wiki/Sacrifice_(chess)&quot;&gt;&lt;em&gt;sacrifice&lt;/em&gt;&lt;/a&gt; in chess. The reason is that in my game, there were many possible points of sacrifice on my end (the attacker), but also, ironically, my opponent was the one who twice sacrificed material for a &lt;em&gt;defensive&lt;/em&gt; purpose. Although the sacrifices were not sound, they had some practical merit that I will discuss.&lt;/p&gt;
&lt;h2&gt;My complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-ahlborg-2013-01-29.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I knew ahead of time that my opponent was going to be John Ahlborg, whom I have played once before &lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;in a game that I won&lt;/a&gt;, also as White.&lt;/p&gt;
&lt;p&gt;So my &quot;preparation&quot; consisted of nothing other than deciding to play a different opening against him. I should note that I inherently enjoy exploring different ways of playing, so avoidance is not really the purpose, but is actually my &lt;em&gt;excuse&lt;/em&gt; to play differently.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;John reacted to my English Opening surprise in an unexpectedly passive if solid way, allowing me permanent pressure against his &lt;code&gt;d&lt;/code&gt; Pawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqk2r/pp1pbppp/2p2n2/8/2PQ4/2N3P1/PP2PP1P/R1B1KBNR w KQkq -&quot; caption=&quot;Black d Pawn weak&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;We both played a bit stereotypically in the opening, missing chances for an aggressive advantage or counterplay, but instead reached a completely thematic position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b1rbk1/ppq2ppp/2pp1n2/2n5/2PQP3/1PN2NP1/PB3PBP/3RR1K1 b - -&quot; caption=&quot;Thematic position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black has a passive but actually very solid position. The only way White can possibly make progress is reorganize and find a way to launch a King side attack with &lt;code&gt;f4&lt;/code&gt; and &lt;code&gt;g4&lt;/code&gt; eventually, while Black should obtain counterplay on the Queen side.&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;However, my opponent faltered by not playing on the Queen side but instead trying to get counterplay by redeploying the King Knight to &lt;code&gt;e5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b2rk1/1pq1bppp/2pp1n2/p1n5/2PQP3/1PN2NP1/PB3PBP/R4RK1 w - -&quot; caption=&quot;Knight maneuver to g4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I correctly punished this error by bringing my Knight to &lt;code&gt;h4&lt;/code&gt; aiming to go to &lt;code&gt;f5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We reached a position that is beautiful for White:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4bk1/1pq2ppp/p1pp4/2n1nP2/2PQ4/1PN1R1P1/PB3PBP/6K1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White not only has the two Bishops, but also has the &lt;code&gt;f5&lt;/code&gt; Pawn controlling &lt;code&gt;e5&lt;/code&gt; as well as ready to participate in a Pawn storm involving &lt;code&gt;g4&lt;/code&gt; and then either &lt;code&gt;f6&lt;/code&gt; or &lt;code&gt;g6&lt;/code&gt;. Black&apos;s two Knights optically look active but have no real threats at all.&lt;/p&gt;
&lt;h3&gt;The first sacrifice was for counterplay&lt;/h3&gt;
&lt;p&gt;At this point, my opponent decided to engage in an unsound sacrifice but one he felt could give him activity and open lines, playing &lt;code&gt;b5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;However, after I took the Pawn and returned my Knight to &lt;code&gt;c3&lt;/code&gt;, it became clear that the only open lines were for my Bishop pair, and Black is objectively lost.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rq3bk1/5ppp/2pp4/2n1nP2/3Q4/1PN1R1P1/PB3PBP/6K1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The only question was, how to conduct the winning attack on Black&apos;s King?&lt;/p&gt;
&lt;p&gt;I got in &lt;code&gt;g4&lt;/code&gt;, and then hesitated to play &lt;code&gt;g5&lt;/code&gt; immediately. I decided to &quot;prepare&quot; for the inevitable attack more slowly.&lt;/p&gt;
&lt;h3&gt;Potential attacking sacrifices&lt;/h3&gt;
&lt;p&gt;It turns out from computer analysis that the quickest wins involve immediately pushing forth with &lt;code&gt;g5&lt;/code&gt; and having ideas of throwing everything at Black&apos;s King, possibly sacrificing a Knight or Bishop here or there in order to tighten the net around the King while swinging the Queen and Rook over to the &lt;code&gt;h&lt;/code&gt; file. for some sample lines. Here is an example position involving a &lt;code&gt;g6&lt;/code&gt; sacrifice and a possible sacrifice on &lt;code&gt;d5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rq3bk1/5ppp/2pp4/2n1nP2/3Q2P1/1PN1R3/PB2BPKP/8 b - -&quot; caption=&quot;Possible sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Critical position&lt;/h3&gt;
&lt;p&gt;The actual game continuation led to a critical position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rq3bk1/3n3p/2p2p2/3pnP2/N2Q4/1P2R3/PB2BPKP/8 w - -&quot; caption=&quot;Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;An opened up position like this tends to be critical because&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the attacker has made a commitment to the attack and therefore has made some concessions, possibly overreaching, possibly inadvertently freeing the defender by opening up lines&lt;/li&gt;
&lt;li&gt;the defender was formerly cramped but now has some space, ironically, and perhaps can use the space to bring in more defenses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It turns out that while I did not continue most precisely, my opponent also did not choose the best defense, so we reached a position that is very bad for Black because a piece will soon be lost:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1bk1/3n3p/2p2p2/3pnP1B/N6Q/1P2R3/PB3PKP/8 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The second defensive sacrifice&lt;/h3&gt;
&lt;p&gt;My opponent chose an interesting practical try, sacrificing the Knight for an attempt to block White&apos;s dark Bishop and advance some Pawns and lock out White&apos;s stray Knight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1b1k/7p/5p2/2p1nP1B/N2p3Q/1P4R1/PB4KP/8 w - -&quot; caption=&quot;Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Objectively, White has a totally won game. But at this point, time was running low for both sides.&lt;/p&gt;
&lt;p&gt;Under time pressure, I missed a quick win at one point. I also somehow walked into a less and less winning position, eventually hanging an exchange inadvertently!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3q3k/4r2p/3b1p2/2p1nP2/N2p3Q/1P4R1/P3B1KP/2B5 b - -&quot; caption=&quot;White can lose an exchange&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But under worse time pressure, my opponent did not see the win of an exchange (after which White is luckily still winning because he was a piece up originally) and &lt;em&gt;completely collapsed&lt;/em&gt;, playing into this lost position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;q4r1k/7p/3b1p1B/2p1nP1B/N2p3Q/1P4R1/P6P/6K1 b - -&quot; caption=&quot;Black is lost&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Checkmate followed:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;q6k/7Q/6B1/5P2/N1pp4/1P6/P6P/6K1 b - -&quot; caption=&quot;Checkmate&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned from my game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Being passive right out of the opening can be very challenging for a human player because it requires playing very precisely in order to maintain the balance&lt;/li&gt;
&lt;li&gt;Defensive sacrifices may be unsound but may disrupt things sufficiently that your opponent could make an error (after the first one I did not but after the second one I did)&lt;/li&gt;
&lt;li&gt;Time pressure, as usual, drastically lowers the quality of chess play&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;For round 5, I will be Black against Peter Jansen, who ended up winning his &lt;a href=&quot;/blog/2013/02/02/an-unexpected-afternoon-tour-9-miles-of-running/&quot;&gt;game against Kurt Wallnau on Saturday&lt;/a&gt;. I have played a tournament game with him only once before, six years ago, when I was White. I was not at all happy with how I played that game, even though I won (although on time in a drawn position), so I consider our game Tuesday to be my chance to finally actually play well against Peter. I have seen how he plays in the opening, so there&apos;s not going to be an opening surprise coming from him, I think, as White. We will take the battle to the middlegame.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Despite some inaccuracies on my part, I played more consistently in this game than I have recently, so I felt fairly happy about this game. Of course, I had cooperation from my opponent.&lt;/p&gt;
</content:encoded></item><item><title>An unexpected afternoon tour: 9 miles of running, 1 Cathedral of Learning stair climb, 2 chess tournaments</title><link>https://franklinchen.com/blog/2013/02/02/an-unexpected-afternoon-tour-9-miles-of-running/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/02/an-unexpected-afternoon-tour-9-miles-of-running/</guid><pubDate>Sat, 02 Feb 2013 22:41:31 GMT</pubDate><content:encoded>&lt;p&gt;I had an amusing, completely impromptu Saturday afternoon tour in which I ran nine miles (including a couple of miles with a friend I&apos;ve never actually seen running before or run with before), did one repetition of the Cathedral of Learning stair climb, and visited two different chess tournaments in Pittsburgh.&lt;/p&gt;
&lt;p&gt;As of Friday evening, I had only planned to go for a run on Saturday. Here&apos;s how I ended up on my unexpected tour instead.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-full.jpg&quot; alt=&quot;Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;I did not run in the morning&lt;/h2&gt;
&lt;p&gt;Earlier in the week, since I had just &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;signed up for the 2013 Pittsburgh Marathon&lt;/a&gt;, I had considered to the &lt;a href=&quot;https://www.steelcityrrc.org/scrrcevents?eventId=582142&amp;amp;EventViewMode=2&amp;amp;CalendarViewType=1&amp;amp;SelectedDate=2/16/2013&quot;&gt;early Saturday morning training run&lt;/a&gt; of the &lt;a href=&quot;https://www.steelcityrrc.org/&quot;&gt;Steel City Road Runners&lt;/a&gt;, but by yesterday, had felt that I didn&apos;t want to get up early on Saturday, and also it was going to be very cold, possible as low as 10 degrees F, and I felt more comfortable running near 20 degrees F as well as close to home so that I could bail out during my own long run and get back home and warm if needed.&lt;/p&gt;
&lt;p&gt;I have not run more than 5 miles continuously in a while. I anticipated running at least 7 miles out in the cold, depending on how I felt. I was certain that I would not run as long as 12 miles.&lt;/p&gt;
&lt;p&gt;By afternoon, it was over 20 degrees F, so I felt fairly comfortable going out for an extended run.&lt;/p&gt;
&lt;h2&gt;Chess tournament 1: a delayed Pittsburgh Chess Club Championship round 3 game&lt;/h2&gt;
&lt;p&gt;OK, so I was exaggerating: I did not visit two complete chess tournaments on my tour. I did visit the final unplayed game of round 3 in the &lt;a href=&quot;/blog/2013/02/03/pittsburgh-chess-club-championship-2013-round-3-attack-defense-and-sacrifices/&quot;&gt;current Pittsburgh Chess Club Championship&lt;/a&gt; that is played Tuesday nights. The game was between Kurt Wallnau and Peter Jansen, and had been postponed because Kurt couldn&apos;t make it on Tuesday. This game was important because likely the winner would be my opponent for round 4 on Tuesday, because of my current perfect score of three wins in the first three rounds so far.&lt;/p&gt;
&lt;p&gt;It turned out that shortly before I was about to go for a run in the afternoon, I got word from Kurt that he was about to play his rescheduled game with Peter at the Pittsburgh Chess Club. So I thought I would run there from home (just a bit over a mile away) to stop by and take a look before continuing on with my run.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/wallnau-jansen.jpg&quot; alt=&quot;Wallnau-Jansen from round 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When I arrived, the game had barely begun, so I just immediately went back out to continue running.&lt;/p&gt;
&lt;h2&gt;Chess tournament 2: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pitt.edu/~schach/ChessPA/wpastate.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pitt.edu/~schach/ChessPA/wpastate.htm&quot;&amp;gt;2013 PA State Game/75 Championship&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Originally I had planned to maybe run in Homewood Cemetery for a bit, but I suddenly changed my mind after running for a while and decided to check out the tournament in progress at the William Pitt Union, the 2013 PA State Game/75 Championship. So I ran into Oakland.&lt;/p&gt;
&lt;p&gt;But as I approached, staring me in the face was the Cathedral of Learning.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-on-run.jpg&quot; alt=&quot;Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Cathedral of Learning stair climb&lt;/h2&gt;
&lt;p&gt;Suddenly I decided that I would do something I had never done before, which was to do the &lt;a href=&quot;/blog/2013/01/31/doing-an-unexpected-workout/&quot;&gt;Cathedral of Learning stair climb&lt;/a&gt; right after having run a couple of miles. An interesting circuit!&lt;/p&gt;
&lt;p&gt;So I did one repetition of the 36 floors. I experimented with just continuing to run up the stairs, but quickly found that this was completely unsustainable.&lt;/p&gt;
&lt;p&gt;As another experiment, I did not just sit down and rest after finishing the stair climb. I stayed on my feet and immediately got on the elevator back down and out.&lt;/p&gt;
&lt;p&gt;I went across the street to the chess tournament in progress. The games in the round were mostly done, so there wasn&apos;t that much to see:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/2013-pa-state-game-75.jpg&quot; alt=&quot;2013 PA State Game/75 Championship&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Run with Jason&lt;/h2&gt;
&lt;p&gt;Then I ran back to the Pittsburgh Chess Club in Squirrel Hill to see what was going on there. Kurt and Peter had reached a very strange and unclear position.&lt;/p&gt;
&lt;p&gt;I was planning to go back out to run some more before coming back to the club again when I spotted Jason, a chess club regular whom I have known since winter 2005 when he was one of the first people I met, in addition to &lt;a href=&quot;/blog/2012/12/18/round-6-of-pittsburgh-chess-club-tournament-playing-pragmatically/&quot;&gt;Jeff&lt;/a&gt;, during my first visits to the Pittsburgh Chess Club. (He also happens to have started playing in chess tournaments again for the first time in several years!)&lt;/p&gt;
&lt;p&gt;I joked to him, &quot;How come you weren&apos;t out running with me?&quot; and he said that actually, he was about to go out running again, having run &quot;a couple of hours&quot; &lt;a href=&quot;/blog/2013/01/27/how-to-gut-out-the-tough-workout/&quot;&gt;in Frick Park&lt;/a&gt; in the morning.&lt;/p&gt;
&lt;p&gt;I&apos;m still amazed that Jason so quickly became an &lt;a href=&quot;https://ultrasignup.com/results_participant.aspx?fname=Jason&amp;amp;lname=Maruccio&amp;amp;age=36&quot;&gt;ultrarunner&lt;/a&gt;. A couple of years ago we&apos;d gone on some hikes together, and he said he was not a runner. After I hiked the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; three years in a row, he got excited about signing up for the first time. &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc08/volunteers&quot;&gt;Abby and I volunteered&lt;/a&gt; at an aid station for the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc08&quot;&gt;2008 Rachel Carson Trail Challenge&lt;/a&gt;, and greeted Jason as he came through our aid station. Little did I know that he would continue doing not only the Rachel Carson Trail Challenge again and again, but other endurance hikes as well. Eventually, he decided to start running, and he never looked back, and became a full-blown ultrarunner.&lt;/p&gt;
&lt;p&gt;So Jason went out for a run on the roads in Schenley Park for a couple of miles. It was out first ever run together, actually, and the first time I had ever seen him running. (We haven&apos;t hiked together in years.)&lt;/p&gt;
&lt;p&gt;We came back to the chess club, and I saw that the Wallnau-Jansen game was still in a very strange, complex state, and I decided it was time to go home for the day.&lt;/p&gt;
&lt;h2&gt;Back home&lt;/h2&gt;
&lt;p&gt;On my way back home, I started feeling really cold and hungry and tired and sore (despite having eaten a banana and some nuts an hour earlier that I had brought with me). The temperature was still around 25F, not terribly cold, but clearly I had taxed my body with my adventures. My toes were blistering and cramping up because of my footwear (I still have to really solve the problem of what shoes to wear for winter running).&lt;/p&gt;
&lt;p&gt;I was grateful to get home, eat and stretch, shower, and warm back up.&lt;/p&gt;
&lt;p&gt;I did some calculations and I ran a total of about 9 miles.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Sometimes it&apos;s fun to just go and have unplanned adventures.&lt;/p&gt;
</content:encoded></item><item><title>A report on one month of daily meditation</title><link>https://franklinchen.com/blog/2013/02/01/a-report-on-one-month-of-daily-meditation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/02/01/a-report-on-one-month-of-daily-meditation/</guid><pubDate>Sat, 02 Feb 2013 02:00:58 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/12/30/when-i-dont-have-time-to-sit-and-breathe-something-is-wrong-with-my-life/&quot;&gt;As promised a month ago&lt;/a&gt;, here is a report on a month of meditation.&lt;/p&gt;
&lt;p&gt;Despite some real challenges, I managed to complete a month of daily meditation, and found some tricks and strategies to keep going, and will report again in another month.&lt;/p&gt;
&lt;h2&gt;Virtual communities&lt;/h2&gt;
&lt;p&gt;By coincidence, as the New Year began, I found that a blog I occasionally look at, &lt;a href=&quot;https://www.wildmind.org/&quot;&gt;Wildmind&lt;/a&gt;, had issued a &lt;a href=&quot;https://www.wildmind.org/blogs/on-practice/join-us-for-wildminds-100-day-meditation-challenge&quot;&gt;100 day meditation challenge&lt;/a&gt;. I took this as a great opportunity to join a virtual &quot;community&quot; of meditators.&lt;/p&gt;
&lt;h2&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://insighttimer.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://insighttimer.com/&quot;&amp;gt;Insight Timer&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;It turns out that a mobile app called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://insighttimer.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://insighttimer.com/&quot;&amp;gt;Insight Timer&amp;lt;/span&amp;gt; was promoted, and I ended up immediately buying it for both iOS (for our iPad) and Android (for my &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;phone&lt;/a&gt;). I had intended to buy a meditation app anyway, since it was time for me to stop being stingy (I had been using an adware version of a meditation app on iOS earlier).&lt;/p&gt;
&lt;p&gt;I liked that this app not only existed on both iOS and Android (I expected to use the meditation app on my phone in case of travel and when finding quiet moments out of the home in general), but also provided a virtual community that showed who is meditating &quot;with&quot; you at any moment around the world using the app. When the going gets tough, I find it useful to remember that other people are also doing what they can to maintain their meditation practice.&lt;/p&gt;
&lt;h2&gt;Problems&lt;/h2&gt;
&lt;p&gt;Just as has happened repeatedly before, challenges popped up as the month progressed. For various reasons, my schedule was modified and so was Abby&apos;s, and since we again had tried to meditate together, this led to some tough situations when we didn&apos;t get in meditation as our first activity in the morning upon getting out of bed.&lt;/p&gt;
&lt;p&gt;My first hope was that, well, we missed that moment, but maybe we could make it up later in the day. So on a weekend, if we got up at different times, maybe we could meditate before lunch.&lt;/p&gt;
&lt;p&gt;This was a big mistake. It is very difficult to get back together to meditate when we have both started our days with numerous chores that we don&apos;t want to interrupt. In fact, we ended up twice in January having fights in which Abby did not want to meditate when I was ready to do so, and the conflicts in turn made me not want to meditate either. In any case, it was very stressful negotiating every single day whether we would meditate together.&lt;/p&gt;
&lt;h2&gt;Solutions&lt;/h2&gt;
&lt;p&gt;The fundamental solution was to decouple meditation from Abby, who clearly did not particularly value meditation. People will differ on what they consider priorities in their lives. It was a fundamental mistake returning to my faint hope that Abby and I would sustain a joint meditation practice. I have to take &lt;em&gt;full responsibility&lt;/em&gt; for my own practice, just as I have again done so with my &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;physical exercise&lt;/a&gt;, which had also been disrupted once I met Abby years ago.&lt;/p&gt;
&lt;p&gt;Abby made a good suggestion, which was that I should meditate by myself, but we could sometimes meditate together also, but that this should be considered a supplemental activity because it might or might not happen any given day.&lt;/p&gt;
&lt;p&gt;The other thing to note is that even after this decoupling of meditation activity, I was still having some problems with meditation because of the changes in my own routines, so by no means was Abby to blame for my difficulties. Often I felt &quot;rushed&quot; to get stuff done upon waking up, and delayed meditation to before bedtime. This was a symptom that something was wrong with my life, of course. If I can&apos;t spare 10 minutes in the morning to meditate, and am really so &quot;busy&quot;, then clearly I have too many things going on in my life. January turned out to be much busier than I had originally wanted. This happened despite my previous knowledge that for many people, January ends up too busy because of decisions to take up new habits at the beginning of the year! Oops. I hope I start January 2014 better than I did January 2013.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Despite setbacks, I did manage to go through an entire month of January with daily meditation. I will, of course, report back after the month of February on my progress in the 100 day meditation challenge.&lt;/p&gt;
</content:encoded></item><item><title>Doing an unexpected workout</title><link>https://franklinchen.com/blog/2013/01/31/doing-an-unexpected-workout/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/31/doing-an-unexpected-workout/</guid><pubDate>Fri, 01 Feb 2013 02:53:49 GMT</pubDate><content:encoded>&lt;p&gt;After work, I had originally planned to do the Cathedral of Learning stair climb &lt;a href=&quot;/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/&quot;&gt;as I have been doing for some weeks now&lt;/a&gt;, stuffing my coat and sweater jacket and shoes and socks into my backpack, before heading to the Carnegie Library of Pittsburgh to pick up some items, but was running late, so I resigned myself to skipping the workout and just picking up the library items and heading home for dinner; the stair climb would have to wait for another day.&lt;/p&gt;
&lt;p&gt;But after picking up 18 pounds of books from the library, I saw a message from Abby saying that she was out for a walk and would be home later, so I decided that I had time to do one repetition of the stair climb. The &quot;problem&quot; was that I had a fully loaded backpack of books.&lt;/p&gt;
&lt;p&gt;No problem. The situation just gave me an &lt;em&gt;opportunity&lt;/em&gt; for an &lt;em&gt;unexpected&lt;/em&gt; workout: doing the 36-floor stair climb with an extra 18 pounds of weight.&lt;/p&gt;
&lt;p&gt;So I went and did it. The main annoyance was having to keep my shoes on and having to hold my coat and sweater jacket with my arms while going up.&lt;/p&gt;
&lt;p&gt;But I did it, and felt really great afterwards, getting in a nice workout before dinner and successfully completing a new challenge.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;When things don&apos;t go as planned, often it pays to come up with a different plan.&lt;/p&gt;
</content:encoded></item><item><title>Why and how I am going to run the 2013 Pittsburgh Marathon</title><link>https://franklinchen.com/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/</guid><pubDate>Thu, 31 Jan 2013 01:31:41 GMT</pubDate><content:encoded>&lt;p&gt;I surprised myself by deciding suddenly to run the &lt;a href=&quot;https://web.archive.org/web/20220430074504/http://pittsburghmarathon.com/&quot;&gt;Pittsburgh Marathon&lt;/a&gt; this year, 2013. This was not part of the plan when I was &lt;a href=&quot;/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/&quot;&gt;thinking about my running plans for 2013 a month ago&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This will be my second Pittsburgh Marathon, because the last time I ran it was in 2003, and that was my first marathon ever. It was quite an ordeal to finish, because of a lot of rookie mistakes, but I made it.&lt;/p&gt;
&lt;p&gt;Here I am in 2003 near the finish line (photo courtesy of my sister Linda):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2003/P5040055.JPG&quot; alt=&quot;Franklin near finish line in 2003&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here I am wearing my medal for finishing in 2003:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-marathon-2003/P5040061.JPG&quot; alt=&quot;Franklin inside with medal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So: why am I running the Pittsburgh Marathon again, &lt;em&gt;now&lt;/em&gt;, ten years later? What do I hope to accomplish? And how?&lt;/p&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;h3&gt;Do it better&lt;/h3&gt;
&lt;p&gt;In 2003, I ran my first marathon for a variety of reasons, and trained in certain ways, had certain expectations. I will write in depth later about that first marathon, because one reason I am running the Pittsburgh Marathon again now is to &lt;em&gt;do everything better&lt;/em&gt; this time, with the benefit of experience and new self-knowledge.&lt;/p&gt;
&lt;p&gt;I want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;maintain a smart pace&lt;/li&gt;
&lt;li&gt;finish strong&lt;/li&gt;
&lt;li&gt;avoid leg muscle cramping&lt;/li&gt;
&lt;li&gt;avoid foot blistering&lt;/li&gt;
&lt;li&gt;conquer the hills&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In sharp contrast to my first marathon, I do &lt;em&gt;not&lt;/em&gt; plan to race this marathon as fast as I can. That blew up on me, and I do not have the time or desire to maximize my marathon performance at this point in my life. I do want to run strong, but not maximally. So I am not almost certainly not going to run faster than I did ten years ago; I am specifically expecting to run &lt;em&gt;slower&lt;/em&gt; but to have a &lt;em&gt;better&lt;/em&gt; overall experience.&lt;/p&gt;
&lt;p&gt;This will not be the second time I run a marathon distance; I have done that two or three times on my own while training for the &lt;a href=&quot;/categories/rachel-carson-trail-challenge/&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; and have also run just over a marathon distance in the annual Sammy&apos;s Birthday Run (a 6-hour ultra event) in 2006 and 2008. But those I did pretty slowly just for training and fun, in well over four hours. In the 2013 Pittsburgh Marathon, I&apos;d like to finish close to the completely arbitrary magic number of 4:00:00. This is very low priority compared to the other goals, but it&apos;s useful to have a little bit of ambition.&lt;/p&gt;
&lt;h3&gt;Experiment&lt;/h3&gt;
&lt;p&gt;Besides what I &lt;em&gt;know&lt;/em&gt; now that I didn&apos;t, there are also things that I didn&apos;t know then and still don&apos;t know now, but have hypotheses about. So the experience will be an opportunity to test my hypotheses. In particular, the kind of exercise and diet I follow now different in various ways from ten years ago. I do a lot more core and strength training and less endurance training. So my main goal, in fact, is to run this marathon with relatively &lt;em&gt;low mileage&lt;/em&gt;. Instead of spending huge amounts of time and energy banging out the miles in training, I want to try ways of getting in really high-quality training that will enable me to handle the marathon distance better and gut it out through strength.&lt;/p&gt;
&lt;h3&gt;Social&lt;/h3&gt;
&lt;p&gt;My first Pittsburgh Marathon experience had me running all alone. I did have support as far as my sister coming to town and my friend Nathaniel watching me and cheering me on at certain points along the course, but out there, I was alone.&lt;/p&gt;
&lt;p&gt;This time, I decided not to do the marathon unless I had at least a friend or two joining me. I got my office mate John to sign up (he also did the marathon over a decade ago). &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runoverit.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runoverit.com/&quot;&amp;gt;Chris&amp;lt;/span&amp;gt; is signed up for it, although he actually has yet to run his first marathon, which will be coming up in March. There are a bunch of others I also know who will be running. I guess when time comes, we&apos;ll figure out how our likely paces might coincide (or not).&lt;/p&gt;
&lt;h3&gt;It will be on my birthday&lt;/h3&gt;
&lt;p&gt;What can I say: it will be my very first race of any distance run &lt;em&gt;on my birthday&lt;/em&gt;. I thought it would be amusing and cool to celebrate my birthday by running the Pittsburgh Marathon.&lt;/p&gt;
&lt;h3&gt;Discount&lt;/h3&gt;
&lt;p&gt;As staff at CMU, I (and my office mate John) get a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://athletics.cmu.edu/fitness/fitkit2013&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://athletics.cmu.edu/fitness/fitkit2013&quot;&amp;gt;special discount for the Pittsburgh Marathon&amp;lt;/span&amp;gt;. This explains why I registered today, right before the deadline!&lt;/p&gt;
&lt;p&gt;In addition to the reduced registration fee, part of the deal is &quot;Special access to private finish line tent with gourmet food, private massages, and more!&quot; as well as 6 months free membership to the &lt;a href=&quot;https://www.steelcityrrc.org/&quot;&gt;Steel City Road Runners&lt;/a&gt;. Not bad.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-03-16)&lt;/h4&gt;
&lt;p&gt;I should note that the Steel City Road Runners was formed in 2011. John and I had in fact attended its &quot;kick-off party&quot; on Tuesday, September 13, 2011 where we did a free training run, but we ended up not joining the club or participating further, since we were not planning to do the Pittsburgh Marathon in 2012.&lt;/p&gt;
&lt;h2&gt;How?&lt;/h2&gt;
&lt;p&gt;There isn&apos;t actually much time before the marathon (three months), so I have to be smart about training and try to avoid setbacks. Some things I need to do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;immediately start extending the distance of my runs&lt;/li&gt;
&lt;li&gt;continue core and strength training&lt;/li&gt;
&lt;li&gt;keep up stair climbing and hill running&lt;/li&gt;
&lt;li&gt;build up to some rigorous interval training&lt;/li&gt;
&lt;li&gt;schedule long races to run in before the marathon&lt;/li&gt;
&lt;li&gt;cut back on various commitments in the next three months&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Removing chess&lt;/h3&gt;
&lt;p&gt;I&apos;ve already decided on one major activity I am going to cut out: after I finish the current Tuesday night chess tournament, the &lt;a href=&quot;/blog/2013/02/03/pittsburgh-chess-club-championship-2013-round-3-attack-defense-and-sacrifices/&quot;&gt;Pittsburgh Chess Club Championship&lt;/a&gt;, I will take a break and not play in any more Tuesday night chess tournaments until possibly the fall (in summer I&apos;d rather be playing outside in the sun rather than hunched over a chess board indoors!).&lt;/p&gt;
&lt;p&gt;Time and energy are limited. We can&apos;t do everything all the time. In fact, as things are, I have not even been able to play in the monthly &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt; team matches since &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;November&lt;/a&gt;: in December I was occupied with &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;music rehearsal&lt;/a&gt;, and just now in January I was coming off a hard week during which I was &lt;a href=&quot;/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/&quot;&gt;sick and overbooked&lt;/a&gt;. I do hope to make it to the February team match.&lt;/p&gt;
&lt;p&gt;I&apos;m doing well in the Pittsburgh Chess Club Championship so far, with a perfect score in my first three rounds, so I hope I&apos;ll be able to say goodbye while winning it after another three rounds!&lt;/p&gt;
&lt;h3&gt;Footwear&lt;/h3&gt;
&lt;p&gt;Almost certainly I will wear my &lt;em&gt;worn-out and holey&lt;/em&gt; pair of &lt;a href=&quot;/blog/2012/08/28/five-reasons-we-just-stocked-up-on-vibram-fivefingers-kso-trek-shoes/&quot;&gt;Vibram FiveFingers KSO Trek shoes&lt;/a&gt;. The reason is that I have &lt;em&gt;never&lt;/em&gt; been blistered wearing these shoes, no matter the distance. The leather is really comfortable for me. And I will wear the worn-out pair rather than a newer pair because on the roads, I don&apos;t want the deeply lugged outsoles.&lt;/p&gt;
&lt;p&gt;The other alternative I thought about was wearing huaraches such as my &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;Xero Shoes that I wore in the Great Race 10K&lt;/a&gt;. I will do some experiments in the spring running much longer distances than 10K in huaraches, but I am currently very skeptical about running an entire marathon in them.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m excited to be back for marathon running. I hope to have a stimulating adventure in the next three months as I train for and participate in the 2013 Pittsburgh Marathon!&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-24)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/02/24/2013-pittsburgh-marathon-training-progress-since-signing-up-three-weeks-ago/&quot;&gt;A progress report describes setbacks to overcome.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>My first blues music jam happened after the regular French music jam</title><link>https://franklinchen.com/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/</guid><pubDate>Tue, 29 Jan 2013 04:26:28 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been over two months since the last French music jam, which was in November. I didn&apos;t write about it because there was nothing particularly remarkable about it compared to the whole past year of French music jams: there was Lisa, John, Allison, a new fiddler Liz, and Leslie joining us on banjo again.&lt;/p&gt;
&lt;p&gt;Tonight, an addition was made to the program. For some time I had suggested to Lisa that for French/blues dance night, maybe there should be a blues jam in addition to the French jam. She liked that idea, got hold of people she knew who were interested, and so tonight was the first blues jam!&lt;/p&gt;
&lt;p&gt;It was actually &lt;em&gt;my first full participation in a blues jam&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I was very anxious, but I&apos;ve grown somewhat used to feeling anxious at least once a month in the past two years pushing myself into unfamiliar territory repeatedly.&lt;/p&gt;
&lt;p&gt;In addition, there were some changes for the French jam. Here&apos;s how the evening went.&lt;/p&gt;
&lt;h2&gt;French jam&lt;/h2&gt;
&lt;p&gt;For this new year of French music jamming, John, Lisa, and others have kicked things off by transcribing some of their favorite tunes by listening to recordings, watching YouTube, or from memory, in order to share so that we can learn and play them. John couldn&apos;t make it tonight, ironically, because he was sick, but I was very exciting that we started exploring a lot of new tunes.&lt;/p&gt;
&lt;p&gt;When I showed up, it was just Lisa on fiddle, Allison on piano (she also brought her button accordion), and me. Enough to get going. (I switched between Irish flute and modern flute as needed depending on the key.) Later, Donna also showed up, on fiddle, and Jess showed up, on clarinet.&lt;/p&gt;
&lt;p&gt;We played for quite some time, including old favorites we already knew, for the dancers, and learning some new tunes. I think we were at it for two hours.&lt;/p&gt;
&lt;h2&gt;Blues jam&lt;/h2&gt;
&lt;p&gt;As some of the French dance crowd went home and the blues dance crowd came in, the blues jam began. There was Anders on piano, whom I recognized from his having played blues indoors at a &lt;a href=&quot;/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/&quot;&gt;summer party&lt;/a&gt;; I may have seen him elsewhere also at &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;contra dance&lt;/a&gt; or something. I met Michael and Billy, who both had guitars and harmonicas. And all three of them were apparently willing to sing!&lt;/p&gt;
&lt;p&gt;I was really intimidated. I&apos;m still totally, utterly a novice at blues, although I started working on that last year. I wasn&apos;t even sure whether I shouldn&apos;t pack up my flute and go home. After all, I&apos;d already spent a lot of time on music this evening.&lt;/p&gt;
&lt;p&gt;But something happened that made me stay! Allison seemed like she was about to pack up too, but was curious, and stayed. No longer on piano, she was on her button accordion. We both confessed to never having done this before, but stayed on. I thought she was doing quite well. I wasn&apos;t doing so well, but I participated in bits. (But no, I did not sing.)&lt;/p&gt;
&lt;p&gt;As for playing for dancers, I think the dancers were sometimes confused by the experiment, because they didn&apos;t have their usual iTunes playlist to dance to. Not everything we did was really suitable to the dancing they wanted to do. We&apos;ll have to eventually figure out what works for the dancers.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Basically, when it came to my first blues jam experience, I felt sort of the way I did when I &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;first got into playing French music eight months ago&lt;/a&gt;: anxious, uncertain, embarrassed. But if I work at this and get more comfortable and better, the feeling will pass.&lt;/p&gt;
&lt;p&gt;I&apos;d like to do more blues jamming. There is a bit of a problem in that this has made for a very long and late evening. I think that&apos;s just the nature of the blues music/dance world. I&apos;ll have to plan my schedule accordingly if I want to integrate a regular blues jam into my life.&lt;/p&gt;
&lt;p&gt;And of course, I should continue my studies of the blues.&lt;/p&gt;
</content:encoded></item><item><title>How to gut out the tough workout</title><link>https://franklinchen.com/blog/2013/01/27/how-to-gut-out-the-tough-workout/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/27/how-to-gut-out-the-tough-workout/</guid><pubDate>Sun, 27 Jan 2013 22:36:07 GMT</pubDate><content:encoded>&lt;p&gt;Today I had a really tough workout. It was &lt;em&gt;unexpectedly&lt;/em&gt; tough, not &lt;em&gt;expectedly&lt;/em&gt; tough.&lt;/p&gt;
&lt;p&gt;I went for a run in the trails of Frick Park. The route was my usual 5-mile rather hilly out and back (down to Fern Hollow and back up) that is a staple for me, and which I last did &lt;a href=&quot;/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/&quot;&gt;almost a month ago&lt;/a&gt;. As I mentioned then, in winter I have not usually run in the trails of Frick Park, because of snow or ice, but this winter, I&apos;m trying to do more trail running when feasible, because &lt;a href=&quot;/blog/2013/01/17/winter-running-in-vibram-fivefingers-shoes-revisited/&quot;&gt;road running&lt;/a&gt; and &lt;a href=&quot;/blog/2012/01/05/how-to-enjoy-treadmill-running-treat-it-as-a-meditative-practice/&quot;&gt;&quot;treadmilling&quot;&lt;/a&gt; (because of some friends using the term recently, I&apos;ve recently decided to use it myself and no longer call it &quot;running&quot; at all, since the biomechanics are so different) are not as fun for me.&lt;/p&gt;
&lt;p&gt;The run quickly turned out to be very challenging. I thought of bailing out. Here&apos;s how I gutted it out.&lt;/p&gt;
&lt;h2&gt;Should I even gut it out at all?&lt;/h2&gt;
&lt;p&gt;The first question we should ask when thinking about whether to gut it out is whether we actually &lt;em&gt;should&lt;/em&gt;. &lt;em&gt;Ego&lt;/em&gt; often prevents us from asking the question. Sometimes there definitely are legitimate reasons for just &quot;following orders&quot; and turning off the mind and doing what one has planned to do. If you&apos;re trapped in the wilderness and need to &lt;em&gt;survive&lt;/em&gt;, you need to stay focused on doing what needs to be done, and never once question whether you should, because else you will probably die. We should definitely always be prepared to do what we need to do, without question.&lt;/p&gt;
&lt;p&gt;However, in the case of a workout that is not a matter of life and death, I have come to believe that it is wise to question what one is doing. This is tricky, because it takes energy to make decisions, while it takes no energy to just follow orders. In a previous post I&apos;ve tried to break down the dilemma into &lt;a href=&quot;/blog/2013/01/14/three-questions-to-ask-yourself-when-you-dont-feel-like-doing-your-scheduled-workout/&quot;&gt;three questions&lt;/a&gt; when you doubt your planned workout. Also, I have described situations in which I have backed away in &lt;a href=&quot;/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/&quot;&gt;one controlled manner or another&lt;/a&gt; from the planned workout.&lt;/p&gt;
&lt;p&gt;This post is about the case when you know you don&apos;t have a truly valid excuse to back out. You feel healthy, you feel you can probably accomplish the task, but something physical or mental is hurting and tempts you to back down.&lt;/p&gt;
&lt;h2&gt;My difficulty today&lt;/h2&gt;
&lt;p&gt;My friend &lt;a href=&quot;https://www.chrisumbel.com/&quot;&gt;Chris&lt;/a&gt; recently started a running blog, and just today he put up a &lt;a href=&quot;/blog/https://www.runoverit.com/yet-another-winter-running-post/&quot;&gt;great post about his experiences with winter running&lt;/a&gt;. In the comments I noted in agreement that running in snow is tough. Amusingly, this gave me the idea to go out and test just how tough running in snow is, when in the hilly trails of Frick Park. Trail running in anything other than a trivial layer snow is not something I have done recently.&lt;/p&gt;
&lt;p&gt;Well, it&apos;s really tough. &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;Running up hills has never been my strong point&lt;/a&gt; in any case, but with snow and little traction, running uphill proved to be immensely difficult. I felt like I was sliding while inching uphill, while my quads and inner thighs were burning with the effort to stabilize my body while pushing uphill.&lt;/p&gt;
&lt;p&gt;Given that I knew how hilly the rest of the course would be, I had concerns about whether I would give out early.&lt;/p&gt;
&lt;h2&gt;Analysis: physical, then mental&lt;/h2&gt;
&lt;p&gt;So my doubt started with some physical anxiety, followed by a mental anxiety combined with projections and calculations in my head. What to do?&lt;/p&gt;
&lt;p&gt;One thing to remember is that it is not possible to trust on-the-fly mental anxieties. We do not only fool ourselves self-servingly in various ways when we are under physical duress. Our bodies may also be fooled by our minds even against our wishes. There is a hypothesis that has been gaining favor in the endurance sports communities that there is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Central_governor&quot;&gt;central governor&lt;/a&gt; that works to try to protect us from overdoing ourselves.&lt;/p&gt;
&lt;p&gt;I believe the central governor could &lt;em&gt;not&lt;/em&gt; have been an issue for me in my workout, which was really not all that terrible, but I think it may have been an issue in long races where I really have pushed myself to my limits.&lt;/p&gt;
&lt;h2&gt;Objectivity&lt;/h2&gt;
&lt;p&gt;When you feel like maybe you won&apos;t finish what you set out to do, it is easy to get emotional and lose objectivity. Frustration, anger, shame, anxiety, too easily arise, if one is serious about one&apos;s exercise program, and especially if there is some concrete milestone or goal to achieve, like a big race you&apos;ve sacrificed a lot of time and energy (and maybe money) for. But it&apos;s important to remember that whatever you&apos;ve already put in is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Sunk_costs&quot;&gt;sunk cost&lt;/a&gt;. The rational thing to do is to examine the &lt;em&gt;present&lt;/em&gt;, not the &lt;em&gt;past&lt;/em&gt; or the &lt;em&gt;future&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Think of the worst case scenarios&lt;/h2&gt;
&lt;p&gt;To avoid wishful thinking, I find it useful to examine the worst case scenarios and ask whether they are so bad. If so, then scale back and examine the &lt;em&gt;probable&lt;/em&gt; scenarios. If the worst case scenario is not so bad, then I tend to push through, because I don&apos;t have that much to lose. &quot;Negative thinking&quot; is a useful trick that is a cornerstone of &lt;a href=&quot;https://en.wikipedia.org/wiki/Stoicism&quot;&gt;Stoic philosophy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, for example, today, the temperature was something like 35F, which is not bad at all. If I got too tired to run and had to walk, I would not be in any danger of hypothermia or anything. So it was totally worth pushing on in order to test my limits even if I had to stop eventually.&lt;/p&gt;
&lt;p&gt;And, needless to say, there is no shame in walking. I have very rarely had to resort to walking during a run that I planned, but it has happened before. No big deal.&lt;/p&gt;
&lt;h2&gt;Change some variable to make your workout more likely to &quot;succeed&quot;&lt;/h2&gt;
&lt;p&gt;Once I realized that my run was going to be very tough, I redefined my workout. I slowed down and focused on the goal of maintaining a steady (and still considerable) effort and not having to walk, and finishing strong.&lt;/p&gt;
&lt;p&gt;Learning to fail is laudable and useful, but so is learning to accept small successes. Small successes breed confidence and therefore the foundation for attempting larger successes. So despite what I just said about walking being OK, in my experience it does have a demoralizing or questioning effect, so I prefer to finish strong at a lesser task rather than fail to finish a more ambitious task.&lt;/p&gt;
&lt;p&gt;Sometimes it&apos;s a judgment call. But one thing for sure is that I was very excited to emerge from Frick Park with my quads having burned for an hour but still able to pick up the pace back on the roads home.&lt;/p&gt;
&lt;p&gt;An advantage of succeeding at a lesser task is that there is a clear path toward upping the difficulty. If you fail, it&apos;s harder to find out where to scale down the difficulty.&lt;/p&gt;
&lt;h3&gt;Endurance vs. strength&lt;/h3&gt;
&lt;p&gt;Here I&apos;ve been talking about tasks of &lt;em&gt;endurance&lt;/em&gt;. When it comes to &lt;em&gt;strength&lt;/em&gt;, the &lt;em&gt;opposite&lt;/em&gt; is true: you want to fail in order to determine the parameters. You want to lift weights to failure, rather than mindlessly doing twenty reps of some light weight.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a pretty good run today despite initially not being sure I should go through with it. I reasoned that it was worth a shot and that I had backup plans for both my body and mind if I didn&apos;t make it. I look forward to doing more super-hard snowy uphill trail running this winter. It will make me stronger.&lt;/p&gt;
</content:encoded></item><item><title>Music I just played for the first time: recorder sonata, tangos</title><link>https://franklinchen.com/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/</guid><pubDate>Sun, 27 Jan 2013 04:03:10 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to Henry&apos;s birthday party, marking an important anniversary: we attended his birthday party for the first time a year ago, and that began &lt;a href=&quot;/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/&quot;&gt;one of the most important developments in my entire life, my decision to make music playing an integral part of my life&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A lot of music happened, as usual, and this time, unlike a year ago, I played. What a year it&apos;s been!&lt;/p&gt;
&lt;h2&gt;Handel&apos;s recorder sonata in G minor&lt;/h2&gt;
&lt;p&gt;I decided to finally give a shot at playing, for the first time outside of home, &lt;a href=&quot;https://en.wikipedia.org/wiki/Recorder_sonata_in_G_minor_%28HWV_360%29&quot;&gt;Handel&apos;s recorder sonata in G minor, op. 1 no. 2&lt;/a&gt;, me being on alto recorder and Henry on piano.&lt;/p&gt;
&lt;p&gt;This piece is extremely special to me, because I discovered it by accident as one of the first &quot;real&quot; recorder pieces that I started working on when I was just a beginner at recorder. A method book I was using at the time, one and half years ago, in May 2011, by Mario Duschenes, had a section with the title &quot;How to practise a difficult piece&quot;, and the example and suggestions on practice was the Andante from this recorder sonata by Handel. I hunted down the complete score of the recorder sonata and started to learn the whole thing. I did this intermittently over the course of a year or so while doing other things, but always had the intention of at some point polishing it up for actual performance.&lt;/p&gt;
&lt;p&gt;The main holdup eventually was that I wanted to be able to really express myself well, and incorporate my own ornamentations. To this end, I made some study of Baroque ornamentation and checked out a book I found in the library, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.oup.com/us/catalog/general/subject/Music/PerformanceStudiesAppliedMusic/WindsBrass/?view=usa&amp;amp;ci=9780198790013&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.oup.com/us/catalog/general/subject/Music/PerformanceStudiesAppliedMusic/WindsBrass/?view=usa&amp;amp;ci=9780198790013&quot;&amp;gt;&quot;Playing Recorder Sonatas&quot;, by Anthony Rowland-Jones&amp;lt;/span&amp;gt;. I have found this book quite useful as a guide.&lt;/p&gt;
&lt;p&gt;Anyway, I had fun reading through this with Henry. Eventually I want to play it for real, as performance, in a setting with harpsichord continuo, rather than with piano.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-23)&lt;/h3&gt;
&lt;p&gt;I ended up performing the recorder sonata with bass recorder accompaniment at the Pittsburgh Recorder Society&apos;s &lt;a href=&quot;/blog/2013/02/23/celebrating-two-years-of-playing-recorder/&quot;&gt;Midwinter Musical Feast&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Bach&apos;s flute sonata in E minor, BWV 1034&lt;/h2&gt;
&lt;p&gt;I played music by Johann Sebastian Bach on flute for the first time outside the home. I&apos;ve held back because I feel like I&apos;m still not doing the music justice, but decided I can&apos;t hide forever my love of Bach.&lt;/p&gt;
&lt;p&gt;On modern flute with Henry on piano, I played the first movement of &lt;a href=&quot;https://en.wikipedia.org/wiki/Sonata_in_E_minor_for_flute_or_recorder_and_basso_continuo&quot;&gt;Bach&apos;s flute sonata in E minor&lt;/a&gt;. I would have considered playing it on Baroque flute, but the piano as well as the the party environment &lt;a href=&quot;/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/&quot;&gt;is not friendly for Baroque flute&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-21)&lt;/h3&gt;
&lt;p&gt;On Bach&apos;s birthday in 2013, &lt;a href=&quot;/blog/2013/03/21/my-second-year-of-celebrating-johann-sebastian-bachs-birthday/&quot;&gt;I reflected on&lt;/a&gt; how the very same recorder method book by Duschenes I mentioned above was the impetus for my getting into Bach flute sonatas!&lt;/p&gt;
&lt;h2&gt;Tangos&lt;/h2&gt;
&lt;p&gt;I played tango on flute for the first time ever.&lt;/p&gt;
&lt;p&gt;I did &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;sing tango for the first time recently&lt;/a&gt;, and also played &lt;a href=&quot;/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/&quot;&gt;tango on melodica for the first time&lt;/a&gt;, but had not yet dared to play on flute.&lt;/p&gt;
&lt;p&gt;Today, I did, and not only that, one of them ended up becoming a flute-violin duet, in which Barbara (whom I met exactly a year ago at the last birthday party) played violin.&lt;/p&gt;
&lt;p&gt;The story is that several months ago, in October, I got hold of a book of tangos for violin duet. I judged that with some modifications I could play the first part on flute, if only I could simultaneously find someone on violin (and someone on piano). The opportunity did not spontaneously arise until today!&lt;/p&gt;
&lt;p&gt;First, I played &lt;a href=&quot;https://en.wikipedia.org/wiki/El_Choclo&quot;&gt;&quot;El Choclo&quot;&lt;/a&gt; with just Henry on piano.&lt;/p&gt;
&lt;p&gt;Then Barbara joined in on violin and we played &lt;a href=&quot;https://en.wikipedia.org/wiki/Por_una_Cabeza&quot;&gt;&quot;Por una Cabeza&quot;&lt;/a&gt; with Henry. This was one of the most satisfying experiences of my life. It&apos;s one thing playing duets with Henry, but it&apos;s another having three to really fill in the harmonies and textures and two melodic voices playing off each other. Wow. I need to do this more often. And I have to confess, I never tire of this particular classic tango, because it&apos;s so dramatic and expressive, and has that suddenly shift from major to the lyrical chorus in minor.&lt;/p&gt;
&lt;h2&gt;More Bach: double violin concerto&lt;/h2&gt;
&lt;p&gt;Barbara was so excited that she goaded me into trying to sight read &lt;a href=&quot;https://en.wikipedia.org/wiki/Concerto_for_Two_Violins_%28Bach%29&quot;&gt;Bach&apos;s double violin concerto&lt;/a&gt; on the spot together with Henry. I knew I was probably going to cause a minor disaster, but heck, it&apos;s a party, we&apos;re just having fun. And indeed, I got confused or lost many times, because first of all, I&apos;m not so great on flute right now at all, and second, this music was for violin and some stuff was not very suitable for flute and also needed me to go up an octave all of a sudden because the violin has a bigger range. So, it was a struggle for me, but I enjoyed some nice moments in the less frantic slow movement, where the two melodic voices really combine beautifully.&lt;/p&gt;
&lt;p&gt;Anyway, it was all in fun, Bach forgive me!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As at all of Henry&apos;s parties, I strive to go to them prepared to do something better and new and interesting musically, for our enjoyment as well as that of the other guests. I had a great time again. I am so grateful for the past year of getting to know Henry and his sharing the gift of music with me!&lt;/p&gt;
</content:encoded></item><item><title>My father always said &quot;Think of it as exercise&quot;</title><link>https://franklinchen.com/blog/2013/01/26/my-father-always-said-think-of-it-as-exercise/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/26/my-father-always-said-think-of-it-as-exercise/</guid><pubDate>Sat, 26 Jan 2013 18:17:24 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/shoveled-sidewalk.jpg&quot; alt=&quot;Shoveled sidewalk&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Maybe you have a father like mine.&lt;/p&gt;
&lt;p&gt;When I was growing up, I noticed that every time there was some menial chore to do, he would tell me, &quot;Think of it as &lt;em&gt;exercise&lt;/em&gt;&quot;. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hanging up clothing to dry (he doesn&apos;t believe in dryers)&lt;/li&gt;
&lt;li&gt;washing dishes (he doesn&apos;t believe in dishwashers)&lt;/li&gt;
&lt;li&gt;mowing the lawn&lt;/li&gt;
&lt;li&gt;picking up and bagging the grass cuttings &lt;em&gt;after&lt;/em&gt; mowing the lawn (since he didn&apos;t believe in &quot;high tech&quot; lawn mowers with bag attachments)&lt;/li&gt;
&lt;li&gt;packing and carrying boxes when moving&lt;/li&gt;
&lt;li&gt;hauling and assembling furniture&lt;/li&gt;
&lt;li&gt;shoveling snow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I didn&apos;t enjoy physical activity at all (being rather sickly and weak when young), so I treated his remark as a taunt and a way to get me to do chores.&lt;/p&gt;
&lt;p&gt;OK, it was partially a taunt. But underneath, given that he actually practices what he preaches, even today, there is something else.&lt;/p&gt;
&lt;p&gt;I now find myself saying &quot;Think of it as exercise&quot; too, both to Abby and to myself.&lt;/p&gt;
&lt;p&gt;What happened? (No, I have not yet &quot;become my father&quot;!)&lt;/p&gt;
&lt;h2&gt;The very concept of exercise&lt;/h2&gt;
&lt;p&gt;I&apos;ve found that many people of my parents&apos; generation have no concept of &quot;exercise&quot;, and for good reason: they grew up involved in much physical activity &lt;em&gt;out of necessity&lt;/em&gt;, and it was just a part of life. They didn&apos;t have access to or could not afford to buy various &quot;labor-saving&quot; devices and services. So for them, going to the gym or something like that is just a totally foreign concept, something that only the freaks who were professional athletes or narcissists do.&lt;/p&gt;
&lt;p&gt;And they&apos;re right. It&apos;s completely unnatural to spend vast amounts of time hooked up to some &quot;exercise&quot; machines if you&apos;re actually going around chasing down deer, running after chickens, pulling weeds, building your own roof, washing loads of laundry, going to the river repeatedly to haul buckets of water back, walking miles to get anywhere at all, etc.&lt;/p&gt;
&lt;p&gt;Human beings have always &lt;em&gt;moved&lt;/em&gt;. And we are adapted to move. The dilemma of modern industrialized life is that very often, we do not &lt;em&gt;need&lt;/em&gt; to move. We can outsource our labor to a machine or to someone else. Supposedly this is an advance because we can then exert our energies on &quot;higher&quot; pursuits, like writing labor-saving computer programs, endlessly being entertained by TV and YouTube, and writing blog posts.&lt;/p&gt;
&lt;h2&gt;Re-imagining exercise&lt;/h2&gt;
&lt;p&gt;But I learned something a decade ago when I started &quot;exercising&quot; and changed my life. Although engaging in traditional &quot;exercise&quot; benefited me tremendously, I still did not feel &quot;whole&quot;, truly human. So over the years, I gradually backed away from what I considered &lt;em&gt;alienating&lt;/em&gt; forms of labor, toward more natural types of activities, to the point that most recently, I have moved toward &lt;a href=&quot;/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/&quot;&gt;body weight strength training&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the past year, going even further in my awareness, I&apos;ve gravitated toward actually finding value and opportunity in everyday chores that require physical activity.&lt;/p&gt;
&lt;p&gt;This is the &lt;em&gt;first&lt;/em&gt; winter in my life in which I have not complained about shoveling snow, for example. (Not that it&apos;s my favorite thing to do!) I &quot;think of it as exercise&quot;; I treat it as a serious, interesting workout. In the past, I&apos;d just do it and grumble. Now, I do it &lt;em&gt;mindfully&lt;/em&gt;, thinking of which muscles I&apos;m using and what form I have. Shoveling well is actually pretty tricky, because you have to watch your back, manage torque and leverage, etc.&lt;/p&gt;
&lt;p&gt;So I&apos;ve not only gone out to shovel snow from my sidewalk when needed, but I&apos;ve also stopped grumbling when one of my neighbors fails to shovel snow from their sidewalk. I just go and do theirs. Maybe they&apos;re out of town or something. It doesn&apos;t matter what the reason, but the sidewalk needs to be shoveled and so I do it. It&apos;s my exercise.&lt;/p&gt;
&lt;p&gt;Also, brushing snow off my own car is exercise as well and again, involves lots of interesting movements. I like using long cross-body swipes to be efficient at getting snow down and off my car.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/car-snow.jpg&quot; alt=&quot;My car with snow off&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m not going to pretend that various physical chores are my favorite things to do, but by taking my father&apos;s old advice, &quot;Think of it as exercise,&quot; I&apos;ve made life more interesting and fun for myself, and it makes me feel more connected to my core humanity as a physical being. Spending much of my earlier life living only in my mind was a mistake. There is much joy in simple physical pleasures.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-10)&lt;/h3&gt;
&lt;p&gt;Abby alerted me to this article exploring the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.eurekalert.org/pub_releases/2013-01/osu-sft012813.php&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.eurekalert.org/pub_releases/2013-01/osu-sft012813.php&quot;&amp;gt;benefits of everyday activity such as taking the stairs and raking leaves&amp;lt;/span&amp;gt;.&lt;/p&gt;
</content:encoded></item><item><title>Notes on exercising while sick or tired</title><link>https://franklinchen.com/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/25/notes-on-exercising-while-sick-or-tired/</guid><pubDate>Sat, 26 Jan 2013 00:42:50 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;I was a bit sick this past week, a result of overexerting myself on various projects the previous week, and also Abby herself getting sick. We have been basically fine since Thursday, but I was feeling pretty bad Sunday through Tuesday in particular.&lt;/p&gt;
&lt;p&gt;The question always comes up, when I am sick or just plain tired, &quot;What should I do to recover as efficiently as possible?&quot; After trial and error over the years, I&apos;ve come to realize I have to do a couple of things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get more &lt;em&gt;sleep&lt;/em&gt;, whatever it takes.&lt;/li&gt;
&lt;li&gt;Eat only nutritious food, no junk.&lt;/li&gt;
&lt;li&gt;Take some supplements such as vitamin C, B, zinc, fish oil (I don&apos;t know if this is just a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.medscape.com/viewarticle/776832&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.medscape.com/viewarticle/776832&quot;&amp;gt;placebo effect&amp;lt;/span&amp;gt;, but it doesn&apos;t matter because it seems to work, I end up believing, and therefore by the placebo effect it does work).&lt;/li&gt;
&lt;li&gt;Start canceling lower-priority near-term engagements in order to free up rest time. (In retrospect, I should have bailed out of going to the &lt;a href=&quot;/blog/2013/01/21/attending-the-first-openhack-pittsburgh-meeting/&quot;&gt;first OpenHack Pittsburgh meeting&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;Get some kind of exercise.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s the exercise that gets tricky sometimes. When one is low on energy and weakened, what should one do, if anything at all? Here are some thoughts.&lt;/p&gt;
&lt;h2&gt;Why even exercise at all?&lt;/h2&gt;
&lt;p&gt;A long time ago, whenever I felt sick or tired, I would use that as a reason to just shut down and not get any exercise. I had the idea that I needed to &quot;rest&quot;, and any activity would only weaken me.&lt;/p&gt;
&lt;p&gt;It turned out that being completely sedentary is not actually &quot;rest&quot;. It is actually quite harmful. Lying around or sitting around all the time is, even for those of us who are healthy, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mayoclinic.com/health/sitting/AN02082&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mayoclinic.com/health/sitting/AN02082&quot;&amp;gt;unnatural and damaging&amp;lt;/span&amp;gt;. The way our bodies work actually changes when we are immobile. Granted, if we are seriously, seriously ill, and cannot move, then that is reality, but if we are ill but able to move, then there is a question of what we can do that helps rather than hinders recovery.&lt;/p&gt;
&lt;h2&gt;Breaking down&lt;/h2&gt;
&lt;p&gt;I take it for granted (and from experience) that when we&apos;re sick, we shouldn&apos;t just push through everything we would do if we were not. The reason is that normal levels of intense exercise deliberately does some controlled breaking down of the body in order for it to adapt and grow back stronger, but if we&apos;re weak, we may not be strong enough to withstand the breaking down.&lt;/p&gt;
&lt;p&gt;So I assume that we want to dial down the intensity in some way while retaining restorative effects.&lt;/p&gt;
&lt;h2&gt;Walking works for me&lt;/h2&gt;
&lt;p&gt;I find that walking (if you&apos;re able to walk) is probably the ideal way of getting circulation when not feeling up to running or lifting weights. It&apos;s low impact, you breathe more, and you can change the pace and intensity at very fine increments at will. So, if I do nothing else, I&apos;ll get in a walk, even if it&apos;s just around the block.&lt;/p&gt;
&lt;h2&gt;Running sometimes doesn&apos;t work for me&lt;/h2&gt;
&lt;p&gt;I find that it&apos;s sometimes tricky to run when sick. The main problem is that there is a kind of threshold below which running feels inefficient to me. If you&apos;re running a lot slower than usual, that is inefficient and increases pounding on the joints. I&apos;d rather walk than run much slower than usual. So I haven&apos;t run since &lt;a href=&quot;/blog/2013/01/20/thoughts-on-an-unexpected-winter-barefoot-run/&quot;&gt;my barefoot run outside on Saturday&lt;/a&gt;. Now that I&apos;m well again, I&apos;m quite ready to resume running. I&apos;d rather run when I&apos;m excited to do it and feel that it will benefit me, instead of slogging through an inefficient and possibly form-disrupting run just because I&apos;m &quot;supposed&quot; to run. As &lt;a href=&quot;/blog/2011/12/14/i-love-medicine-balls-video-review-gaiam-fit-ball-workout/&quot;&gt;Tanja Djelevic&lt;/a&gt; recently wrote, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://tanjadjelevic.com/blog/2013/01/22/for-the-purpose-of-living-loud/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://tanjadjelevic.com/blog/2013/01/22/for-the-purpose-of-living-loud/&quot;&amp;gt;&quot;To be a slave to the work out regimen, and have hardcore guilt for missing a work out, is in every way detrimental.&quot;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;That said, there are definitely times when I&apos;ve run through a minor cold or something. It all depends. When the weather is really friendly (which it hasn&apos;t been since real winter came immediately to Pittsburgh), it&apos;s easy to just go out for a walk and have it turn into an easy run.&lt;/p&gt;
&lt;h2&gt;Strength training, partially&lt;/h2&gt;
&lt;p&gt;Usually, when I&apos;m sick, I don&apos;t feel like doing a whole lot of strength training. In fact, I&apos;ve tested myself and when I&apos;m sick, my pullups suffer considerably.&lt;/p&gt;
&lt;p&gt;However, I&apos;ve noticed that doing short bursts of &quot;easier&quot; exercises is quite helpful in getting the metabolism up and preventing the quick decline that happens if you just stop doing everything for too long. I do pushups every day (partially as a result of my 2013 decision to &quot;earn&quot; every square of chocolate I eat by first doing pushups just before eating it; as of today, I am earning my chocolate with 26 pushups). I don&apos;t care how many I do: the point is to do something.&lt;/p&gt;
&lt;h2&gt;My Cathedral of Learning stair climb: what to do about that?&lt;/h2&gt;
&lt;p&gt;I&apos;ve been reporting regularly on my Cathedral of Learning 36-floor stair climb regimen &lt;a href=&quot;/blog/2013/01/19/why-ive-chosen-to-perform-only-two-repetitions-of-the-cathedral-of-learning-stair-climb/&quot;&gt;lately&lt;/a&gt;. So what happened to my routine this week when I was not feeling well?&lt;/p&gt;
&lt;p&gt;First of all, I was supposed to do it Monday, and I was feeling queasy enough that I decided to completely bail out of it.&lt;/p&gt;
&lt;p&gt;Second, Wednesday I was feeling much better, and decided that I wanted to do a reduced workout. I decided that after weeks of doing two repetitions, I was going to do &lt;em&gt;just one&lt;/em&gt;. But since I was feeling on the upswing, I felt that I was strong enough to gut out doing that one repetition relatively &lt;em&gt;fast&lt;/em&gt; (not all out fast, but pretty fast going one step at a time).&lt;/p&gt;
&lt;p&gt;I did it the fastest I&apos;ve done so far this year, in 7:20. That&apos;s 42 seconds faster than my fastest time yet in any of the stair climbs I&apos;ve done so far this year. I was quite exhausted afterwards, and lay down panting for over three minutes (yes, I let the timer keep running to see when I would be able to breathe normally again). Doing the stair climb at this level of intensity to me feels considerably harder than &lt;a href=&quot;/blog/2012/08/17/the-inaugural-liberty-mile-a-review-of-pittsburghs-first-road-mile-race/&quot;&gt;running an all-out mile race&lt;/a&gt;. Stair climbing is very different from (non-hilly) running, totally burning my quads and jacking up my heart rate way, way up (I didn&apos;t measure it but I could feel it).&lt;/p&gt;
&lt;p&gt;Afterwards, I felt pretty good and happy to have gotten myself out of my health slump.&lt;/p&gt;
&lt;h3&gt;Stair racing, the sport?!&lt;/h3&gt;
&lt;p&gt;By the way, here&apos;s a great article a friend just sent me today about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2013/01/27/magazine/stair-racing-a-sport-to-make-an-ironman-whimper.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2013/01/27/magazine/stair-racing-a-sport-to-make-an-ironman-whimper.html&quot;&amp;gt;stair racing, the sport&amp;lt;/span&amp;gt;. I had no idea there was actually a whole worldwide professional stair racing scene!!&lt;/p&gt;
&lt;p&gt;Check out the Empire State Building race:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;9iSGOUTz3QA&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Prevention&lt;/h2&gt;
&lt;p&gt;Of course, it&apos;s better to prevent getting sick or tired in the first place. Here&apos;s a great article on having &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sean-johnson.com/2013/01/22/why-you-need-more-margin-in-your-life/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sean-johnson.com/2013/01/22/why-you-need-more-margin-in-your-life/&quot;&amp;gt;more &quot;margin&quot; in your life&amp;lt;/span&amp;gt; that I recently encountered. I plan to track and report on how I improve my margin in my life.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;When my body is not functioning so well because of illness or fatigue, I try to figure out how to recover, and I&apos;ve found that some types and levels of exercise are very helpful to me.&lt;/p&gt;
&lt;p&gt;What do you do to keep in shape when you are feeling sick or tired? Do you have your own specific plan B, or do you wing it, or do you follow the regular plan anyway?&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 2: surviving time trouble</title><link>https://franklinchen.com/blog/2013/01/23/pittsburgh-chess-club-championship-2013-round-2-surviving-time-trouble/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/23/pittsburgh-chess-club-championship-2013-round-2-surviving-time-trouble/</guid><pubDate>Wed, 23 Jan 2013 12:27:58 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/ozbek-chen-2013-01-22_files/round-2.jpg&quot; alt=&quot;PCC Championship 2013 round 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Round 2 of the annual &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship had me playing a tough and very long game, the second to last game to finish (which it did after four hours). There was time trouble for both me and my opponent near the end of the game, but I managed to win.&lt;/p&gt;
&lt;p&gt;So I thought I would touch on the issue of time trouble in chess.&lt;/p&gt;
&lt;h2&gt;My complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/ozbek-chen-2013-01-22.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;As mentioned in &lt;a href=&quot;/blog/2013/01/16/pittsburgh-chess-club-championship-2013-round-1-the-art-of-swindling/&quot;&gt;my report on round 1&lt;/a&gt;, after which I knew who my opponent was supposed to be for round 2, Melih Ozbek, I had nothing to prepare for this round. I had only played him once before, as White, not as Black.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;It turned out that Melih plays the Grand Prix Attack against the Sicilian Defense, which was featured in &lt;a href=&quot;/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/&quot;&gt;one of my games in a previous tournament&lt;/a&gt;. We arrived at a thematic position in which I felt happy on the Black side:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2qk1nr/1b1p1pbp/p3p1p1/1pp5/3nPP2/1BNP1N2/PPP3PP/R1BQ1RK1 w kq -&quot; caption=&quot;Grand Prix Attack&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;Eventually we reached an important position in which I managed to get in &lt;code&gt;f5&lt;/code&gt;, permanently blocking White from that thematic square:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2qk2r/1b1p3p/p1n1p1p1/1pp2p2/3bPP2/1BNPB3/PPP3PP/R3QR1K w kq -&quot; caption=&quot;Black f5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;After White took on &lt;code&gt;f5&lt;/code&gt;, we reached a position in which Black arguably is the one with the attacking chances on the King side, having the half open &lt;code&gt;g&lt;/code&gt; file and pressure against White&apos;s Pawn on &lt;code&gt;g2&lt;/code&gt;. Objectively, White can hold, but Black is the one with the attack:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/1b1p3p/p1n1p3/1pp2p2/3b1P2/1BNPB3/PPP2QPP/R4R1K w - -&quot; caption=&quot;g file&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Melih invited me into complications by giving up the &lt;code&gt;b2&lt;/code&gt; Pawn in exchange for the &lt;code&gt;c5&lt;/code&gt; Pawn. I was happy to oblige, and we reached an interesting position in which White fought for counterplay on the Queen side and center:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3q2k/1b1p2rp/p1n1pb2/1pB2p2/P4P2/1B1P4/2P1NQPP/3R2RK w - -&quot; caption=&quot;White counterplay?&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;After some inaccuracies by White, we reached a position clearly favorable to Black:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r6k/1b4rp/4pbq1/1pB2p2/3N1P2/1P6/5QPP/3R2RK b - -&quot; caption=&quot;Black attacks&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;The clock is ticking for both of us&lt;/h4&gt;
&lt;p&gt;I thought for a long time but could not find a win (and there isn&apos;t one). I then realized I had to play &lt;em&gt;something&lt;/em&gt;, and that clearly I was getting tired because I could not think as well as I could hours earlier at the beginning of the game.&lt;/p&gt;
&lt;p&gt;I could not afford to get into time trouble later in the game when I expected more important positions to potentially arise. I started playing &quot;safely&quot;, with the idea of waiting for my opponent to make worse moves than mine.&lt;/p&gt;
&lt;h5&gt;Missing a win&lt;/h5&gt;
&lt;p&gt;We reached this position, in which there was a beautiful forced win that I completely missed. If I had found it, I would be submitting my game for the &quot;Best Attack&quot; special prize for the tournament!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r6k/6rp/4pbq1/1pBb1p2/3N1P2/1P5P/5QP1/3R2RK b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The winning move is &lt;code&gt;Ra2!!&lt;/code&gt; sacrificing a Rook to deflect White from King defense. If White takes the Rook, then Black invades with &lt;code&gt;Qg3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;7k/6rp/4pb2/1pBb1p2/3N1P2/1P4qP/Q5P1/3R2RK w - -&quot; caption=&quot;Black mates&quot; /&amp;gt;&lt;/p&gt;
&lt;h5&gt;More misses&lt;/h5&gt;
&lt;p&gt;There are more sacrificial wins I also missed later. For example, this sacrifice on &lt;code&gt;g2&lt;/code&gt; enables Black to win by getting down to the back rank with the Rook and Queen:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r6k/6rp/4pb2/1pB2p1q/3N1P2/1P2R2P/5Qb1/6RK w - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Anyway, we reached another critical position where there was a clear win for Black. I saw it but time was running low, I was getting confused, and I didn&apos;t play it (&lt;code&gt;Bh4&lt;/code&gt; and then &lt;code&gt;Bg3+&lt;/code&gt;), instead playing &lt;code&gt;e5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6rk/6rp/4pb2/1pBb1p1q/3N1P2/1P5P/3R1QPK/6R1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It turns out that White could have simply played &lt;code&gt;Nf3&lt;/code&gt; and held everything, but he didn&apos;t, and so the position was critical yet again. This time, I played &lt;code&gt;Bh4&lt;/code&gt;, of course.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6rk/6rp/8/1pBbpp1q/5P1b/1P2Q2P/2NR2PK/6R1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But then I inexplicably chose not to play the winning &lt;code&gt;Bg3+&lt;/code&gt;. All I can say is that in time trouble sometimes things get confused in my brain.&lt;/p&gt;
&lt;p&gt;I played &lt;code&gt;exf4&lt;/code&gt; instead, which is so bizarre, because it allows White onto the diagonal straight to the King, that I don&apos;t know what I was thinking! (Note that by this time neither players were keeping score, because of the time trouble.)&lt;/p&gt;
&lt;p&gt;Finally, I played the winning move &lt;code&gt;Rxh3+!&lt;/code&gt;, except that I didn&apos;t see the whole winning followup so I get no credit for this move:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6rk/7p/8/1pBR1p1q/8/1P5r/2N3PK/6R1 w - -&quot; caption=&quot;Winning move&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here, I faltered completely, failing to do the zigzag checking dance with the Queen to pick up White&apos;s Knight at &lt;code&gt;c2&lt;/code&gt; with check before proceeding further:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6rk/7p/8/1pBR1p2/8/1P3q1P/2N4K/6R1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, we entered an endgame that, sadly for Black, is actually quite tenable for White.&lt;/p&gt;
&lt;h3&gt;The endgame&lt;/h3&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3R4/6kp/8/1pB2p2/8/1P4qP/2N5/6K1 w - -&quot; caption=&quot;Endgame&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;However, because I had been so obsessed with playing quickly in time trouble, I was ahead on the clock, and my opponent barely had any time to think at all, and in a position like this, the Queen can be very dangerous because of checking possibilities and tactics that might pick up a stray piece. And that&apos;s what happened, as my opponent played blunder after blunder. He hung not only his Rook, but eventually his Knight as well.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/2R4p/4k3/1p3p2/3B4/6q1/2N5/6K1 w - -&quot; caption=&quot;White losing the Rook&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;With hardly any time on the clock left, Melih touched his King reflexively in this position, saw that his Knight was hanging, and resigned.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/2q4p/4k3/1p3p2/3B4/8/2N5/5K2 w - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned from my game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Having a time advantage near the end was helpful.&lt;/li&gt;
&lt;li&gt;In time trouble, if you don&apos;t see the win, at least don&apos;t blunder into a loss.&lt;/li&gt;
&lt;li&gt;When short of time, it is advantageous to have the attack and to have active, obviously used weapons such as a Queen and passed Pawns.&lt;/li&gt;
&lt;li&gt;Anything can happen in time trouble, so setting easy tactical traps (such as forking pieces) is a valid strategy.&lt;/li&gt;
&lt;li&gt;Remember that most human chess games are really &lt;em&gt;lost&lt;/em&gt;, not &lt;em&gt;won&lt;/em&gt;; many positions that look bad are, to computers, completely defensible. But in practice, some positions are harder to defend by humans (especially under time pressure) than others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A note on my time trouble issues: these days I have not been playing very well under time trouble, but I remember a period when I was actually pretty good at playing with little time, and won the &lt;a href=&quot;/blog/2011/10/18/disagreement-on-the-use-of-time/&quot;&gt;2006 Pennsylvania State Game/29 Championship as well as the 2006 Pennsylvania Action Chess Championship with perfect scores&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I think dealing with time constraints is totally a matter of regular practice and training. I used to play 5-minute blitz a lot, and that helped me make practical decisions reflexively with little time. I am too busy these days to hang out at the club and play blitz, so my overall chess competitiveness has suffered as a result.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week for round 3, I get White again against John Ahlborg, whom I played for the first time also as White &lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;a couple of months ago&lt;/a&gt;. Now that he knows how I play, I expect he will be prepared against me in some fashion. No worries, I am probably not going to repeat any ideas I&apos;ve posted so far on this blog!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a tough game in which although I may have had a small advantage during much of it, I did not actually have a won position until near the end, but at that point, time pressure marred both my play and my opponent&apos;s. Finally, as the pieces went flying on the board, he erred worse than I did, and I won.&lt;/p&gt;
</content:encoded></item><item><title>Attending the first OpenHack Pittsburgh meeting</title><link>https://franklinchen.com/blog/2013/01/21/attending-the-first-openhack-pittsburgh-meeting/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/21/attending-the-first-openhack-pittsburgh-meeting/</guid><pubDate>Tue, 22 Jan 2013 02:49:13 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://openhack.github.com/images/logo-green.png&quot; alt=&quot;OpenHack logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was excited to attend the &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/96033112/&quot;&gt;very first meeting&lt;/a&gt; of &lt;a href=&quot;https://openhack.github.com/pittsburgh/&quot;&gt;OpenHack Pittsburgh&lt;/a&gt;, out of curiosity and as a way to force myself to make progress on a personal programming project of mine using Scala (ironically, after spending the day at work on Scala; apparently I couldn&apos;t get enough of it).&lt;/p&gt;
&lt;p&gt;The point of &lt;a href=&quot;https://openhack.github.com/&quot;&gt;OpenHack&lt;/a&gt; is to provide a space for programmers to meet up and work on something. It could be a shared project, it could be a personal project.&lt;/p&gt;
&lt;p&gt;Some people come with something to work on, others come to meet other programmers and pitch in on a project, others come to learn something. It was cool that some people left the first meeting finally getting set up on Ruby or Python or Clojure, and working on a project, with help from other people.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/openhack-pittsburgh-2013-01-21/room.jpeg&quot; alt=&quot;One room&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/openhack-pittsburgh-2013-01-21/conference-room.jpeg&quot; alt=&quot;Conference room&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And yes, in the two hours I was there, I did make good progress on my project. It&apos;s not finished yet though.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/openhack-pittsburgh-2013-01-21/closeup.jpeg&quot; alt=&quot;Franklin and others&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Many thanks to &lt;a href=&quot;https://www.4moms.com/&quot;&gt;4moms&lt;/a&gt; for hosting the first OpenHack Pittsburgh meetup, and providing the sandwiches and chips and beverages!&lt;/p&gt;
</content:encoded></item><item><title>Thoughts on an unexpected winter barefoot run</title><link>https://franklinchen.com/blog/2013/01/20/thoughts-on-an-unexpected-winter-barefoot-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/20/thoughts-on-an-unexpected-winter-barefoot-run/</guid><pubDate>Sun, 20 Jan 2013 13:14:12 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/barefoot-running-winter.jpg&quot; alt=&quot;Barefoot running in winter&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, I went on my first ever &lt;em&gt;winter barefoot run&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It&apos;s &lt;em&gt;not&lt;/em&gt; what you think; or maybe, it &lt;em&gt;is&lt;/em&gt; what you think.&lt;/p&gt;
&lt;h2&gt;Sunny day&lt;/h2&gt;
&lt;p&gt;Yes, there was still some snow on the ground. But it was purely residual.&lt;/p&gt;
&lt;p&gt;It was a sunny day. A &lt;em&gt;warm&lt;/em&gt; day, temperature of about 53 degrees F.&lt;/p&gt;
&lt;p&gt;Originally I had planned to go for a run like I did a couple of days ago, &lt;a href=&quot;/blog/2013/01/17/winter-running-in-vibram-fivefingers-shoes-revisited/&quot;&gt;in Vibram FiveFingers shoes&lt;/a&gt;. But I changed my mind when I realized just how warm it was.&lt;/p&gt;
&lt;p&gt;Impulsively, I just hopped out the door in my short-sleeve T-shirt and shorts, and &lt;em&gt;barefoot&lt;/em&gt;, because it seemed that I could. What other winter have I had, during my lifetime spent in the northern United States, when I could go out running barefoot?&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;I ended up running less than about three miles, because I faced some annoyances:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the roads and sidewalks were actually pretty cold&lt;/li&gt;
&lt;li&gt;there was a lot of debris out there (ouch!), left behind after the snow melted; some of it was clearly salt crystals&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Putting on shoes&lt;/h2&gt;
&lt;p&gt;I ended up going back home and putting on my &lt;a href=&quot;/blog/2012/07/26/walking-and-running-in-invisible-shoes-a-review&quot;&gt;Xero Shoes (4mm Connect)&lt;/a&gt; that have become my favorite running footwear (when the weather allows; I stopped wearing them last fall shortly after the Great Race 10K, which was &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;my first race running in them&lt;/a&gt;). I felt much better wearing these huaraches and went back out to run another three miles.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/xero-shoes-winter.jpg&quot; alt=&quot;Xero Shoes 4mm Connect&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Somber thoughts&lt;/h2&gt;
&lt;p&gt;I had a good time running outside as though it were spring or fall, but actually, I get worried every time this winter I am able to do something like this.&lt;/p&gt;
&lt;p&gt;It&apos;s not normal.&lt;/p&gt;
&lt;p&gt;And it&apos;s not good.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://web.archive.org/web/20170325195118/https://www.wunderground.com/blog/weatherhistorian/comment.html?entrynum=112&quot;&gt;2012 was a record warm year for the continental United States&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&apos;s not pleasant contemplating &lt;a href=&quot;https://climate.nasa.gov/&quot;&gt;global climate change&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s been nice being able to run in winter here in Pittsburgh without being all bundled up. But that is a constant reminder to me that something weird has been happening to our planet.&lt;/p&gt;
</content:encoded></item><item><title>Why I&apos;ve chosen to perform only two repetitions of the Cathedral of Learning stair climb</title><link>https://franklinchen.com/blog/2013/01/19/why-ive-chosen-to-perform-only-two-repetitions-of-the-cathedral-of-learning-stair-climb/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/19/why-ive-chosen-to-perform-only-two-repetitions-of-the-cathedral-of-learning-stair-climb/</guid><pubDate>Sat, 19 Jan 2013 16:05:28 GMT</pubDate><content:encoded>&lt;p&gt;Four times now in the past two weeks, I have done exactly &lt;em&gt;two&lt;/em&gt; repetitions, no less and no more, of the 36-floor Cathedral of Learning stair climb.&lt;/p&gt;
&lt;p&gt;A friend of mine who also started the stair climbing, inspired by my one-repetition initial climb before New Year, was very excited about immediately going to two, and then after that, going to three reps. I, on the other hand, have chosen to stay at exactly two. So yesterday I did two, as planned.&lt;/p&gt;
&lt;p&gt;Here&apos;s why I&apos;ve chosen to stay at exactly two.&lt;/p&gt;
&lt;h2&gt;The question of goals&lt;/h2&gt;
&lt;p&gt;Even before we begin an exercise program at all, we should be very clear and explicit about our goals. It is impossible to effectively and efficiently &lt;em&gt;achieve&lt;/em&gt; our goals if they are too vague or casual.&lt;/p&gt;
&lt;p&gt;Sometimes we expend all our &quot;serious&quot; energy on school or work or family, but do not carry out the same discipline when working on our goals outside the really big ones that in some sense are forced upon us. Typically, in these bigger, institutionalized realms, once we get involved at all, they have their own built-in feedback mechanisms to prevent us from totally slacking off (although of course there are workaholics who ignore their family as well as those whose highest priority is leaving the office at 5 PM sharp in order to get to the real business of having dinner with the family).&lt;/p&gt;
&lt;p&gt;Having specific goals enables we to break down into &lt;em&gt;action&lt;/em&gt; steps, supported by theory and practical experience and know-how.&lt;/p&gt;
&lt;p&gt;Example questions we have to answer about our goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;short term or long term?&lt;/li&gt;
&lt;li&gt;appearance or function?&lt;/li&gt;
&lt;li&gt;specific or general?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For me, my overall goal in exercise is always &lt;em&gt;general&lt;/em&gt;, not tied to a specific event, but I always have secondary and tertiary increasingly specific goals, that I try to make as consistent as possible with the general goal, and exploit as rewards and milestones along the way for motivation and calibration. So for example, regarding my brand new stair-climbing component of my exercise regimen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;primary: achieve and maintain lifelong functional core strength, power, vitality&lt;/li&gt;
&lt;li&gt;secondary: get in better condition to enjoy tough, hilly runs and hikes here in Western Pennsylvania&lt;/li&gt;
&lt;li&gt;tertiary: perform well in my very first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot;&amp;gt;Fight for Air Climb&amp;lt;/span&amp;gt; competitive event in March&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hill and stair climbing has always been a weakness of mine, so this is the year when I am going to systematically improve it.&lt;/p&gt;
&lt;h2&gt;Analysis of goals&lt;/h2&gt;
&lt;p&gt;Given my goals, we see that there is a mix of possible &quot;zones&quot; to target. I want both endurance and power. I&apos;m not planning to do hilly ultramarathons, so maximizing endurance is not of interest. Therefore, I am not even thinking about building up to ten reps of the Cathedral of Learning stair climb.&lt;/p&gt;
&lt;p&gt;However, I want to achieve a certain amount of endurance, for the long runs and hikes.&lt;/p&gt;
&lt;p&gt;But for the shorter term, I want to optimize for the Fight for Air Climb, which is only &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/local/event-information.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/local/event-information.html&quot;&amp;gt;45 floors (897 steps)&amp;lt;/span&amp;gt;. Given that, doing one fast rep of the Cathedral stair climb simulates best that particular event.&lt;/p&gt;
&lt;h2&gt;The process of conditioning&lt;/h2&gt;
&lt;p&gt;Then there&apos;s the question of how to build up to where I want to be. It doesn&apos;t happen all at once. Progress is gradual. The muscles need to grow and become efficient. How best to train?&lt;/p&gt;
&lt;p&gt;I&apos;ve chosen to do two repetitions in order to simultaneously build up endurance and power, neither maximally, while in the early stages of training. My plan is to get enough endurance from this that I can then transition to more targeted training. In particular, I expect &lt;em&gt;not&lt;/em&gt; to move up to three reps, but instead, to either drop &lt;em&gt;down&lt;/em&gt; to one rep, or instead change the parameters entirely, training anaerobically with sprints upward.&lt;/p&gt;
&lt;h2&gt;The record so far&lt;/h2&gt;
&lt;p&gt;Here&apos;s my history so far for the two-rep workout that I began this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/&quot;&gt;2013-01-04&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;9:02&lt;/li&gt;
&lt;li&gt;about 16:00 recovery&lt;/li&gt;
&lt;li&gt;8:58&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/01/07/primantis-and-the-cathedral-of-learning/&quot;&gt;2013-01-07&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;9:07&lt;/li&gt;
&lt;li&gt;10:42 recovery&lt;/li&gt;
&lt;li&gt;8:54&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2013/01/14/three-questions-to-ask-yourself-when-you-dont-feel-like-doing-your-scheduled-workout/&quot;&gt;2013-01-14&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;8:47&lt;/li&gt;
&lt;li&gt;8:39 recovery&lt;/li&gt;
&lt;li&gt;8:21&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2013-01-18 (yesterday)
&lt;ul&gt;
&lt;li&gt;8:46&lt;/li&gt;
&lt;li&gt;5:56 recovery&lt;/li&gt;
&lt;li&gt;8:02&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In four workouts so far this month, I have made improvements while adhering to some deliberate constraints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have always taken it &quot;easy&quot; during the first rep.&lt;/li&gt;
&lt;li&gt;I have focused on making the second rep not only faster than the first rep, but faster in absolute time.&lt;/li&gt;
&lt;li&gt;I have focused on shortening the recovery time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m going to stick to two repetitions until I reach an inflection point at which point I will make some big change. Staying with two allows me to gauge my progress along certain dimensions.&lt;/p&gt;
&lt;p&gt;What is your preference when you work out? What variables do you change and monitor? Number of repetitions? Recovery time? Increase in distance? Increase in speed? Increase in weight load? And why? What are your goals?&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-04)&lt;/h3&gt;
&lt;p&gt;Over a month later, I finally moved up to &lt;a href=&quot;/blog/2013/03/04/finally-moving-up-from-two-to-three-cathedral-of-learning-reps/&quot;&gt;three reps&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-10)&lt;/h3&gt;
&lt;p&gt;And then &lt;a href=&quot;/blog/2013/03/10/now-at-four-reps-of-the-cathedral-of-learning-stair-climb/&quot;&gt;four reps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A gradual progression made the improvement seem natural rather than painful and forced.&lt;/p&gt;
</content:encoded></item><item><title>Modern chess: computers shutting down opening theory, part 2</title><link>https://franklinchen.com/blog/2013/01/18/modern-chess-computers-shutting-down-opening-theory-part-2/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/18/modern-chess-computers-shutting-down-opening-theory-part-2/</guid><pubDate>Sat, 19 Jan 2013 03:37:17 GMT</pubDate><content:encoded>&lt;p&gt;Last September, I described how a &lt;a href=&quot;/blog/2012/09/24/a-fact-of-modern-chess-computers-shutting-down-opening-theory/&quot;&gt;shocking chess opening novelty&lt;/a&gt; illustrates the subtlety of human chess preparation and the psychology of practical play.&lt;/p&gt;
&lt;p&gt;I had no idea that an even bigger shock was to come, in the very same chess opening variation.&lt;/p&gt;
&lt;h2&gt;Critical position&lt;/h2&gt;
&lt;p&gt;This is a critical position of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Semi-Slav_Defense#Meran_Variation:_6.Bd3&quot;&gt;Meran Variation of the Semi-Slav&lt;/a&gt;, White to play:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.huffingtonpost.com/2013-01-17-Anand1.jpg&quot; alt=&quot;Meran&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last September, Topalov as White played the natural &lt;code&gt;12 b4&lt;/code&gt;, but that led to the stunning sacrifice &lt;code&gt;12...c5&lt;/code&gt; that leads to a draw for Black. As I said in my blog post: &quot;What this novelty means is that anyone playing White going into this opening variation in the future cannot play the obvious &quot;best&quot; move &lt;code&gt;12 b4&lt;/code&gt;, because it results in a draw.&quot;&lt;/p&gt;
&lt;h2&gt;What else for White to try?&lt;/h2&gt;
&lt;p&gt;So in a recent game between Aronian and Anand (&lt;a href=&quot;https://www.huffingtonpost.com/lubomir-kavalek/amazing-chess-brilliancy_b_2497593.html&quot;&gt;full annotated game here&lt;/a&gt;), Aronian deviated by playing instead &lt;code&gt;12 Ng5&lt;/code&gt;, sidestepping the known draw.&lt;/p&gt;
&lt;p&gt;But amazingly, Anand, as Black played &lt;code&gt;12...c5&lt;/code&gt; anyway!! It looks insane. If it&apos;s an acceptable move, then surely Aronian must have done his own computer research ahead of time to deal with it?&lt;/p&gt;
&lt;p&gt;No, he clearly had not seen everything coming, because after the amazing sacrifice &lt;code&gt;15...Bc5&lt;/code&gt;, Aronian played a poor move, which led to the astounding &lt;code&gt;15...Nde5&lt;/code&gt; by Anand leading to this position:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.huffingtonpost.com/2013-01-17-Anand3.jpg&quot; alt=&quot;Near the end&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Anand then won the game after several more moves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It may have been his most brilliant game in his career, and will definitely be in any anthology of the greatest games ever played in the history of chess.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Quotes&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.chessbase.com/home/TabId/211/PostId/4008776&quot;&gt;Aronian said&lt;/a&gt;: &quot;I think I ran into a theoretical trap. I was not aware of Bc5, which is very strong. Vishy said he had prepared it for somebody else. I should study openings better.&quot;&lt;/p&gt;
&lt;p&gt;Anand said: &quot;It was the same concept [as Rotlevy-Rubinstein].&quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.telegraph.co.uk/culture/chess/9806562/Anand-crushes-Aronian.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.telegraph.co.uk/culture/chess/9806562/Anand-crushes-Aronian.html&quot;&amp;gt;World number one Magnus Carlsen described the game as &quot;mind-blowing and really something special&quot;.&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h2&gt;Observations&lt;/h2&gt;
&lt;p&gt;First of all, note how this game shows that computers still have not meant the death of human chess: Aronian, one of the strongest and most brilliant chess players in the world, armed with all the computation power he wanted, did not analyze this line deeply enough with computer aid to see that Black could play the crazy-looking sacrifice &lt;code&gt;15...Bc5&lt;/code&gt;. It took &lt;em&gt;human creativity&lt;/em&gt;, not brute-force compute power, to find this move. Of course, it took computer analysis to &lt;em&gt;validate&lt;/em&gt; this move.&lt;/p&gt;
&lt;p&gt;Second, this game means that the move &lt;code&gt;12 Ng5&lt;/code&gt; will never again be seen in top level chess, because now we know that Black can achieve at least a draw.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Or do we?&lt;/em&gt; Is it possible that there is still something overlooked, an improvement for White somewhere? Actually, not really: now that the whole &lt;em&gt;forcing&lt;/em&gt; line by Black has been revealed, it is easy for any chess player to zero in on all possibilities and evaluate all of them with computer aid. This entire opening variation starting with Black&apos;s &quot;threat&quot; to play &lt;code&gt;...c5&lt;/code&gt; is probably done. (Of course, if it is shown otherwise, I will have another blog post to write.)&lt;/p&gt;
&lt;h3&gt;Pattern recognition&lt;/h3&gt;
&lt;p&gt;It is probably critical to note that Anand found his brilliant concept through an analogy with the famous Rotlevy-Rubinstein sacrificial game that basically every chess player sees and learns early on: I remember first reading through that game at age seven from a library book and being totally wowed by it.&lt;/p&gt;
&lt;p&gt;This is just a reminder that human chess players still get their edge (in certain circumstances) over brute force computer search, through pattern recognition, as &lt;a href=&quot;https://en.wikipedia.org/wiki/Adriaan_de_Groot&quot;&gt;de Groot&lt;/a&gt; verified half a century ago in his classic study of strong chess players.&lt;/p&gt;
&lt;p&gt;Chess is not yet over.&lt;/p&gt;
</content:encoded></item><item><title>How Justice Clarence Thomas uncovered a seven-year-old bug in my computer program</title><link>https://franklinchen.com/blog/2013/01/18/how-justice-clarence-thomas-uncovered-a-seven-year-old-bug-in-my-computer-program/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/18/how-justice-clarence-thomas-uncovered-a-seven-year-old-bug-in-my-computer-program/</guid><pubDate>Fri, 18 Jan 2013 18:55:11 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20260129141302/https://www.supremecourt.gov/about/justice_pictures/CThomas.jpg&quot; alt=&quot;Justice Clarence Thomas&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today, &lt;a href=&quot;https://en.wikipedia.org/wiki/Clarence_Thomas&quot;&gt;Justice Clarence Thomas&lt;/a&gt; of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.supremecourt.gov/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.supremecourt.gov/&quot;&amp;gt;Supreme Court of the United States&amp;lt;/span&amp;gt; uncovered a seven-year-old bug in a computer program I wrote years ago.&lt;/p&gt;
&lt;p&gt;Here&apos;s what happened:&lt;/p&gt;
&lt;h2&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.supremecourt.gov/oral_arguments/oral_arguments.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.supremecourt.gov/oral_arguments/oral_arguments.aspx&quot;&amp;gt;Oral arguments of SCOTUS&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Several years ago, as part of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/&quot;&amp;gt;TalkBank&amp;lt;/span&amp;gt; project, I wrote a suite of computer programs to clean up, correct, and transform &lt;a href=&quot;https://web.archive.org/web/20170611140419/https://www.supremecourt.gov/oral_arguments/argument_transcripts.aspx&quot;&gt;SCOTUS oral argument transcripts&lt;/a&gt; into a particular text file format called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://childes.psy.cmu.edu/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://childes.psy.cmu.edu/&quot;&amp;gt;CHAT&amp;lt;/span&amp;gt;, to enable analysis and further transformation.&lt;/p&gt;
&lt;p&gt;The CHAT transcripts are aligned (by humans), utterance by utterance, with the available audio files, in order to create a nice way to simultaneously read the text while listening, with the ability to pause, skip to a particular section, etc.&lt;/p&gt;
&lt;h2&gt;Example: &lt;a href=&quot;https://en.wikipedia.org/wiki/Hamdan_v._Rumsfeld&quot;&gt;Hamdan v. Rumsfeld&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Text formats&lt;/h3&gt;
&lt;p&gt;SCOTUS provides an oral transcript in &lt;a href=&quot;https://web.archive.org/web/20250916064039/https://www.supremecourt.gov/oral_arguments/argument_transcripts/05-184.pdf&quot;&gt;PDF format&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At CMU we have made the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/data-orig/Meeting/SCOTUS/2005/05-184.cha&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/data-orig/Meeting/SCOTUS/2005/05-184.cha&quot;&amp;gt;CHAT-formatted text&amp;lt;/span&amp;gt; of each transcript available, as well as ZIP archives of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/data/Meeting/SCOTUS/2005.zip&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/data/Meeting/SCOTUS/2005.zip&quot;&amp;gt;entire corpora&amp;lt;/span&amp;gt; and the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/data-xml/Meeting/SCOTUS/2005.zip&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/data-xml/Meeting/SCOTUS/2005.zip&quot;&amp;gt;equivalent XML&amp;lt;/span&amp;gt; converted automatically from CHAT.&lt;/p&gt;
&lt;h3&gt;Media playback&lt;/h3&gt;
&lt;p&gt;The linked transcripts can be played back in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directly from the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/browser/index.php?url=Meeting/SCOTUS/2005/05-184.cha&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/browser/index.php?url=Meeting/SCOTUS/2005/05-184.cha&quot;&amp;gt;CMU site&amp;lt;/span&amp;gt;.&lt;/li&gt;
&lt;li&gt;Downloading the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://talkbank.org/data/Meeting/SCOTUS/2005.zip&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://talkbank.org/data/Meeting/SCOTUS/2005.zip&quot;&amp;gt;2005 corpus&amp;lt;/span&amp;gt; and running the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://childes.psy.cmu.edu/clan/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://childes.psy.cmu.edu/clan/&quot;&amp;gt;CLAN&amp;lt;/span&amp;gt; desktop application on a transcript.&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.oyez.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.oyez.org/&quot;&amp;gt;Oyez&amp;lt;/span&amp;gt; provides their own interface, through transformation of the CHAT files, to an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.oyez.org/cases/2000-2009/2005/2005_05_184&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.oyez.org/cases/2000-2009/2005/2005_05_184&quot;&amp;gt;entire site for each case&amp;lt;/span&amp;gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What happened today&lt;/h2&gt;
&lt;p&gt;Today, as I have done on Thursdays or Fridays for years now when SCOTUS is in session, I have converted the oral argument transcripts for this week in order to hand off to the Oyez people for their use.&lt;/p&gt;
&lt;h3&gt;The conversion software&lt;/h3&gt;
&lt;p&gt;The conversion happens in three steps.&lt;/p&gt;
&lt;h4&gt;Pre-processing&lt;/h4&gt;
&lt;p&gt;The conversion is not fully automatic, because there are always errors of some kind in the transcripts that I correct manually. I wrote a set of twenty-nine separate &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.perl.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.perl.org/&quot;&amp;gt;Perl&amp;lt;/span&amp;gt; scripts that do a lot of cleanup and checking of transcripts as a pre-processing step.&lt;/p&gt;
&lt;h4&gt;Parsing, validation, transformation&lt;/h4&gt;
&lt;p&gt;The main task of parsing and validation and transformation uses a program written in Java and using the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://antlr.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://antlr.org/&quot;&amp;gt;ANTLR&amp;lt;/span&amp;gt; parser generator framework.&lt;/p&gt;
&lt;p&gt;Note: these programs were written several years ago, hence the use of ANTLR version 2 rather than ANTLR 3. Newer projects of mine have used ANTLR 3 (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://antlr4.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://antlr4.org/&quot;&amp;gt;ANTLR 4&amp;lt;/span&amp;gt; is only now about to hit 4.0).&lt;/p&gt;
&lt;h4&gt;Post-processing&lt;/h4&gt;
&lt;p&gt;A post-processing Perl script is used after the initial CHAT generation, in order to convert numerical and other tokens into the desired spoken form; at the &lt;a href=&quot;https://pghpw.org/ppw2010/&quot;&gt;Pittsburgh Perl Workshop 2010&lt;/a&gt;, I gave a little talk, &lt;a href=&quot;https://pghpw.org/ppw2010/talk/3029&quot;&gt;How do you pronounce &quot;07-1191&quot;?&lt;/a&gt;, about this part of the project.&lt;/p&gt;
&lt;h4&gt;Reliable legacy software&lt;/h4&gt;
&lt;p&gt;No new development has been done on these programs for several years, since as far as can be determined, there have been no remaining bugs in the programs.&lt;/p&gt;
&lt;p&gt;These programs have, to date, successfully generated 3,468 CHAT files that have been validated. In the first year or two, there were bugs quickly found and fixed, and then I don&apos;t remember the last time a bug was found.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Until today&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;The bug&lt;/h2&gt;
&lt;p&gt;The bug came today as I was processing this week&apos;s case &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.supremecourt.gov/oral_arguments/argument_transcripts/11-9953.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.supremecourt.gov/oral_arguments/argument_transcripts/11-9953.pdf&quot;&amp;gt;11-9953&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I got an error message when my pre-processing phase exited after an error while running the script &lt;code&gt;find-bad-ids.pl&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;THOMAS not found
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I was confused. I looked at the transcript and saw:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
JUSTICE SCALIA: And another of his counsel, Mr. Singer -- of the three that he had -- he was a graduate of Harvard law school, wasn&apos;t he?&lt;/p&gt;
&lt;p&gt;MS. SIGLER: Yes, Your Honor.&lt;/p&gt;
&lt;p&gt;JUSTICE SCALIA: Son of a gun.&lt;/p&gt;
&lt;p&gt;JUSTICE THOMAS: Well -- he did not --&lt;/p&gt;
&lt;p&gt;(Laughter.)&lt;/p&gt;
&lt;p&gt;MS. SIGLER: I would refute that, Justice Thomas.&lt;/p&gt;
&lt;p&gt;JUSTICE SOTOMAYOR: Counsel, do you want to define constitutionally adequate counsel? Is it anybody who&apos;s graduated from Harvard and Yale?&lt;/p&gt;
&lt;p&gt;(Laughter.)
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I was confused about why my script would not recognized Justice Thomas. I looked at the Perl source code, saw where I initialized a table of Justice names, and saw:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;use String::Approx &apos;amatch&apos;;

$lastNames{REHNQUIST} = -1;
$lastNames{STEVENS} = -1;
# ... code omitted

    if (not exists $lastNames{$upperLastName}) {
      if (my @matches = amatch($upperLastName, @ids)) {
        warn &quot;$path:$.: $lastName: guessing to be $matches[0]\n&quot;;
      }
      else {
        warn &quot;$path:$.: $lastName not found\n&quot;;
      }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I had simply forgotten seven years ago to put into the table initialization the following code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$lastNames{THOMAS} = -1;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this bug had lain undiscovered for seven years because &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.washingtonpost.com/politics/clarence-thomas-breaks-long-silence-during-supreme-court-oral-arguments/2013/01/14/a7c6023c-5e7a-11e2-9940-6fc488f3fecd_story.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.washingtonpost.com/politics/clarence-thomas-breaks-long-silence-during-supreme-court-oral-arguments/2013/01/14/a7c6023c-5e7a-11e2-9940-6fc488f3fecd_story.html&quot;&amp;gt;Justice Thomas has not spoken in seven years&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;h3&gt;How the bug arose&lt;/h3&gt;
&lt;p&gt;Justice Thomas did speak in the following transcripts I successfully converted years ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1999/99-478&lt;/li&gt;
&lt;li&gt;2000/99-1848&lt;/li&gt;
&lt;li&gt;2000/99-1964&lt;/li&gt;
&lt;li&gt;2001/00-1770&lt;/li&gt;
&lt;li&gt;2001/01-631&lt;/li&gt;
&lt;li&gt;2002/01-1107&lt;/li&gt;
&lt;li&gt;2002/02-516&lt;/li&gt;
&lt;li&gt;2004/03-1164&lt;/li&gt;
&lt;li&gt;2005/04-1067&lt;/li&gt;
&lt;li&gt;2005/04-1327&lt;/li&gt;
&lt;li&gt;2005/04-52&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What happened was that they were generated before I wrote the &lt;code&gt;find-bad-ids.pl&lt;/code&gt; script. The main program in Java has its own table of justices. The purpose of the pre-processing Perl script is to catch errors earlier than handing off to the Java program. In particular, the use of approximate string matching enables easy correction of typos before ANTLR ever sees the text to parse. Before the pre-processing scripts, the text that arrived at ANTLR often had a lot of systematic errors that were annoying to fix, so I wrote in Perl both a cleanup pre-processing phase and a checking pre-processing phase. They include tests for all kinds of &quot;suspicious&quot; formatting and tokens and ambiguity that require manual judgment and correction.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I still don&apos;t know why I forgot to put Justice Thomas into the table initialization code in my Perl script seven years ago, but it resulted in a bug that was not detected until today. The lesson: your computer program can have bugs if you didn&apos;t get test data that represented all possible situations, including that of Justice Thomas actually speaking during a SCOTUS oral argument!&lt;/p&gt;
</content:encoded></item><item><title>Winter running in Vibram FiveFingers shoes: revisited</title><link>https://franklinchen.com/blog/2013/01/17/winter-running-in-vibram-fivefingers-shoes-revisited/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/17/winter-running-in-vibram-fivefingers-shoes-revisited/</guid><pubDate>Thu, 17 Jan 2013 16:22:48 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/01/02/new-experiment-for-a-new-year-winter-running-in-vibram-fivefingers-shoes/&quot;&gt;Last year I wrote about experimenting with winter running in Vibram FiveFingers shoes&lt;/a&gt;. The experiment basically failed, once it got too cold or snowy/icy.&lt;/p&gt;
&lt;p&gt;This year, because it has been &quot;warm&quot; (for example, today it was 37 degrees F), the story has been different. I have been able sometimes to run outside on the roads in my Vibram FiveFingers Bikila LS shoes, and without socks, even.&lt;/p&gt;
&lt;p&gt;Here are the conditions under which I am able to do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;temperature above freezing&lt;/li&gt;
&lt;li&gt;no ice&lt;/li&gt;
&lt;li&gt;no puddles of melted or melting water&lt;/li&gt;
&lt;li&gt;running on roads or sidewalks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One drawback is that even when the trails of Frick Park are runnable (with a bit of residual snow and ice), wearing FiveFingers out there is not advisable. &lt;a href=&quot;/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/&quot;&gt;I wear standard mono-toed shoes when trail running now&lt;/a&gt; if I do it at all.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/vibram-winter-2013-01-12.jpg&quot; alt=&quot;Vibram Bikila LS by ice&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/vibram-winter-frick-2013-01-12.jpg&quot; alt=&quot;Vibram Bikila LS by ice on Frick trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As long as there are no cold water or ice danger issues, I will experiment with continuing to run in FiveFingers shoes, adding Injinji socks when it gets colder.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess Club Championship 2013, Round 1: the art of swindling</title><link>https://franklinchen.com/blog/2013/01/16/pittsburgh-chess-club-championship-2013-round-1-the-art-of-swindling/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/16/pittsburgh-chess-club-championship-2013-round-1-the-art-of-swindling/</guid><pubDate>Wed, 16 Jan 2013 22:52:02 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-kostyak-2013-01-15_files/round-1.jpg&quot; alt=&quot;PCC Championship 2013 round 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday was the first round in the annual &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship, and I am playing in it for the first time in two years. I &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;mentioned earlier&lt;/a&gt; that I have won the PCC Champion title twice, in 2006 and 2007.&lt;/p&gt;
&lt;h2&gt;Special prizes&lt;/h2&gt;
&lt;p&gt;I&apos;m excited that this year the format has been augmented with some special prizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Best Attack&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Best Defense&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Biggest Upset&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All players have been invited to submit their game scores for consideration for these prizes.&lt;/p&gt;
&lt;p&gt;Well, I&apos;m &lt;em&gt;not&lt;/em&gt; submitting my game score from round 1! Although I won my game, bit was a result of a swindle in which I lured my opponent into walking into danger in an otherwise drawish endgame, after which he suddenly completely fell apart.&lt;/p&gt;
&lt;p&gt;Of course, most chess games played by humans are &quot;ugly&quot; like this in some way (and I have written posts about how I have been on the receiving end of swindles), so we have to embrace this reality; most games also have their cute moments. I think my game is worth looking at for the swindle that worked.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-kostyak-2013-01-15.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;This being the first round, I had no idea who my opponent would be, so had nothing to prepare.&lt;/p&gt;
&lt;p&gt;Also, I hadn&apos;t played a single game of chess in an entire month, so I expected to be a bit rusty. My goal was to maintain some kind of advantage, while avoiding plain losing for no reason. In the past, I have sometimes forgotten to avoid losing!&lt;/p&gt;
&lt;h2&gt;This year&apos;s tournament&lt;/h2&gt;
&lt;p&gt;The tournament has a great turnout, and Mike Holsinger, the director, noted that it is possible that we have one of the strongest fields in the history of this tournament. There are quite a few rated Experts other than me. I look forward to facing strong competition.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;p&gt;I was paired against Mike Kostyak, rated nearly 500 rating points below me at 1733. Ratings are deceptive though: I&apos;ve had plenty of trouble, sometimes, winning against opponents much lower rated than me. This game was no exception.&lt;/p&gt;
&lt;p&gt;At the board, I only recalled that I had played a couple of tournament games with Mike several years ago, when he was White, but never Black, and we have played some blitz also, but I had no memory of what openings he played as Black.&lt;/p&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;As I did in &lt;a href=&quot;/blog/2012/12/18/round-6-of-pittsburgh-chess-club-tournament-playing-pragmatically/&quot;&gt;my last-played tournament game&lt;/a&gt; as White, I deliberately invited the Nimzo-Indian Defense. I like the challenge of &quot;winning&quot; the two Bishops and trying to make something out of them.&lt;/p&gt;
&lt;p&gt;Other than my bafflingly messing up a move order that could have been punished, we arrived at a thematic position out of the opening in which I had the advantage of the two Bishops as well as more space. I considered this a large advantage, but Black&apos;s position is solid and not the easiest to penetrate.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/pbpn2pp/1p1ppn2/5p2/1PPP4/P2BPP2/2Q1N1PP/R1B2RK1 b - -&quot; caption=&quot;Nimzo&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middlegame&lt;/h3&gt;
&lt;p&gt;I began missing the most promising continuations during the middlegame, but still retained an advantage.&lt;/p&gt;
&lt;p&gt;Things got complicated after Mike found a nice move to break up my Queen side Pawn structure and activate his Knight with &lt;code&gt;a5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2r2rk1/1b1nq2p/1p2pnp1/p4p2/QPP5/3BPPN1/1B4PP/4RRK1 w - -&quot; caption=&quot;Nice tactic by Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Inexplicably, he decided to actually sacrifice the &lt;code&gt;a&lt;/code&gt; Pawn rather than regain it, and I was of course happy to get an extra Pawn. Nevertheless, I started making very strange passive moves, and even panicked and make a weakening move &lt;code&gt;f4&lt;/code&gt; that I knew would considerably reduce winning chances for me, because of giving up control over the &lt;code&gt;e4&lt;/code&gt; square. &lt;code&gt;Re2&lt;/code&gt; would have retained a large advantage instead:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2rr2k1/1b5p/4pnp1/Q1n1qp2/2P5/B3PPN1/6PP/3BRRK1 w - -&quot; caption=&quot;White faltered with f4&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The endgame&lt;/h3&gt;
&lt;p&gt;Luckily, Mike chose, instead of keeping the pressure on my position, to offer a trade of Queens.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I was ecstatic to take off the Queens&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Once the Queens were off, I felt safe in having a small advantage, being a Pawn up in the endgame. Also, here is a secret of &lt;em&gt;practical&lt;/em&gt; chess: the stronger player usually benefits from going into an advantageous endgame. You see this at all levels: a stronger player often wins a supposedly drawn endgame; this happens whether at the level of Grandmasters beating Masters, Masters beating Experts, or Class A players beating Class C players. So usually it is not beneficial for a weaker player to deliberately go into a disadvantageous ending, unless that player is stronger at the endgame than at other phases of the game.&lt;/p&gt;
&lt;p&gt;However, from my perspective as the stronger player, it was clear that the way things were going, a draw was not only objectively the correct result, but also very probable. If I played the &quot;best&quot; moves, I would only force my opponent to play &lt;em&gt;obvious&lt;/em&gt; responses that lead to a draw. So I needed a way to encourage my opponent to play strange moves. This is how &lt;em&gt;human&lt;/em&gt; chess differs completely from &lt;em&gt;computer&lt;/em&gt; chess.&lt;/p&gt;
&lt;h4&gt;A sacrifice&lt;/h4&gt;
&lt;p&gt;I decided to deliberately sacrifice a Pawn in order to gain enough time to activate some of my pieces. I entered an entire line with the purpose of trying to sacrifice my &lt;code&gt;g3&lt;/code&gt; Pawn. Mike followed the line I wanted him to play:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/1b2r2p/4p1p1/4Bp2/2P1nP2/4P1P1/4B1P1/3R1RK1 w - -&quot; caption=&quot;g3 Pawn sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead of protecting the Pawn, I gave it up deliberately.&lt;/p&gt;
&lt;p&gt;There were two dangers in this swindling attempt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;He did not have to take the Pawn, and in fact, it was easy to draw by refusing to take it and playing a more active move instead.&lt;/li&gt;
&lt;li&gt;Even after taking the Pawn, he could still hold the new position, and I could have lost the Pawn for &quot;nothing&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But in reality, since I accepted that a draw was possible and OK, losing the Pawn while not ending up in a worse position was OK. The problem in swindling is if you sacrifice material and end up in a worse position and risk losing. There was no risk in losing in this case.&lt;/p&gt;
&lt;p&gt;Also, I hate to say it given my love for the aspect of chess that is purely logical, but it is sensible, when playing someone you know, and who is weaker than you, that you may be able to predict, from human psychology, what will happen, and therefore playing a speculative move may be the &quot;correct&quot; thing to do in order to preserve winning chances. I was so sure that my opponent would take the sacrificed Pawn that it seemed like I had to go that route.&lt;/p&gt;
&lt;h4&gt;Blunders&lt;/h4&gt;
&lt;p&gt;We reached a position I aimed at all along:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/1b2r2p/4p1p1/4Bp2/2P1nP2/4PB2/1R4P1/3R2K1 b - -&quot; caption=&quot;After sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;At the cost of a Pawn, I managed to fully activate all of my pieces. My Rooks are ready for action, and my dark Bishop is optimally placed, and has forced Black&apos;s Rook into passivity on &lt;code&gt;e7&lt;/code&gt;. Objectively, Black should still be able to draw, but this kind of position is very different from the kind of position that would exist if I had not sacrificed the &lt;code&gt;g3&lt;/code&gt; Pawn.&lt;/p&gt;
&lt;p&gt;Black immediately blundered horribly, and we reached this position, which is winning for White, who can fork the Rook and Knight with &lt;code&gt;Bd6&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/4r2p/4p1p1/2n1Bp2/2P2P2/4P3/1R4P1/1R4K1 w - -&quot; caption=&quot;White winning&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, I was in a state of annoyance at this point, because in his previous move, &lt;code&gt;Nxb7&lt;/code&gt;, the losing move before &lt;code&gt;Nc5&lt;/code&gt;, Mike had &lt;em&gt;offered a draw&lt;/em&gt;!! That distracted me, I got confused, played quickly, and made an elementary error here, &lt;code&gt;Rb8+&lt;/code&gt;, which should have allowed a draw again, but Mike did not see the error, and we reached a different critical position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1R6/4rk1p/4p1p1/2n1Bp2/2P2P2/4P3/6P1/6K1 w - -&quot; caption=&quot;White might win&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Reassessment&lt;/h4&gt;
&lt;p&gt;At this point a bunch of spectators had gathered, and Mike was sighing, because we all saw &lt;code&gt;Bd6&lt;/code&gt;, of course. But I suspected (correctly) that I had been overexcited in the past couple of moves, and wanted to calm down in order to make sure that it was the winning move. I spent a lot of time (since I was way ahead on the clock anyway) just calming down. Then I saw clearly that &lt;code&gt;Bd6&lt;/code&gt; would not win, because Black has &lt;code&gt;Rb7&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I was upset that I had missed a win, but at the same time, I still had a very good chance of winning, because Black will lose the &lt;code&gt;h7&lt;/code&gt; Pawn. The resulting ending is probably hard for Black to defend. So I calmly played &lt;code&gt;Rh8&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then Mike blundered for the final time, trying to save the &lt;code&gt;h7&lt;/code&gt; Pawn rather than saving his Knight from being forked.&lt;/p&gt;
&lt;p&gt;Some spectators afterwards thought Mike should have played &lt;code&gt;Ne4&lt;/code&gt; to save the Knight, but actually, it loses quickly, because of &lt;code&gt;c5&lt;/code&gt;, after which the Pawn is taboo because of the fork, but will advance to Queen if Black does not take it:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;7R/4rk1p/4p1p1/2P1Bp2/4nP2/4P3/6P1/6K1 b - -&quot; caption=&quot;White may Queen&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The final position of our game:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/4rk1R/3Bp1p1/5p1p/2P1nP2/4P3/6P1/6K1 b - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons to take away from the game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When your opponent&apos;s position is passive, do not relieve the pressure by offering piece trades unnecessarily.&lt;/li&gt;
&lt;li&gt;A stronger player has more to gain by entering into an advantageous (even if objectively drawable) ending.&lt;/li&gt;
&lt;li&gt;Sometimes it makes sense to try a swindle, if the risk is low and psychology begs for it.&lt;/li&gt;
&lt;li&gt;Do not be startled and annoyed by an opponent&apos;s offer of a draw breaking the silence after over three hours.&lt;/li&gt;
&lt;li&gt;Do not get overexcited when seeing a win. Double check before moving.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week for round 2, I am Black against Melih Ozbek, whom I&apos;ve played once before, two years ago, when I was the one who was White. He is rated 1947, less than 200 points below me, so I&apos;d better be less rusty than I was last night. I have no clue what openings he plays as White, so I&apos;ll enjoy having to be completely spontaneous next week.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a tough game in round 1, in which my lower-rated opponent, despite having a worse position out of the opponent, put up counterplay that threw me off guard, and then forced me into an endgame that was objectively drawable. But I swindled him and won.&lt;/p&gt;
</content:encoded></item><item><title>How the best player won the last Pittsburgh Chess Club Tuesday night tournament</title><link>https://franklinchen.com/blog/2013/01/15/how-the-best-player-won-the-last-pittsburgh-chess-club-tuesday-night-tournament/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/15/how-the-best-player-won-the-last-pittsburgh-chess-club-tuesday-night-tournament/</guid><pubDate>Tue, 15 Jan 2013 13:15:26 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/5q2/p1p1rbp1/PpPpB3/3Q1P1p/7P/2P3P1/4R2K b - -&quot; caption=&quot;Final position in scores&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;One month ago, I reported on my &lt;a href=&quot;/blog/2012/12/18/round-6-of-pittsburgh-chess-club-tournament-playing-pragmatically/&quot;&gt;sixth and final game in a Pittsburgh Chess Club Tuesday night tournament&lt;/a&gt;. A lot of things came up after the end of that tournament that led me to not finish this report on how the critical final game went between my two opponents, Kurt Wallnau and Ed Dean, who had won their games against me in the &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;fifth&lt;/a&gt; and &lt;a href=&quot;/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/&quot;&gt;fourth&lt;/a&gt; rounds, respectively.&lt;/p&gt;
&lt;p&gt;Here&apos;s my report on who won and on practical psychology and style in chess, and of course, what the definition of &quot;best chess player&quot; should be.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/wallnau-dean-2012-12-18.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Also, it was not until after this tournament that I learned from Ed that he has also been writing a chess blog all this time!! Check out &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.unwantedcapture.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.unwantedcapture.org/&quot;&amp;gt;his blog&amp;lt;/span&amp;gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.unwantedcapture.org/2012/12/22/pcc-smith-memorial-round-6/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.unwantedcapture.org/2012/12/22/pcc-smith-memorial-round-6/&quot;&amp;gt;his own comments about the critical sixth round game&amp;lt;/span&amp;gt;. You might find it interesting to compare our independent analyses of the game, as I did my analysis before learning of his own.&lt;/p&gt;
&lt;h2&gt;Overview of Wallnau-Dean&lt;/h2&gt;
&lt;h3&gt;The stakes (update of 2013-01-17)&lt;/h3&gt;
&lt;p&gt;I should note that since Ed entered the final round with a perfect score of 5 points out of 5, but Kurt entered it with 4.5, Kurt had to win, not draw his game, in order to get first place. So he was under pressure to play for a win at all costs if he was going to have a chance at winning the tournament; Ed needed only a draw to win.&lt;/p&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;Ed stuck to his guns, and continued playing his &lt;code&gt;d6&lt;/code&gt;-based opening systems in this game as Black. His preferred style is to avoid early crazy tactics in the opening and simply tenaciously develop and wait to get to the middlegame to invite complications. Even more than that, he seems to get stronger as the game progresses to the endgame. So his style is to make it to the endgame and win there.&lt;/p&gt;
&lt;p&gt;This time, he played the Czech Defense, a kind of variant of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pirc_Defence&quot;&gt;Pirc Defense&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqkb1r/pp2pppp/2pp1n2/8/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq -&quot; caption=&quot;Czech Defense&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;As often has been the case, Ed made some inaccuracies in the opening that led to a very dangerous position for him:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/pp1nbppp/2pppnb1/7q/P2PP3/2NBQN1P/1PPB1PP1/R4RK1 w - -&quot; caption=&quot;Black is losing&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I actually saw this position in the game and thought, wow, Kurt could win already! But there were some problems. First, in the past several moves, Kurt had spent a &lt;em&gt;huge&lt;/em&gt; amount of time thinking, because he clearly had achieved a very strong position. He was looking for the best moves, and in fact, he had played well up to this point. But now he was thinking really hard again, even though I stood there behind him seeing a virtually winning move that I thought was the whole point of Kurt&apos;s play, &lt;code&gt;Ne2&lt;/code&gt; aiming to trap the Black Queen and therefore winning at least a Pawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/pp1nbppp/2pppnb1/7q/P2PP3/3BQN1P/1PPBNPP1/R4RK1 b - -&quot; caption=&quot;White could have played Ne2&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, Kurt played a different move, missing a saving tactic by Black, and only too late saw the saving tactic.&lt;/p&gt;
&lt;h3&gt;The middle game&lt;/h3&gt;
&lt;p&gt;After realizing that he missed a good opportunity, Kurt still had a huge position but continued to miss other opportunities. Here, after Black played &lt;code&gt;b5&lt;/code&gt;, White had to punish this attempted counterplay by capturing the Pawn &lt;em&gt;en passant&lt;/em&gt;, which is the whole point of White&apos;s &lt;code&gt;a5&lt;/code&gt; in the first place. After that, the thematic &lt;code&gt;d5&lt;/code&gt; would have been strong. But the game did not take that direction.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/p1qnbpp1/2pppnp1/Pp6/3PP3/2N1Q2P/1PPBBPP1/R4RK1 w - b6&quot; caption=&quot;After b5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I was attending to my own game for a while before I looked at their game again. I was surprised to see this position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/p1qnbpp1/2pp4/Pp5p/3QPP2/2N4P/1PPB2P1/R4R1K w - -&quot; caption=&quot;Equal&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It was clear to me that after a difficult opening, Black had somehow now managed to fully equalize. I imagined that the game was going to be difficult for Kurt, who not only had spent a lot of time in the opening, but now had to deal with the fact of completely having lost his enormous opening advantage.&lt;/p&gt;
&lt;p&gt;I completely stopped watching the game here, because my own game needed my full attention.&lt;/p&gt;
&lt;h4&gt;Critical position&lt;/h4&gt;
&lt;p&gt;A critical position in the game occurred when a nice thematic positional sacrifice, &lt;code&gt;e5&lt;/code&gt; followed by &lt;code&gt;f5&lt;/code&gt;, would have been very strong:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4rrk1/2qn1pp1/p1pp1b2/Pp6/1P2PP1p/2N2Q1P/2P2BP1/3R1R1K w - -&quot; caption=&quot;Critical&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;The most critical position&lt;/h4&gt;
&lt;p&gt;The most critical position occurred when Black made a blunder resulting in the Knight at &lt;code&gt;d7&lt;/code&gt; being vulnerable, and White did correctly break with &lt;code&gt;e5&lt;/code&gt; then:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4r1k1/2qn1pp1/p1pprb2/Pp2P3/1P3P1p/2NQ3P/2P2BP1/3RR2K b - -&quot; caption=&quot;White wins&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But then Kurt missed the instant win from &lt;code&gt;exd6&lt;/code&gt; followed by &lt;code&gt;Rxed6&lt;/code&gt; and then &lt;code&gt;f5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4r1k1/2qnbpp1/p1pPr3/Pp6/1P3P1p/2NQ3P/2P2BP1/3RR2K b - -&quot; caption=&quot;White wins material&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, he made a series of errors leading to a position, which although it should be drawn because of things more or less being blocked up, leaves White on the defensive with weak Pawns:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4r1k1/2q1bpp1/p1p1r3/PpnpP3/1P3P1p/3Q3P/2P2BP1/3RR2K w - -&quot; caption=&quot;Simplified&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The final position before both players stopped keeping score&lt;/h3&gt;
&lt;p&gt;Both players continued trying to make something of the position, but slowly Black ended up with the more comfortable and safe prospects.&lt;/p&gt;
&lt;p&gt;Finally, apparently Kurt was down to one minute on his clock and Ed was down to two minutes when they arrived at this position, the last at which either of them kept score. So the final moves in the game are lost.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/5q2/p1p1rbp1/PpPpB3/3Q1P1p/7P/2P3P1/4R2K b - -&quot; caption=&quot;Final position in scores&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The important thing to note is that objectively, White should be able to hold this position, but has a looser structure. Apparently, Kurt blundered during the time scramble and lost.&lt;/p&gt;
&lt;p&gt;Ed won the game and therefore with his perfect score in the tournament, won the entire tournament, way ahead of everyone else. Congratulations!&lt;/p&gt;
&lt;p&gt;The lesson here is that even if &lt;em&gt;tactically&lt;/em&gt; a position is OK, having less time on the clock and having a looser structure is really dangerous.&lt;/p&gt;
&lt;h2&gt;What does it mean to be the best chess player?&lt;/h2&gt;
&lt;p&gt;I claim that Ed was the best chess player of us all in the tournament, and his winning it shows it.&lt;/p&gt;
&lt;p&gt;You may have noticed that in the games I have covered on this blog so far featuring Ed, he was dead lost or almost losing at some point, or even multiple points, in each of them. So how can the &quot;best&quot; player have such terrible positions? What does it mean when you are always on the verge of losing but somehow win?&lt;/p&gt;
&lt;p&gt;It means that the best player is not the one who sees everything (nobody does that anyway), but the one who perseveres, who fights to the end, who manages to get stronger at the end rather than weaker. Chess is not just about who had great opening preparation or who achieved a winning position. In the end, it&apos;s about who actually wins, by hook or by crook.&lt;/p&gt;
&lt;p&gt;It is very easy for someone who loses a game to complain afterwards that &quot;I had a won position; I was better all along; I deserved to win&quot;. A long time ago I might sometimes have engaged in that kind of excuse. But now, I simply accept the reality: whoever keeps on winning clearly has demonstrated having something of value (other than pure luck; here&apos;s where official ratings are useful because they represent a long-term assessment of performance that is supposed to transcend transient fluctuations of luck). In Ed&apos;s case, it is his willingness to defend, willingness to wait to strike, good time management skills, and command of simplified positions. To win consistently requires a whole package of skills, skills that go beyond just finding the &quot;best&quot; moves. Finding &quot;good enough&quot; moves at important points in the game and avoiding &quot;worst&quot; moves is important.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;A week ago, when the upcoming Pittsburgh Chess Club tournament was announced, I decided to commit to playing in it. I have some ideas about how I want to approach this tournament differently from how I did in the ones last fall.&lt;/p&gt;
&lt;p&gt;The tournament starts tonight! I will write more after my first round.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I wrapped up on the last Pittsburgh Chess Club Tuesday night tournament coverage by discussing the final critical game between my two opponents who had won games against me in the fourth and fifth rounds. I congratulate Ed for coming through difficult positions to win each of his games and winning the tournament, demonstrating his overall dominance as a chess warrior. I hope to face him again in some round of the annual Pittsburgh Chess Club Championship that starts tonight!&lt;/p&gt;
</content:encoded></item><item><title>Three questions to ask yourself when you don&apos;t feel like doing your scheduled workout</title><link>https://franklinchen.com/blog/2013/01/14/three-questions-to-ask-yourself-when-you-dont-feel-like-doing-your-scheduled-workout/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/14/three-questions-to-ask-yourself-when-you-dont-feel-like-doing-your-scheduled-workout/</guid><pubDate>Tue, 15 Jan 2013 02:28:04 GMT</pubDate><content:encoded>&lt;p&gt;If, like me, you believe that you should get regular exercise, you probably have some kind of intention, or better yet, a concrete &lt;em&gt;plan&lt;/em&gt; and &lt;em&gt;schedule&lt;/em&gt;, for achieving it. However, if you are like me, you are human and fallible, and also deal with unpredictable periods of stress or overwork or fatigue or laziness.&lt;/p&gt;
&lt;p&gt;This post is about three questions I ask myself when I am supposed to be doing a workout, but don&apos;t feel like it. I hope this checklist will be helpful to you as it is to me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-two-reps/franklin-after-two-reps.jpg&quot; alt=&quot;Franklin after two reps up the Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My Cathedral of Learning stair climb plan&lt;/h2&gt;
&lt;p&gt;One week ago, a Monday, I reported on the last time I did the &lt;a href=&quot;/blog/2013/01/07/primantis-and-the-cathedral-of-learning/&quot;&gt;36-floor stair climb up the Cathedral of Learning at Pitt&lt;/a&gt;. My expectation was to continue doing the stair climb twice a week, ramping up the difficulty each time in a suitable way.&lt;/p&gt;
&lt;p&gt;It turned out that last Thursday, I was &quot;supposed to&quot; do the stair climb.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I didn&apos;t.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then I was going to do it Friday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I didn&apos;t.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then I was going to do it Saturday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I didn&apos;t.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then I was going to do it Sunday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I didn&apos;t.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I did it today, Monday, finally. But let&apos;s examine why I didn&apos;t do it earlier, and why I did it today.&lt;/p&gt;
&lt;h2&gt;The three questions&lt;/h2&gt;
&lt;p&gt;The questions I ask myself honestly, when skipping a planned workout, are the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Should I do it no matter what, because I promised to?&lt;/li&gt;
&lt;li&gt;Am I really too busy or tired, such that it would harm me if I pushed myself?&lt;/li&gt;
&lt;li&gt;If I am busy or tired, should I make room for the workout by dropping some other commitment, because I will benefit from the workout?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Different answers every day?&lt;/h2&gt;
&lt;p&gt;On Thursday, I really was exhausted. I&apos;d done a lot of programming all day, and had made a commitment to attend the very first &lt;a href=&quot;https://www.meetup.com/pittsburgh-scala-meetup&quot;&gt;Pittsburgh Scala meetup&lt;/a&gt; gathering. I&apos;d also done a really intense workout on Wednesday at the CMU gym, including rowing, weights, and treadmill running. So it was easy for me to justify taking a rest day: &lt;em&gt;recovery&lt;/em&gt; is a very important component of an exercise program.&lt;/p&gt;
&lt;p&gt;On Friday, I should have been OK, except that I ran out of time and energy because I was very busy with various things, and had an early evening commitment to attend to. It is important to note that I had every intention of getting in the stair climb in the morning on Friday, and failed only because I lost a couple of hours in the morning as a result of completely unexpected things that came my way. As a result, I really was too tired. Also, I had not in fact fully recovered from my monster workout on Wednesday.&lt;/p&gt;
&lt;p&gt;On Saturday, I recovered and would have gone for the Cathedral climb, but as you can guess, the loss of momentum started catching up with me. It was very warm outside, near 70F, and so I decided I should take advantage of the weather and go for a run outside instead of doing an indoor stair climb. This was a great decision to make, so I don&apos;t regret it at all. Call it &quot;productive procrastination&quot;: I didn&apos;t make progress on the Cathedral stair climb plan, but did get in a beneficial &lt;em&gt;substitute&lt;/em&gt;; if you&apos;re going to procrastinate on something, you might as well do something genuinely useful.&lt;/p&gt;
&lt;p&gt;On Sunday, I had an excuse again. My legs were actually quite sore from the road run I suddenly went and did on Saturday. I judged that I &lt;em&gt;could&lt;/em&gt; do the stair climb, but that it would probably be more beneficial to me if I delayed it. Here I made a judgment call, remembering the purpose of my exercise program: it is to make me stronger, not tear me down.&lt;/p&gt;
&lt;h2&gt;Today&lt;/h2&gt;
&lt;p&gt;Today, Monday, I ran out of excuses. Was I physically able to do the climb? Yes. Was I way too tired or busy? No. OK, I am always busy, but some kinds of busy are different from other kinds. What was left? Sheer laziness. I recognized that the only excuse I had left was that &lt;em&gt;I don&apos;t actually particularly like climbing the 36 floors of the Cathedral twice&lt;/em&gt;. Some people seem to love doing this sort of thing, but I don&apos;t really like it. I&apos;ve learned to be mindful and present while doing it, just as with &lt;a href=&quot;/blog/2012/01/05/how-to-enjoy-treadmill-running-treat-it-as-a-meditative-practice/&quot;&gt;treadmill running&lt;/a&gt;, but it&apos;s not my favorite thing to do.&lt;/p&gt;
&lt;p&gt;So after work, I dutifully trudged over to the Cathedral and made up my mind to enjoy the task. I planned to do two reps as I had done a week ago, with a goal of shortening the time for each rep as well as shortening the recovery between the two reps. As with last week, I went in my work clothing and backpack, stuffing my jacket and my shoes and socks (I only do the stair climb &lt;a href=&quot;/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/&quot;&gt;barefoot now&lt;/a&gt;), and proceeding.&lt;/p&gt;
&lt;h3&gt;First rep&lt;/h3&gt;
&lt;p&gt;During my first rep, my legs quickly felt like they were burning, and I felt discouraged and frustrated, but I kept going, attempting to find a rhythm. There were a couple of other people, all wearing actual athletic shorts and shoes, in the stairways, but we were all pretty spread out, mostly, so I didn&apos;t have to deal with passing anyone.&lt;/p&gt;
&lt;p&gt;I finished in 8:47 (last week my first rep was in 9:07).&lt;/p&gt;
&lt;h3&gt;Recovery&lt;/h3&gt;
&lt;p&gt;I was really beat after the first rep. My quads and calves were burning and I was gasping for air. I rested for a while looking out the window.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-two-reps/franklin-after-two-reps.jpg&quot; alt=&quot;Floor 36 panoramic view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I waited till my breathing was back under control and my leg muscles were no longer completely burning.&lt;/p&gt;
&lt;p&gt;Last week, I took a break of 10:42, but this week, my recovery break was 8:39.&lt;/p&gt;
&lt;h3&gt;Second&lt;/h3&gt;
&lt;p&gt;During the second rep, somehow I felt more peaceful, less anxious, and although I felt the burn, I accepted it. I even perceived that I had acquired a rhythm and was almost dancing up the steps. I experienced a kind of joy, a oneness with the stairway, with its unique changes in the height and number of steps, the turns, and the number of turns.&lt;/p&gt;
&lt;p&gt;I finished in 8:21, a surprise (last week I did the second rep in 8:54 after a recover period of two minutes longer).&lt;/p&gt;
&lt;p&gt;Strangely, after I finished the second rep, I found that I felt pretty good. After several seconds, I was able to walk around normally. I don&apos;t know exactly how to explain that after the second rep, I felt in much better condition than after the first rep. Maybe my body warmed up. Or maybe I simply became more efficient during the second time up, using less energy. Or maybe my mind was playing tricks on me because of endorphins?&lt;/p&gt;
&lt;p&gt;In any case, I finished the workout feeling energized and really glad that I didn&apos;t give into laziness, and that I actually in the end had a fascinating, stimulating experience.&lt;/p&gt;
&lt;p&gt;Sorry, this does not mean I am going to do three reps the next time! The thought of that still frightens me. I plan to stick with just two reps for a bit longer.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We all have moments when we don&apos;t feel like doing what we planned to do and had good reasons for the original plan. When that happens, it is useful to ask three questions, rather than thoughtlessly make assumptions and go to an extreme of either being too lazy or too driven. In the end, the point is not to be able to boast of having followed some schedule, but to actually make sustainable progress. So far, I have been happy with how my Cathedral of Learning stair climbing has gone, despite the irregularities in following the plan.&lt;/p&gt;
&lt;p&gt;What are you doing this year that frustrates you even though you want to see it through? What are your personal strategies for dealing with wanting to slack off?&lt;/p&gt;
</content:encoded></item><item><title>The special bond between children and their fathers, through chess</title><link>https://franklinchen.com/blog/2013/01/13/the-special-bond-between-children-and-their-fathers-through-chess/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/13/the-special-bond-between-children-and-their-fathers-through-chess/</guid><pubDate>Sun, 13 Jan 2013 18:25:00 GMT</pubDate><content:encoded>&lt;p&gt;I was reading the January 2013 issue of &quot;Chess Life&quot; magazine (which you can read &lt;a href=&quot;https://www.uschess.org/content/view/12035/365/&quot;&gt;online as PDF if you are a USCF member&lt;/a&gt;) and couldn&apos;t help notice that by sheer coincidence, two different articles happened to mention how the article&apos;s subject was shaped through their experiences playing chess in their childhood with their fathers. I was very moved because I always get emotional when &lt;a href=&quot;/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him/&quot;&gt;reflecting on how chess gave me a special bond to my father&lt;/a&gt; as well. Similar stories are often true for children and their parents, through any shared activity at all, whether music, hunting, cooking, baseball, sewing, auto repair, stargazing, etc.&lt;/p&gt;
&lt;p&gt;Here are two excerpts from the articles:&lt;/p&gt;
&lt;h2&gt;Chess Life article excerpts&lt;/h2&gt;
&lt;h3&gt;Corbin Seavers of The Potter&apos;s House Scholastic Chess Club&lt;/h3&gt;
&lt;p&gt;Seavers, who was an anti-apartheid activist, formed The Potter&apos;s House Scholastic Chess Club to reach out to children, especially low income and minority youth.&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I only cared about chess because my father cared about chess. I only learned the game because my father taught it to me. That is why today I tell fathers chess is one way you can build a common interest and hobby with your child. It brought my father and me closer together, and I can say that it has definitely helped me in building a closer relationship with my daughter.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h3&gt;Alejandro Ramirez, young Grandmaster&lt;/h3&gt;
&lt;p&gt;GM Ramirez achieved the GM title at age 15. In the article about him, he said quite a bit about the role of his father in his life and chess career. An excerpt:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
My dad was instrumental in my development as a person and as a chess player. Despite the fact that he can&apos;t really see tactics or see more than a few moves ahead, he has a deep understanding of psychology and can sense positions quite well. If I explain a game to him, he can infer things I can&apos;t see, such as the mood of the player, the causes for blunders and many others.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;My father and chess today&lt;/h2&gt;
&lt;p&gt;Heck, when I called home to my parents today, I asked my father whether he might start playing in chess tournaments again. It&apos;s been a long time (about thirty years) since we used to play in tournaments together. If he were living near me, I&apos;d be dragging him to the local tournaments that I have been playing in again. I think it&apos;s great that he has been playing regularly for fun again after retiring, but there&apos;s nothing like playing in an actual tournament, ha!&lt;/p&gt;
&lt;p&gt;Next time I see him, I&apos;ll be sure to show some of my recent games to him, so we can laugh and talk s-t about the dumb moves I made or my opponent made. He likes seeing games. Every time we see each other, I give him all the issues of &quot;Chess Life&quot; that I&apos;ve accumulated since the last visit.&lt;/p&gt;
&lt;h2&gt;My sister and chess&lt;/h2&gt;
&lt;p&gt;My younger sister also played chess, but retired at the age of six, after her very first tournament, the Michigan Youth Championship, in which she played well and won a trophy. This is a sad story that was very instrumental in the development of her life, but since it is her story, I need to ask her whether I can tell it someday.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;When you think about your childhood, what do you remember as being special and formative between you and your father or mother? Have you ever thanked them for what they gave you? Very often they might not even realize how important something was to you. Don&apos;t wait until it is too late to show them your gratitude.&lt;/p&gt;
&lt;p&gt;And if you are a parent, what do you think your children really appreciate about their relationship with you? You might be surprised. It might even be something that you think is trivial that they never talk about but is actually the most important thing to them.&lt;/p&gt;
</content:encoded></item><item><title>Cooking the huge batch of food: sweet potatoes, peppers, butternut squash</title><link>https://franklinchen.com/blog/2013/01/12/cooking-the-huge-batch-of-food-sweet-potatoes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/12/cooking-the-huge-batch-of-food-sweet-potatoes/</guid><pubDate>Sat, 12 Jan 2013 19:42:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Saturday, so I did a huge batch of cooking.&lt;/p&gt;
&lt;p&gt;There were a lot of sweet potatoes that needed to be used. I sauteed some of them and roasted the others. Same with the assorted peppers. The butternut squash I kept simple, just slicing in half, putting them face down in a pan with some water, and baking.&lt;/p&gt;
&lt;p&gt;Sweet potatoes in progress already in skillet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/sauteed-sweet-potatoes.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Preparing onions (and garlic to be added later):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/onions.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/garlic.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A separate batch of sweet potatoes, in the oven:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/oven-sweet-potatoes.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Peppers in skillet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/sauteed-peppers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sweet potatoes and peppers cut into &quot;fries&quot; from the oven, a favorite of mine:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/sweet-potato-pepper-fries.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Butternut squash from the oven, to be scooped out and seasoned:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cooking-2013-01-12/butternut-squash.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>CreativeMornings/Pittsburgh with David &quot;Mr. McFeely&quot; Newell</title><link>https://franklinchen.com/blog/2013/01/11/creativemornings-pittsburgh-with-david-mr-mcfeely-newell/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/11/creativemornings-pittsburgh-with-david-mr-mcfeely-newell/</guid><pubDate>Fri, 11 Jan 2013 19:46:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/creativemorningspittsburgh/8393977626&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8351/8393977626_bb1e4ae89e_b.jpg&quot; alt=&quot;Creative Mornings - Pittsburgh - Jan 11th 2013-3&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abby and I attended &lt;a href=&quot;https://creativemornings.com/talks/david-newell/1&quot;&gt;another CreativeMornings/Pittsburgh lecture&lt;/a&gt;; our first was &lt;a href=&quot;/blog/2012/12/14/creativemornings-pittsburgh-the-first-session-nina-barbuto/&quot;&gt;last month&apos;s premiere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This one featured &lt;a href=&quot;https://en.wikipedia.org/wiki/David_Newell&quot;&gt;David Newell&lt;/a&gt;, who played Mr. McFeely on &lt;a href=&quot;https://en.wikipedia.org/wiki/Mister_Rogers%27_Neighborhood&quot;&gt;&quot;Mister Rogers&apos; Neighborhood&quot;&lt;/a&gt;. I watched that show as a toddler in the 1970s. I don&apos;t actually remember that much from it, because I was so young and my English was quite poor, but I still do remember how soothing Fred Rogers was on the show, singing and moving very deliberately. I believe the show was a positive part of my life.&lt;/p&gt;
&lt;p&gt;The main lesson David Newell shared was that &lt;em&gt;attitudes are taught&lt;/em&gt;. He emphasized that there was naysaying about the TV show early on, but once it was created, eventually the public caught on.&lt;/p&gt;
&lt;p&gt;You can watch his talk here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/TXGTaDW3zwY&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>2013 is my year of Scala</title><link>https://franklinchen.com/blog/2013/01/11/2013-is-my-year-of-scala/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/11/2013-is-my-year-of-scala/</guid><pubDate>Fri, 11 Jan 2013 15:17:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night was the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/events/93174312/&quot;&gt;first meeting&lt;/a&gt; of the new &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Scala-Meetup/&quot;&gt;Pittsburgh Scala meetup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And this morning I suddenly signed up to attend the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;Northeast Scala Symposium&amp;lt;/span&amp;gt; (NE Scala) being held soon in February in Philadelphia!&lt;/p&gt;
&lt;p&gt;2013 is my &quot;year of Scala&quot;. What does this mean?&lt;/p&gt;
&lt;h2&gt;&quot;Leaving&quot; Java&lt;/h2&gt;
&lt;p&gt;I just &lt;a href=&quot;/blog/2012/11/15/review-of-courseras-fall-2012-functional-programming-principles-in-scala/&quot;&gt;recently went through Martin Odersky&apos;s &quot;Functional Programming Principles in Scala&quot; course&lt;/a&gt;. As a result of that, I decided on New Year that 2013 is going to be my &quot;year of Scala&quot;, which in practice means that I will use it as my main general-purpose programming language for software development wherever feasible. In particular, at work I have been in the process of converting a large Java project from using &lt;a href=&quot;https://maven.apache.org/&quot;&gt;Maven&lt;/a&gt; for a complex build to using the Scala-based &lt;a href=&quot;https://www.scala-sbt.org/&quot;&gt;SBT&lt;/a&gt; instead (last year I was &lt;a href=&quot;/blog/2012/09/24/a-short-example-of-why-i-prefer-static-typing-learning-gradle/&quot;&gt;evaluating both SBT and the Groovy-based Gradle&lt;/a&gt;, but SBT won, after I figured out how to do what I need with it).&lt;/p&gt;
&lt;p&gt;The beauty of Scala is that you can seamlessly continue to use existing Java code and libraries; this interoperability is a huge win, compared to other statically typed functional programming languages such as ML and Haskell.&lt;/p&gt;
&lt;h2&gt;The first Pittsburgh Scala meetup session&lt;/h2&gt;
&lt;p&gt;It was an informal social meeting upstairs in the Harvard and Highland bar (resulting from not yet obtaining an official quiet place to really meet regularly).&lt;/p&gt;
&lt;p&gt;It turned out that only six of us showed up for this informal meeting. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jamieforrest.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jamieforrest.com/&quot;&amp;gt;Jamie Forrest&amp;lt;/span&amp;gt;, who created this meetup group, was there, as was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt;, who works for &lt;a href=&quot;https://www.typesafe.com/&quot;&gt;Typesafe&lt;/a&gt; and has regularly been involved in Scala &lt;a href=&quot;/blog/2011/10/26/open-spaces-success-at-the-pittsburgh-java-users-group/&quot;&gt;discussions&lt;/a&gt; and &lt;a href=&quot;/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/&quot;&gt;presentations&lt;/a&gt; in the Pittsburgh area. I also met three people I hadn&apos;t known before, Andrii, Ashton, and Barrett.&lt;/p&gt;
&lt;p&gt;It was kind of loud in the bar, so it was often difficult for me to hear, but I think we had a good time meeting each other and exchanging some thoughts about how we use Scala (or plan to use it) and why.&lt;/p&gt;
&lt;p&gt;So now that we&apos;ve gotten the meetup group off the ground, I look forward to a Scala community growing here in Pittsburgh! We decided that we need to find a proper meeting place, and we&apos;ll start having people give talks, and come up with ideas for a group project to work on.&lt;/p&gt;
&lt;h2&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nescala.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nescala.org/&quot;&amp;gt;NE Scala&amp;lt;/span&amp;gt;&lt;/h2&gt;
&lt;p&gt;Also, at the meetup, Josh reminded us that there were still spaces left for &lt;a href=&quot;https://www.meetup.com/nescala/events/97192402/&quot;&gt;registering for NE Scala&lt;/a&gt;. I hadn&apos;t actually considered going, because I&apos;m already very busy for January and February, but this morning upon waking up, I suddenly decided that maybe I should not pass up this opportunity to go and get the big picture of what the Scala community is up to!&lt;/p&gt;
&lt;p&gt;In a flurry of email exchanges, I ended up registering for the conference with the idea of carpooling with Josh and sharing lodging, then Jamie got in on it too, so the three of us will be heading off to Philadelphia together in March. This will be my first out-of-town travel to a conference since &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.informatik.uni-trier.de/~ley/db/conf/pldi/pldi98.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.informatik.uni-trier.de/~ley/db/conf/pldi/pldi98.html&quot;&amp;gt;PLDI 1998&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m definitely throwing myself into the Scala world now, with the Pittsburgh Scala meetup going and with my registration for the NE Scala conference.&lt;/p&gt;
&lt;h2&gt;(Update)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/02/10/ne-scala-2013-my-first-scala-conference/&quot;&gt;NE Scala 2013 was quite intense&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The hug system of habit breaking and forming</title><link>https://franklinchen.com/blog/2013/01/08/the-hug-system-of-habit-breaking-and-forming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/08/the-hug-system-of-habit-breaking-and-forming/</guid><pubDate>Tue, 08 Jan 2013 12:25:00 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I came up with a very useful way of dealing with a type of conflict in marriage that seems pretty common: that of one person being annoyed by the other&apos;s bad habit, and repeatedly, because the other person after being criticized promises to change but doesn&apos;t.&lt;/p&gt;
&lt;p&gt;The reason for the failure to change is not necessarily malice, of course. Just taking myself as an example, I reflected on which changes I have made during marriage and which I have not, and tried to understand why I might &quot;forget&quot; one thing and not another.&lt;/p&gt;
&lt;p&gt;It turned out that the answer was usually surprisingly simple, and must reflect on human nature in general. When there is something annoying I do and Abby just goes relentlessly negative on me, I am &lt;em&gt;less&lt;/em&gt; likely to actually correct my behavior, even if I grudgingly acknowledge that I should change it. But if she told me in a loving way, I was more likely to catch myself in the future in the relevant situation, and either do what she wanted or not do what she did not want me to do!&lt;/p&gt;
&lt;p&gt;All I have said here also applies to the exact opposite situation when Abby annoys me and I harp on her. The more vocal I am, the more insistent, the less effective.&lt;/p&gt;
&lt;p&gt;In retrospect, this was just as true when I was a child also. I suppose we all still have a little child inside of us.&lt;/p&gt;
&lt;h2&gt;One part of the solution&lt;/h2&gt;
&lt;p&gt;There is no silver bullet for &quot;making people change&quot;, but the thing is to have them want to change and make it easy, rather than demand it. We are human, not robots.&lt;/p&gt;
&lt;p&gt;It turns out that when I get a hug, at the same time as when being told gently of something that I should do, I am more likely to remember the task, and associate it with something positive, and actually do it. It seems that when I am yelled at, the effect is to actually associate the task with a negative memory and block it out of my consciousness.&lt;/p&gt;
&lt;p&gt;Again, you could say, this is crazy childish behavior, that &quot;adults&quot; should just take responsibility and do the right thing. That&apos;s why Abby used to say and I used to say. It leads to an escalating arms race of &quot;I&apos;m better than you&quot;.&lt;/p&gt;
&lt;p&gt;The &quot;hug system&quot; seems to work a lot better for us, we found out to our surprise. If it works with human nature and the other way doesn&apos;t, then theories about how we &quot;should&quot; know how to behave kind of don&apos;t matter. Results matter.&lt;/p&gt;
&lt;p&gt;I wish I had known about this earlier. Unfortunately, the authoritarian way in which I was raised led me to internalize the psychologically dubious assumption that &lt;em&gt;tone doesn&apos;t matter; reasoning and truth and right matter, and it is the purely the job of the offender to do all the work&lt;/em&gt;. I now totally disagree with that. &lt;em&gt;Tone matters, whether or not you believe it should.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The toilet seats are always down now at home, as well as a large number of other little things I now remember to do that I mysteriously did not before. Maybe in theory I should have been able to get this all working no matter whether I was getting yelled at or not. Maybe I&apos;m a weak, irrational husband, a sad excuse of a human being. Or maybe imperfection only needs a little bit of help to do a lot better.&lt;/p&gt;
</content:encoded></item><item><title>Primanti&apos;s and the Cathedral of Learning</title><link>https://franklinchen.com/blog/2013/01/07/primantis-and-the-cathedral-of-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/07/primantis-and-the-cathedral-of-learning/</guid><pubDate>Mon, 07 Jan 2013 21:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I was scheduled to do the &lt;a href=&quot;/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/&quot;&gt;Cathedral of Learning stair climb again, two repetitions like last time&lt;/a&gt;. Since I had stayed later at work than expected, I was hungry already, so I decided I would go do the two reps and then eat a lot of food.&lt;/p&gt;
&lt;p&gt;John was still around at work too and he was interested in doing two reps for the first time (years ago we&apos;d periodically done one), so we went. We had a plan.&lt;/p&gt;
&lt;h2&gt;Two reps&lt;/h2&gt;
&lt;p&gt;I did both reps barefoot this time, and with a fully stuffed backpack.&lt;/p&gt;
&lt;p&gt;I decided to lead the way with a slightly slow pace, in order to guarantee we would go faster during the second rep. We saw two people in shorts doing reps also. Both John and I were in street clothing.&lt;/p&gt;
&lt;p&gt;The first rep we did in 9:07 (on Friday, alone, I had done 9:02).&lt;/p&gt;
&lt;p&gt;This time I timed the break, because this is actually important information for the future when comparing improvement. We took a random break of 10:42 before doing the second rep, which we did in 8:54 (at some point before floor 31, we had an opportunity to overtake the other two people, who were on their third rep, and so I decided to just kick it up a notch for the rest of the way up).&lt;/p&gt;
&lt;h2&gt;My progression plan&lt;/h2&gt;
&lt;p&gt;John liked going two steps up at a time, but I am still on one by one, because it&apos;s easier on my quads. My intuition tells me that a good cadence is important for efficiency, and until my quads are strong enough, I cannot keep a good cadence going up two steps at a time. Right now I&apos;m focusing on simply getting some endurance and efficiency, and increasing the number of reps. After maybe two or three weeks of this, I will work on powering up two steps at a time over maybe no more than ten floors at a time.&lt;/p&gt;
&lt;p&gt;I was amused to see the man wearing one of the old Rachel Carson Trail Challenge T-shirts that I also have, from 2008 (when I was a volunteer, not a participant as I was in 2005-2007). Also, the woman said she had done the Fight for Air Climb last year and placed third in the women&apos;s division, I think.&lt;/p&gt;
&lt;h2&gt;Primanti&apos;s&lt;/h2&gt;
&lt;p&gt;Then we went to &lt;a href=&quot;https://primantibros.com/&quot;&gt;Primanti&apos;s&lt;/a&gt; in Oakland, as planned. I stuffed myself with a huge roast beef sandwich, my usual order when I go there (just a couple of times a year).&lt;/p&gt;
&lt;p&gt;I heard recently that Primanti&apos;s may be &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wpxi.com/news/news/local/primanti-bros-receives-investment-hopes-expanding-/nTmGP/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wpxi.com/news/news/local/primanti-bros-receives-investment-hopes-expanding-/nTmGP/&quot;&amp;gt;expanding nationwide&amp;lt;/span&amp;gt;. Cool! Why should the Pittsburgh area be the only one privileged to enjoy the huge &quot;fully loaded&quot; sandwiches with fries and cole slaw inside?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/primantis-roast-beef-oakland.jpg&quot; alt=&quot;Primanti&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Cooking the whole cauliflower including the leaves again</title><link>https://franklinchen.com/blog/2013/01/06/cooking-the-whole-cauliflower-including-the-leaves-again/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/06/cooking-the-whole-cauliflower-including-the-leaves-again/</guid><pubDate>Sun, 06 Jan 2013 19:40:00 GMT</pubDate><content:encoded>&lt;p&gt;We often get cauliflower with leaves intact. So I end up doing something with both the florets and the leaves, cooking them separately.&lt;/p&gt;
&lt;h2&gt;Sauteed cauliflower florets&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cauliflower-2013-01-06.jpg&quot; alt=&quot;Sauteed cauliflower florets&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sauteed with olive oil, garlic, and random other bits.&lt;/p&gt;
&lt;h2&gt;Cauliflower leaf soup&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cauliflower-leaf-soup-2013-01-06.jpg&quot; alt=&quot;Cauliflower leaf soup&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Winter means soup.  Toss in a base of chopped up onion, carrot, celery, and spices, and make cauliflower leaf soup!&lt;/p&gt;
</content:encoded></item><item><title>I had no choice but to barefoot climb the Cathedral of Learning</title><link>https://franklinchen.com/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/04/i-had-no-choice-but-to-barefoot-climb-the-cathedral-of-learning/</guid><pubDate>Fri, 04 Jan 2013 18:28:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-snow.jpg&quot; alt=&quot;Cathedral of Learning in snow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One week ago I reported on starting an exercise regimen including &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;stair climbing 36 floors of the Cathedral of Learning&lt;/a&gt;. Since then, I&apos;ve gone back three times to climb the Cathedral of Learning again. Part of the reason is that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://billlaboon.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://billlaboon.com/&quot;&amp;gt;Bill&amp;lt;/span&amp;gt; was inspired by the report and climbed it himself for the first time, and we decided we should do the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot;&amp;gt;Fight for Air Climb&amp;lt;/span&amp;gt; this year. Therefore, he&apos;s been going back for more climbing and so have I.&lt;/p&gt;
&lt;p&gt;I don&apos;t expect to be regularly doing as much climbing as I happen to have been doing this past week. The other reason I did it was because it got colder and icier and I&apos;m ramping up more slowly with my &lt;a href=&quot;/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/&quot;&gt;running&lt;/a&gt;, having run only twice in the past week while getting used to the impact again.&lt;/p&gt;
&lt;p&gt;Yesterday, while chatting with Bill at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby&amp;lt;/span&amp;gt; users group, he mentioned he was planning today to do &lt;em&gt;two repetitions&lt;/em&gt; of the climb for the first time. So I decided to also do two reps for the first time as well, and committed to it.&lt;/p&gt;
&lt;p&gt;Things took an interesting turn during my Cathedral of Learning workout today.&lt;/p&gt;
&lt;h2&gt;The plan&lt;/h2&gt;
&lt;p&gt;The original plan was simple. I&apos;d head over in my work clothing with my backpack and stash my coat and scarf/hat/gloves into it and do the climb once, and then find a water fountain, hydrate, rest, and then take an elevator down to floor G, then do one more repetition.&lt;/p&gt;
&lt;p&gt;I wanted to pace myself so that I would take the same amount of time for both reps. Based on my prior experience with endurance or strength training, I had no desire to use up my energy pointlessly in the first rep and then struggle in the second.&lt;/p&gt;
&lt;h2&gt;The first rep&lt;/h2&gt;
&lt;p&gt;I timed myself in order to be able to check my consistency over two reps. Of course, since I&apos;m just starting to build a base, and I&apos;m not going all out, the actual time doesn&apos;t matter.&lt;/p&gt;
&lt;p&gt;I encountered problems during the first rep. To tell the truth, these problems had appeared in milder form earlier through the week. The fundamental cause of the problems is that my street shoes I wear to walk in to work in the winter are not really suitable for athletic activity. My feet get sweaty, the non-zero height of the shoe just creates more distance I have to lift my legs, and there is more impact on my needs. Today the front of my right foot also got jammed such that by the time I ended my first rep, I was in actual pain! Plus, I had started blistering.&lt;/p&gt;
&lt;p&gt;As soon as I got to floor 36, I took off my shoes and socks and vowed &lt;em&gt;never&lt;/em&gt; to wear this particular combination of footwear again for the stair climb.&lt;/p&gt;
&lt;p&gt;My time was 9:02.&lt;/p&gt;
&lt;h2&gt;The rest break&lt;/h2&gt;
&lt;p&gt;Then I searched for nearby water. My quads were a bit weak as I walked back down from floor 36, one floor at a time, exploring all the open hallways for a water fountain. Curiously, I found one only when I reached floor 31. This was a bit of a surprise for me.&lt;/p&gt;
&lt;p&gt;I hit the elevator button to go down, but after minutes, the elevator still had not arrived. For all I knew, the buttons were broken. I walked down to floor 30. There, the elevator button seemed to work.&lt;/p&gt;
&lt;h2&gt;The second rep&lt;/h2&gt;
&lt;p&gt;Before the second rep, I stuffed my shoes and socks into my backpack. My right foot was still messed up from the first rep, but I hoped that it would fix itself now that I was shoeless.&lt;/p&gt;
&lt;p&gt;I went up at what seemed a similar pace from the first rep. The experience was much easier for me than the first time. After a while, my right foot was completely OK. Also, I didn&apos;t make noises for each step, but was able to land very lightly being barefoot. And my quads never felt sore, probably both because of the decreased leg lifting distance and because of the difference in impact angle. I felt more graceful and efficient.&lt;/p&gt;
&lt;p&gt;My time was 8:58, practically the same as for the first rep, so I was happy at my consistency.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After my poor experience during my first rep climbing the Cathedral of Learning steps today, I decided to go barefoot, and solved all my problems. So I will continue to do this barefoot. I don&apos;t even want to do this with minimalist shoes such as my &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers&lt;/a&gt; or &lt;a href=&quot;/categories/xero-shoes/&quot;&gt;Xero Shoes&lt;/a&gt;; given the perfectly friendly nature of the stairways to bare feet, I will only ever again do the climb barefoot.&lt;/p&gt;
&lt;p&gt;The remaining question is whether it is permitted to do the Fight for Air Climb barefoot. I&apos;ll have to find out.&lt;/p&gt;
</content:encoded></item><item><title>A winter red cabbage slaw for the New Year</title><link>https://franklinchen.com/blog/2013/01/01/a-winter-red-cabbage-slaw-for-the-new-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2013/01/01/a-winter-red-cabbage-slaw-for-the-new-year/</guid><pubDate>Tue, 01 Jan 2013 21:34:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy New Year!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/red-cabbage-slaw.jpg&quot; alt=&quot;Red cabbage slaw&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For a party, I used what was at hand at home to make something to share. I decided on a red cabbage slaw, after doing a Google search for ingredients and seeing some recipes. I didn&apos;t follow any one recipe, but merged a couple of ideas. Since people seemed to eat up the cabbage slaw, and several complimented me on it and asked for the recipe, here it is:&lt;/p&gt;
&lt;h2&gt;Recipe for red cabbage slaw&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;1/2 red cabbage, sliced thin&lt;/li&gt;
&lt;li&gt;2 &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.orangepippin.com/apples/goldrush&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.orangepippin.com/apples/goldrush&quot;&amp;gt;Gold Rush&amp;lt;/span&amp;gt; apples, peeled and sliced thin&lt;/li&gt;
&lt;li&gt;4 carrots, grated&lt;/li&gt;
&lt;li&gt;1 &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.organicgardeninfo.com/growing-cylindra-beets.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.organicgardeninfo.com/growing-cylindra-beets.html&quot;&amp;gt;long beet&amp;lt;/span&amp;gt;, grated&lt;/li&gt;
&lt;li&gt;1/2 red onion, sliced thin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dressing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6 tablespoons extra virgin olive oil&lt;/li&gt;
&lt;li&gt;6 tablespoons raw apple cider vinegar&lt;/li&gt;
&lt;li&gt;4 tablespoons honey mustard&lt;/li&gt;
&lt;li&gt;2 cloves of garlic, minced&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Toppings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pecans&lt;/li&gt;
&lt;li&gt;walnuts&lt;/li&gt;
&lt;li&gt;raisins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Put all the prepared ingredients into a large bowl.&lt;/p&gt;
&lt;p&gt;Mix the dressing into the bowl.&lt;/p&gt;
&lt;p&gt;Cover and leave in the refrigerator for 24 hours. Stir again once or twice during that period to make sure everything is even.&lt;/p&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;p&gt;Some recipes for cabbage slaw that I saw called for added sugar, but given the specific ingredients I chose, there was no need at all for extra sugar.&lt;/p&gt;
&lt;p&gt;I chose some nuts that seemed to make sense. Other nuts could be used also, or left out if someone is allergic to nuts.&lt;/p&gt;
&lt;p&gt;I could see dried cranberries being used instead of raisins.&lt;/p&gt;
&lt;p&gt;Other substitutions are easy to imagine also; in fact, my recipe involved substitutions for ingredients in recipes I found online.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;The red cabbage, Gold Rush apples, carrots, long beet happen to have come from our &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.kretschmannfarm.com/Winter%20Boxes/Winter%20boxes.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.kretschmannfarm.com/Winter%20Boxes/Winter%20boxes.htm&quot;&amp;gt;winter box subscription from Kretschmann Farm&amp;lt;/span&amp;gt;. Abby and I are really happy that they offer a winter box subscription as well as the regular season subscription, so that we can continue to get quality organic, local produce all year long.&lt;/p&gt;
&lt;p&gt;Having a subscription not only allows us to eat seasonally, but also explore foods we may not necessarily have eaten much of or even seen before. For example, I like these long beets and Gold Rush apples.&lt;/p&gt;
</content:encoded></item><item><title>Why I went Frick Park trail running in snowfall for the first time in a decade</title><link>https://franklinchen.com/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/31/why-i-went-frick-park-trail-running-in-snowfall-for-the-first-time-in-a-decade/</guid><pubDate>Mon, 31 Dec 2012 23:22:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/asics-gel-flash-ds-snow.jpg&quot; alt=&quot;Asics Gel Flash DS in the snow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today, New Year&apos;s Eve, I went for my last &lt;a href=&quot;/categories/running/&quot;&gt;run&lt;/a&gt; of 2012.&lt;/p&gt;
&lt;p&gt;It was also my first run (as far as I can remember) in about two months, because of the &lt;a href=&quot;/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/&quot;&gt;total destruction of my exercise routine in the last months of the year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was also my first real winter run in probably three years, since at some point I had gotten soft and stopped running in winter, despite a failed attempt &lt;a href=&quot;/blog/2012/01/02/new-experiment-for-a-new-year-winter-running-in-vibram-fivefingers-shoes/&quot;&gt;just a year ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, this was also my first trail run in snow in probably a decade. At some point, I had decided that it was too unsafe or uncomfortable to run in the trails in winter when there was snow, mainly because of ice concerns, and when I was running in winter at all, I would choose the roads.&lt;/p&gt;
&lt;p&gt;So why the sudden change?&lt;/p&gt;
&lt;h2&gt;I need to run&lt;/h2&gt;
&lt;p&gt;I like running, but I haven&apos;t been doing it in the winter. So I decided that I was going to take it up again. More specifically, when I&apos;m on a full, consistent exercise schedule, I like to alternate running with strength training. Today was a &quot;running&quot; day.&lt;/p&gt;
&lt;h2&gt;Shoes&lt;/h2&gt;
&lt;p&gt;I have not worn monotoed shoes for running in well over a year now, since having converted to wearing minimalist shoes such as &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers&lt;/a&gt; and Xero Shoes (formerly known as &lt;a href=&quot;/categories/invisible-shoes/&quot;&gt;Invisible Shoes&lt;/a&gt; for all outdoor activities in sufficiently warm weather.&lt;/p&gt;
&lt;p&gt;But it&apos;s just not practical wearing FiveFingers, even with socks, when it&apos;s freezing outside. So I went down to the basement to look at my old monotoed running shoes to find something to wear.&lt;/p&gt;
&lt;p&gt;I found a pair of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.roadrunnersports.com/rrs/products/ASC754/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.roadrunnersports.com/rrs/products/ASC754/&quot;&amp;gt;Asics Gel Flash DS&amp;lt;/span&amp;gt; &quot;lightweight trainer&quot; shoes that I was wearing some years ago. The shoes still fit, although my feet have expanded every year in the past decade, so I had to loosen the laces.&lt;/p&gt;
&lt;h2&gt;No excuses&lt;/h2&gt;
&lt;p&gt;I remember that last winter I really was intending to do some running outside, but after my discouragement with the FiveFingers experiment, I gave up. &quot;Instead&quot;, I embarked (successfully, actually) on a &lt;a href=&quot;/blog/2012/01/09/starting-the-100-up-exercise-for-running-30-day-challenge/&quot;&gt;100-up running exercise&lt;/a&gt;. I don&apos;t regret taking the time to do the 100-up challenge, and in fact, it did wonders for helping me balance out my left and right sides of my body and work on some other things, but in retrospect, I also used it as an excuse not to actually run!&lt;/p&gt;
&lt;p&gt;It is too easy, when adding something to your life, to use it as an excuse not to do something else. One way to deal with this temptation is to be conscious that given limited time and energy, if you add something new, you should also deliberately remove something old, instead of &quot;accidentally&quot; losing something old. For example, it is useful to identify a &lt;em&gt;bad habit&lt;/em&gt; to get rid of.&lt;/p&gt;
&lt;p&gt;In my case, of creating new habits for 2013, I am getting rid of bad habits that include too frequently checking email, reading blogs, etc.&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;I headed out the door without really knowing what I was going to do. I decided to check out Frick Park to see if it was runnable. If not, I could always go back out to the roads.&lt;/p&gt;
&lt;p&gt;It turned out that the trails of Frick were not too bad. The snow was packed down, and although patches of ice existed, they were visible and also mostly easily avoided by running to the side on non-icy snow. So I kept going. I decided that instead of being &lt;em&gt;fearful&lt;/em&gt; pre-emptively of bad conditions, I would actually just go and see what the &lt;em&gt;reality&lt;/em&gt; was, and if reality hit me in the face, I always had the option of adapting and backing out.&lt;/p&gt;
&lt;p&gt;My run followed exactly my &quot;usual&quot; 5-mile run from home &lt;a href=&quot;/blog/2011/10/12/i-love-trail-running-in-frick-park/&quot;&gt;down into Fern Hollow and back up&lt;/a&gt;. I saw children sledding and sliding around while their parents encouraged and monitored them (one little boy slid down and almost collided with me as I was running). I saw the dogs running with their owners. I also saw two cross-country skiers heading down toward Fern Hollow.&lt;/p&gt;
&lt;p&gt;There was some snow falling, not very heavily, but enough to keep hitting my glasses and sticking, with icy spots forming, etc. That reminds me that a decade ago when I did have a habit of running all through winter, I wore contact lenses to avoid this problem.&lt;/p&gt;
&lt;h2&gt;2013 plans for running&lt;/h2&gt;
&lt;p&gt;I have no idea how long the trails of Frick Park will be runnable for me, but I don&apos;t need to have an &quot;idea&quot;: I can just continue to go and then back out if I need to. In the past in winter, I would run on Beechwood Boulevard and then into Homewood Cemetery.&lt;/p&gt;
&lt;p&gt;To encourage myself to keep up my running habit, I&apos;ve decided to plan on a race schedule for 2013. 2006 was the last year in which I had a semblance of race schedule: I ran in nine races that year. In 2013, I would like to start running in races by late February, if weather permits, and definitely do some in March and onward. I wouldn&apos;t expect to run fast in my first races, but possibly by late March I could be starting to get in good shape for the spring/summer season.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I went for a run because I hadn&apos;t done that in months, and I chose to do something different in order to get over my excuses of the past for shutting down or constraining my running options. I&apos;m excited to be back, and hope to see some of my running buddies at races next year!&lt;/p&gt;
&lt;h3&gt;(Update of 2003-03-03)&lt;/h3&gt;
&lt;p&gt;I had some setbacks in running, and ended up not running any races by late February, but did end up deciding in late January, totally unexpected, &lt;a href=&quot;/blog/2013/01/30/why-and-how-i-am-going-to-run-the-2013-pittsburgh-marathon/&quot;&gt;to run the Pittsburgh Marathon&lt;/a&gt;, in order to give myself even more motivation to continue running, then ran in a &lt;a href=&quot;/blog/2013/03/03/my-first-steel-city-road-runners-winter-5k-race/&quot;&gt;5K&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2003-03-30)&lt;/h3&gt;
&lt;p&gt;In late March, I ran &lt;a href=&quot;/blog/2013/03/30/report-on-just-a-short-run-my-first-half-marathon-in-nine-years/&quot;&gt;my first half marathon in nine years&lt;/a&gt; and enjoyed the experience.&lt;/p&gt;
</content:encoded></item><item><title>When I don&apos;t have time to sit and breathe, something is wrong with my life</title><link>https://franklinchen.com/blog/2012/12/30/when-i-dont-have-time-to-sit-and-breathe-something-is-wrong-with-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/30/when-i-dont-have-time-to-sit-and-breathe-something-is-wrong-with-my-life/</guid><pubDate>Sun, 30 Dec 2012 16:35:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/zafus.jpg&quot; alt=&quot;Our two zafus&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s been a long time since I&apos;ve mentioned &lt;em&gt;meditation&lt;/em&gt; here. In fact, it&apos;s been &lt;a href=&quot;/blog/2012/02/23/saying-no-in-order-to-say-yes/&quot;&gt;ten months&lt;/a&gt;! This despite my knowledge of &lt;a href=&quot;/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/&quot;&gt;how beneficial it is&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There&apos;s a reason: I completely lost my &lt;em&gt;meditation practice&lt;/em&gt; at some point this year. I don&apos;t even remember when I lost it. It may have had something to do with the fact that the iPad app we had been using as a meditation timer suddenly stopped making sound and we didn&apos;t know why.&lt;/p&gt;
&lt;p&gt;Yeah, what a sad excuse. But this is &lt;em&gt;exactly&lt;/em&gt; how, when one&apos;s practice is already in trouble, any trivial glitch (so easily solved one way or another) is an excuse to stop.&lt;/p&gt;
&lt;p&gt;Abby and I have periodically &quot;tried&quot; to get back on, but as Yoda wisely said,&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Try not! Do, or do not. There is no try.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;BQ4yd2W50No&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;So now what?&lt;/p&gt;
&lt;h2&gt;Do&lt;/h2&gt;
&lt;p&gt;We&apos;ve decided to &quot;do&quot;. This meant having to discuss the various reasons and chain reactions that lead to not doing meditation, and how to head them off. Meditation &lt;a href=&quot;/blog/2012/02/10/meditation-is-hard/&quot;&gt;can be hard&lt;/a&gt;, but really, sitting and breathing for just &lt;em&gt;ten minutes&lt;/em&gt; in the morning is, objectively, not so hard.&lt;/p&gt;
&lt;p&gt;It&apos;s not hard to realize that if I am so &quot;busy&quot; that I don&apos;t have time to sit and breathe for ten minutes, &lt;em&gt;something is wrong with my life&lt;/em&gt;. Something has become unbalanced. Abby and I have had quite a year of many activities and experiences, but at some point, I started neglecting some basics. In particular, the last two months of this year have been something of a blur. Abby has tried to get us back to meditating, but I&apos;ve resisted with some pretty bad excuses.&lt;/p&gt;
&lt;p&gt;But as of today, we are back. Being too &quot;busy&quot; means priorities are out of whack: did I really need to read those blog posts or tweets for ten minutes, instead of meditating? The answer is embarrassingly obvious when the mind is clear.&lt;/p&gt;
&lt;p&gt;Oh, and as for the iPad meditation app: I checked the app and it&apos;s making the start and end sounds just fine now. And if it didn&apos;t, that wouldn&apos;t stop us.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Meditation is good, and I&apos;m back. In order to commit myself to keeping up the practice, I have decided that I should write about meditation on this blog at least once a month! It&apos;s on my calendar.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-01)&lt;/h3&gt;
&lt;p&gt;A report on &lt;a href=&quot;/blog/2013/02/01/a-report-on-one-month-of-daily-meditation/&quot;&gt;my meditation in January 2013&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-01)&lt;/h3&gt;
&lt;p&gt;A report on &lt;a href=&quot;/blog/2013/03/01/dealing-with-setbacks-during-my-second-month-of-meditation/&quot;&gt;my meditation in February 2013&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Meditations on climbing the 36 floors of the Pitt Cathedral of Learning</title><link>https://franklinchen.com/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/28/meditations-on-climbing-the-36-floors-of-the-pitt-cathedral-of-learning/</guid><pubDate>Fri, 28 Dec 2012 18:39:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/cathedral.jpg&quot; alt=&quot;Cathedral of Learning&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight I climbed the steps of the 36 accessible floors of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Cathedral_of_Learning&quot;&gt;University of Pittsburgh Cathedral of Learning&lt;/a&gt; for the first time in probably a couple of years. As I mentioned after my last big stair climb, &lt;a href=&quot;/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/&quot;&gt;this year&apos;s Fineview Stepathon&lt;/a&gt;, I used to do some training here, when preparing for the tortuous annual 35-mile &lt;a href=&quot;https://rachelcarsontrails.org/rct/challenge&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; held in June, which I did in 2005, 2006, and 2007.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/6/6b/Cathedral_of_Learning_stitch_1.jpg&quot; alt=&quot;Wikipedia photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I thought a lot about how my physical fitness took a sharp turn downward in the past five years, and how for the coming new year of 2013 I plan to get back into the shape I was in five years ago, and why that is important.&lt;/p&gt;
&lt;p&gt;I&apos;m going to frame my discussion in terms that are used in &lt;a href=&quot;https://charlesduhigg.com/&quot;&gt;Charles Duhigg&lt;/a&gt;&apos;s fantastic book I just read, &lt;a href=&quot;https://charlesduhigg.com/the-power-of-habit/&quot;&gt;&quot;The Power of Habit&quot;&lt;/a&gt; (which everyone should read).&lt;/p&gt;
&lt;h2&gt;Walking to the Cathedral of Learning&lt;/h2&gt;
&lt;p&gt;I took a short walk from my office at CMU to the Cathedral of Learning. There was a bit of snow and ice on the roads and sidewalks.&lt;/p&gt;
&lt;p&gt;I thought about how until the snow fell this week, it was still possible to go &lt;a href=&quot;/blog/2011/10/12/i-love-trail-running-in-frick-park/&quot;&gt;running in the trails of Frick Park&lt;/a&gt;, one of my favorite things to do.&lt;/p&gt;
&lt;p&gt;Except that I basically &lt;em&gt;haven&apos;t been running&lt;/em&gt; for two months now. I got &quot;busy&quot;, it got &quot;cold&quot;, and I more or less stopped exercising at all. One thing I learned when &lt;a href=&quot;/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/&quot;&gt;over a decade ago I started running&lt;/a&gt; and really did acquire a regular daily exercise schedule, is that the benefits of exercise are tremendous, and carry over into all aspects of life, from building endurance to attaining mental balance and sharpness.&lt;/p&gt;
&lt;p&gt;Yet, my exercise schedule has more or less fallen apart in the last five years, with some seasonal variation in that in the summer, it&apos;s much easier to just go outside and run or hike.&lt;/p&gt;
&lt;h2&gt;Beginning the climb&lt;/h2&gt;
&lt;p&gt;Here&apos;s the ground floor of the Cathedral of Learning, with stairway entrance in sight:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/floor-g.jpg&quot; alt=&quot;Floor G&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Habits and social support&lt;/h3&gt;
&lt;p&gt;A regular exercise &lt;em&gt;habit&lt;/em&gt; starts somewhere. Some kind of decision, some kind of cue. It&apos;s important to get started, and conquer anxiety and excuses. Given that I hadn&apos;t done this stair climb in years, I didn&apos;t really know how I would fare going up. I saw no reason to believe that I couldn&apos;t make it all the way up just once, but I didn&apos;t want to run out of steam. I wanted to be steady and strong.&lt;/p&gt;
&lt;p&gt;It&apos;s important not to try to do too much all at once.&lt;/p&gt;
&lt;p&gt;Also, &lt;em&gt;social support&lt;/em&gt; is really quite important. It turns out that in the past, I had friends who were totally into serious running and hiking and the like. One by one they moved away, and furthermore after I met Abby, my entire life routine changed. To be clear, I&apos;m not &quot;blaming&quot; her presence in my life for my broken exercise routine; I take full responsibility for not adapting fully to circumstances. Nobody said the transition from bachelorhood to marriage was easy. It turns out that Abby is not at all interested in extreme endurance events such as marathons or the Rachel Carson Trail Challenge, and helped dissuade me from participating further in such events; but I made the decision with her, of my own free will, feeling that the time and energy spent toward such pursuits would be better spent on other activities instead, now that she was in my life. Every couple has to negotiate these kinds of life changes.&lt;/p&gt;
&lt;p&gt;However, what happened to me was that I didn&apos;t fully realize how interconnected all of my exercise-related activities were, such that removing an admittedly unnecessary and extreme part of it had an indirect effect on my motivation and routine for less extreme activities. The goal of participating in the events had somehow become a major motivator in doing things that didn&apos;t necessarily have to require participating in those events. Basically, I had inadvertently created for myself a &lt;em&gt;reward&lt;/em&gt; that I depended on.&lt;/p&gt;
&lt;p&gt;Also, my &lt;em&gt;cue&lt;/em&gt; was broken. My cue used to be to wake up, hop out of bed, and prepare to run or lift weights or something. But I have not been doing that since Abby came into the picture, for various reasons, some of which are no longer even relevant, but the cue was destroyed.&lt;/p&gt;
&lt;p&gt;This indirect effect, combined with the addition of a lot more into my life that had formerly not existed (not just time spent with Abby, but also more recent new activities involving taking up &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;playing music&lt;/a&gt; and getting into &lt;a href=&quot;/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/&quot;&gt;personal computer programming projects and social meetups&lt;/a&gt;), served to completely disrupt all of my usual routines, not just the exercise one. Even if I had time and energy to exercise, often I&apos;d find some other thing I &quot;had&quot; to do instead, like practice music or going to a computer programming meetup.&lt;/p&gt;
&lt;h2&gt;Going up&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/warning.jpg&quot; alt=&quot;Warning sign&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The famous warning sign about the stairwell not being meant for &quot;exercise or other athletic activity&quot; certainly did not deter people like Danny Chew, who did &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dannychew.com/101timesupCoL.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dannychew.com/101timesupCoL.html&quot;&amp;gt;101 repetitions in over 17 hours&amp;lt;/span&amp;gt;. I&apos;ve never done more than a single repetition.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/stairway.jpg&quot; alt=&quot;Stairway&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;A rhythm established&lt;/h2&gt;
&lt;p&gt;To make something a habit, it must be regular and sustainable, in order to build confidence and strength. So I established a simple rhythm going up the steps just one at a time (not two at a time as I used to when I was more fit). One step at a time is much, much easier than two steps at a time. I only did two for the challenge of going fast. Speed is of no concern to me right now.&lt;/p&gt;
&lt;p&gt;Here&apos;s a clip of my going between floors 17 and 21. Some guy wearing a CamelBak actually passed me while he was going down; you can hear him but can&apos;t see him in the video:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;CDJDZcixA2A&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I used to exercise every morning before eating breakfast. But for the first couple of years with Abby, that routine was broken, because she had no such routine. A lot of the radical changes in one&apos;s life when no longer being alone are, I think, a result of individual differences. If X used to do something, but Y did not, then by default it is easy to slip into a joint routine in which neither do it.&lt;/p&gt;
&lt;p&gt;Ironically, relatively recently, Abby did take up semi-regular exercise before breakfast, going out for a walk, in an attempt to encourage me to do likewise with her. But I&apos;m not interested in going for a leisurely walk before breakfast. I want to do something strenuous and then get going with my day. Meanwhile, I had fallen into a pattern of sleeping later and later, which was the real problem.&lt;/p&gt;
&lt;p&gt;Two days ago, I resolved on a major life change. I&apos;m going to become a genuine morning person. I woke up spontaneously before 5 AM yesterday, and also today. I have not been ready to launch into a super-early morning exercise program yet, and it is a good idea to change &lt;em&gt;one habit at a time&lt;/em&gt; rather than multiple, so I am focusing right now simply on sleeping earlier and waking earlier.&lt;/p&gt;
&lt;h2&gt;Just a few more floors left&lt;/h2&gt;
&lt;p&gt;I was pleased that at the rhythm and pace I had chosen, I was going up pretty well, without running out of breath or having to use the handrails for support. I suspect that a couple of things I&apos;ve done in the past couple of years have helped a lot. I know I&apos;ve improved my &lt;a href=&quot;/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/&quot;&gt;core strength&lt;/a&gt; through doing bodyweight exercises such as pushups, pullups, squats, and lunges. As a result, despite my overall being less fit than years ago, I have better balance and stability, enabling me to activate my glutes rather than lean on my quads when climbing stairs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/floor-31.jpg&quot; alt=&quot;Floor 31&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Right after the 31st floor, I was amused to see some posters people had put up for the annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lung.org/pledge-events/pa/pittsburgh-climb-fy13/&quot;&amp;gt;Fight for Air Climb&amp;lt;/span&amp;gt;. I&apos;ve never done this event, actually. I have to confess that an indoor stair climb is not the most exciting thing in the world for me, and I do the Cathedral of Learning climb mainly when the weather outside is not as good as I like.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/fight-for-air-climb.jpg&quot; alt=&quot;Posters for Fight for Air Climb&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The top&lt;/h2&gt;
&lt;p&gt;The 36th floor is the last one accessible. There are a couple more going up, but the door after the 36th floor is locked.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/floor-36.jpg&quot; alt=&quot;Floor 36&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some night views out the windows on the 36th floor:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/night-view.jpg&quot; alt=&quot;Night view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cathedral-of-learning-steps/night-view-2.jpg&quot; alt=&quot;Another night view&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I arrived at the 36th floor without any distress. It felt &quot;easy&quot;, even, but then again, I was going slowly and one step at a time. Nevertheless, this gives me confidence. I will continue to do the stair climb this winter. Also, perhaps next time I will do two repetitions, which I&apos;ve never done before.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed getting back to exercising and doing the Cathedral of Learning stair climb. I used the time to also reflect on my shortcomings in recent years in sticking to an exercise plan, and to commit to my vision of becoming more fit in 2013 than I was in 2007, one step at a time. And finally, I am taking full responsibility for my slacking: the fact that it happened as a result of taking a new direction in life with Abby is not at all her fault, especially given that she has been trying to get me to start exercising regularly again!&lt;/p&gt;
</content:encoded></item><item><title>I changed how I live after reading Joshua Foer&apos;s &quot;Moonwalking with Einstein&quot;</title><link>https://franklinchen.com/blog/2012/12/24/i-changed-how-i-live-after-reading-joshua-foers-moonwalking-with-einstein/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/24/i-changed-how-i-live-after-reading-joshua-foers-moonwalking-with-einstein/</guid><pubDate>Mon, 24 Dec 2012 20:20:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.strangehistory.net/blog/wp-content/uploads/2011/02/memory.jpg&quot; alt=&quot;Memory&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recently I heard about the journalist &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://joshuafoer.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://joshuafoer.com/&quot;&amp;gt;Joshua Foer&amp;lt;/span&amp;gt; who embarked on a remarkable journey in which he ended up covering a story about memory and then actually training his own and in the process becoming the United States Memory champion. I watched his hilarious and inspiring &lt;a href=&quot;https://web.archive.org/web/20140221032408/http://www.ted.com:80/talks/joshua_foer_feats_of_memory_anyone_can_do.html?&quot;&gt;TED talk&lt;/a&gt; and ended up reading his book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://joshuafoer.com/moonwalking-with-einstein/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://joshuafoer.com/moonwalking-with-einstein/&quot;&amp;gt;&quot;Moonwalking with Einstein: The Art and Science of Remembering Everything&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;After reading this book, I made a firm decision to &lt;em&gt;immediately change my life&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A confession: I have all my life, since childhood, struggled with what I considered a bad memory (compared to &quot;normal&quot;, as in my peers).&lt;/p&gt;
&lt;h2&gt;Examples of my concern about my memory&lt;/h2&gt;
&lt;p&gt;I took a quick look at my blog posts in the past year, to see where I might have bemoaned my bad memory, and here are a few examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I complained about not remembering &lt;a href=&quot;/blog/2011/11/18/i-want-to-sing/&quot;&gt;song lyrics&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I noted that not remembering &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;dance steps and choreography&lt;/a&gt; forced me to fall back on improvisation.&lt;/li&gt;
&lt;li&gt;I mentioned &lt;a href=&quot;/blog/2012/03/14/for-real-geeks-today-is-not-pi-day-but-half-tau-day/&quot;&gt;memorizing fifty digits of pi&lt;/a&gt;, but did not say how grueling a task it was and how ashamed I was that I retained very little and never wanted to do it again.&lt;/li&gt;
&lt;li&gt;I noted how I was &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;forced into improvisation in music because of memory problems&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I told a story of &lt;a href=&quot;/blog/2012/06/08/heinz-hall-memories-at-the-pittsburgh-symphony-being-shocked-out-of-my-mind-upon-experiencing-prokofievs-second-piano-concerto-for-the-first-time/&quot;&gt;misremembering an event in the past and then reconstructing what really happened&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Major life decisions I made based on my belief I had a bad memory&lt;/h2&gt;
&lt;p&gt;Here are some things that I&apos;ve told almost nobody in my life before, but now feel I should speak out about.&lt;/p&gt;
&lt;h3&gt;School&lt;/h3&gt;
&lt;p&gt;I shaped my entire experience in school around trying to avoid having to rely on my memory. History and other subjects terrified me. I was so conscious about my problems that in middle school, during one of the &lt;a href=&quot;https://www.rif.org/&quot;&gt;Reading is Fundamental&lt;/a&gt; free book distributions, I greedily picked up &lt;a href=&quot;https://www.harrylorayne.com/&quot;&gt;Harry Lorayne&lt;/a&gt;&apos;s &quot;How to Develop a Super Power Memory&quot;. Unfortunately, after looking at it, I was discouraged by its odd ideas and just didn&apos;t really give any of them a try at all.&lt;/p&gt;
&lt;p&gt;Biology terrified me, to the point that in my first year of high school, &lt;em&gt;I chose not to take any science course at all&lt;/em&gt; because biology would have been the first course for me to take. Later, I did take biology, delayed from most of my college-bound peers, in the tenth grade, and survived it (but have almost no memory of what I &quot;learned&quot;). In my senior year of high school, I took Advanced Placement biology, which was a total nightmare of memorization, solely for the purpose of not ever having to take biology again when going to college (and in fact, I did get credit for it and therefore succeeded in my goal). Note: since childhood, I was actually very fascinated by biology, so it was with sadness that I decided I had to avoid further study in biology.&lt;/p&gt;
&lt;p&gt;In addition to avoidance, my fear of memorization also pushed me into certain directions based primarily on the lack of need for memorization: by the end of high school, I had discovered that math and physics were great for me because they did not require much memorization. Everything was based primarily on basic principles that, if you learned, you could build on top of using logical reasoning rather than memorization. Logic was the connective that kept things together in my mind.&lt;/p&gt;
&lt;h3&gt;Language learning&lt;/h3&gt;
&lt;p&gt;Learning foreign languages has always been fascinating to me, ever since as a side effect of studying for spelling bees in elementary school and middle school, I found a trick to help deal with my memory problems: looking up the etymologies of words in the dictionary enabled me to see enough logical and historical connections between words to be able to spell pretty well. But when it came to remembering and using the meanings of words as I learned French, for example, I was lost. I loved learning grammar because it was about figuring out the logical patterns, but hated learning vocabulary. Unfortunately, without a sufficient working vocabulary, my facility in languages was limited in oral communication, and even reading texts was painful, requiring constant dictionary lookup.&lt;/p&gt;
&lt;p&gt;So even though I&apos;ve actually taken entire courses in French, German, Italian, and Spanish, and taught myself Latin, I&apos;ve always felt that I somehow wasted my time, because I mostly remember grammar and pronunciation.&lt;/p&gt;
&lt;h2&gt;My new motivation&lt;/h2&gt;
&lt;p&gt;I was excited to watch Joshua Foer&apos;s talk and read his book, because if an average guy can become the national memory champion through proven techniques, then a below-average guy like me should be able to get to average and even beyond. Given that I believe that I am capable of improving at many things I&apos;m not so good at, why have I spent so much of my life not believing that about my memory? I created this self-limiting myth that I now intend to shatter. 2013 will be the year when I make massive improvements to my memory.&lt;/p&gt;
&lt;h2&gt;The book&lt;/h2&gt;
&lt;p&gt;I loved Joshua Foer&apos;s book. He is not only a very good storyteller, taking the reader deep into the strange world of memory championships, but he also explains the time-honored techniques that every memory champion uses and that he used, and describes the scientific research on memory. There is no trickery involved, just changing your attitude and putting in the work.&lt;/p&gt;
&lt;p&gt;The book is not just a good story and a how-to manual, though. It is really a &lt;em&gt;philosophical&lt;/em&gt; exploration of what it means to be human, and what we have lost since the ancient times when memory was not only useful but critical, because we didn&apos;t have the technological aids that we have now. It made me think about how I should balance time-saving technology and old-fashioned ways of dealing with life.&lt;/p&gt;
&lt;h2&gt;The principle behind memory techniques&lt;/h2&gt;
&lt;p&gt;The main idea behind remembering well is that we have to encode memories in such a way that they are truly concrete and vivid, because that&apos;s what we humans remember.&lt;/p&gt;
&lt;p&gt;The &quot;memory palace&quot; is a well-known technique (that I remembered from Harry Lorayne&apos;s book in my childhood, but never implemented). It involves creating a space in your mind that you already know, and then put things you want to remember into that space by associating them with images located in specific places in the space.&lt;/p&gt;
&lt;p&gt;Foer discussed one of the open secrets of how to come up with vivid images to remember: &quot;When forming images, it helps to have a dirty mind&quot;. He quotes ancient handbooks on memory that advise using images of beautiful women, or images of &quot;singular ugliness&quot;, modified through disfigurement or comic effects. This can get awkward. When he was training to memorize a deck of cards, he writes, &quot;it invariably meant inserting family members into scenes so raunchy I feared I was upgrading my memory at the expense of tormenting my subconscious. The indecent acts my own grandmother has had to commit in the service of my remembering the eight of hearts are truly unspeakable (if not, as I might have previously guessed, unimaginable)&quot;. Also, his coach Ed said, &quot;I eventually had to excise my mother from my deck... I recommend you do the same&quot;.&lt;/p&gt;
&lt;h2&gt;My plans for memory improvement&lt;/h2&gt;
&lt;p&gt;I&apos;m starting small with my memory improvement.&lt;/p&gt;
&lt;h3&gt;Languages&lt;/h3&gt;
&lt;p&gt;As a &quot;test&quot;, I&apos;ve gotten back into language learning/review, using &lt;a href=&quot;https://duolingo.com/&quot;&gt;Duolingo&lt;/a&gt; (about which I&apos;ll write much more later), focusing on Spanish, which I took three semesters of a decade ago, but have been embarrassed to feel incompetent in.&lt;/p&gt;
&lt;p&gt;In the past, I had no reliable way to remember new words as I learn them. Now, I paused for 5-10 seconds, maybe even longer if I need to (I expect to become more quick and fluid with experience), to create a suitable image.&lt;/p&gt;
&lt;p&gt;You don&apos;t really want to know what kinds of images I create for my memory. I think one of the problems I always had with my memory was being ashamed of &quot;inappropriate&quot; or &quot;illogical&quot; imagery. I always wanted to remember through logical association. Now, I have given myself permission to be as raunchy, disgusting, sarcastic, or bizarre as I need, and just accept that. So in some sense, embracing memory improvement, for me, involves self-acceptance. I created shocking images to remember the Spanish words for &quot;cranberry&quot; and &quot;box&quot;, for example, but they do the job.&lt;/p&gt;
&lt;p&gt;I&apos;ve already seen huge improvements in my learning of new words, which I do every day. I wish I had used this technique years, decades ago.&lt;/p&gt;
&lt;p&gt;My goal: getting the vocabulary down will be a big part of becoming actually functional in Spanish. I would like to achieve near-native conversational Spanish ability in a year.&lt;/p&gt;
&lt;h3&gt;Numbers&lt;/h3&gt;
&lt;p&gt;I have always been bad at remembering numbers. I intend to set up a practice for using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mnemonic_major_system&quot;&gt;Major System&lt;/a&gt; in order to get into remembering numbers better. It&apos;s embarrassing and potentially actually dangerous when I don&apos;t have my phone or computer on me and I am supposed to remember a phone number, for example.&lt;/p&gt;
&lt;p&gt;My goal: remember all numbers that should be important in my life. (Sorry, pi, you are not important.)&lt;/p&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;p&gt;When I think about it, there is so much that I could gain from remembering all kinds of things better. I will explore my ideas later, after first mastering the fundamentals and gaining confidence.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In a real sense, we are what we remember. If we don&apos;t remember, then what was the point? Joshua Foer&apos;s experience and his book have inspired me to move forward in recapturing one of the ancient skills and delights, that of remembering.&lt;/p&gt;
&lt;p&gt;How do you feel about your memory? Is it something you care about improving? Or is our technological outsourcing of our memory perfectly fine?&lt;/p&gt;
</content:encoded></item><item><title>Playing tango on melodica and singing Christmas carols</title><link>https://franklinchen.com/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/22/playing-tango-on-melodica-and-singing-christmas-carols/</guid><pubDate>Sat, 22 Dec 2012 23:57:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Abby and I went to a Christmas party at Gina&apos;s, and of course there had to be a lot of music-making. Probably ten of us at some point or another were playing music. There was singing, flutes, accordions, piano, mandolin, etc., on all kinds of music, for hours and hours, even in separate rooms simultaneously. I did a lot of sitting and listening to others and also some participation of my own.&lt;/p&gt;
&lt;p&gt;For me, personally, my favorite moments that I was involved in were the following.&lt;/p&gt;
&lt;h2&gt;Piazzolla&apos;s Oblivion on melodica and piano&lt;/h2&gt;
&lt;p&gt;Henry and I did Piazzolla&apos;s &quot;Oblivion&quot;, with me on melodica, and him accompanying on piano. I&apos;ve &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;recently mentioned wanting to do this&lt;/a&gt;, so I was happy to have this opportunity.&lt;/p&gt;
&lt;p&gt;My cheap secondhand student melodica has poor intonation on the lower notes, unfortunately, as &lt;a href=&quot;/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/&quot;&gt;I observed recently when playing it in the Pittsburgh Contras and Squares Holiday Ball&lt;/a&gt;. So the results were not ideal. I&apos;ve decided that if I want to continue playing the melodica seriously, I need a better instrument.&lt;/p&gt;
&lt;p&gt;I&apos;ve decided that next time I play &quot;Oblivion&quot; again, it will be on flute.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://imslp.org/wiki/6_Sonatas_for_Flute_and_Cello,_Op.2_%28D%C3%B4thel,_Niccol%C3%B2%29&quot;&gt;Niccolò Dôthel&apos;s first flute and cello sonata, first movement&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For variety, I threw in some Baroque music to play with Henry on piano for continuo. We did the first movement of Dôthel&apos;s first flute and cello sonata. I had first heard this by accident, while following a discussion &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://launch.groups.yahoo.com/group/earlyflute/message/12041&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://launch.groups.yahoo.com/group/earlyflute/message/12041&quot;&amp;gt;three months ago&amp;lt;/span&amp;gt; on the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://launch.groups.yahoo.com/group/earlyflute/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://launch.groups.yahoo.com/group/earlyflute/&quot;&amp;gt;Yahoo &quot;early flute&quot; group&amp;lt;/span&amp;gt;, in which one of the posters, Javier Gelati, put up a link to a YouTube video of himself playing it:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;HmMoNwm-Hx8&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I found this piece so delightful and suitable for the Baroque flute that I decided I wanted to play it, and worked on it, and so I finally got the chance to play it with someone.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-23)&lt;/h3&gt;
&lt;p&gt;I ended up playing this piece again, but in a quiet recital environment, with viola da gamba continuo, at the Pittsburgh Recorder Society&apos;s &lt;a href=&quot;/blog/2013/02/23/celebrating-two-years-of-playing-recorder/&quot;&gt;Midwinter Musical Feast&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Have Yourself a Merry Little Christmas&lt;/h2&gt;
&lt;p&gt;One of my favorite Christmas songs is &lt;a href=&quot;https://en.wikipedia.org/wiki/Have_Yourself_a_Merry_Little_Christmas&quot;&gt;&quot;Have Yourself a Merry Little Christmas&quot;&lt;/a&gt;. It can still bring tears to my eyes. It brings back a lot of winter memories of being alone for one reason or another, while out and about and hearing it playing in stores and subway stations. Those days are over, but still, the song is really quite moving. Especially, I prefer the original lyrics, &quot;Until then we&apos;ll have to muddle through somehow&quot;, to the alternate lyrics Frank Sinatra popularized, &quot;Hang a shining star upon the highest bough&quot;. The original melancholy lyrics underline the message of a hope for the future that is not yet reality.&lt;/p&gt;
&lt;p&gt;So for the first time, I sang this song for others to hear, with Henry on piano.&lt;/p&gt;
&lt;p&gt;Of course, the classic performance (with the original lyrics) is the beautiful one by Judy Garland:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;5g4lY8Y3eoo&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Christmas carols with other people&lt;/h2&gt;
&lt;p&gt;Finally, I had the opportunity to sing a lot of Christmas carols with a number of other guests, some of whom were music students with astounding voices. Since they were female, I tried to blend in along with the pianist to fill in some harmony. I have basically no real experience in doing this, but it was fun, and I really enjoyed singing with other people.&lt;/p&gt;
</content:encoded></item><item><title>Special treat: Dutch jazz trumpeter Eric Vloeimans performed in Pittsburgh!</title><link>https://franklinchen.com/blog/2012/12/19/special-treat-dutch-jazz-trumpeter-eric-vloeimans-performed-in-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/19/special-treat-dutch-jazz-trumpeter-eric-vloeimans-performed-in-pittsburgh/</guid><pubDate>Wed, 19 Dec 2012 23:42:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.pghcitypaper.com/imager/b/original/1596939/9540/music2_50.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.pghcitypaper.com/imager/b/original/1596939/9540/music2_50.jpg&quot;&amp;gt;[image: Eric Vloeimans]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;A while ago, I heard through a fantastic &lt;a href=&quot;https://www.pghcitypaper.com/pittsburgh/jazz-goes-dutch/Content?oid=1596938&quot;&gt;Pittsburgh City paper article&lt;/a&gt; and the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-Jazz-Fan-Meetup-Group/events/93376692&quot;&gt;Pittsburgh Jazz Fan meetup&lt;/a&gt; about Dutch jazz trumpeter &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ericvloeimans.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ericvloeimans.com/&quot;&amp;gt;Eric Vloeimans&amp;lt;/span&amp;gt; coming to Pittsburgh to perform as part of an &quot;international progressive jazz trio&quot; including himself, German &lt;a href=&quot;https://www.florianweber.net/&quot;&gt;Florian Weber&lt;/a&gt; on piano, and Syrian &lt;a href=&quot;https://www.kinanazmeh.com&quot;&gt;Kinan Azmeh&lt;/a&gt; on clarinet.&lt;/p&gt;
&lt;p&gt;I had never heard of these musicians before, but the article intrigued me enough to do some research, and Abby and I ended up attending his concert.&lt;/p&gt;
&lt;h2&gt;I did research&lt;/h2&gt;
&lt;p&gt;One of the great things about this era, I think, is that you can learn something about musicians&apos; work before deciding to invest in attending a concert. Things were much less certain before the whole Internet; you had to be deeply connected to some community of people that gave you information and advice, and it was harder to randomly hear about and explore new things.&lt;/p&gt;
&lt;p&gt;Upon checking out &lt;a href=&quot;https://www.youtube.com/user/ericvloeimans&quot;&gt;Eric Vloeimans&apos;s YouTube channel&lt;/a&gt; for samples of his work, I decided that I was intrigued by his music, and I loved his contrasts, moving between loud, wild improvisation and a soft lyrical style, but always with beautiful tone. Also, I liked that he comes from the classical world and is interested in all kinds of music and brings it all together to create his own style.&lt;/p&gt;
&lt;h2&gt;Attending the concert in Pittsburgh&lt;/h2&gt;
&lt;p&gt;Abby mostly thinks jazz is chaotic, so I didn&apos;t know whether I could convince her to go to the concert with me, but found this lyrical side of Vloeimans to show her:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/3Y0izaxU8YQ?list=UUuNCeR2oWKiCdcGZ4NwZv2w&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;So I got a pair of tickets, and Abby and I went to the trio&apos;s concert in the First Unitarian Church. Attendance was, as I expected, sparse. Sadly, this kind of music is not so popular here in Pittsburgh. On the plus side, the small audience made the whole experience feel very intimate.&lt;/p&gt;
&lt;p&gt;Overall, I loved the concert. This being a jazz program with many different experiments, of course there were moments or ideas that did not work for me, but overall, I was inspired by what the three created together on the spot, working with all they had from pre-agreed themes and technique, and the demands of the moment.&lt;/p&gt;
&lt;p&gt;The concert warmed up with a lyrical piece that showed off Vloeimans&apos;s classical training.&lt;/p&gt;
&lt;p&gt;Things got going right after that, with the second piece starting out with an atonal intro by Weber on piano, and then rhythmically ended up being some kind of tango. Vloeimans is a very physically expressive performer. He started stamping his feet in rhythm while playing, and at some point both Weber and Vloeimans were going at it physically, adding vocalizations to the mix. Great energy and fun!&lt;/p&gt;
&lt;p&gt;Azmeh on clarinet then played a lovely duet with Vloeimans on trumpet. I could see how attentive they were to each other as they created a dialogue on the spot, combining turn-taking with simultaneous improvisation. It was an unusual combination of sound to me, the clarinet-trumpet duet. Azmeh also being classically trained, you could hear the working out in real time of subtle contrapuntal and harmonic ideas.&lt;/p&gt;
&lt;p&gt;Then all three played together as a trio. This used a backdrop of minimalist repetition and literally made their performance sound like a train ride of industrial sounds.&lt;/p&gt;
&lt;p&gt;Then came Azmeh with a long clarinet solo as intro into a piece that unfolded finally into a trio. I loved the meditative and exploratory quality of the solo.&lt;/p&gt;
&lt;p&gt;Then came something very animated, which sounded like it was based on Cuban rhythms, but also somehow sounded Asian. Things got really animated, and Weber started hitting at the piano, and of course Vloeimans was stamping his feet.&lt;/p&gt;
&lt;p&gt;After that, something that sounded Jewish. Weber prepared the piano and made it sound tinny.&lt;/p&gt;
&lt;p&gt;Finally, they closed with telling a story about an encounter with Hindustani music in India, and then launching into music created as a result of that inspiration.&lt;/p&gt;
&lt;p&gt;It was a great evening of music.&lt;/p&gt;
&lt;h2&gt;For more&lt;/h2&gt;
&lt;p&gt;Some of what Vloeimans and Weber did came from their album &lt;a href=&quot;https://www.amazon.com/Live-Concertgebouw-Vloeimans-Florian-Weber/dp/B005H4T9XI&quot;&gt;&quot;Live at the Concertgebouw&quot;&lt;/a&gt;, which &lt;a href=&quot;https://www.allaboutjazz.com/live-at-the-concertgebouw-eric-vloeimans-challenge-records-review-by-john-kelman.php&quot;&gt;you may want to check out&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-08-06)&lt;/h2&gt;
&lt;p&gt;I was looking up the trio again and found this video that gives a good idea of some of the kind of thing they did when they were in Pittsburgh.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/WqlJmWd5j3g&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Round 6 of Pittsburgh Chess Club tournament: playing pragmatically</title><link>https://franklinchen.com/blog/2012/12/18/round-6-of-pittsburgh-chess-club-tournament-playing-pragmatically/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/18/round-6-of-pittsburgh-chess-club-tournament-playing-pragmatically/</guid><pubDate>Tue, 18 Dec 2012 23:56:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b1k2r/pp1pnppp/4p3/1P3q2/2P1n3/2Q1PN2/P2B1PPP/R3KB1R w KQkq -&quot; caption=&quot;Black Ne4 sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Last week in &lt;a href=&quot;/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/&quot;&gt;round 5&lt;/a&gt;, I reported on a disastrous game I played in which I was mentally unbalanced and lost, for the second time in the current &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghcc.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghcc.org/&quot;&amp;gt;Pittsburgh Chess Club&amp;lt;/span&amp;gt; tournament, a game in which I was winning and went into an endgame one Pawn up.&lt;/p&gt;
&lt;p&gt;In this week&apos;s game, I also ended up in an endgame one Pawn up.&lt;/p&gt;
&lt;p&gt;But I played pragmatically this time. I&apos;ll explain what that means and why it is important.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-schreiber-2012-12-18.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Since I had lost two games in a row, I was paired against an opponent, Jeff, of considerably lower rating than me, at his floor of 1900.&lt;/p&gt;
&lt;p&gt;Jeff had been much stronger in many years ago but after a visit to the hospital several years ago that resulted in his fighting for a year just to survive at all, he has never regained his former strength. I am very happy that he is back to stable health at all. He is a real asset to the Pittsburgh Chess Club, serving as a steward who opens and closes the club, answers the phone, etc: he was the very first person I met when I stopped by the club for the first time eight years ago, and he was so kind and helpful as I came back to chess after a two-decade absence that I decided to join the club and began playing in tournaments again in 2005. I owe Jeff for my return to chess play.&lt;/p&gt;
&lt;p&gt;As for my record against Jeff, I had only played one game as White against him, in 2006, and lost when I failed to continue my attack properly against his Sicilian; I have won three games as Black against him in 2005, 2006, and 2008.&lt;/p&gt;
&lt;p&gt;I had no time or energy to devote to any special preparation for our game. In fact, I was so exhausted after the past couple of days (that included performing music at the annual &lt;a href=&quot;/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/&quot;&gt;Pittsburgh Contras and Squares Holiday Ball&lt;/a&gt; that I spent the weekend feeling as though I was going to get sick, slept a massive amount on both Saturday and Sunday, and on Sunday decided that I would take Monday (yesterday) off from work in order to continue to recover my health.&lt;/p&gt;
&lt;p&gt;So I did only two things to prepare for the final (whew) round of the chess tournament:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&apos;t do anything &lt;strong&gt;stupid&lt;/strong&gt; (the way I did in the last two tournament games).&lt;/li&gt;
&lt;li&gt;As White, I had some control over the opening. I anticipated that he would play a &lt;a href=&quot;https://en.wikipedia.org/wiki/Nimzo-Indian_Defence&quot;&gt;Nimzo-Indian&lt;/a&gt; against me if I let him, and I saw no reason to prevent him from doing so. I am very happy to play White against the Nimzo-Indian.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;As I half-expected, Jeff played the Nimzo-Indian against me. We entered a variation that favors White.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/pp1p1ppp/2n1pn2/2P5/1bP5/2N2N2/PPQ1PPPP/R1B1KB1R b KQkq -&quot; caption=&quot;Nimzo-Indian&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle game&lt;/h3&gt;
&lt;p&gt;We ended up in a strange position in which Jeff for some reason chose to sacrifice his &lt;code&gt;g7&lt;/code&gt; Pawn for some activity.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b1k2r/pp1pnppp/4p3/1P3q2/2P1n3/2Q1PN2/P2B1PPP/R3KB1R w KQkq -&quot; caption=&quot;Black Ne4 sacrifice&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I took the Pawn, and then made a pragmatic decision to start simplifying to an endgame. This was not the strongest continuation, but I made this decision because frankly, I was very tired and my highest priority was to avoid a pointless loss caused by inability to calculate properly. So I wanted to simplify. In my last two games, I also deliberately chose to simplify, but then did not follow up consistently.&lt;/p&gt;
&lt;p&gt;My plan this time was to be consistent: play into a Pawn-up endgame where I had &lt;em&gt;no chance of losing&lt;/em&gt; and where I was the only one with &lt;em&gt;any chance of winning&lt;/em&gt;. Then I would sit and wait until my opponent made errors. If he didn&apos;t and therefore held the draw, then so be it. I was tired of just plain losing out of time pressure and fatigue. I decided to stay ahead on the clock in a superior endgame.&lt;/p&gt;
&lt;h3&gt;The endgame&lt;/h3&gt;
&lt;p&gt;So I forced an exchange of Queens and even traded off Bishops.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3k1r1/p3np1p/1p1pp3/1P6/2P5/3NPP2/P2K1P1P/R6R b q -&quot; caption=&quot;Drawn endgame?&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Objectively, this endgame should be a draw, of course.&lt;/p&gt;
&lt;p&gt;But what is &quot;objectivity&quot; when I&apos;m tired, and my opponent is over 200 rating points weaker than I am? In the end, chess is a human struggle of imperfection. My goal in this game was simply to avoid losing while preserving chances for a win, to close out this tournament with some honor.&lt;/p&gt;
&lt;p&gt;In a single move, pushing &lt;code&gt;d5&lt;/code&gt;, Jeff finally blundered into a lost game.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2kr4/p4p1p/1p2p3/1P1P1n2/5N2/4PP2/P2K1P1P/6R1 b - -&quot; caption=&quot;Black loses&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Again, after this blunder, which loses a second Pawn (because Black ends up with too many weak isolated Pawns), I continued to play pragmatically. I didn&apos;t look for the fastest win, the most elegant. I looked for what I felt to be the &lt;em&gt;safest&lt;/em&gt; win. I played to prevent Black from any chances at &lt;em&gt;counterplay&lt;/em&gt;. I slowly pushed my central Pawn mass, rather than go for some faster win that would rely on fewer of my forces but require more calculation. The last two weeks of playing in a tired physical and mental state showed that I could not trust my calculations. On the other hand, if I played relatively mindless but obviously good moves, rather than looking for the &quot;best&quot; moves, I could guarantee a win eventually.&lt;/p&gt;
&lt;p&gt;And so I did.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2r5/1k3pRp/1p2PN2/p2P4/n3PP2/4K3/P6P/8 b - -&quot; caption=&quot;Black resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;There was nothing very exciting about this game. It was just a game in which I had an advantage straight out of the opening and &lt;em&gt;was never worse&lt;/em&gt; and also never played the best moves at interesting points in the game. I only played &quot;good enough&quot; moves.&lt;/p&gt;
&lt;p&gt;I only show this game to illustrate what it means to play pragmatically when outside forces dictate that this is the correct thing to do.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I am human; if I am tired, I must play differently than when I am fully rested and mentally sharp.&lt;/li&gt;
&lt;li&gt;If the goal is to win, against a weaker opponent, it is often enough to just maintain an advantage, even in an objectively drawn endgame, because if he could always draw this kind of endgame, then he would have a higher rating.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I&apos;m totally exhausted from the past two months of my life, and ready for the winter holidays, during which I expect to mostly just stay at home and recharge, and figure out my plans for the coming year.&lt;/p&gt;
&lt;p&gt;I&apos;m absolutely certain now that next year I should not play again in this annual Tuesday night tournament that spans November and December. This is a bad time of year for me in terms of all the things that pile up on me at the end of the year. The historical record: I played terribly in this tournament also in &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?201012144091-12226800&quot;&gt;2010&lt;/a&gt; and in &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?200812165511-12226800&quot;&gt;2008&lt;/a&gt;. I should have thought about this trend before signing up this year.&lt;/p&gt;
&lt;p&gt;I will decide by New Year whether to play in the next Tuesday night tournament. Part of me clearly wants to continue with my chess explorations, but I really have to take into account what other commitments I&apos;ll be making for January and February, to make sure I don&apos;t play chess tired.&lt;/p&gt;
&lt;h2&gt;Followup report on the tournament&lt;/h2&gt;
&lt;p&gt;The two guys I lost to in rounds 4 and 5 played each other to decide first place in the tournament. &lt;a href=&quot;https://www.uschess.org/msa/XtblMain.php?201212180392&quot;&gt;Ed ended up winning&lt;/a&gt;. I saw part of the game before I finished mine and left, and will comment on it in my next chess blog post.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I went into this final round of the chess tournament with a clear goal, and a clear method of achieving it, which was to play pragmatically and get the win. I accomplished this non-glamorous goal, and hope that in the future, I will be more deliberately pragmatic in my play in general.&lt;/p&gt;
</content:encoded></item><item><title>East End Food Co-op Winterfest 2012</title><link>https://franklinchen.com/blog/2012/12/15/east-end-food-co-op-winterfest-2012/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/15/east-end-food-co-op-winterfest-2012/</guid><pubDate>Sat, 15 Dec 2012 23:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to the annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://eastendfoodcoop.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://eastendfoodcoop.com/&quot;&amp;gt;East End Food Co-op&amp;lt;/span&amp;gt; &lt;a href=&quot;https://www.facebook.com/events/433775433346947/&quot;&gt;Winterfest&lt;/a&gt; again, as we have done with John for the third year now. It was held again at the Jewish Community Center in Squirrel Hill.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/flyer.jpg&quot; alt=&quot;Flyer&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;People&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/people.jpg&quot; alt=&quot;People&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There seemed to be more people than last year, possibly because of the very mild weather this December. I remember marching or driving in the snow in the past.&lt;/p&gt;
&lt;p&gt;As usual, there were children of all ages, from a tiny baby to older kids running around.&lt;/p&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/food.jpg&quot; alt=&quot;Food&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was a relatively limited selection of vegetarian and vegan food. There was not as much food as last year, and not as much variety either. Some items (such as the tasty latkes) ran out quickly, so that when I went back for seconds, they were already gone. I guess it&apos;s hard to calculate how much food is needed each year; last year there was so much left over that we were told to box up leftovers to take home.&lt;/p&gt;
&lt;p&gt;We were surprised that there was no salad. There were many appetizer-type breaded foods and some generic-looking cheese cubes. Starved for more protein options, I tried to load up on a lentil-based spread, but quantities of that were limited. The food selection and allocation was strange this year.&lt;/p&gt;
&lt;p&gt;In another twist, all rather than some of the desserts this year were apparently gluten-free. This was great for Abby, since she has discovered over the past year that she does well to minimize wheat in her diet. I have also noticed that I also do better without wheat.&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;p&gt;I was a little confused this year because the local live musical entertainment was not identified in the flyers or online. I asked on the event page and even asked on the Food Co-op&apos;s &lt;a href=&quot;https://www.facebook.com/pages/East-End-Food-Co-op/125568984134681&quot;&gt;Facebook page&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://plus.google.com/101694168941295846546&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://plus.google.com/101694168941295846546&quot;&amp;gt;Google+ page&amp;lt;/span&amp;gt;, but nobody responded. It seems that nobody is really engaging in conversations on these sites.&lt;/p&gt;
&lt;p&gt;In any case, we went and there were three local guitarists who performed solo sets, one after another, while we were stuffing ourselves with food and hanging out, running into some people we knew.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/guitarist1.jpg&quot; alt=&quot;Guitarist&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/guitarist2.jpg&quot; alt=&quot;Guitarist&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2012/guitarist3.jpg&quot; alt=&quot;Guitarist&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby and I felt bad because the musical format didn&apos;t seem to work so well. A solo guitarist speaking about his or her musical selections and then performing from the heart seems out of place at an event like this that is not quiet and intimate, where the musicians are just background entertainment. A bigger, louder group commands more attention and engagement, especially if playing uptempo dance-oriented music. Here, we could barely hear the solo guitarists talk and sing.&lt;/p&gt;
&lt;p&gt;We left the Winterfest relatively early, after about two hours there (around 9:39 PM, so I don&apos;t know if there were other musicians after the three we saw. We left slightly early because we were still tired from all we&apos;d done over the week.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was good to see so many people come to the Winterfest this year, but the format of the food and the musical entertainment was kind of strange. Nevertheless, I welcomed the annual opportunity to hang out and eat with other members and supporters of the East End Food Co-op.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Contras and Squares Holiday Ball 2012</title><link>https://franklinchen.com/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/</guid><pubDate>Fri, 14 Dec 2012 23:50:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/grand-march.jpg&quot; alt=&quot;Grand March&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So this year I joined Abby again to play in the &quot;Holiday Ball Orchestra&quot; as I had &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;done for the first time last year&lt;/a&gt;, for the annual &lt;a href=&quot;https://www.facebook.com/pages/Pittsburgh-Holiday-Ball/283731778337030&quot;&gt;Pittsburgh Contras and Squares Holiday Ball&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My experience at &lt;a href=&quot;https://www.facebook.com/events/383908395031216/&quot;&gt;this year&apos;s event&lt;/a&gt; compared to &lt;a href=&quot;https://www.facebook.com/events/308706299154491/&quot;&gt;last year&apos;s&lt;/a&gt;, and thoughts about the future:&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Of course, I was much more &lt;a href=&quot;/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/&quot;&gt;prepared&lt;/a&gt; this second time than the first time. Not only have I been playing any music at all for an entire extra year, but also, I had prior knowledge of and access to most of the music that is played every year, so I could start my practice well before the event.&lt;/p&gt;
&lt;h2&gt;Costumes&lt;/h2&gt;
&lt;p&gt;Abby wanted me to dress up again. Since people enjoyed my wearing red pants last year, I wore them again this year. I was tired of the whole green thing, however, and so I wore a pink shirt and red vest to go all out on the red theme. I added a sport jacket also, one that had been too big for me my whole life till now; it turns out that my blazer that I wore last year is too small now, as my chest has noticeably expanded in the past year (probably because of weight lifting, posture changes, and playing wind instruments). I added a beret that I&apos;d never worn before.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/franklin.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby came up with her own colorful outfit.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/abby-octave-mandolin.jpg&quot; alt=&quot;Abby&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Venue&lt;/h2&gt;
&lt;p&gt;I was afraid that Swisshelm Park Community Center would be super cold again like last year, but I did bring my Handeze fingerless gloves just in case. It turned out that the place was warm (it&apos;s been a very warm &quot;winter&quot;), and so I did not have any problems feeling cold.&lt;/p&gt;
&lt;h2&gt;On stage&lt;/h2&gt;
&lt;p&gt;This year I think there were somewhat fewer musicians in the Holiday Ball Orchestra than last year. I thought this was actually a good thing. Last year there were some real problems with space and also with ensemble balance (there were a whole lot of violins last year, for example).&lt;/p&gt;
&lt;h3&gt;Instruments&lt;/h3&gt;
&lt;p&gt;I brought my modern flute, wooden keyless Irish flute, and tin whistle. Last year I had played primarily recorder, but this year I chose not to play recorder at all: the Irish flute was what I wanted to use as much as possible for this music.&lt;/p&gt;
&lt;p&gt;I also brought my melodica! I had practiced playing the Hallelujah Chorus part of the Grand March using it and was excited to make my melodica debut. I also planned to use it in some of the Christmas songs, such as &quot;Frosty the Snowman&quot;.&lt;/p&gt;
&lt;p&gt;Abby brought an &lt;a href=&quot;https://en.wikipedia.org/wiki/Octave_mandolin&quot;&gt;octave mandolin&lt;/a&gt; she had been borrowing. She started playing mandolin just this year, and octave mandolin just in the past couple of weeks, I think. This instrument is so much better suited to the music, she says, than her tamburitza she played last year.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/instruments.jpg&quot; alt=&quot;Our instruments&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Several &quot;kazumpets&quot; (kazoo trumpets) were also provided by Lynette and Jim, and passed out to whoever wanted to play them during certain songs. Abby took one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/abby-kazumpet.jpg&quot; alt=&quot;Abby with kazumpet&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Dancing&lt;/h2&gt;
&lt;p&gt;Since Abby and I have now actually done some &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;contra dancing together&lt;/a&gt;, there was a question of whether we would do any dancing. Abby and I discussed this before the event; Abby was very excited to play music on octave mandolin, and so she did not want to dance, so we did no dancing. Like I said last year: &quot;We can always dance some other time.&quot;&lt;/p&gt;
&lt;p&gt;Some of the other musicians were very excited about dancing and pre-arranged to spend one half or the other of the time dancing instead of playing music.&lt;/p&gt;
&lt;p&gt;I saw a lot of familiar faces among the dancers, thanks to having met some of them when doing French and contra dances at CMU, and others I met from non-dance contexts elsewhere in the past year in Pittsburgh. It was nice to see my friend Henry and his girlfriend Gina at the dance.&lt;/p&gt;
&lt;h2&gt;Off and running&lt;/h2&gt;
&lt;p&gt;Marlin was the caller again as usual and the evening proceeded with the Grand March and then the whole big assortment of jigs, reels, waltzes, Christmas songs, and a couple of interesting new pieces for this year.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2012/grand-march.jpg&quot; alt=&quot;Grand March&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I don&apos;t have additional interesting photos or videos to share from during the event, because I took none: after the initial Grand March, I was entirely focused just on playing music.&lt;/p&gt;
&lt;h2&gt;Overall experience&lt;/h2&gt;
&lt;p&gt;I was far less nervous than I was last year. Also, I positioned myself near, rather than deliberately far away from, a microphone, in order to be more audible. I don&apos;t actually know what I sounded like, but some dancers during intermission commented that they liked the sound of the wooden Irish flute, so I guess it must have been audible.&lt;/p&gt;
&lt;p&gt;Playing music for hours is tiring, especially when it is so fast and there are so many notes. Of course, nobody is required to play all the notes all the time. I picked and chose when to take breaks, typically alternating repeats or entire sections. And there is definitely a limit to how long I can play flutes before my mouth gives up.&lt;/p&gt;
&lt;p&gt;For the second half, a guy who had danced during the first half played a keyed Irish flute and tin whistle with us. I hadn&apos;t seen him at the two of three rehearsals I had attended, so I hadn&apos;t known someone else would be playing those instruments. As a result, I changed some things up in the second half, by playing the tin whistle sometimes when he was playing the flute, and vice versa.&lt;/p&gt;
&lt;p&gt;I did play the melodica as planned, but noticed that the intonation was poor in the lower notes, so I backed off. I&apos;ll have to fix this problem before I do more melodica playing.&lt;/p&gt;
&lt;p&gt;I chose not to force myself to &quot;achieve&quot; some of the &quot;goals&quot; I set last year, which were to do some solos and nontrivial ornamentation/improvisation. I felt that because of the natural of my musical focus all this year, I hadn&apos;t had time to devote to getting good enough to really justify taking the spotlight for some tunes.&lt;/p&gt;
&lt;p&gt;The music is still crazy fast: I am still not able to play everything quite properly at the appropriate tempo. Frustrating, but that&apos;s OK. I expect to continue to improve my technique; I&apos;m already so much better than I was last year.&lt;/p&gt;
&lt;p&gt;I very much enjoyed performing for the Holiday Ball this year. And I feel like the Holiday Ball Orchestra sounded better this year than we did last year, and some dancers remarked on this also. I think there are several reasons for this. One is that we had some people coming back for the second time (like me), much improved. Another is that there were slightly fewer people, which I think creates a tighter ensemble.&lt;/p&gt;
&lt;h2&gt;Goals for the future&lt;/h2&gt;
&lt;p&gt;Right now, I&apos;m just totally exhausted and happy to be done with music performance of any kind this year. It&apos;s been a very tough week, a very tough month, and a very tough two months in my life, with all the things that piled up on me since the end of October.&lt;/p&gt;
&lt;p&gt;Because December always ends up being so frantic for me, for next year I need to better plan what activities I pursue during this time of year. Last year, I was totally set on playing again this year in the Holiday Ball. Now, I am not sure whether I will continue for next year. It&apos;s a question of priorities, and I need to plan what I will be doing next year in December. If I do it again next year, then clearly I want to be doing some solos!&lt;/p&gt;
&lt;h2&gt;Thank yous&lt;/h2&gt;
&lt;p&gt;Again, I have to thank Lynette for organizing the music scores and putting it into booklets for everyone. Jim made the kazumpets. Donna, Allison, and Maro led the rehearsals as well as conducted and played their instruments with enthusiasm; I&apos;ve been really happy to have met them a year ago, because I&apos;ve been encountering them in other musical contexts in Pittsburgh in the past year too!&lt;/p&gt;
&lt;p&gt;We play for the dancers, and so I really appreciate it when they take note of our playing and respond to it.&lt;/p&gt;
&lt;p&gt;And none of this would happened without Abby, who got me into the whole scene in the first place. I&apos;ve met so many musicians and dancers, and tried out different instruments and musical styles and dances in the past year, thanks to Abby!&lt;/p&gt;
</content:encoded></item><item><title>CreativeMornings/Pittsburgh, the first session: Nina Barbuto on &quot;Making Learning a Party&quot;</title><link>https://franklinchen.com/blog/2012/12/14/creativemornings-pittsburgh-the-first-session-nina-barbuto/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/14/creativemornings-pittsburgh-the-first-session-nina-barbuto/</guid><pubDate>Fri, 14 Dec 2012 23:40:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning, out of curiosity, Abby and I &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.eventbrite.com/e/creativemorningspittsburgh-with-nina-barbuto-tickets-4458258772&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.eventbrite.com/e/creativemorningspittsburgh-with-nina-barbuto-tickets-4458258772&quot;&amp;gt;attended&amp;lt;/span&amp;gt; the inaugural &lt;a href=&quot;https://creativemornings.com/&quot;&gt;CreativeMornings&lt;/a&gt; talk of the new &lt;a href=&quot;https://creativemornings.com/cities/pgh&quot;&gt;Pittsburgh branch&lt;/a&gt;. Many thanks to Kate Stoltzfus for bringing this concept to Pittsburgh!&lt;/p&gt;
&lt;p&gt;Nina Barbuto spoke on &lt;a href=&quot;https://creativemornings.com/talks/nina-barbuto/1&quot;&gt;&quot;Making Learning a Party&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/creativemorningspittsburgh/8286843706&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8204/8286843706_8d9b777c20_b.jpg&quot; alt=&quot;Creative Mornings - Pittsburgh - Dec 14th 2012-13&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Nina Barbuto is someone I&apos;ve encountered in the past, at &lt;a href=&quot;https://assemblepgh.org/&quot;&gt;Assemble&lt;/a&gt;, a Pittsburgh &quot;community space for arts and technology&quot;; I was there for a Pittsburgh Geek Out Day meeting a year ago (August 10, 2011). She is very active in Pittsburgh in promoting hands-on learning opportunities, especially for children.&lt;/p&gt;
&lt;p&gt;She discussed how she likes to learn, and contrasted that with her experiences in school (she is an architect). One theme that came up was the idea that there are better ways to learn than the &quot;factory model&quot; of the 19th century. Another was that &lt;em&gt;art&lt;/em&gt; is important and should be part of &quot;21st century&quot; education, expanding &quot;STEM&quot; to &quot;STEAM&quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/creativemorningspittsburgh/8285786597&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8065/8285786597_2d79bb47ca_b.jpg&quot; alt=&quot;Creative Mornings - Pittsburgh - Dec 14th 2012-31&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I found her advocacy and description of her various local projects inspiring, and I myself think there are better environments for learning than standard schooling (I hated much of school myself), but I think the &quot;party&quot; theme of learning being &quot;fun&quot; may be too loose for serious learning. She mentioned how some of the classes offered to disadvantaged kids involved some coming and going, but without sustained participation. I think the problem of promoting learning, especially deep learning, is a difficult one. Getting someone in the door to do something at all, in the name of fun, may be useful, but I worry about how to build on that to encourage deep learning, which doesn&apos;t have to be dreary, but may not always be fun, and certainly always involves repeatedly facing challenges, with intensive mentoring.&lt;/p&gt;
&lt;p&gt;In any case, it was good to hear about what she has been doing and what her vision is, and the large audience seems to indicate that there are a lot of people in town who care enough to think about these issues.&lt;/p&gt;
&lt;h2&gt;Video of the talk&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/EZY5YdP4csQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s great that Pittsburgh now has a CreativeMornings, and Nina Barbuto kicked off the premiere of this lecture series with a thoughtful presentation. I look forward to other presentations in the future. Many thanks to the sponsors, including the location host, the Andy Warhol Museum (which I entered for the first time ever, actually).&lt;/p&gt;
</content:encoded></item><item><title>Round 5 of Pittsburgh Chess Club Tournament: psychology of losing another won game</title><link>https://franklinchen.com/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/11/round-5-of-pittsburgh-chess-club-tournament-psychology-of-losing-another-won-game/</guid><pubDate>Tue, 11 Dec 2012 23:59:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;After &lt;a href=&quot;/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/&quot;&gt;losing a won game against a difficult opponent&lt;/a&gt; last week in round 4, I was hoping to redeem myself in round 5 this week by playing well. I played against a fellow Expert whom I had never played in a tournament game before, but had played a couple of blitz games with several years ago.&lt;/p&gt;
&lt;p&gt;Unfortunately, I fell apart even more bizarrely than in last week&apos;s game: I lost another won game, and threw away a draw at the last moment. &lt;strong&gt;I have lost two games in a row in which I had a winning position&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is a report on the game and the raw psychological aspects of what happened.&lt;/p&gt;
&lt;p&gt;Why? Well, over the years, many people have come up to me confused about what happened when I fell apart mysteriously in a chess game, and I always found it hard to explain, but this time, I&apos;m giving as detailed an explanation as I can. This is not an easy exercise for me, because it inevitably means facing various demons and admitting to personal weaknesses I (still) have, but my mission since beginning to blog about chess has been to tell the &lt;em&gt;unfiltered truth&lt;/em&gt; of what happens to us human, fallible chess players. Whether you already experience this as a serious tournament player or whether you do not play chess, I think you will find the psychology fascinating.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/wallnau-chen-2012-12-11.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I did not do any preparation for the game, because I had no idea what opening he was going to play against me as White. Also, I have been very short on time for chess in the past two weeks, during which I have been occupied preparing for music gigs (I performed in one &lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;on Sunday&lt;/a&gt; and have another one coming up Friday). This among many other things I need to get done before the holidays begin (hence my light blogging lately).&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;As Black, I responded to &lt;code&gt;e4&lt;/code&gt; with the Sicilian Defense, which has been featured in many of my previous games. My opponent played the &lt;a href=&quot;https://en.wikipedia.org/wiki/Nicolas_Rossolimo&quot;&gt;Rossolimo&lt;/a&gt; variation, and I responded with an aggressive if a bit risky continuation:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkbnr/pp2pppp/2np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq -&quot; caption=&quot;Rossolimo variation&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The point is to try to hold on to the two Bishops and the center at the same time. We reached a typical position in which Black is behind in development and has a weaker Pawn structure, but does have the two Bishops:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2qk2r/p2nbppp/2pp4/4p2b/3PP3/5N1P/PP1N1PP1/R1BQR1K1 w kq -&quot; caption=&quot;Rossolimo variation&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;My opponent started going astray, conceding equality and then reaching a clearly worse position in which he was the one underdeveloped and I was about to take over the center:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/p1qnbppp/2pp2b1/4p3/Q2PP1P1/4RN1P/PP3P2/R1B2NK1 b - -&quot; caption=&quot;White worse&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I was very happy at this point, having coming out of the opening with a clear advantage.&lt;/p&gt;
&lt;h4&gt;Paradox of choice&lt;/h4&gt;
&lt;p&gt;But the stronger my position got, the more anxious and confused I got! I think this is a result of the &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less&quot;&gt;paradox of choice&lt;/a&gt;. So many good moves, so which is best? Life is easier when there is only one clearly best move, with all other candidate moves being obviously bad. To play chess well, it is necessary not only to achieve a good position, but to keep playing correctly enough to follow up and win.&lt;/p&gt;
&lt;p&gt;We reached this position that is just plain good for Black:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/p1q2ppp/2p3b1/3pbN2/Q3P1P1/4R2P/PP3P2/R1B3K1 b - -&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Now, I could have achieved a very strong position, by trading my bad Bishop on &lt;code&gt;g6&lt;/code&gt; for his Knight on &lt;code&gt;f5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But I grew &lt;em&gt;overambitious&lt;/em&gt;: I chose to maintain tension instead of simplifying, waiting for my opponent to weaken his position further, since he had with almost every move since the opening fallen into a worse position.&lt;/p&gt;
&lt;p&gt;In short, I was getting psychologically unbalanced and playing subjectively rather than objectively: I was &lt;em&gt;ignoring&lt;/em&gt; a perfectly good continuation, which I saw and evaluated, because I was &lt;em&gt;hoping&lt;/em&gt; for more.&lt;/p&gt;
&lt;h4&gt;Strange psychology leading to a winning position&lt;/h4&gt;
&lt;p&gt;What happened instead was very strange, and does not happen to me often.&lt;/p&gt;
&lt;p&gt;Step one: I played a bad move, &lt;code&gt;Rfe8&lt;/code&gt;, that could have been punished by an equalizing tactical continuation:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3r1k1/p1q2ppp/2p3b1/3pbN2/Q3P1P1/4R2P/PP3P2/R1B3K1 w - -&quot; caption=&quot;Rfe8 bad&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The moment I released my Rook&lt;/em&gt;, I immediately saw that &lt;code&gt;exd5&lt;/code&gt; would regain the Pawn, because Black cannot retake, given the tactical idea of &lt;code&gt;f4&lt;/code&gt; attacking the pinned Black Bishop.&lt;/p&gt;
&lt;p&gt;But he either missed it or wanted to try for more, and played a different move!&lt;/p&gt;
&lt;p&gt;So the psychological game continued. Now that I saw &lt;code&gt;f4&lt;/code&gt;, I played a move designed to encourage my opponent yet again to try &lt;code&gt;f4&lt;/code&gt;, except that this time it would be a bad move. And he fell for it!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/p1q2ppp/4r1b1/3pbN2/Q4PP1/4R2P/PP4K1/R1B5 b - -&quot; caption=&quot;f4??&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I calmly retreated my Bishop to &lt;code&gt;f6&lt;/code&gt;, and (correctly) evaluated that I had a won game: it was just a question of how to deliver the final blow.&lt;/p&gt;
&lt;p&gt;My opponent sensed that it was time to try to sacrifice one Pawn to develop his Bishop with &lt;code&gt;Bd2&lt;/code&gt; and hope for a draw:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/p1q2ppp/4rbb1/3p1N2/Q4PP1/4R2P/PP1B2K1/R7 b - -&quot; caption=&quot;Sacrificing b Pawn&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Mentally falling apart&lt;/h4&gt;
&lt;p&gt;Seeing this brazen move that clearly must lose, I simply fell apart psychologically.&lt;/p&gt;
&lt;p&gt;If nothing else, I could just take the free Pawn on &lt;code&gt;b2&lt;/code&gt;, and see what happens next. &lt;strong&gt;There was no way I could lose if I took the Pawn right away&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead, I started having all kinds of weird thoughts. I totally lost control of my wandering mind: I sat for &lt;strong&gt;23 minutes&lt;/strong&gt; all confused. There&apos;s a saying in chess circles: &quot;long think, wrong think&quot;, or &quot;paralysis by analysis&quot;.&lt;/p&gt;
&lt;p&gt;I should have gotten up and taken a little walk outside in the hall to get some oxygen and clear my mind. That probably would have enabled me to continue in the game objectively and calmly.&lt;/p&gt;
&lt;p&gt;Instead, after spending too much time with my mind doing &lt;em&gt;who knows what&lt;/em&gt;, I lost confidence in my ability to calculate, and looked for a way to go into a fully simplified endgame a Pawn up.&lt;/p&gt;
&lt;p&gt;Note: the fastest winning continuation was to trade pieces and push &lt;code&gt;d4&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r5k1/p1q2ppp/5b2/5P2/Q2p1P2/4B2P/PP4K1/R7 w - -&quot; caption=&quot;Black winning&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;The endgame was not even forced. My opponent could have varied anywhere along the way. But miraculously, it turned out that he did in fact play into the exact line I wanted!&lt;/p&gt;
&lt;p&gt;We reached the endgame position I had calculated all along:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4r1k1/p4ppp/5b2/3p1P2/5P2/1P2R2P/1P1B2K1/8 b - -&quot; caption=&quot;Endgame&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Rejecting the Pawn-up unlosable endgame&lt;/h4&gt;
&lt;p&gt;At this point, I &lt;em&gt;suddenly&lt;/em&gt; changed my plans. I was originally going to trade Rooks and win the &lt;code&gt;b2&lt;/code&gt; Pawn and have a Pawn-up ending in which there was no way to lose, but upon realizing that it was likely drawn, I decided to see if I could find a way to win by keeping the Rooks on the board. I knew it was going to be risky because my King was less active than his King.&lt;/p&gt;
&lt;p&gt;We reached this position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p4pp1/5b2/3K1P1p/1B1p1P2/1P1R3P/1r6/8 b - -&quot; caption=&quot;Rook came down&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Hallucinating a win&lt;/h4&gt;
&lt;p&gt;At this point, I suddenly hallucinated a variation that I thought would result in my Queening a Pawn!!&lt;/p&gt;
&lt;p&gt;It ended with my playing &lt;code&gt;c2&lt;/code&gt; and &lt;strong&gt;grabbing the Black Queen from my opponent&apos;s side of the table&lt;/strong&gt;, expecting to Queen my &lt;code&gt;c&lt;/code&gt; Pawn!!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p4pp1/5b2/2B2P1p/2K2P2/1P5P/2p5/8 w - -&quot; caption=&quot;Hallucination&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;No more win in a drawn position, about to lose the Pawn back&lt;/h4&gt;
&lt;p&gt;I was left in shock after my opponent played the obvious &lt;code&gt;Ba3&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p4pp1/5b2/5P1p/2K2P2/BP5P/2p5/8 b - -&quot; caption=&quot;No Queening&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It&apos;s not fun realizing that your mental state has deteriorated so much in the past hour that you hallucinated a win that did not exist.&lt;/p&gt;
&lt;h4&gt;Accepting that it is a draw&lt;/h4&gt;
&lt;p&gt;So I did the right thing: I spent precious time calming down, I acknowledged that it was a draw, and I spent the time (I was starting to get into time pressure, under 10 minutes left on the clock) calculating and deciding on a clear &lt;em&gt;forced&lt;/em&gt; draw, by trading off White&apos;s &lt;code&gt;f5&lt;/code&gt; Pawn in order to free my King, and I proceeded as planned:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p3bp2/6p1/5P1p/2K2P2/1P5P/2p5/2B5 w - -&quot; caption=&quot;Trying to force a draw&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;If White plays the obvious &lt;code&gt;fxg6&lt;/code&gt;, then the forced line leads to this drawn position I aimed for:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p3bp2/8/5p1p/5P2/1P1K3P/2p5/2B5 w - -&quot; caption=&quot;Obvious draw&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Getting swindled&lt;/h4&gt;
&lt;p&gt;My opponent cleverly did not play the obvious move, but left his &lt;code&gt;f5&lt;/code&gt; Pawn hanging, playing &lt;code&gt;Kd3&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/p3bp2/6p1/5P1p/5P2/1P1K3P/2p5/2B5 b - -&quot; caption=&quot;Swindle&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I call this a swindle because it is a move that is based on the hope that Black will&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;take the Pawn instead of continuing as planned with the draw variation&lt;/li&gt;
&lt;li&gt;blunder afterwards and drop all the King side Pawns&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately, that is exactly what happened.&lt;/p&gt;
&lt;p&gt;I could have just played &lt;code&gt;Kg7&lt;/code&gt; calmly in order to play &lt;code&gt;Kf6&lt;/code&gt; and &lt;em&gt;force&lt;/em&gt; the same variation I had calculated earlier for a draw.&lt;/p&gt;
&lt;p&gt;Instead, I took the Pawn, sensing that maybe I could &lt;em&gt;win&lt;/em&gt; if my opponent was the one to follow up incorrectly!&lt;/p&gt;
&lt;p&gt;But under increasing time pressure, I started playing mindlessly, and my position got weirder and weirder, even if still drawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5k2/p4p2/1b6/5p1p/2K2P2/1P5P/8/2B5 w - -&quot; caption=&quot;White making progress&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Losing the drawn position&lt;/h4&gt;
&lt;p&gt;Because of time pressure, I stopped keeping score after this position, which is still drawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/p2k1p2/1b6/5K1p/5P2/1P5P/8/2B5 b - -&quot; caption=&quot;Drawn position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;All I had to do was play &lt;code&gt;Bd8&lt;/code&gt; and White can make no more progress.&lt;/p&gt;
&lt;p&gt;But the moment I stopped keeping score was also the moment I stopped thinking about my moves and just played randomly. The rest of the game is not interesting. The final position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/p3B3/5PK1/8/1P1b3p/1k5P/8/8 b - -&quot; caption=&quot;Black resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I made a lot of bad decisions as a result of hallucinated variations and the paradox of choice.&lt;/li&gt;
&lt;li&gt;Through psychology, I lured my opponent into playing a losing move, &lt;code&gt;f4&lt;/code&gt;, that looked aggressive.&lt;/li&gt;
&lt;li&gt;Through psychology, he lured me into playing an unnecessary, greedy Pawn capture in the ending when I had already calculated the draw.&lt;/li&gt;
&lt;li&gt;Unlike in last week&apos;s game, this time I was willing, eventually, to accept the draw: I did take the time out to calculate a forced draw and play the beginning of the plan.&lt;/li&gt;
&lt;li&gt;But too many times in the game, I suddenly changed already correctly calculated plans, without care, simply because of emotion over some possibility. When you have already expended time on a continuation, there may not be enough time to reconsider a completely new continuation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Priority mismatch&lt;/h3&gt;
&lt;p&gt;Finally: I have been playing chess without my full mental faculties because of other things going on in my life; my two losses in the past two weeks display my weakened state. In fact, I played this chess game while missing a music rehearsal I could have gone to, and given that in the long run, I am committed to music as being of higher priority than chess, I played this game with an unbalanced, partially resentful mind.&lt;/p&gt;
&lt;p&gt;I had to miss the final Tuesday &lt;a href=&quot;/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/&quot;&gt;rehearsal for the Holiday Ball for Friday&lt;/a&gt;. I mentioned two weeks ago deliberately missing a Pittsburgh Chess League match game &lt;a href=&quot;/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/&quot;&gt;in order to attend the first rehearsal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When my actions are in conflict with my real priorities, something goes wrong. I now believe that as soon as I knew the schedule for the Holiday Ball rehearsals, I should have asked the tournament director for a bye for this round. I learned the schedule on November 26, so on Tuesday the 27th, when I played in &lt;a href=&quot;/blog/2012/11/27/round-3-of-pittsburgh-chess-club-tournament-the-difficult-opponent-and-revenge-of-the-bishop/&quot;&gt;round 3&lt;/a&gt;, I could have asked for a bye for round 5, just as in the last Tuesday night tournament, I asked for a &lt;a href=&quot;/blog/2012/10/02/round-4-of-pittsburgh-chess-club-tournament-on-benoni-emasculation-and-learning/&quot;&gt;bye at the start for round 4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, I am in the middle of trying to finish an online &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.coursera.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.coursera.com/&quot;&amp;gt;Coursera&amp;lt;/span&amp;gt; course right now. The final project is due Sunday.&lt;/p&gt;
&lt;p&gt;In other words, I should not play a chess tournament game if my heart is not totally in it, and I have too many other things I need to do.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I will finish out the tournament with round 6 next week. My musical activities will be winding down this weekend, and my online course, so I should be mentally free on Tuesday.&lt;/p&gt;
&lt;p&gt;Obviously, I have no chance at coming in first place in this tournament, or even second, I believe, but I would like to finish this tournament with honor, with a well-played game.&lt;/p&gt;
&lt;p&gt;Then I need to evaluate what my commitments are going to be during the time period of the next Tuesday night tournament, the annual Pittsburgh Chess Club Championship held in January-February. Because if I&apos;m going to be busy with higher-priority activities, it is probably best not to play any more at all! I have taken breaks from chess before when too busy to really enjoy it.&lt;/p&gt;
&lt;p&gt;I am definitely planning to finish out the season of the Pittsburgh Chess League, by playing in the winter and spring, because it is a lesser commitment (one Sunday a month). It is the weekly Tuesday night tournaments that are quite a big challenge to complete.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a tense chess game in which I played bizarrely at various points. I congratulate my opponent for hanging in there during a game in which he was mostly on the defensive, and pouncing when I made errors. I&apos;ve tried to explain the poor thought processes that led to my uneven play, and also place my chess experiences in context of other things in my life.&lt;/p&gt;
</content:encoded></item><item><title>RIP Charles Rosen, pianist and scholar</title><link>https://franklinchen.com/blog/2012/12/10/rip-charles-rosen/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/10/rip-charles-rosen/</guid><pubDate>Mon, 10 Dec 2012 22:07:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://yalepress.yale.edu/yupbooks/images/full13/9780300126402.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://yalepress.yale.edu/yupbooks/images/full13/9780300126402.jpg&quot;&amp;gt;[image: Charles Rosen, cover of ]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
This book was written from the conviction that understanding music does not come from memorizing an esoteric code. (&lt;a href=&quot;https://yalepress.yale.edu/yupbooks/book.asp?isbn=9780300126402&quot;&gt;Charles Rosen, &lt;em&gt;Music and Sentiment&lt;/em&gt;, 2010&lt;/a&gt;.)
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Today, I heard that the noted pianist and musical scholar &lt;a href=&quot;https://en.wikipedia.org/wiki/Charles_Rosen&quot;&gt;Charles Rosen&lt;/a&gt; &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2012/12/10/166876593/remembering-charles-rosen-a-prodigious-pianist-and-polymath&quot;&gt;died at 85 yesterday&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s.wsj.net/public/resources/images/OB-VQ187_rosen6_EV_20121210175859.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s.wsj.net/public/resources/images/OB-VQ187_rosen6_EV_20121210175859.jpg&quot;&amp;gt;[image: Charles Rosen]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I type these words while his book of this year (2012), &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.hup.harvard.edu/catalog.php?isbn=9780674047525&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.hup.harvard.edu/catalog.php?isbn=9780674047525&quot;&amp;gt;&quot;Freedom and the Arts&quot;&amp;lt;/span&amp;gt; is visible on my book shelf next to my computer: I had taken it out of the library a while back. I own copies of several of his previous books, starting with his famous [&quot;The Classical Style&quot;] which was my introduction to his thinking about music. I also own a number of his piano recordings.&lt;/p&gt;
&lt;p&gt;Put simply, &lt;strong&gt;Charles Rosen changed the entire course of my life&lt;/strong&gt;. Without him, my life would have been completely different, and I would have been a completely different person.&lt;/p&gt;
&lt;p&gt;I don&apos;t actually remember exactly how I came across Rosen&apos;s writings. Here is what I remember about the context.&lt;/p&gt;
&lt;h2&gt;Freshman year in college&lt;/h2&gt;
&lt;p&gt;I&apos;ve mentioned before that I &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;entered freshman year in college having very little musical background&lt;/a&gt;, either as a listener or as a performer, but in order to fulfill a core requirement, in my first semester took an &quot;easy&quot; music appreciation course called &quot;Piano Music of the 19th Century&quot;. I also made a new friend in my dorm during freshman week, who happened to be a big fan of Mozart and lent me some of his recordings.&lt;/p&gt;
&lt;p&gt;In any case, freshman year in college was the year when I fell in love with music all over again, having mostly ignored it after my middle school disasters in music class and band class. Because I made some new friends (from my math and science classes) who were heavily into classical music, I ended up listening to their collections and getting into it myself. Since one of them was a fan of Mozart and the other of Beethoven, it was natural that I became very familiar with music of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Classical_period_(music)&quot;&gt;Classical period&lt;/a&gt;, focused on the late 18th century.&lt;/p&gt;
&lt;h2&gt;Accidental discovery of Rosen&lt;/h2&gt;
&lt;p&gt;At some point before sophomore year, I must have seen Rosen&apos;s book &quot;The Classical Style&quot; in a local book store and browsed it and found it sufficiently engaging and approachable to buy it. I liked that he combined both readable text as well as excerpts from scores and actual music theoretic analysis. In order to understand better the analysis, of course, I had to learn some music theory, and I eventually ended up taking a two-semester &quot;non-majors&quot; course on music theory. But the book was readable even without much theoretical knowledge.&lt;/p&gt;
&lt;h2&gt;Making me think&lt;/h2&gt;
&lt;p&gt;What Rosen&apos;s book did for me was that it made me &lt;em&gt;think&lt;/em&gt; about music, and also about a lot more than music.&lt;/p&gt;
&lt;p&gt;I&apos;d had a year in college of listening to a lot of music for enjoyment, but felt I wanted to &lt;em&gt;understand&lt;/em&gt; more of what I &lt;em&gt;felt&lt;/em&gt; or &lt;em&gt;experienced&lt;/em&gt; intuitively. Rosen explained things about how the Classical era&apos;s music was very different from the Baroque that preceded it and also very different from the Romantic era&apos;s that followed it. He talked about musical forms and structures, the emergent harmonic language, as well as contemporary changes in society, in philosophy.&lt;/p&gt;
&lt;p&gt;I came away from the book with a much better understanding of various ongoing debates about composer &quot;intent&quot;, about whether some music is &quot;better&quot; or &quot;more advanced&quot; than others, about whether old music should be played on modern instruments, about culture in general. I didn&apos;t necessarily adopt Rosen&apos;s opinions about things, but enjoyed that he provided reasons for them.&lt;/p&gt;
&lt;h2&gt;Other books&lt;/h2&gt;
&lt;p&gt;Over the years, I picked up several new books by Rosen as they appeared. Here are examples of what I learned from two of them.&lt;/p&gt;
&lt;h3&gt;Frontiers of Meaning&lt;/h3&gt;
&lt;p&gt;The 1994 slim volume &lt;a href=&quot;https://www.amazon.com/Frontiers-Meaning-Charles-Rosen/dp/187108265X&quot;&gt;&quot;The Frontiers of Meaning&quot;&lt;/a&gt; was interesting because Rosen argued that music has &quot;meaning&quot; and offered his own personal story about changes in his musical taste and understanding. The big message was that if we don&apos;t understand a piece of music, we would do well &lt;em&gt;not&lt;/em&gt; to immediately dismiss it as junk or noise, but try to understand it on its own terms, and maybe even end up actually enjoying it.&lt;/p&gt;
&lt;p&gt;Rosen notes that although he found the string quartets of &lt;a href=&quot;https://en.wikipedia.org/wiki/B%C3%A9la_Bart%C3%B3k&quot;&gt;Béla Bartók&lt;/a&gt; harsh and incomprehensible at first, he came to like one of them a lot. He still never ended up liking a different one.&lt;/p&gt;
&lt;p&gt;For me, the takeaway message from the book was that if we want to enjoy life, and enjoy as much music as we can, we should open ourselves up to new possibilities.&lt;/p&gt;
&lt;h3&gt;Arnold Schönberg&lt;/h3&gt;
&lt;p&gt;Another memorable book was a &lt;a href=&quot;https://www.amazon.com/Arnold-Schoenberg-Charles-Rosen/dp/0226726436&quot;&gt;1996 book on Arnold Schönberg&lt;/a&gt; that was really fascinating in its discussion of this controversial composer and theoretician. Rosen portrayed Schönberg as a unifier of the past as well as creator of the future.&lt;/p&gt;
&lt;p&gt;As I&apos;ve &lt;a href=&quot;/blog/2012/09/25/thank-you-glenn-gould/&quot;&gt;mentioned before&lt;/a&gt;, I still do not enjoy much of Schönberg&apos;s music, but thanks to Rosen, I understand where he was coming from, and I think that is important. I also better understand why I like the music of his I like.&lt;/p&gt;
&lt;h2&gt;Recordings&lt;/h2&gt;
&lt;p&gt;Over the years, I went out of my way to obtain some rare recordings of Charles Rosen himself playing piano, such as the &lt;a href=&quot;https://www.amazon.com/Late-Piano-Sonatas-Charles-Rosen/dp/B00000291P&quot;&gt;late Beethoven piano sonatas&lt;/a&gt;, to test how his interpretations matched what I imagined they would be, from his discussions in his books. I was surprised by some interpretive decisions, and not all of them &quot;worked&quot; for me, but I felt a sense of satisfaction that here was a guy who not only thought about and wrote about music, but performed it also.&lt;/p&gt;
&lt;h2&gt;Some obituaries&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2012/12/11/arts/music/charles-rosen-pianist-polymath-and-author-dies-at-85.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2012/12/11/arts/music/charles-rosen-pianist-polymath-and-author-dies-at-85.html&quot;&amp;gt;New York Times&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.guardian.co.uk/music/2012/dec/10/charles-rosen&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.guardian.co.uk/music/2012/dec/10/charles-rosen&quot;&amp;gt;Guardian&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blogs.wsj.com/speakeasy/2012/12/10/master-of-piano-and-prose/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blogs.wsj.com/speakeasy/2012/12/10/master-of-piano-and-prose/&quot;&amp;gt;Wall Street Journal&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.artsjournal.com/slippeddisc/2012/12/death-of-a-great-musical-mind.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.artsjournal.com/slippeddisc/2012/12/death-of-a-great-musical-mind.html&quot;&amp;gt;Norman Lebrecht&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;breadth&lt;/em&gt; of Charles Rosen&apos;s interests and knowledge was one of the most appealing features of his work: he talked about music theory, piano performance, art, philosophy. I&apos;ll miss his presence as an analyst and cultural commentator.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-03-11)&lt;/h3&gt;
&lt;p&gt;An entertaining &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://standpointmag.co.uk/music-march-13-a-fusion-of-piano-and-cerebellum-norman-lebrecht-charles-rosen&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://standpointmag.co.uk/music-march-13-a-fusion-of-piano-and-cerebellum-norman-lebrecht-charles-rosen&quot;&amp;gt;article by Norman Lebrecht&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-05-22)&lt;/h3&gt;
&lt;p&gt;In light of future discussions of the influence of Charles Rosen on my thought, I felt I should mention that what he introduced me to was a &lt;a href=&quot;https://en.wikipedia.org/wiki/Modernism_%28music%29&quot;&gt;modernist&lt;/a&gt; sensibility that, while unapologetic, was also honest and not rigid or doctrinaire. I respected that, given my ambivalence about the modernist philosophy and attitude, an ambivalence I still have two decades after first reading him (I do not consider myself a modernist). As mentioned, this modernist sensibility is at odds with aspects of Romanticism, which had been my default sensibility until I started immersing myself in the music of the Classical era.&lt;/p&gt;
</content:encoded></item><item><title>Playing music on recorders at a Phipps Conservatory &quot;candlelight evening&quot;</title><link>https://franklinchen.com/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/</guid><pubDate>Sun, 09 Dec 2012 20:46:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps-2012/group-photo.jpg&quot; alt=&quot;Sam, Franklin, Annie, Helen, Mike&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps-2012/phipps-outside.jpg&quot; alt=&quot;Entrance to Phipps&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After almost two months of weekly music rehearsals, we (Annie, Helen, Mike, Sam, and I) finally performed as planned in &lt;a href=&quot;https://www.facebook.com/events/136074939878556/&quot;&gt;Phipps Conservatory&lt;/a&gt;. It was a lot of fun. We came up with a huge batch of music that we hadn&apos;t played &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;at Phipps last year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As people wandered around in the garden, sometimes they gathered to sit for a while to enjoy our music before moving on. We had our largest audiences earlier rather than later in the evening.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps-2012/audience.jpg&quot; alt=&quot;Audience at one point&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A sample photo and video, which I took while Sam, Helen, and Mike were playing in a trio, while Annie and I took a break. (Since there were five of us, we took turns playing either as a quartet or trio or as a quartet with a part doubled.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps-2012/trio.jpg&quot; alt=&quot;Trio&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;1ExrZyU5cAU&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;My full report on the event:&lt;/p&gt;
&lt;h2&gt;Several weeks of preparation&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps-2012/music-scores.jpg&quot; alt=&quot;My music score binder&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We spent something like 16 hours in rehearsal, spread out over almost two months, before we performed. We first sight read a huge amount of music, nearly half of which we ended up deciding not to play this time, and worked on what we chose. I also spent time at home working on some trickier passages in some of the music. It was a pretty big time commitment, and at one point, the week before Thanksgiving, when I was really low on time and energy because of other commitments, I was feeling overwhelmed and suggested to the group that I might bail out this year because I was too tired to make it to one of the rehearsals.&lt;/p&gt;
&lt;p&gt;But then I reconsidered, after realizing that missing one rehearsal was not the end of the world (since everyone else but Annie had missed at least one rehearsal already by then!), and that I didn&apos;t have to play all the music, but could take turns with others if needed. (In the end, we each did take turns, since as five, we never needed all five of us when playing three or four part music.) After surviving that one week, I returned to rehearsal and was &lt;a href=&quot;/blog/2012/11/19/preparing-for-december-9-recorder-performance-in-phipps-conservatory/&quot;&gt;re-energized to go through with the plan to perform again this year&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;At Phipps&lt;/h2&gt;
&lt;p&gt;We ended up playing for two hours, which was longer than the hour and a half of last year. We did have a lot more music, so that it took over an hour to run through all our music, before we took a break, and then started from the beginning again, choosing a subset of selections to repeat.&lt;/p&gt;
&lt;p&gt;As usual, I made various mistakes in performance that I simply never made in practice. I guess we all did, at one point or another. It happens. I am not as anxious about mistakes as I used to be. I&apos;m a lot better at &lt;em&gt;recovery&lt;/em&gt; from a mistake than I used to be, and I&apos;ve learned over my past year of music that recovery is far more important than never making a mistake. People can hear a little blip here, but as long as you get back on track quickly, without breaking the flow, it&apos;s not the biggest deal in the world.&lt;/p&gt;
&lt;p&gt;Since I am a lot more comfortable now with the mechanics of playing recorder, I have been focusing on contributing to ensemble unity of dynamics, articulation, etc. That&apos;s the really fun part of playing together, after moving beyond the initial focus on getting the notes.&lt;/p&gt;
&lt;p&gt;One thing nice about having an audience, and a space in which to play all out, is that I felt inspired to play as beautifully as I could, getting the harmonies clean and ringing out. I just said that I made more mistakes in performance than in practice; but it is also true that I felt that I never played recorder more beautifully than tonight in some of the pieces. A paradox, perhaps, but one I can live with.&lt;/p&gt;
&lt;p&gt;Sam&apos;s wife came along to watch us. That was really nice, because there were times when the audience was otherwise very thin.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am truly grateful to have had the opportunity to play in a little recorder ensemble again this year. Life is always kind of hectic at this time of year, but I am already looking forward to playing with the recorder gang again next year!&lt;/p&gt;
&lt;p&gt;Thank you to Annie, Helen, Mike, and Sam for having me be part of the holiday-themed music gig!&lt;/p&gt;
</content:encoded></item><item><title>My favorite Uncle Sam&apos;s sub</title><link>https://franklinchen.com/blog/2012/12/08/my-favorite-uncle-sams-sub/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/08/my-favorite-uncle-sams-sub/</guid><pubDate>Sat, 08 Dec 2012 21:24:00 GMT</pubDate><content:encoded>&lt;p&gt;Last Sunday, after a long first rehearsal for the &lt;a href=&quot;/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/&quot;&gt;Holiday Ball Orchestra&lt;/a&gt;, I was starving, and since Abby was off in Weirton performing in a &lt;a href=&quot;https://www.pittsburghmandolinsociety.org/&quot;&gt;Pittsburgh Mandolin Orchestra&lt;/a&gt;, I decided to indulge in a dinner alone at the local &lt;a href=&quot;https://www.unclesamssubs.com/&quot;&gt;Uncle Sam&apos;s Subs&lt;/a&gt; in Squirrel Hill.&lt;/p&gt;
&lt;p&gt;I&apos;ve been eating at Uncle Sam&apos;s Subs periodically since moving to Pittsburgh 15 years ago. I&apos;ve tried all the options (I ate out a lot more during my early grad school days in Pittsburgh), including, during my vegetarian phase, the really tasty Mediterranean, Vegetarian Combo, Roma Vegetable, Vegetable Florentine, and Grilled Portabella subs (see the &lt;a href=&quot;https://www.unclesamssubs.com/menu&quot;&gt;menu&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Nowadays I indulge in an Uncle Sam&apos;s sub only maybe two or three times a year, as a &lt;a href=&quot;/blog/2012/06/16/the-joy-of-eating-ice-cream-for-breakfast/&quot;&gt;&quot;cheat&quot; meal&lt;/a&gt; when I&apos;m feeling the big craving for one.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;always&lt;/em&gt; eat in, because they give you a whole bunch of fries for free when you eat in rather than take out. For me, it&apos;s all about the fries!&lt;/p&gt;
&lt;p&gt;I&apos;ve settled on the Uncle Sam&apos;s Special Steak as my usual selection these days, because it strikes a good balance of cheese steak, mushrooms, peppers, and cheese.&lt;/p&gt;
&lt;h2&gt;&quot;Before&quot; and &quot;after&quot; photos&lt;/h2&gt;
&lt;p&gt;Uncle Sam&apos;s Special steak:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/uncle-sams-subs/uneaten.jpg&quot; alt=&quot;Uncle Sam&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ate the whole thing! It took me some time:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/uncle-sams-subs/eaten.jpg&quot; alt=&quot;Finished eating&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was very satisfied afterwards.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/uncle-sams-subs/franklin.jpg&quot; alt=&quot;Full Franklin&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I totally recommend Uncle Sam&apos;s Subs if you&apos;re very hungry and need to refuel. Whether you&apos;re an omnivore or a vegetarian, check it out! Eat in for the fries. And make sure to get your metabolism up by exercising or something beforehand, because else you&apos;ll get carb coma.&lt;/p&gt;
</content:encoded></item><item><title>Round 4 of Pittsburgh Chess Club tournament: the agony of losing a won game against the difficult opponent</title><link>https://franklinchen.com/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/04/round-4-of-pittsburgh-chess-club-tournament-the-agony-of-losing-a-won-game-against-the-difficult-opponent/</guid><pubDate>Tue, 04 Dec 2012 23:23:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;After &lt;a href=&quot;/blog/2012/11/27/round-3-of-pittsburgh-chess-club-tournament-the-difficult-opponent-and-revenge-of-the-bishop/&quot;&gt;round 3 last week&lt;/a&gt; of the current Pittsburgh Chess Club Tuesday night tournament, I noted that I was going to face a difficult opponent in round 4.&lt;/p&gt;
&lt;p&gt;Well, I &lt;strong&gt;lost&lt;/strong&gt; my game against him tonight, after four hours of play (we were the last game to finish):&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/8/8/8/3K4/5p2/pkr4R/8 w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;This is the &lt;em&gt;first&lt;/em&gt; chess game I&apos;ve reported on in this blog in which I lost!&lt;/p&gt;
&lt;h2&gt;What lessons from losing?!&lt;/h2&gt;
&lt;p&gt;What makes this loss particularly agonizing is that I had an advantage for a long time in the game (and had a win at one point), and entered an endgame a solid Pawn up such that if I were playing for a draw, there would not be any way to fail, but instead I made error after error until I lost. Even worse, I actually had a drawn position just moves before I resigned.&lt;/p&gt;
&lt;p&gt;Here&apos;s what happened.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-dean-2012-12-04.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I was faced with the psychological challenge of playing a &quot;difficult opponent&quot;, which I define as someone who I have a bad score against. I had lost one game to my opponent and &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;drawn one game that I almost deserved to lose&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As White, I had the choice of playing into one of his favorite openings or avoiding it. I ended up doing something halfway: allowing his opening but choosing a different way of responding to it. I did this with the expectation of reaching a certain kind of middle game that would be solid for me as White: a Ruy Lopez kind of position.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;My opponent again tried to enter the Philidor Defense through a Pirc Defense move order. I varied with the quiet &lt;code&gt;Bd3&lt;/code&gt; variation in order to bolster my &lt;code&gt;e4&lt;/code&gt; and &lt;code&gt;d4&lt;/code&gt; center with &lt;code&gt;c3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I made some inaccuracies in the opening by not playing an early &lt;code&gt;Be3&lt;/code&gt; that would have guaranteed a safe advantage.&lt;/p&gt;
&lt;p&gt;Still, I achieved a solid position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/pp1nbppp/2pp1n2/4p2b/3PP3/2PB1N1P/PP3PP1/R1BQRNK1 b - -&quot; caption=&quot;Opening&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;Then, out of the blue, my opponent creatively embarked on a Pawn sacrifice.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/pp1nbppp/2p2n2/3P3b/3Pp3/2PB1N1P/PP3PP1/R1BQRNK1 w - -&quot; caption=&quot;Unsound sacrifice by Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The way he played it was actually completely unsound, such that if I had taken the time to find the best moves, I would have won. But it was a creative idea: it was meant to be a positional sacrifice, choosing to lose a Pawn in order to gain the advantage of the two Bishops and better development. It should not have worked, however.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/pp1n1ppp/3b4/3p3b/3P4/2P2N1P/PP3PP1/R1BQRNK1 w - -&quot; caption=&quot;White is a solid Pawn up but lost the two Bishops&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;His bluff worked, and I fell into a position in which although I was one Pawn up and had the advantage, it was not going to be trivial to actually win rather than draw.&lt;/p&gt;
&lt;p&gt;After I finished developing my pieces, I immediately traded into an endgame in which I was a Pawn up and objectively had &lt;strong&gt;no chance of losing&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3rr1k1/pp3ppp/8/8/4bNP1/2P4P/PP3P2/R3R1K1 w - -&quot; caption=&quot;Traded off&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;Here&apos;s where things got weird. When I realized that I did not have much of a chance of winning, I started dreaming up strange attacks that ended up not working at all. I started losing Pawns, my Knight ended up much worse than his Bishop (thereby justifying his positional sacrifice in the first place to get the Bishop), and I was dead lost.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/pp3p1p/2b5/6pN/6P1/2P1P2P/PP1r4/4R1K1 w - -&quot; caption=&quot;White in bad shape&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Then magically, at some point he started playing poorly, to the point at which I finally achieved a drawn position!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/8/5p2/pk6/2rK4/8/8/R7 w - -&quot; caption=&quot;Drawn position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But at that very moment, I played an incomprehensibly terrible move, and immediately after that, realized I was lost. The rest of the game was meaningless given that. I resigned when he was about to Queen a Pawn.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/8/8/8/3K4/5p2/pkr4R/8 w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Even when playing a solid, safe opening, an enterprising opponent might be able to surprise with an unsound sacrifice that blows the position up.&lt;/li&gt;
&lt;li&gt;I should have spent more time finding the refutation of the sacrificial line.&lt;/li&gt;
&lt;li&gt;Simplifying to an ending is natural when ahead in material, but was the wrong thing to do when it was possible to maintain more tension.&lt;/li&gt;
&lt;li&gt;In a drawn endgame, I got discouraged and started playing to &lt;em&gt;lose&lt;/em&gt;. Terrible.&lt;/li&gt;
&lt;li&gt;Even in a lost endgame, there are opportunities to draw; I missed the final drawing move.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Well, I now lose the lead in the tournament. I don&apos;t know yet whom I&apos;ll be playing in round 5. I have probably lost the chance to win this tournament, as a result of my loss, but I intend to play well during the final two rounds!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s always tough to lose a chess game. It&apos;s especially hard when you identify the kinds of errors you made and what you could have done differently and thought about but decided poorly.&lt;/p&gt;
</content:encoded></item><item><title>Oblivion obsession: time to start playing melodica!</title><link>https://franklinchen.com/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/02/oblivion-obsession-time-to-start-playing-melodica/</guid><pubDate>Sun, 02 Dec 2012 21:32:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;I have been obsessed for some time with Piazzolla&apos;s beautiful tango piece &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.astor-piazzolla.org/astor-piazzolla-oblivion/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.astor-piazzolla.org/astor-piazzolla-oblivion/&quot;&amp;gt;&quot;Oblivion&quot;&amp;lt;/span&amp;gt;. I was planning to perform it some time on flute, but today, by accident, I decided that I want to play it on my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.grothmusic.com/p-4654-hohner-s32-student-32-key-melodica.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.grothmusic.com/p-4654-hohner-s32-student-32-key-melodica.aspx&quot;&amp;gt;melodica&amp;lt;/span&amp;gt; instead!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/hohner-student-32-melodica.jpg&quot; alt=&quot;Hohner Student 32 Melodica&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;How melodica came into the picture&lt;/h2&gt;
&lt;p&gt;This afternoon was the first rehearsal of the &lt;a href=&quot;/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/&quot;&gt;&quot;Holiday Ball Orchestra&quot;&lt;/a&gt;. (Today was also round 4 of the Pittsburgh Chess League team matches, but as I did once before for round 1, I &lt;a href=&quot;/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;prioritized music over chess&lt;/a&gt; and told the team I could not play.)&lt;/p&gt;
&lt;p&gt;During the rehearsal, I played both flute and Irish flute, depending on the key. Afterward, while socializing, I happened to ask about the ukuleles that some people had. I mentioned that I still hadn&apos;t gotten around to learning ukulele, &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;despite having intended to&lt;/a&gt; and bought a soprano a long while back. I just found it very hard to get started with my first string instrument, and other things came up. I joked about the other instruments I have that I don&apos;t play, including my &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;melodica&lt;/a&gt;. Lynette said in all seriousness that I was welcome to play it at the Holiday Ball.
So after I got home, I pulled out the melodica.&lt;/p&gt;
&lt;h2&gt;What is the melodica good for?&lt;/h2&gt;
&lt;p&gt;It turns out that I don&apos;t think the melodica works well at all for the Holiday Ball music, actually. The instrument is not best at fast runs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But&lt;/strong&gt;, since I had the instrument out: I decided to try playing it &lt;em&gt;in place of flute&lt;/em&gt; for some music I&apos;ve been working on, such as tango and bossa nova. And I discovered that &lt;em&gt;melodica works great&lt;/em&gt; for these kinds of music! Then one thing led to another, and I was searching for covers of various songs on melodica on YouTube, and found quite a lot of cool performances by people.&lt;/p&gt;
&lt;p&gt;So now I&apos;m completely serious about preparing to use my melodica in actual musical performances. Frankly, a lot of music I&apos;ve been playing on flute sounds better with a darker, reeded instrument such as the melodica. For example, I&apos;ve been playing jazzy bossa nova that I think really works best with a saxophone, but I don&apos;t (yet!) play saxophone. The melodica works well as a substitute.&lt;/p&gt;
&lt;p&gt;In tango, of course, a bandoneón is the traditional instrument, and accordions are commonly used instead. Here, again, the melodica is great, for the melody line anyway.&lt;/p&gt;
&lt;p&gt;Finally, other music that involves accordions or harmonicas work great with melodica as well.&lt;/p&gt;
&lt;h2&gt;Piazzolla&apos;s Oblivion&lt;/h2&gt;
&lt;p&gt;Since I am confessedly obsessed with &quot;Oblivion&quot;, here are some performances I found moving or otherwise useful.&lt;/p&gt;
&lt;h3&gt;Flute/guitar&lt;/h3&gt;
&lt;p&gt;Here&apos;s Cavatina Duo on flute and guitar:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;sZD7aGqmO6w&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Melodica with chamber group&lt;/h3&gt;
&lt;p&gt;Here is someone playing melodica:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;fG0TcCFUrBQ&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Melodica and piano (discovered 2013-08-22)&lt;/h3&gt;
&lt;p&gt;A Japanese duo:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/AAP4GB8T8DI&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Accordion&lt;/h3&gt;
&lt;p&gt;Here&apos;s my friend Henry playing his solo arrangement for accordion:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;FrOHDEMOhkc&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Bandoneón and piano&lt;/h3&gt;
&lt;p&gt;Julian Rowlands and Ivo de Greef:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;sj-JUBIGKnE&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Violin and orchestra&lt;/h3&gt;
&lt;p&gt;Vesko Eschkenazy:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;kP6Vgm4k4xc&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Voice&lt;/h3&gt;
&lt;p&gt;Wow. Wow. Milva singing French lyrics, Piazzolla himself on bandoneón!&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;lzC1kKZGxBg&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Recorder quartet (discovered 2013-08-22)&lt;/h3&gt;
&lt;p&gt;A Japanese recorder quartet, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.geocities.jp/sekishirecorderquartet/english.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.geocities.jp/sekishirecorderquartet/english.htm&quot;&amp;gt;Sekishi Recorder Quartet&amp;lt;/span&amp;gt;. Very nice!&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/3PmaOyZNWo8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Tango dancers&lt;/h3&gt;
&lt;p&gt;Finally, here are Daniela Pucci and Luis Bianchi dancing to the piece:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;RdU3eORpNhY&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;By the way, here is Daniela Pucci explaining why she gave up her MIT academic faculty career for tango:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;7BbAt1gnkBE&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;If you are a tango fan, make sure to read Daniel Pucci&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thedelicatestrength.com/?p=1522&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thedelicatestrength.com/?p=1522&quot;&amp;gt;great article on tango dance connection&amp;lt;/span&amp;gt;. It is consonant with my own dance philosophy as well as music philosophy!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;By accident, I have rediscovered the melodica, and now intend to work on it as a serious melodic instrument!&lt;/p&gt;
&lt;h3&gt;(Update of 2014-10-23)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/09/13/finally-playing-piazzollas-oblivion-on-flute/&quot;&gt;I put up more videos&lt;/a&gt; I found of &quot;Oblivion&quot; while thinking back to 2013 when I did play it on flute after all.&lt;/p&gt;
</content:encoded></item><item><title>A short note on the fallibility of crowdsourcing: reCAPTCHA and long s</title><link>https://franklinchen.com/blog/2012/12/01/a-short-note-on-the-fallibility-of-crowdsourcing-recaptcha-and-long-s/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/12/01/a-short-note-on-the-fallibility-of-crowdsourcing-recaptcha-and-long-s/</guid><pubDate>Sat, 01 Dec 2012 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Periodically I encounter a &lt;a href=&quot;https://en.wikipedia.org/wiki/ReCAPTCHA&quot;&gt;reCAPTCHA&lt;/a&gt; whose answer is &lt;em&gt;obvious&lt;/em&gt; to anyone who has read old texts in English, but is easily misread by anyone who has not. When I enter the &lt;em&gt;correct&lt;/em&gt;, intended word, my answer is always rejected as incorrect. This suggests that most people believe the wrong answer. So this is just one example of how &lt;a href=&quot;https://en.wikipedia.org/wiki/Crowdsourcing&quot;&gt;crowdsourcing&lt;/a&gt; can easily fail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recaptcha-s-f.png&quot; alt=&quot;reCAPTCHA with long s&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The letter in the word that looks like an &quot;f&quot; in &quot;Composition&quot; is in fact an &quot;s&quot;. It is not a typo. It is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Long_s&quot;&gt;long s&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/b/b8/Milton_paradise.jpg&quot; alt=&quot;Paradise Lost&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Language evolution&lt;/h2&gt;
&lt;p&gt;An amusing thought occurred to me: thinking of language evolution as crowdsourcing gone &quot;wrong&quot;. (I use the scare quotes because I reject linguistic &lt;a href=&quot;https://en.wikipedia.org/wiki/Linguistic_prescription&quot;&gt;prescriptivism&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Whether it&apos;s the evolution of Latin into the Romance languages such as French, Spanish, and Italian, or the evolution of English from pre-Shakespeare to the present, language changes because it is a collective crowdsourced artifact.&lt;/p&gt;
&lt;p&gt;For example, it is well known that the word &quot;orange&quot; in English came about because of a &lt;a href=&quot;https://www.phrases.org.uk/meanings/a-norange.html&quot;&gt;confusion starting from France that became ingrained&lt;/a&gt;: Spanish still has &quot;naranja&quot;, from the original Sanskrit word that had an initial &quot;n&quot; in it. One could say that we should undo that crowdsourced mistake and call the fruit a &quot;norange&quot; or something, but I think most of us would agree that this mistake is not a big one.&lt;/p&gt;
&lt;p&gt;There are grammar &quot;mistakes&quot; in English that are still controversial today, because they reflect crowdsourced language &quot;confusions&quot; that rub some people the wrong way. In my mind, the biggest one in English is the &lt;a href=&quot;https://en.wikipedia.org/wiki/English_personal_pronouns#Singular_they&quot;&gt;singular &lt;em&gt;they&lt;/em&gt;&lt;/a&gt;: use of the third person plural to denote a third person singular of indeterminate gender: &quot;they&quot; in place of &quot;he&quot; or &quot;she&quot;, e.g., &quot;that person didn&apos;t do &lt;strong&gt;their&lt;/strong&gt; homework&quot;, instead of &quot;that person didn&apos;t do &lt;strong&gt;his&lt;/strong&gt; homework&quot; (which is what I was taught in school as being the correct construction).&lt;/p&gt;
&lt;p&gt;Who&apos;s right? Who&apos;s wrong? Well, language changes. And it&apos;s still happening. Our language, wherever it is we come from, is different from that of our grandparents&apos;. I even knew a European Portuguese woman who told of her grandmother using entire pronouns and verb conjugations that have been &lt;em&gt;obsolete&lt;/em&gt; now for some time, and don&apos;t appear in standard textbooks! The European Portuguese &lt;a href=&quot;https://en.wikipedia.org/wiki/T%E2%80%93V_distinction#Portuguese&quot;&gt;second person familiar plural&lt;/a&gt; has disappeared, and the second person familiar singular was long ago removed from Brazilian Portuguese.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am not a disbeliever in crowdsourcing. If I were, I would not be a happy user of &lt;a href=&quot;https://www.wikipedia.org/&quot;&gt;Wikipedia&lt;/a&gt;! We just have to watch out and be aware of what might be lost or confused in the process. Meanwhile, some kinds of change are hard to classify as being objectively wrong.&lt;/p&gt;
</content:encoded></item><item><title>A short note on the use of chess opening books</title><link>https://franklinchen.com/blog/2012/11/28/a-short-note-on-the-use-of-chess-opening-books/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/28/a-short-note-on-the-use-of-chess-opening-books/</guid><pubDate>Wed, 28 Nov 2012 22:45:00 GMT</pubDate><content:encoded>&lt;p&gt;I just reported on a &lt;a href=&quot;/blog/2012/11/27/round-3-of-pittsburgh-chess-club-tournament-the-difficult-opponent-and-revenge-of-the-bishop/&quot;&gt;chess game I played that featured the Veresov Opening&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ecx.images-amazon.com/images/I/41iLDZTIs%2BL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg&quot; alt=&quot;Nigel Davies: The Veresov&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Back when I was playing the Veresov as White, I studied it using &lt;a href=&quot;https://en.wikipedia.org/wiki/Nigel_Davies_(chess_player)&quot;&gt;GM Nigel Davies&apos;&lt;/a&gt; book from 2003, &lt;a href=&quot;https://www.amazon.com/Veresov-Surprise-Your-Oponents-Tricky/dp/1857443357&quot;&gt;&quot;The Veresov&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On page 48 of the book, Davies claimed that &lt;code&gt;f5&lt;/code&gt; &quot;is quite weakening&quot; and recommended against it. The computer engines disagree. I will continue, as Black, to happily play &lt;code&gt;f5&lt;/code&gt; against anyone who wants to play White in the Veresov Gambit against me.&lt;/p&gt;
&lt;p&gt;At some point, I will write about the question of human expertise and judgment versus that of computers. Let&apos;s just say that using computers, I have in the past come up with significant improvements or alternative ideas over the advice in chess books, and used these novelties in games I have played; however, I also believe that the wisdom and creativity of human experts, such as Davies, will never be completely replaced by computers.&lt;/p&gt;
&lt;h2&gt;Chess Improver blog&lt;/h2&gt;
&lt;p&gt;By the way, I really recommend the &lt;a href=&quot;/writing/chess-improver/&quot;&gt;&quot;Chess Improver&quot; blog&lt;/a&gt; that Nigel Davies and others write for. This blog is a direct inspiration for my having started to write about my chess games and experiences.&lt;/p&gt;
&lt;p&gt;And go &lt;a href=&quot;https://www.facebook.com/nigel.davies1&quot;&gt;friend him on Facebook&lt;/a&gt; if you are interested in engaging in discussions of the posts on his blog.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you want to really understand a chess position, use a chess computer engine and explore. Don&apos;t rely entirely on books.&lt;/p&gt;
</content:encoded></item><item><title>Round 3 of Pittsburgh Chess Club tournament: the difficult opponent, and revenge of the Bishop</title><link>https://franklinchen.com/blog/2012/11/27/round-3-of-pittsburgh-chess-club-tournament-the-difficult-opponent-and-revenge-of-the-bishop/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/27/round-3-of-pittsburgh-chess-club-tournament-the-difficult-opponent-and-revenge-of-the-bishop/</guid><pubDate>Tue, 27 Nov 2012 23:35:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;Last week, I discussed the fact that my round 2 opponent faced me having &lt;a href=&quot;/blog/2012/11/20/round-2-of-pittsburgh-chess-club-tournament-very-short-game-with-a-note-on-psychology/&quot;&gt;lost eleven straight games against me&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Fear and trembling&lt;/h2&gt;
&lt;p&gt;This week in round 3, I was somewhat in his position, against my opponent. Although I am higher rated than my opponent, who is also an Expert, I had a terrible record against him when we played twice almost two years ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In our first game, with White, I had a totally won position but repeatedly failed to finish him off, and even went into an end game two Pawns up that was completely winning, but ended up dropping one and drawing. It was one of the most traumatic games in my entire life.&lt;/li&gt;
&lt;li&gt;In our second game, with White again, I was so mentally unsettled that on my &lt;em&gt;fourth&lt;/em&gt; move in the opening, I inexplicably played a move I had never played before (instead of my usual continuation), then after my poor &lt;em&gt;fifth&lt;/em&gt; move had a terrible position that I never recovered from, and I lost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore, some months before playing him, I had played his &lt;em&gt;son&lt;/em&gt; as Black, and lost a game in which I had a totally won position.&lt;/p&gt;
&lt;p&gt;So there was a lot of emotional baggage for me going into tonight&apos;s game.&lt;/p&gt;
&lt;h2&gt;Today&apos;s lessons&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/2r3k1/b6R/p3N3/1p1p1P2/6P1/PP2pK2/5r1R w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In a very long and tough game (almost four hours), I managed to avoid psychologically falling apart, and came through.&lt;/li&gt;
&lt;li&gt;As opposed to &lt;a href=&quot;/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/&quot;&gt;my game from round 1&lt;/a&gt;, this game saw the revenge of the Bishop versus the Knight.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/booth-j-chen-2012-11-27.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I had never had Black against my opponent before. I had some memories of having casually seen him play both &lt;code&gt;d4&lt;/code&gt; and &lt;code&gt;e4&lt;/code&gt; as his opening moves.&lt;/p&gt;
&lt;p&gt;Since I have been very busy, I did not really do any opening preparation for this game, other than quickly reviewing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Richter-Veresov_Attack&quot;&gt;Veresov Opening&lt;/a&gt; that his son had used against me two years ago.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;Ironically, if I had actually studied the Veresov Opening more for this game, it would have helped a lot, because my opponent actually did play the Veresov against me!! We played &lt;em&gt;exactly&lt;/em&gt; the first nine moves that I had played with his son two years ago, the Veresov Gambit, in which White sacrifices a Pawn in hope that Black&apos;s weakened King side will allow White to eventually break through to the King.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkb1r/pppn4/4p2p/5pp1/3Pp3/6B1/PPPN1PPP/R2QKB1R w KQkq -&quot; caption=&quot;After f5 in the Veresov Gambit&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black&apos;s task is conceptually very simple: hold onto the Pawn, protect the King, and eventually catch up on development, especially, the Queen Bishop that is temporarily quite blocked in.&lt;/p&gt;
&lt;p&gt;I prefer Black&apos;s chances. I used to play the Veresov as White, actually, many years ago, but nowadays I only play it for Black.&lt;/p&gt;
&lt;p&gt;Since a prominent book on the Veresov Opening advised against the line I choose to play for Black, here is &lt;a href=&quot;/blog/2012/11/28/a-short-note-on-the-use-of-chess-opening-books/&quot;&gt;a note on chess opening books&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Opponent avoided his son&apos;s mistake&lt;/h4&gt;
&lt;p&gt;At move 10, my opponent deviated from the poor move that his son had played against me two years ago. That move had led to a much better game for me:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1b1r/pppnk3/4p2p/5ppQ/3Pp3/6B1/PPPN1PPP/R3KB1R w KQ -&quot; caption=&quot;Qh5+ did not help&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;Important position&lt;/h4&gt;
&lt;p&gt;In the current game, the following important position was reached:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkb1r/ppp5/4pn1p/4Bpp1/2BPp3/8/PPPN1PPP/R2QK2R b KQkq -&quot; caption=&quot;Veresov Gambit position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Objectively, White has compensation for the Pawn, but Black is fairly safe so far.&lt;/p&gt;
&lt;h4&gt;Cowardice or mind-reading?&lt;/h4&gt;
&lt;p&gt;I had not studied this position ahead of time, alas, so I started going astray somewhat. We reached this equal position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/ppp3b1/4pn1p/4Bpp1/2BP4/4pP2/PPPN2PP/R2QK2R w KQkq -&quot; caption=&quot;Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;My intention all along had been to follow up logically, protecting the &lt;code&gt;e3&lt;/code&gt; Pawn by playing &lt;code&gt;f4&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/ppp3b1/4pn1p/4B1p1/2BP1p2/1N2pP2/PPP3PP/R2QK2R w KQkq -&quot; caption=&quot;Black should have played f4&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;This would have maintained equality.&lt;/p&gt;
&lt;p&gt;Instead, I &lt;em&gt;panicked&lt;/em&gt;. I decided I wanted to give back the Pawn for a worse position, in order to &lt;em&gt;guarantee&lt;/em&gt; that my King was safe.&lt;/p&gt;
&lt;p&gt;I&apos;ve made this kind of error before, so it&apos;s disconcerting to report that I did it again. Two months ago I had another game as Black in which &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;I chickened out of a logical Pawn advance in order to &quot;protect&quot; my King&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, we reached this position, in which White could and should have regained his Pawn:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq3r/ppp2kb1/4p2p/3nBpp1/2BP4/1N1QpP2/PPP3PP/R3K2R w KQ -&quot; caption=&quot;White can win the e3 Pawn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My opponent refused to play the obvious and best move to regain the Pawn.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Actually, I had gone into this line partially expecting that he might not feel like regaining the Pawn. He is an aggressive player and is more likely to try to continue pressure than to quickly regain sacrificed material. So it&apos;s not actually clear to me whether my &quot;cowardice&quot; was actually a psychologically valid gamble. I do know that I&apos;m not comfortable playing in this subjective way: if I were playing this opening variation again, &lt;em&gt;against anybody&lt;/em&gt;, I would choose the objectively best moves that I knew.&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;As a result of White keeping the position blocked, the game remained equal, and we reached this important position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq3r/ppp2kb1/4p2p/3nBpp1/2BP4/1N1QpP2/PPP3PP/R3K2R w KQ -&quot; caption=&quot;White has compensation&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;We both started playing inaccurately; for example, at this position, I could have pressed for an advantage by beginning a Queen side attack properly with &lt;code&gt;a5&lt;/code&gt; to drive back White&apos;s Knight and then &lt;code&gt;c6&lt;/code&gt; and &lt;code&gt;b5&lt;/code&gt; to attack White&apos;s Bishop:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqr3/ppp3k1/4p2p/3n1pp1/2BP4/1N1QpP2/PPP3PP/1K1R3R b - -&quot; caption=&quot;Black could attack&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Instead, I messed up my move order and went for White&apos;s Bishop first instead, weakening my &lt;code&gt;c5&lt;/code&gt; square for White&apos;s Knight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqr3/p5k1/2p4p/1p1p1pp1/3P4/1N1QpPP1/PPP4P/1K1R3R w - -&quot; caption=&quot;White has c5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black is a Pawn up, but the Bishop is &lt;em&gt;extremely bad&lt;/em&gt;. You might wonder how this game illustrates the &quot;revenge of the Bishop&quot;! You&apos;ll see how this accidentally happened.&lt;/p&gt;
&lt;p&gt;After some more moves (many non-optimal), we reached a position in which I (correctly) felt that Black was in some trouble, and so I decided to try to bail out into an ending by trading Queens:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b1r3/6k1/2p4p/pp1p1p2/3PqP2/1N1Qp1P1/PPP4R/1K1R4 w - -&quot; caption=&quot;Black offers Queen trade&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The ending&lt;/h3&gt;
&lt;p&gt;White made the error of allowing the Queen trade, after which, magically, Black&apos;s Bishop escaped its prison:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r7/6k1/b1p1r2p/p2pNp2/1p1P1P2/4p1P1/PPP4R/1K5R w - -&quot; caption=&quot;Knight vs. Bishop&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Now, White&apos;s Knight is extremely powerful, so objectively, the game is probably a draw, since Black&apos;s extra Pawn on &lt;code&gt;e3&lt;/code&gt; is not going anywhere.&lt;/p&gt;
&lt;p&gt;But White started slipping, in an attempt to break through on the King side.&lt;/p&gt;
&lt;h4&gt;Sacrificing a Pawn for open lines for the Bishop and Rook&lt;/h4&gt;
&lt;p&gt;At a critical position, in which White was trying to win my unprotected &lt;code&gt;f5&lt;/code&gt; Pawn, I offered a sacrifice in order to break open the &lt;code&gt;c&lt;/code&gt; file:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;2r5/6k1/b3r2p/p1ppNp1R/1p1P1P2/4p1P1/PPP5/2K4R w - -&quot; caption=&quot;Black sacrificing a Pawn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White faltered, accepting the sacrifice, regaining the originally gambited Pawn, but this was a losing plan.&lt;/p&gt;
&lt;h4&gt;Move order subtlety again&lt;/h4&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/6k1/b3r2p/p1rpNR2/1p3P2/4p1P1/PPP5/2K4R b - -&quot; caption=&quot;Black to play and win&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;In this critical position, I should have played &lt;code&gt;Re7&lt;/code&gt; winning immediately. I used a different move order in my plan, but White should have been able to defend.&lt;/p&gt;
&lt;p&gt;Finally, I made another move order error, playing &lt;code&gt;e2&lt;/code&gt; first and then &lt;code&gt;Re7&lt;/code&gt;, instead of vice versa, that also should have resulted in a draw. In this critical position, White has an amazing resource to draw (:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/4r1k1/b6p/p1r1NR2/1p1p1P2/6P1/PPPKp3/7R w - -&quot; caption=&quot;White can draw&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The annotations also contain analysis showing that if Black had changed his move order, this drawing resource would have amazingly not been possible.&lt;/p&gt;
&lt;h4&gt;Giving up&lt;/h4&gt;
&lt;p&gt;Instead of finding the drawing resource, White spent twenty minutes thinking and finding nothing, and playing an obviously losing move:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/2r3k1/b6p/p1r1N2R/1p1p1P2/6P1/PPPKp3/7R w - -&quot; caption=&quot;White is lost&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White finally resigned:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/2r3k1/b6R/p3N3/1p1p1P2/6P1/PP2pK2/5r1R w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It would have been better to do detailed study on an opening line that is risky.&lt;/li&gt;
&lt;li&gt;Regain a sacrificed Pawn at the right time, but not at the wrong time.&lt;/li&gt;
&lt;li&gt;Don&apos;t make your own Bishop bad and your opponent&apos;s Knight good.&lt;/li&gt;
&lt;li&gt;If your Bishop is bad, try to make it good and maybe it will come through for you.&lt;/li&gt;
&lt;li&gt;Many critical moments involve choosing to trade a piece or not to trade it, because the fundamental character of the game often changes.&lt;/li&gt;
&lt;li&gt;As is usually the case when I am playing against someone who is not far weaker or stronger than me, the game was very tense and had many psychological aspects to the struggle.&lt;/li&gt;
&lt;li&gt;A game as long and as complex as this one has many critical points at which someone could have seized the moment in order to gain a large advantage or win, or could have seized the moment in order to survive after an inaccuracy by the opponent.&lt;/li&gt;
&lt;li&gt;I am fairly pleased that I overcame my bad record against my opponent and finally won a game from him.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week for round 4 I presume I will get to play White, against another fellow Expert. It turns out I will be playing against the same guy I struggled for a draw with in the &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;final round of the last Tuesday night tournament&lt;/a&gt;. Obviously, I would like to improve on that experience. I have the same choice as White as I had then: do I play into his favorite opening, or play something else? And I&apos;m sure he&apos;s thinking the same thing now too.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In a hard-fault game with some high psychological stakes, because of my poor record against my opponent, I managed to come through and win. I&apos;ve tried to objective in my analysis of the game, and show how there were missed opportunities on both sides. And I hope to continue learning from my mistakes.&lt;/p&gt;
</content:encoded></item><item><title>Dan Possumato and friends playing Irish, Scottish, French music</title><link>https://franklinchen.com/blog/2012/11/25/dan-possumato-and-friends-playing-irish-scottish-french-music/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/25/dan-possumato-and-friends-playing-irish-scottish-french-music/</guid><pubDate>Sun, 25 Nov 2012 21:42:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/dan-possumato/flyer.jpg&quot; alt=&quot;World Kaleidoscope Flyer&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby and I checked out a musical performance at the Carnegie Library of Pittsburgh, main branch. They have a regular Sunday afternoon &quot;World Kaleidoscope&quot; series featuring world sounds from local musicians: two months ago I reported on some delightful &lt;a href=&quot;/blog/2012/09/23/living-appalachian-music-of-southwestern-pennsylvania/&quot;&gt;local Appalachian music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.carnegielibrary.org/events/details.cfm?event_id=69116&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.carnegielibrary.org/events/details.cfm?event_id=69116&quot;&amp;gt;Today&apos;s performance&amp;lt;/span&amp;gt; was by &lt;a href=&quot;https://www.danpossumato.com&quot;&gt;Dan Possumato&lt;/a&gt; and friends, featuring mostly Irish music, with Dan on button accordion.&lt;/p&gt;
&lt;p&gt;We had a good time. Among the selections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scottish music&lt;/li&gt;
&lt;li&gt;Irish jigs and reels&lt;/li&gt;
&lt;li&gt;Irish waltz &quot;Planxty Irwin&quot; that Abby and I danced to&lt;/li&gt;
&lt;li&gt;a French &lt;a href=&quot;https://fr.wikipedia.org/wiki/Hanter-dro&quot;&gt;hanter dro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dan-possumato/back.jpg&quot; alt=&quot;View from back&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dan-possumato/right.jpg&quot; alt=&quot;View from right&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/dan-possumato/dan-possumato.jpg&quot; alt=&quot;Dan Possumato&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Preparing to play Irish flute in the Holiday Ball</title><link>https://franklinchen.com/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/24/preparing-to-play-irish-flute-in-the-holiday-ball/</guid><pubDate>Sat, 24 Nov 2012 20:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://pittsburghcontra.org/wp-content/uploads/2011/12/contra_header21.png&quot; alt=&quot;Pittsburgh Contras and Squares&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A very important event for me last year was joining Abby in playing music at the annual &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt; Holiday Ball at the Swisshelm Park Community Center as part of the &quot;Holiday Ball Orchestra&quot;.&lt;/p&gt;
&lt;p&gt;Today I started to prepare to play music for the Holiday Ball (Friday, December 14) again: I have three weeks to practice.&lt;/p&gt;
&lt;p&gt;What progress have I made in the past year on the &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;goals I listed after last year&apos;s event&lt;/a&gt;?&lt;/p&gt;
&lt;h2&gt;Improvement at instruments&lt;/h2&gt;
&lt;p&gt;Last year, I wrote: &quot;I want to be much better at all the instruments I would play in it (recorder, flute, tin whistle)&quot;.&lt;/p&gt;
&lt;p&gt;My status this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;m better at &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I&apos;m much better at &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I&apos;ve only barely worked on &lt;a href=&quot;/categories/tin-whistle/&quot;&gt;tin whistle&lt;/a&gt;, but am automatically better at it because of getting better at other instruments.&lt;/li&gt;
&lt;li&gt;I unexpectedly got an &lt;a href=&quot;/categories/irish-flute/&quot;&gt;Irish flute&lt;/a&gt;, which I have mostly been playing for &lt;a href=&quot;/categories/french-dance/&quot;&gt;French dance&lt;/a&gt;, but which &lt;strong&gt;I intend to be my main instrument for the Holiday Ball&lt;/strong&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From a sound and style point of view, the Irish flute is clearly the best of my instruments to use for the Holiday Ball. So I read through my copies of the Holiday Ball music (lots of jigs, reels, waltzes) tonight at speed, to see where I stand.&lt;/p&gt;
&lt;p&gt;Last year, I could play (on any instrument) barely any of the music at speed, even on my best instrument at the time, which was soprano recorder. I was reduced to sitting out some tunes or playing just a single note each measure, when I otherwise would have been unable to continue.&lt;/p&gt;
&lt;p&gt;Today, I found that I could get through most of the selections OK at speed, but somewhat sloppily and inaccurately. I would &lt;em&gt;not&lt;/em&gt; be happy to have to perform this music at speed tonight; I would rather sit out or simplify rather than try to play something beyond me. But I have three weeks to improve significantly, and I believe I can improve enough that when the time comes, I won&apos;t be sitting out most of the tunes the way I kind of did last year.&lt;/p&gt;
&lt;p&gt;Since the fingering of the tin whistle is the same as for my keyless Irish flute, I can also choose to use the tin whistle where I feel appropriate.&lt;/p&gt;
&lt;h2&gt;Microphone&lt;/h2&gt;
&lt;p&gt;Last year, I wrote: &quot;I want to be proficient and confident enough to sit by a microphone&quot;.&lt;/p&gt;
&lt;p&gt;The idea of being in the foreground is still a bit daunting to me, but I think after I get in some good practice over the next week or so, I&apos;ll feel confident about not just being in the background the way I was last year. I do think it would be nice to have an audible Irish flute in our performance for the dancers.&lt;/p&gt;
&lt;h2&gt;Solos&lt;/h2&gt;
&lt;p&gt;Last year, I wrote: &quot;I want to do some solos, with stylistically appropriate improvisations&quot;.&lt;/p&gt;
&lt;p&gt;Even scarier. I&apos;ve been working through &lt;a href=&quot;/blog/_posts/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/&quot;&gt;Grey Larsen&apos;s book&lt;/a&gt;, which is amazingly detailed and good, but as Irish music has &lt;em&gt;not&lt;/em&gt; at all been my focus during this year of music for me, I&apos;m nowhere at the level of passing for a traditional Irish musician. Still, there is time to work up a sound basic practical level of ornamentation, I think.&lt;/p&gt;
&lt;p&gt;I&apos;ll have to evaluate, after a week or two, what I feel comfortable doing on stage. The basic rule is: better to play an melody simply and beautifully, unornamented, rather than do something badly and in poor taste and technique!&lt;/p&gt;
&lt;h2&gt;Dance&lt;/h2&gt;
&lt;p&gt;Last year, I wrote: &quot;Maybe I should learn some of the dances and perform some too&quot;.&lt;/p&gt;
&lt;p&gt;It turns out that in fact, I did learn some &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;contra dance&lt;/a&gt;, so depending on how Abby would like to split up playing music and dancing, I would be, unlike last year, totally up for participating as a dancer as well as a musician.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a lot of fun playing music at the Holiday Ball last year and hope to enjoy it again, and this time with a higher level of musicality and a higher level of contribution.&lt;/p&gt;
&lt;p&gt;If you&apos;re in the Pittsburgh area and like contra dancing, make sure to put Friday, December 14 on your calendar already, and come to the Holiday Ball!&lt;/p&gt;
</content:encoded></item><item><title>Thanking the best of all possible worlds</title><link>https://franklinchen.com/blog/2012/11/22/thanking-the-best-of-all-possible-worlds/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/22/thanking-the-best-of-all-possible-worlds/</guid><pubDate>Thu, 22 Nov 2012 21:55:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy Thanksgiving, everyone!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://3.bp.blogspot.com/-Lc7Oc2PreKI/T3U0A6pSPBI/AAAAAAAABxY/iTXcrFFn1sQ/s1600/tumblr_kx61vvQHfG1qz82gvo1_500.jpg&quot; alt=&quot;Oppenheimer quote&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today, on a sunny Thanksgiving, I surprised myself by spontaneously deciding to thank this world, and go as far as to call it &lt;a href=&quot;https://en.wikipedia.org/wiki/Best_of_all_possible_worlds&quot;&gt;&lt;strong&gt;the best of all possible worlds&lt;/strong&gt;&lt;/a&gt;. I&apos;m still not entirely sure what I mean by that, but somehow, I &quot;believe&quot; it; more precisely, it&apos;s an &lt;em&gt;attitude&lt;/em&gt; I now have that I have never really had in my life up till now. Even &lt;a href=&quot;/blog/2011/11/23/every-day-is-thanksgiving/&quot;&gt;a year ago&lt;/a&gt;, I would have thought it silly to adopt such an attitude.&lt;/p&gt;
&lt;p&gt;A friend of mine asked, &quot;Dr. Pangloss?&quot;&lt;/p&gt;
&lt;p&gt;In other words, am I being a fool?&lt;/p&gt;
&lt;h2&gt;Being Dr. Pangloss?&lt;/h2&gt;
&lt;p&gt;Dr. Pangloss is a fictional character from &lt;a href=&quot;https://en.wikipedia.org/wiki/Voltaire&quot;&gt;Voltaire&lt;/a&gt;&apos;s satirical novella &lt;a href=&quot;https://en.wikipedia.org/wiki/Candide&quot;&gt;&quot;Candide&quot;&lt;/a&gt; that was required reading in high school French. I remember reading that novella in high school, of course: it was a &lt;em&gt;profound&lt;/em&gt; influence on me at the time, instilling a certain cynicism in me that lasted years. Voltaire wrote this novella as a direct attempt to refute &lt;a href=&quot;https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz&quot;&gt;Leibniz&lt;/a&gt;&apos;s philosophy of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Best_of_all_possible_worlds&quot;&gt;&quot;best of all possible worlds&quot;&lt;/a&gt;: Pangloss is a buffoonish character who spouts parodies of Leibniz&apos;s reasoning.&lt;/p&gt;
&lt;p&gt;No question about it, Candide is a wickedly entertaining satire, and Voltaire is a towering figure from the French Enlightenment, one who exposed a lot of hypocrisy and was an advocate of many social reforms.&lt;/p&gt;
&lt;h2&gt;Philosophy vs. attitude&lt;/h2&gt;
&lt;p&gt;However, I have over the years come to believe that the Enlightenment emphasis on Reason is not by itself the panacea to the mysteries and problems of life. In particular, I perceive that often, this emphasis leads to arrogance, anger, and selective blindness. There doesn&apos;t seem any logical &lt;em&gt;reason&lt;/em&gt; that &lt;em&gt;Reason&lt;/em&gt; should lead to this, but it really happens. It happened to me.&lt;/p&gt;
&lt;p&gt;So, I have not by any means abandoned &lt;em&gt;reason&lt;/em&gt;, but I have long since abandoned &lt;em&gt;Reason&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Also, I&apos;m going to confess that Leibniz&apos;s philosophical work does not make a whole lot of sense to me. So my adopting an &lt;em&gt;attitude&lt;/em&gt; of &quot;this is the best of all possible worlds&quot; is in no way an endorsement of any belief in Leibniz&apos;s philosophical/theological system. And I certainly have also observed that there are people who do accept Leibniz&apos;s purported solution to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Problem_of_evil&quot;&gt;problem of evil&lt;/a&gt;, who seem to use it as a way to turn a blind eye to the injustices that still occur in our world.&lt;/p&gt;
&lt;p&gt;In short, I am taking an &lt;em&gt;attitude&lt;/em&gt; that I find helps me function in a positive way in the world, without tying myself to a fully worked out philosophy about it.&lt;/p&gt;
&lt;h2&gt;Related ideas&lt;/h2&gt;
&lt;p&gt;A related idea is &lt;a href=&quot;https://en.wikipedia.org/wiki/Amor_fati&quot;&gt;&lt;em&gt;amor fati&lt;/em&gt;&lt;/a&gt; (&quot;love of fate&quot;), popularized by Nietzsche but coming from &lt;a href=&quot;https://en.wikipedia.org/wiki/Stoicism&quot;&gt;Stoicism&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Steve Pavlina wrote today about &lt;a href=&quot;https://www.stevepavlina.com/blog/2012/11/this-is-heaven/&quot;&gt;&quot;heaven&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Application&lt;/h2&gt;
&lt;p&gt;That I have adopted the &lt;em&gt;optimistic&lt;/em&gt; attitude toward life, after having a mostly &lt;em&gt;pessimistic&lt;/em&gt; one during most of my years, has practical applications. Being &lt;em&gt;grateful&lt;/em&gt; every single day for every positive thing that happens enables me to more easily overcome the negative. My attitude is a choice I have made, and nurtured through various techniques, as mentioned &lt;a href=&quot;/blog/2011/11/23/every-day-is-thanksgiving/&quot;&gt;last Thanksgiving&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Being optimistic does not mean ignoring the negative. It means maintaining the energy to do things, to set things right.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have embrace this world as &lt;em&gt;my&lt;/em&gt; world. This is my choice, my attitude. May it be yours as well.&lt;/p&gt;
</content:encoded></item><item><title>Round 2 of Pittsburgh Chess Club Tournament: Very short game with  a note on psychology</title><link>https://franklinchen.com/blog/2012/11/20/round-2-of-pittsburgh-chess-club-tournament-very-short-game-with-a-note-on-psychology/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/20/round-2-of-pittsburgh-chess-club-tournament-very-short-game-with-a-note-on-psychology/</guid><pubDate>Tue, 20 Nov 2012 20:49:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-prokhov-2012-11-20_files/round2.jpg&quot; alt=&quot;Round 2 in progress&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After the &lt;a href=&quot;/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/&quot;&gt;complex game in round 1&lt;/a&gt;, I was hoping for another interesting fight in round 2, in which I played White.&lt;/p&gt;
&lt;p&gt;Unfortunately, the game ended up being very short, with my having a won position after ten minutes of play. My opponent kept going for a while, but resigned before an hour was up.&lt;/p&gt;
&lt;h2&gt;Today&apos;s lesson&lt;/h2&gt;
&lt;p&gt;Since the game was so short, I will be writing about the psychology of what happened, what has happened in the past with this opponent (whom I have now played &lt;em&gt;twelve&lt;/em&gt; times in my life in tournaments), and what might have happened.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;I am not including the complete game because the winning position straight out of the opening says it all (see below).&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;h3&gt;Our previous encounters&lt;/h3&gt;
&lt;p&gt;As I mentioned, this was the twelfth time I have faced this opponent since I started playing tournament chess in Pittsburgh seven years ago.&lt;/p&gt;
&lt;p&gt;The last time I played him was in the Tuesday night tournament two months ago, in which &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;I played him as Black in round 2&lt;/a&gt;. That marked the &lt;em&gt;eleventh&lt;/em&gt; time I had played him, and the &lt;em&gt;eleventh&lt;/em&gt; time I had won.&lt;/p&gt;
&lt;p&gt;I came into tonight&apos;s game against him having a record of &lt;em&gt;six&lt;/em&gt; wins as Black and &lt;em&gt;five&lt;/em&gt; wins as White, and &lt;em&gt;no&lt;/em&gt; losses or draws.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Imagine what it&apos;s like to have lost all eleven games you have played against a particular opponent over the past seven years.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;The psychology of loss&lt;/h3&gt;
&lt;p&gt;It&apos;s a very tough situation to be in. I have never had this kind of poor record against anyone, because I have not played enough tournament chess, encountering a much stronger player repeatedly, to have had this kind of experience.&lt;/p&gt;
&lt;p&gt;However, the closest I have been to this situation has been against an Expert whom I have a really bad record against (sadly, he passed away relatively recently, so I will never get another rematch against him to prove that I have resolved my psychological issues), despite having a won position in almost all of our encounters. (&lt;a href=&quot;/blog/2012/09/26/the-worst-chess-move-i-ever-played/&quot;&gt;I mentioned one of these crazy won positions here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;It&apos;s very difficult to face someone that you know you&apos;ve lost to again and again. Even if you know you &quot;could have&quot; played better, you wonder why you didn&apos;t. You question yourself. You get angry. You get anxious.&lt;/p&gt;
&lt;h3&gt;My preparation&lt;/h3&gt;
&lt;p&gt;I did a bit of preparation myself, because &lt;em&gt;in many of our games, I actually fell into a lost position&lt;/em&gt; and won only because he made more errors later. I mentioned after September&apos;s game how I got spooked and &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;ended up in an even position&lt;/a&gt; and worried that the result might be a draw. However, I was determined to just play the position out and my opponent fell apart and I won.&lt;/p&gt;
&lt;p&gt;Looking at my record of (now) twelve wins out of twelve games makes it look like my games against him were a piece of cake. Nothing could be further from the truth: he played quite well in some of our games, and simply made unforced errors at critical points.&lt;/p&gt;
&lt;p&gt;My goal since I returned to chess this year has been to slay some of my own demons when playing against him: I want to win every game &quot;correctly&quot;, through my strong play and not through his unforced errors.&lt;/p&gt;
&lt;p&gt;Tonight, as White, I expected to play into the same opening variation that we had played twice five years ago, the last two games in which I was White and he was Black. In fact, after the second of these games, he had said he had prepared for the variation I had played in the first one, but I had deliberately varied. Tonight, I had planned to play into one of the variations deliberately, in case he wanted to prove himself again, because in those two games, I had actually misplayed the opening eventually and gotten into trouble. So for tonight, I was choosing to &lt;em&gt;do it right&lt;/em&gt; this time, rather than avoid that problematic opening variation.&lt;/p&gt;
&lt;h3&gt;His preparation&lt;/h3&gt;
&lt;p&gt;So what was his preparation? A friend of mine told me that he had asked last Wednesday whom he was going to play this Tuesday (since the pairings for the next round are made right after all the games are done on Tuesdays), and what color he was going to get. So he had known for almost a week that he was going to be Black against me.&lt;/p&gt;
&lt;p&gt;After tonight&apos;s game, I did not ask him what his preparation was, but I can only guess by how the game proceeded.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;I decided to play &lt;code&gt;d4&lt;/code&gt; deliberately aiming for the opening variation we had fought over the last two times I was White against him.&lt;/p&gt;
&lt;p&gt;To my &lt;em&gt;surprise&lt;/em&gt;, he varied quickly by playing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Gr%C3%BCnfeld_Defence&quot;&gt;Grünfeld Defense&lt;/a&gt; against me. So it would seem that he scored psychologically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But who surprised whom?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Maybe I missed something, but I have &lt;em&gt;never&lt;/em&gt; seen him play the Grünfeld Defense. It definitely is not what he usually plays, in any case; in tournaments I saunter around sometimes to check out other people&apos;s games, and so I have a decent idea of what openings everyone plays.&lt;/p&gt;
&lt;p&gt;Given that I suspected he did not play this opening often, I simply chose to play a less common variation in response (after too many &quot;surprises&quot; in the past, I now always have several less common variations up my sleeve in every opening I play).&lt;/p&gt;
&lt;p&gt;He clearly did not know how to continue properly, and simply fell apart, making poor moves until he lost a piece, after which he should have resigned, but did not:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4b1p1/1p1kpp1p/p7/2b5/5B2/q4PP1/8/1Q4K1 b - - 0 1&quot; caption=&quot;Black is totally lost&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It is admittedly hard to play against someone that you&apos;ve lost eleven games to and never won or drew against.&lt;/li&gt;
&lt;li&gt;However, this does not mean the winner does not also have his own anxieties about keeping the streak alive and honest.&lt;/li&gt;
&lt;li&gt;When trying to surprise an opponent, make sure you don&apos;t surprise yourself instead!&lt;/li&gt;
&lt;li&gt;My opponent should have studied up details of his favorite opening that I was going to play into, instead of &lt;em&gt;avoiding his favorite opening&lt;/em&gt;. You must have faith in your openings, and not abandon them because you lost; the loss was not necessarily the opening&apos;s fault (and in our case, definitely was not).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week for round 3 I expect to be Black, against probably a fellow Expert.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a disappointingly short and one-sided game in round 2 of the tournament, in which my opponent seemed unprepared for the very opening surprise he tried to spring on me. I hope that the next time we meet again in a tournament, we will have a better game.&lt;/p&gt;
</content:encoded></item><item><title>Preparing for December 9 recorder performance in Phipps Conservatory</title><link>https://franklinchen.com/blog/2012/11/19/preparing-for-december-9-recorder-performance-in-phipps-conservatory/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/19/preparing-for-december-9-recorder-performance-in-phipps-conservatory/</guid><pubDate>Mon, 19 Nov 2012 23:40:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s &lt;em&gt;that&lt;/em&gt; time of year.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/phipps-candlelight.jpg&quot; alt=&quot;Phipps Conservatory candlelight evening&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I just came back from another two-hour rehearsal (we&apos;ve been having one every week) for an upcoming music gig.&lt;/p&gt;
&lt;p&gt;I&apos;ll be performing with five other recorder players in one of the &lt;a href=&quot;https://phipps.conservatory.org/&quot;&gt;Phipps Conservatory&lt;/a&gt; &quot;candlelight evenings&quot;, Sunday, December 9, from 6 PM to 8 PM.&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Candlelight Evenings&lt;/p&gt;
&lt;p&gt;Nov. 25, 2012 - Jan. 6, 2013&lt;/p&gt;
&lt;p&gt;Extended Hours: Open until 10 p.m.&lt;/p&gt;
&lt;p&gt;Winter Flower Show is even more enchanting at night - a time when glowing candles light the walkways and live music fills the air.&lt;/p&gt;
&lt;p&gt;Experience the magic for yourself as we remain open until 10 p.m. daily from Nov. 23 - Jan. 6.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why this event is special to me&lt;/h2&gt;
&lt;p&gt;Today I reflect on having performed at Phipps last year as part of this recorder group, as the &lt;em&gt;first time&lt;/em&gt; I ever performed music in public since I was a kid.&lt;/p&gt;
&lt;h2&gt;Last year&lt;/h2&gt;
&lt;p&gt;Last year I wrote at length about my &lt;a href=&quot;/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/&quot;&gt;anxiety and gratitude&lt;/a&gt; in anticipation of performing music.&lt;/p&gt;
&lt;p&gt;I also wrote about the actual experience, &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;after it happened&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Grateful&lt;/h2&gt;
&lt;p&gt;Last year I was very grateful for the opportunity to play with Annie, Helen, Mike, and Karen of the &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt;. I practiced diligently outside of our rehearsals to try to get my parts down as well as I could, knowing that I was still prone to various slips. I also chose to not participate in some of the pieces that I felt I could not handle yet at my skill level.&lt;/p&gt;
&lt;p&gt;A year later, I&apos;m far better a recorder player and musician. There&apos;s no comparison between how I was a year ago and how I am now. Of course, I still have a &lt;em&gt;huge&lt;/em&gt; amount of further improvement as I continue to play music; I plan to continue to make large improvements year after year, decade after decade! My attitude is: &lt;strong&gt;I have only just begun&lt;/strong&gt;, after really just two years of practicing music seriously.&lt;/p&gt;
&lt;p&gt;This year, Sam will join us also in performance, making six of us total. He&apos;ll play not only recorder, but also bells and tambourines. This is going to be fun!&lt;/p&gt;
&lt;h3&gt;(Update of 2012-12-09)&lt;/h3&gt;
&lt;p&gt;It quickly turned out that we were only five, because Karen was not going to be available.&lt;/p&gt;
&lt;h2&gt;Anxiety&lt;/h2&gt;
&lt;p&gt;After a year of playing a lot of music, both in private and in public, my anxiety has decreased considerably, and each time I perform in public, in particular, I become less self-conscious. What I&apos;ve learned is to let go of my ego, and remember that I am playing so that people will enjoy the music: this is not about me, not about my mistakes, not about my brilliance, not about any of that stuff at all. It&apos;s about conveying emotion and beauty, however imperfectly, and people sense that and respond to that. With this attitude, the only thing that can truly go wrong is &lt;em&gt;failing to connect to the audience&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Overall, I&apos;m &lt;em&gt;orders of magnitude&lt;/em&gt; less &lt;em&gt;shy&lt;/em&gt; now as a musician, and more generally, as a human being, after a year of putting myself out there.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I look forward to playing again for a Phipps Conservatory &quot;candlelight evening&quot;. We have a lot of interesting new selections to play, with almost none of it being standard overdone Christmas carols.&lt;/p&gt;
&lt;p&gt;If you&apos;re in Pittsburgh on Sunday, December 9, consider stopping by for a candlelit evening in Phipps Conservatory and hearing us play!&lt;/p&gt;
&lt;h3&gt;(Update of 2012-12-09)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;A report on the performance&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Report on CMU Baroque Ensemble concert, with Stephen Schultz on Baroque flute</title><link>https://franklinchen.com/blog/2012/11/18/report-on-cmu-baroque-ensemble-concert-with-stephen-schultz-on-baroque-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/18/report-on-cmu-baroque-ensemble-concert-with-stephen-schultz-on-baroque-flute/</guid><pubDate>Sun, 18 Nov 2012 20:53:00 GMT</pubDate><content:encoded>&lt;p&gt;I attended a free concert of the CMU Baroque Ensemble concert for the second time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/04/29/attending-my-first-cmu-baroque-ensemble-concert/&quot;&gt;My first time&lt;/a&gt;, several months ago, I enjoyed as my main attraction Bach&apos;s Brandenburg concerto no. 2; this time, although the Brandenburg concerto no. 3 was performed, it was not the main draw for me.&lt;/p&gt;
&lt;p&gt;What I really looked forward to was simply seeing Stephen Schultz playing Baroque flute (amplified), premiering a new piece by &lt;a href=&quot;https://web.archive.org/web/20240811143146/http://www.nancygalbraith.com/&quot;&gt;Nancy Galbraith&lt;/a&gt;, &quot;Effervescent Air&quot;. I had never seen him playing Baroque flute before, other than a demo of a few seconds when I was taking his course &quot;Survey of Western Musical History&quot; in 2006. That was actually the very first time I had ever seen a Baroque flute, and the first time I learned that anyone still played this instrument.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cmu-baroque-2012-11-18.jpg&quot; alt=&quot;Stephen Schulz&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I enjoyed the concert. The standard Baroque pieces were performed with energy, and the newly composed piece for electric, amplified Baroque flute and piano, with orchestra, was a pleasant, fluttery soundscape, with some lovely textures as well as special echo effects.&lt;/p&gt;
&lt;p&gt;You can listen to &quot;Effervescent Air&quot; here:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;100%&quot; height=&quot;450&quot; scrolling=&quot;no&quot; frameborder=&quot;no&quot; src=&quot;https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F4222492&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I look forward to hearing more new music composed for Baroque flute in future CMU Baroque Ensemble concerts!&lt;/p&gt;
</content:encoded></item><item><title>A childhood dream come true: I am now finally singing for real!</title><link>https://franklinchen.com/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/</guid><pubDate>Sat, 17 Nov 2012 23:25:00 GMT</pubDate><content:encoded>&lt;p&gt;Abby and I went to a pre-Thanksgiving party hosted by Henry and yet again, &lt;strong&gt;I changed my life&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At the last party at Henry&apos;s, two months ago, I had begun singing there for the first time, and afterwards &lt;a href=&quot;/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/&quot;&gt;vowed that I would take up singing for real&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;d followed up very slowly, taking a month before &lt;a href=&quot;/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/&quot;&gt;actually singing in public&lt;/a&gt;, and then the day after that, &lt;a href=&quot;/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/&quot;&gt;continuing to sing in public at J-Jam&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was the last event, J-Jam, that got me to decide to really prepare some songs to sing for the next J-Jam. What happened was that I had started off by trying to find some suitable flute/guitar music to work on with Cantor Ben Rosner for J-Jam, but I noticed that I was picking some material that was actually originally sung and then transcribed for flute. After being &lt;em&gt;unsatisfied&lt;/em&gt; with playing these songs on flute, because I couldn&apos;t get quite the expression I wanted, I bit the bullet: I decided that &lt;em&gt;the voice is the original and best instrument we have&lt;/em&gt;, and that I should use the &lt;em&gt;best&lt;/em&gt; instrument to achieve what I wanted to do, which was to maximize expressiveness in lyrical music. So I started looking for transpositions of songs to a suitable range for me in order for me to sing them.&lt;/p&gt;
&lt;p&gt;Then when Henry&apos;s party invitation came up, I jumped at the opportunity to try out some of the music I was preparing for J-Jam, to perform with Henry on piano.&lt;/p&gt;
&lt;p&gt;What did I do?&lt;/p&gt;
&lt;h2&gt;One year anniversary of my deciding to sing&lt;/h2&gt;
&lt;p&gt;By coincidence, it&apos;s almost exactly one year since &lt;a href=&quot;/blog/2011/11/18/i-want-to-sing/&quot;&gt;I decided here on this blog that I was going to get into singing&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Music plan&lt;/h2&gt;
&lt;p&gt;I picked out four pieces to give Henry advance warning on, so that I could give him the piano parts for him to take a look at before the party. During the &lt;a href=&quot;/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/&quot;&gt;first round of the chess tournament we were both playing in&lt;/a&gt;, I gave him a big collection of music, not only for the upcoming party but for possible future projects also.&lt;/p&gt;
&lt;p&gt;The selections I chose to work on for the party:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gabriel Fauré: Sicilienne (flute and piano)&lt;/li&gt;
&lt;li&gt;Gabriel Fauré: Après un rêve (voice and piano)&lt;/li&gt;
&lt;li&gt;Robert Schumann: Widmung (voice and piano)&lt;/li&gt;
&lt;li&gt;Carlos Gardel: Por una cabeza (voice and piano)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;h3&gt;Food&lt;/h3&gt;
&lt;p&gt;Barbara rather than Anna took charge of providing the main food this time, while the rest of us pitched in with our contributions. There were over twenty people at this party, I believe.&lt;/p&gt;
&lt;p&gt;I made my own very small contributions:&lt;/p&gt;
&lt;h4&gt;Cabbage with leeks and potatoes&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pre-thanksgiving-2012/cabbage.jpg&quot; alt=&quot;Cabbage with leeks and potatoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cabbage with leeks and potatoes, with olive oil and butter and seasoning.&lt;/p&gt;
&lt;p&gt;(Make sure to &lt;a href=&quot;https://en.wikipedia.org/wiki/Caramelization&quot;&gt;caramelize&lt;/a&gt; in the skillet.)&lt;/p&gt;
&lt;h4&gt;Turnips and carrots&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pre-thanksgiving-2012/turnips.jpg&quot; alt=&quot;Roasted turnips and carrots&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Roasted turnips and carrots, with olive oil and seasoning.&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;I unexpected ended up providing a lot of the music this evening. There were fewer people involved in playing music than in some of the other parties.&lt;/p&gt;
&lt;p&gt;This time, I brought just my (modern) flute and my voice. I left my recorders and Baroque flute and Irish flute and tin whistle at home.&lt;/p&gt;
&lt;p&gt;I started off with singing the tango &lt;a href=&quot;https://en.wikipedia.org/wiki/Por_una_Cabeza&quot;&gt;&quot;Por una cabeza&quot;&lt;/a&gt; (made famous in &quot;Scent of a Woman&quot;), very hesitatingly:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pre-thanksgiving-2012/franklin-por-una-cabeza.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was so nervous that my legs were shaking and my arms trembling as I began; it was exactly as what happened &lt;em&gt;eight months ago&lt;/em&gt; at the first of Henry&apos;s parties at which &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;I played an instrument&lt;/a&gt;. The difference was that although that one time, I knew I was playing the flute &lt;em&gt;badly&lt;/em&gt;, this time, I was confident that I was singing OK: not great yet, but not badly. I&apos;d worked two weeks on singing.&lt;/p&gt;
&lt;h4&gt;Memory&lt;/h4&gt;
&lt;p&gt;One thing I have observed again and again during my past year of music is that it really is ideal to have stuff memorized. I have not put enough work into that, since with my limited time, I tend to use it on working on technique and on learning material, rather than on memorizing what I can play off a score or sing off a printed set of lyrics.&lt;/p&gt;
&lt;p&gt;But I did make a special effort to memorize at least two of the songs I had prepared: the Fauré and the Schumann. I did manage to more or less memorize them in time, since the French and German vocabulary of these love songs were fairly straightforward (I studied French and German in high school and college). The tango in Spanish, &quot;Por una cabeza&quot;, I did not have hope of memorizing any time soon.&lt;/p&gt;
&lt;p&gt;But I brought along printouts to help me so I could glance at them at least now and then. Obviously, I aim to become independent of these aids so that I can sing unencumbered by looking at a printout, and connect directly with the audience.&lt;/p&gt;
&lt;h4&gt;What it&apos;s like to sing&lt;/h4&gt;
&lt;p&gt;The feeling of singing is like nothing else. It&apos;s so &lt;em&gt;physical&lt;/em&gt; in a primal way, compared to playing flute or recorder. I completely lose myself in emotion, when I can squeeze as much expression out of the voice as I can. It&apos;s an amazing sensation. It&apos;s a communication that is very direct.&lt;/p&gt;
&lt;p&gt;Maybe if I played a violin I would feel something like that, because of the expressive qualities of the violin. On flute, I cannot do everything that I can do with my voice. I try, but it is not the same.&lt;/p&gt;
&lt;h4&gt;Flute&lt;/h4&gt;
&lt;p&gt;My focus on singing overshadowed the fact that I was actually making something of a debut on modern flute here. I had played modern flute in anyone&apos;s presence outside the home only a handful of times before:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;for St. Patrick&apos;s Day&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;a &lt;a href=&quot;/blog/2012/04/27/baroque-jam-session-at-cmu/&quot;&gt;Baroque jam session in March&lt;/a&gt;, playing a Baroque piece&lt;/li&gt;
&lt;li&gt;a &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;Pittsburgh Recorder society potluck/recital&lt;/a&gt;, playing a pre-Classical piece&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/&quot;&gt;J-Jam&lt;/a&gt;, where I did a bit of bossa nova improvisation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s not only because I was focusing on other instruments all year. It&apos;s also because I&apos;ve found it very challenging to make the kinds of sounds on the modern flute I want to hear. On each of those four occasions in which I played the modern flute, I felt that I needed to improve a lot.&lt;/p&gt;
&lt;p&gt;I have improved a lot, actually, but I&apos;m still far from satisfied; I&apos;ve only now gotten to the point at which I feel I am not an embarrassment. Developing a truly beautiful, flexible tone seems a years-long task, and I keep working at it.&lt;/p&gt;
&lt;p&gt;Anyway, I have finally jumped into the late 19th century, out of the 18th, to play Romantic music on the instrument that is suited for it, the modern flute:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pre-thanksgiving-2012/franklin-flute.jpg&quot; alt=&quot;Franklin playing Fauré, Sicilienne&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Unexpected singing&lt;/h4&gt;
&lt;p&gt;Henry so enjoyed going through songs with me that he had me repeat &quot;Por una cabeza&quot; later in the party. I did, and I felt &lt;em&gt;much&lt;/em&gt; more relaxed than when I did it the first time. I thought I did much better this time.&lt;/p&gt;
&lt;p&gt;Then I thought, hey, I had given him a whole folder of stuff, so we should just sight read some of it. I ended up singing Schubert&apos;s &quot;Nacht und Traüme&quot; as well as &quot;An die Musik&quot;, which I had intended for a later occasion.&lt;/p&gt;
&lt;p&gt;Then, finally, before Abby and I had to leave, I decided that I wanted to sing a song especially for Abby, and pulled out Alvaro Carrillo&apos;s &quot;Sabor a mî&quot;, which I know by heart (I will explain in a later blog post the significance of this song for me), and sang it to her, with Henry providing great accompaniment on first sight.&lt;/p&gt;
&lt;h3&gt;Dancing&lt;/h3&gt;
&lt;p&gt;Dancing with Abby at these parties is always a special pleasure for us... Vasili on accordion.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pre-thanksgiving-2012/abby-franklin-dance.jpg&quot; alt=&quot;Abby and Franklin dancing waltz&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why did so few other people sing?&lt;/h2&gt;
&lt;p&gt;Some of the guests had been introduced to me as singers, yet &lt;em&gt;none&lt;/em&gt; of them sang at the party! This was puzzling to me. There could be many reasons, but I won&apos;t speculate.&lt;/p&gt;
&lt;p&gt;As for those who expressed enjoyment of singing to themselves, but identified themselves as non-singers (as I did), that&apos;s very easy to understand, because I was there myself. I&apos;ve simply chosen to overcome my fear and anxiety, work on improvement, and then put myself out there, warts and all. I do this because I saw the younger people under 20 do this, and I decided that if being &quot;old&quot; means being afraid, I&apos;d rather do what the younger people do, and just get out there.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I&apos;m going to do serious study of singing. Henry mentioned a book &quot;Singing for Dummies&quot; that I&apos;ll check out. I would like to work through it systematically.&lt;/p&gt;
&lt;p&gt;By the way: I noticed that my flute and recorder playing have improved in several dimensions since I started working on singing. My breath awareness is better, my control over my breath stream, and even more than that, I&apos;m really trying to treat my instruments as parts of my body, to get that integrated feel I have when just singing.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m singing now. &lt;strong&gt;There&apos;s no going back.&lt;/strong&gt; It&apos;s like when I originally started dancing, after decades as a non-dancer, or started running, or started cooking, or started public speaking. There&apos;s just no going back, after the first big step.&lt;/p&gt;
</content:encoded></item><item><title>Review of Coursera&apos;s Fall 2012 &quot;Functional Programming Principles in Scala&quot;</title><link>https://franklinchen.com/blog/2012/11/15/review-of-courseras-fall-2012-functional-programming-principles-in-scala/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/15/review-of-courseras-fall-2012-functional-programming-principles-in-scala/</guid><pubDate>Thu, 15 Nov 2012 21:27:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20130721193256/http://www.scala-lang.org/sites/default/files/newsflash_logo.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In fall of 2012, I completed the initial offering, through &lt;a href=&quot;https://www.coursera.org/&quot;&gt;Coursera&lt;/a&gt;, of &lt;a href=&quot;https://lampwww.epfl.ch/~odersky/&quot;&gt;Martin Odersky&lt;/a&gt;&apos;s &lt;a href=&quot;https://www.coursera.org/course/progfun&quot;&gt;&quot;Functional Programming Principles in Scala&quot; online course&lt;/a&gt;, which was held from September 18 through November.&lt;/p&gt;
&lt;p&gt;This is a review of the course, which is planned to be offered again (so those of you who missed it the first time can sign up for the second iteration when it is available).&lt;/p&gt;
&lt;p&gt;Also check out the &lt;a href=&quot;https://docs.scala-lang.org/news/functional-programming-principles-in-scala-impressions-and-statistics.html&quot;&gt;instructor report&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The purpose of the course&lt;/h2&gt;
&lt;p&gt;I have noticed very often that people learning to program or to perform some task that involves programming are very fixated on the question of &quot;what computer language should I use?&quot; or &quot;what computer language is the course/project going to use?&quot; This is a mistake because what is important in learning programming or getting better at it is not trivial questions of syntax, but matters of &lt;em&gt;understanding&lt;/em&gt; what things mean and having a correct mental model of what is going on. In the end, one has to go back to fundamentals.&lt;/p&gt;
&lt;p&gt;So although this course has &quot;Scala&quot; in its title, it is really a brief introduction to functional programming, using &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; as one of many possible languages in which to express it.&lt;/p&gt;
&lt;h2&gt;My background in computer science and functional programming&lt;/h2&gt;
&lt;p&gt;I am a college graduate with a physics degree who &lt;em&gt;never took a single computer science or programming course in college&lt;/em&gt;, because I found programming to be strange, difficult, and scary, based on &lt;a href=&quot;/blog/2012/01/16/how-school-made-me-hate-computer-science-and-programming/&quot;&gt;my experiences before college&lt;/a&gt;. I did not take up programming seriously until after college, when I found myself wanting a career change, and took a second look at computer programming.&lt;/p&gt;
&lt;p&gt;As I have mentioned earlier, a &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;turning point in my life&lt;/a&gt; was when a friend recommended to me that I focus not on &quot;learning&quot; some arbitrary computer language, but on learning the &lt;em&gt;principles&lt;/em&gt; of programming first, after which any specific language could be understood quickly in light of the principles.&lt;/p&gt;
&lt;p&gt;So I learned functional programming through working through &lt;a href=&quot;https://web.archive.org/web/20171226134539/https://mitpress.mit.edu/sicp/&quot;&gt;The Structure and Interpretation of Computer Programs&lt;/a&gt;, coding up my solutions to the exercises using &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://gambitscheme.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://gambitscheme.org/&quot;&amp;gt;Gambit Scheme&amp;lt;/span&amp;gt; on a &lt;a href=&quot;https://en.wikipedia.org/wiki/Macintosh_Classic&quot;&gt;Macintosh Classic&lt;/a&gt;. I then learned C and C++ and got my first job as a software engineer.&lt;/p&gt;
&lt;p&gt;The next big jump for me came when I encountered my first statically typed functional languages in around 1995: &lt;a href=&quot;https://caml.inria.fr/caml-light/index.en.html&quot;&gt;Caml Light&lt;/a&gt; and &lt;a href=&quot;https://www.smlnj.org/&quot;&gt;Standard ML&lt;/a&gt; and &lt;a href=&quot;https://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; through &lt;a href=&quot;https://www.haskell.org/hugs/&quot;&gt;Gofer/Hugs&lt;/a&gt;. I was so inspired by the possibilities of &lt;em&gt;improving the programming experience&lt;/em&gt; that I decided to leave my job and apply for graduate school in computer science.&lt;/p&gt;
&lt;p&gt;I was in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.csd.cs.cmu.edu/education/phd/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.csd.cs.cmu.edu/education/phd/&quot;&amp;gt;Carnegie Mellon University CS PhD program&amp;lt;/span&amp;gt; for two years before leaving after 1999. I left for a combination of different reasons, but I am definitely still a believer in the original mission I had before going to graduate school: improving the experience of practical software development by every means necessary.&lt;/p&gt;
&lt;h2&gt;My plan: overcome resistance to Scala&lt;/h2&gt;
&lt;p&gt;Ironically, what I planned to get out of the course is &lt;em&gt;not&lt;/em&gt; what I expect most students in the course would or &lt;em&gt;should&lt;/em&gt; get out of it! I treated the course as a way to get myself to force myself to use and really learn the Scala language (since I did not need an introduction to functional programming), by solving programming exercises that I probably had done in the past in other languages.&lt;/p&gt;
&lt;p&gt;Scala had been around for years, but I had resisted doing much with it because it seemed very complex and changing all the time and because the tool ecosystem seemed to be immature and not usable for me. That led me to my not investing in the effort to truly read up on it and experiment to use at work.&lt;/p&gt;
&lt;p&gt;I am happy to report that Scala is actually usable now and all my concerns about it are no longer relevant. 2012 seems to me to be the year when Scala became truly usable for general production. (I will report later on my current plans in motion to migrate from Java to Scala at work.)&lt;/p&gt;
&lt;h2&gt;Observations about the course&lt;/h2&gt;
&lt;h3&gt;Installation of software&lt;/h3&gt;
&lt;p&gt;There were initially some glitches when setting up &lt;a href=&quot;https://eclipse.org/&quot;&gt;Eclipse&lt;/a&gt; and &lt;a href=&quot;https://www.scala-sbt.org/&quot;&gt;SBT&lt;/a&gt;, but eventually, an Eclipse distribution made specifically for the class was made available and solved my problems.&lt;/p&gt;
&lt;p&gt;That said, I preferred to use Emacs and SBT for writing code for the course.&lt;/p&gt;
&lt;h3&gt;Theoretical material&lt;/h3&gt;
&lt;p&gt;Martin Odersky&apos;s lectures were entirely as one would expect in a basic academic course on programming language principles: laying the fundamental mathematical groundwork: operational semantics, structural induction, etc.&lt;/p&gt;
&lt;p&gt;This material can be very dry and abstract, and I have to wonder how many students encountering it for the first time slog through long lectures of this kind of content. Personally, if I were teaching these ideas, I would use less of the typical &quot;mathematical&quot; kind of example when illustrating them.&lt;/p&gt;
&lt;h3&gt;Lecture format&lt;/h3&gt;
&lt;p&gt;I was surprised by the scarcity of within-lecture quizzes as checkpoints for the student, because I have completed several Coursera courses in which they were much more frequent (and in my mind useful). I think the course would benefit from breaking up lectures into smaller chunks with more quizzes.&lt;/p&gt;
&lt;h3&gt;Programming assignments&lt;/h3&gt;
&lt;p&gt;The programming assignments involved filling in code skeletons in otherwise complete programs that solved some task. Again, the tasks involved seemed typically mathematical and &quot;classic&quot; in nature, such as anagram solving, Huffman coding and decoding, although there was also an assignment on tweet analysis.&lt;/p&gt;
&lt;h3&gt;Testing&lt;/h3&gt;
&lt;p&gt;I appreciated that the assignments were distributed as self-contained SBT projects, along with rudimentary &lt;a href=&quot;https://junit.org/&quot;&gt;JUnit&lt;/a&gt;-style test suites, run through &lt;a href=&quot;https://www.scalatest.org/&quot;&gt;ScalaTest&lt;/a&gt; that one could add to. I get the impression that many courses on programming do not address the issue of testing at all, with the result that students flail while copying and pasting code in some IDE or REPL instead of adopting an automated testing discipline that not only decreases frustration but will prove to be a real-life practice to be used in their studies and careers.&lt;/p&gt;
&lt;p&gt;It was great to have these programming assignments distributed as complete deploy able projects. I actually looked at the non-assignment-relevant code and configurations in order to learn more about real-life SBT and Scala use for my own plans to migrate from Java to Scala at work.&lt;/p&gt;
&lt;h3&gt;Scala the language&lt;/h3&gt;
&lt;p&gt;Scala is introduced at first as a kind of standard functional language (even though in reality Scala&apos;s functions are actually objects). Algebraic data types are introduced through Scala&apos;s object encoding as &lt;code&gt;case class&lt;/code&gt; in a hierarchy. I think the instructor did a good job in illustrating through example how Scala manages to blend the traditional functional and object worlds in a single language, while emphasizing the functional aspects.&lt;/p&gt;
&lt;h3&gt;Most interesting&lt;/h3&gt;
&lt;p&gt;For me, the most interesting aspect of the course and assignments was the focus on using Scala&apos;s &quot;for comprehension&quot; syntactic sugar to write very concise and clear code. An entire week of lectures was focused on collections and explained how the syntactic sugar is translated into &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;flatMap&lt;/code&gt;, and &lt;code&gt;filter&lt;/code&gt;. With the popularity of comprehension or similar syntax in many languages these days, I think it is very important to make sure that everyone knows that it is not just magic, but is just syntactic sugar for the important concepts that underlie it. I think the course did a good job in illustrating how comprehensions can be used not only for lists, but for many other types as well, and types that one can define oneself (Scala&apos;s comprehension syntax is meant for any &lt;a href=&quot;https://en.wikipedia.org/wiki/Monad_(functional_programming)&quot;&gt;monad&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-02-27)&lt;/h4&gt;
&lt;p&gt;I just saw a good recent expository example of &lt;a href=&quot;https://tmorris.net/posts/memoisation-with-state-using-scala/index.html&quot;&gt;the use of comprehension syntax to simplify the look of code that involves writing your own monad&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I strongly recommend Martin Odersky&apos;s &quot;Functional Programming Principles in Scala&quot; course to all who are interested in understanding the basics behind programming language semantics and how to apply this knowledge in writing and reasoning about clear, elegant programs to solve problems. A course like this could be taught using any number of languages as a vehicle, but I think Scala works particularly well because it is a JVM-based language that interoperates seamlessly with Java and Java&apos;s entire tool chain, so anything you learn here, you can apply immediately in real-life work if you already operate in the JVM-based programming world. Scala is not a toy language, but is used at &lt;a href=&quot;https://twitter.github.com/scala_school/&quot;&gt;Twitter&lt;/a&gt; and many other enterprises that require reliability, performance, scalability while solving very complex problems.&lt;/p&gt;
&lt;p&gt;A final reminder: if you missed this free course the first time around, by all means check it out when it is offered again!&lt;/p&gt;
</content:encoded></item><item><title>Classical Revolution: Pittsburgh&apos;s AquiTango delivers passionate traditional tango</title><link>https://franklinchen.com/blog/2012/11/14/classical-revolution-pittsburghs-aquitango-delivers-passionate-traditional-tango/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/14/classical-revolution-pittsburghs-aquitango-delivers-passionate-traditional-tango/</guid><pubDate>Wed, 14 Nov 2012 20:48:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;So I got word of a relatively new movement called &lt;a href=&quot;https://classicalrevolution.org/&quot;&gt;Classical Revolution&lt;/a&gt; that is spreading &lt;a href=&quot;https://classicalrevolution.org/chapters/&quot;&gt;around the world&lt;/a&gt;, and has reached Pittsburgh, which has its &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.classicalrevolutionpgh.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.classicalrevolutionpgh.org/&quot;&amp;gt;own chapter&amp;lt;/span&amp;gt; (&lt;a href=&quot;https://www.facebook.com/classicalrevolutionpgh&quot;&gt;Facebook page&lt;/a&gt;). The point of Classical Revolution is to &lt;a href=&quot;https://classicalrevolution.org/about/&quot;&gt;perform chamber music in non-traditional settings&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Tango&lt;/h2&gt;
&lt;p&gt;I saw that the local Pittsburgh tango group &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.aquitango.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.aquitango.com/&quot;&amp;gt;AquiTango&amp;lt;/span&amp;gt; (&lt;a href=&quot;https://www.facebook.com/AquiTango&quot;&gt;Facebook page&lt;/a&gt;) was &lt;a href=&quot;https://www.facebook.com/events/380553315352985/&quot;&gt;going to perform&lt;/a&gt; at &lt;a href=&quot;https://barmarcopgh.com/&quot;&gt;Bar Marco&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;AquiTango was to perform traditional &lt;a href=&quot;https://en.wikipedia.org/wiki/Argentine_tango&quot;&gt;Argentine tango&lt;/a&gt; music. I had actually encountered, a decade ago, an earlier incarnation (with some member changes since then) of the group, when I was taking Argentine tango classes and dancing; it was formerly Tangueros de Ley. I remember when Julieta Ugartemendia was in the group, playing clarinet and singing, and she also danced! In any case, the group has been revived after she left, as a quartet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://lh5.ggpht.com/hopUhptskdqtJ-rQfGKZ2awY2KUwuQS9waErFnvkkmdrot9eRTguZRgn--7a8JHRNfGuU2R73hzDssjWGfO5=s615&quot; alt=&quot;AquiTango performing at Bar Marco&quot; title=&quot;AquiTango&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I decided to attend, not only to check out what the experience of &quot;Classical Revolution&quot; in such a venue is like, but also for my own special reason: to be inspired by some good tango performances, because I am actually planning to soon play tango on flute and also sing it for the first time!&lt;/p&gt;
&lt;p&gt;So here&apos;s my review of the concert.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-11-17)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;Three days later, I did in fact perform tango, at a party!&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The venue&lt;/h2&gt;
&lt;p&gt;The second floor of Bar Marco is a nice place for chamber music. Not too big, not too small. The musicians play near the windows, while the audience is seated in folding chairs. Wine was available for those who wanted it (I chose not to have any).&lt;/p&gt;
&lt;h2&gt;The concert&lt;/h2&gt;
&lt;h3&gt;Dancers?&lt;/h3&gt;
&lt;p&gt;Although I am no longer part of the local tango dance community, I could tell as people arrived that some of them knew each other and were dancers. During the concert, it was easy to tell who were the dancers, because they couldn&apos;t keep still and fidgeted in their seats or tapped out rhythms. (OK, I kind of did that too.) I was a little surprised that nobody just got up and danced. Maybe there weren&apos;t quite enough dancers, or maybe they thought it was a more formal kind of event at which dancing would not have been appropriate. It was definitely a &quot;chamber music recital&quot; kind of atmosphere rather than a dance atmosphere. That was fine, but I did miss seeing a little bit of dancing. (Or maybe people were dancing at the back whom I didn&apos;t see; I was sitting near the front to better see and hear the musicians.)&lt;/p&gt;
&lt;h3&gt;Musicians and music&lt;/h3&gt;
&lt;p&gt;The quartet (keyboard, violin, bass, accordion/voice) seemed to be having fun playing in this environment. The vibe was fairly informal, with a lot of smiling and banter. They played a lot of classic tangos, waltzes, and milongas, including some I had practiced myself at home, such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Por_una_Cabeza&quot;&gt;&quot;Por una Cabeza&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I enjoyed how Ernesto Contenti, who is originally from Argentina actually, talked about his history and the songs he sang (he both sang and played the accordion). He said that when he was growing up, tango was just old-people stuff, and it barely even registered in his youthful existence. It was only after he had left the country and then encountered the passion for tango elsewhere that he really discovered the music of his homeland! When he sang the classic &lt;a href=&quot;https://en.wikipedia.org/wiki/Mi_Buenos_Aires_querido_(song)&quot;&gt;&quot;Mi Buenos Aires querido&quot;&lt;/a&gt;, it seemed to ring out in a deeply personal way.&lt;/p&gt;
&lt;p&gt;The violinist, Maureen Conlon-Gutierrez, is originally from Mexico, and her classical training showed in the brilliance and polish of her play.&lt;/p&gt;
&lt;p&gt;The bassist, Jose Puentes, providing the foundation for the quartet, is from Venezuela.&lt;/p&gt;
&lt;p&gt;The pianist, Tom Roberts, joked about his non-Latin heritage, being a local. They have a nickname for him, &quot;El Cacho&quot;. His keyboard playing was particularly lively and adventurous.&lt;/p&gt;
&lt;p&gt;AquiTango at some point played some non-traditional pieces also. I enjoyed the added variety.&lt;/p&gt;
&lt;h3&gt;After the concert&lt;/h3&gt;
&lt;p&gt;I had to leave immediately after the concert, because of many things to do this busy week. It would have been nice to stay and chat with the musicians and other audience members; I saw a lot of people going up to the musicians to chat. One thing great about this informal &quot;Classical Revolution&quot; format is that there is not as much &quot;distance&quot; between the performers and audience as in a traditional venue.&lt;/p&gt;
&lt;p&gt;I left feeling excited about my plans to perform tango music soon.&lt;/p&gt;
&lt;h2&gt;Some videos online&lt;/h2&gt;
&lt;p&gt;Here is a recent sample of AquiTango in action, performing the tango classic &quot;La Cumparsita&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;zHaasDMVYYo&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is an older sample of AquiTango, playing on the street in Squirrel Hill:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;6u6RO8c5b8I&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you&apos;re in the Pittsburgh area and looking for some live traditional tango music performed with precision and fire, check out the AquiTango quartet!&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-28)&lt;/h3&gt;
&lt;p&gt;I went to Bar Marco again for &lt;a href=&quot;/blog/2013/02/28/another-exciting-concert-at-bar-marco-chris-norman-and-the-chatham-baroque-playing-a-tasty-assortment-of-dynamic-music/&quot;&gt;another enjoyable music performance&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Round 1 of Pittsburgh Chess Club tournament: revenge of the Knight</title><link>https://franklinchen.com/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/13/round-1-of-pittsburgh-chess-club-tournament-revenge-of-the-knight/</guid><pubDate>Tue, 13 Nov 2012 23:07:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/sax-chen-2012-11-13_files/round1.jpg&quot; alt=&quot;Panoramic view of round 1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I started another &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; 6-round Tuesday night tournament, the 16th Robert P. Smith Memorial. (I reported on my previous Tuesday night tournament &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;Today&apos;s lesson&lt;/h2&gt;
&lt;p&gt;In my game for round 1, we see the power of a good Knight, especially in contrast to a bad Bishop.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/sax-chen-2012-11-13.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Since this was round 1, there was no telling in advance who my opponent would be. So I had no preparation other than just having played a &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;Pittsburgh Chess League game on Sunday&lt;/a&gt;. Surprisingly, that experience did prove useful in my game, as I will explain.&lt;/p&gt;
&lt;h3&gt;Strength&lt;/h3&gt;
&lt;p&gt;I expected to be the highest-rated player in the tournament again, &lt;a href=&quot;/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;as in the last one&lt;/a&gt;, so I expected that round 1 would pair me against someone considerably lower-rated than me. As usual, however, I &lt;em&gt;respect&lt;/em&gt; all of my opponents, regardless of rating. Upsets do happen, especially when one does not take an opponent seriously.&lt;/p&gt;
&lt;p&gt;It turned out that I was paired against someone I had never actually met before, much less played against. I enjoyed this situation, as it meant &lt;em&gt;unpredictability&lt;/em&gt;. There is something to be said for the pleasures of refining one&apos;s way of playing against an opponent one has faced before, but there is also something to be said for totally real-time improvisation.&lt;/p&gt;
&lt;p&gt;The game ended up long, taking over three hours to complete. It wasn&apos;t just a quick and easy win, despite my opponent being 500 rating points lower than me.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;As I had Black, I was of course much more limited in my choice of opening than I am as White. As I did in &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;round 2 of the previous tournament&lt;/a&gt;, I countered &lt;code&gt;e4&lt;/code&gt; with the aggressive Sicilian Defense.&lt;/p&gt;
&lt;p&gt;My opponent played the &lt;a href=&quot;https://en.wikipedia.org/wiki/Grand_Prix_Attack#Grand_Prix_Attack&quot;&gt;Grand Prix Attack&lt;/a&gt;. White&apos;s goal in this variation is to focus on launching a King side attack against Black, by playing an early &lt;code&gt;f4&lt;/code&gt;, with the plan of eventually playing &lt;code&gt;f5&lt;/code&gt;, bringing the White Queen to &lt;code&gt;e1&lt;/code&gt; and &lt;code&gt;h4&lt;/code&gt;, etc. This attack often works effectively on weaker players, but objectively, Black can defend against it.&lt;/p&gt;
&lt;p&gt;He chose an unusual sub-variation I had not seen before, &lt;code&gt;Bd3&lt;/code&gt;, after which I made a positionally rather risky decision that I would not make again, but just happened to feel like engaging in at the time: I decided to develop my King Knight not to a &quot;normal&quot; square such as &lt;code&gt;f6&lt;/code&gt;, but to the &quot;rim&quot; at &lt;code&gt;h6&lt;/code&gt; instead:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/pp2ppbp/3p2pn/8/3pPP2/3B4/PPPPN1PP/R1BQK2R w KQkq -&quot; caption=&quot;Knight on h6&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;My justification was that I wanted the option of playing my own attack with &lt;code&gt;f5&lt;/code&gt;. I was in the mood for dynamic complications rather than a more sedate middle game:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1rk1/pp2p1bp/3p2pn/5p2/4PP2/2PB4/P2PN1PP/R1BQ1RK1 w - -&quot; caption=&quot;After f5&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;White made a strategic mistake in allowing my Knight on &lt;code&gt;h6&lt;/code&gt; to get to a great outpost on &lt;code&gt;f5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1r1k/pp2p1bp/3p2p1/5n2/2B2P2/2P5/P2PN1PP/R1BQ1RK1 w - -&quot; caption=&quot;Knight on f5&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The position was still roughly equal at this point, but gradually White made more inaccurate moves, ceding an advantage to me. In fact, by the position, I already had a won game (but missed the best continuation):&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1r1k/pp1b2bp/6p1/3Ppn2/2B5/2P5/P2BN1PP/R2Q1RK1 b - -&quot; caption=&quot;White is actually lost&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Note how poor White&apos;s Bishop on &lt;code&gt;d2&lt;/code&gt; is, while Black&apos;s Knight on &lt;code&gt;f5&lt;/code&gt; is clearly the strongest of all the remaining minor pieces (four Bishops and two Knights).&lt;/p&gt;
&lt;p&gt;In the following position, I have just played the Pawn advance &lt;code&gt;e4&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4r1k/p2b2bp/1q4p1/1p1P1n2/4p3/1BP5/P2BN1PP/R2Q1R1K w - -&quot; caption=&quot;e4 advance by Black&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The good Knight&lt;/h3&gt;
&lt;p&gt;Perhaps White had thought that I would play &lt;code&gt;Ne3&lt;/code&gt; trading my Knight for White&apos;s Bishop on &lt;code&gt;d2&lt;/code&gt;. No! I was not going to make the mistake again of thoughtlessly trading a good Knight for a bad Bishop, the way &lt;a href=&quot;/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/&quot;&gt;I just reported on doing so on Sunday&lt;/a&gt;! Both common sense and tactical calculation rebel against such an idea.&lt;/p&gt;
&lt;p&gt;In fact, in the game I proceeded to make White&apos;s bad Bishop even worse:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4rr1k/p2b2bp/1q4p1/1p1P1n2/5R2/1BP1p3/P3N1PP/R1BQ3K w - -&quot; caption=&quot;White&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;The end&lt;/h2&gt;
&lt;p&gt;In the final blow in the game, I set a trap, offering White a &quot;free&quot; Pawn, which he mistakenly took (but I had a completely won position anyway; this is not &quot;hope chess&quot; where an idea only works if you hope your opponent falls into a trap). I moved the Knight from &lt;code&gt;f5&lt;/code&gt; to &lt;code&gt;d6&lt;/code&gt;, not only threatening White&apos;s Rook, but also with the intention of redeploying the Knight to &lt;code&gt;e4&lt;/code&gt; and then &lt;code&gt;f2&lt;/code&gt;. And I did so.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4rr1k/p2b2bp/1q1n4/1p1P2p1/P5R1/1BP1p3/4N1PP/R1BQ3K w - -&quot; caption=&quot;White&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4rr1k/p2b2bp/1q6/1p1P2R1/P3n3/1BP1p3/4N1PP/R1BQ3K w - -&quot; caption=&quot;White&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White struggled on for a few more bizarre moves before resigning:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4rr1k/p2b2bp/8/1p1P3R/P7/2P1p1N1/2B2qPP/R1Bn2K1 w - -&quot; caption=&quot;White resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Because of my game on Sunday (and reflections on previous games before that), I was very conscious of the power of the Knight and wanted to use it well.&lt;/li&gt;
&lt;li&gt;My anti-positional &lt;code&gt;f5&lt;/code&gt; idea &quot;worked&quot;, and created an interesting position and middle game out of which I did well, but I feel guilty about having played this milder version of &quot;hope chess&quot;.&lt;/li&gt;
&lt;li&gt;Sometimes it&apos;s not clear to a bystander how much thought actually goes into a &lt;em&gt;sound&lt;/em&gt; attack, because the vast majority of calculations during an attack inevitably go into thinking about possible continuations that &lt;em&gt;never happen&lt;/em&gt; during the game, but must be evaluated in case they do happen. (See the annotations for some details of the alternative lines that did not happen.)&lt;/li&gt;
&lt;li&gt;I did miss a faster, more immediate win (see the annotations for details); this is something I sometimes do when I have a clear advantage and end up with a little bit of tunnel vision in which I initially see &lt;em&gt;too many&lt;/em&gt; good moves, and instead of investigating them all thoroughly, I investigate one, decide it is good, and then go with it. How to zoom in more effectively is an ongoing problem to solve.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next week for round 2 I will get a stronger opponent, but play White. For reasons I&apos;ll explain after the fact, I&apos;m thinking of playing completely differently with White than I have in the past Tuesday night tournament and in the Pittsburgh Chess League so far! Stay tuned. I want to explore some themes so that I can write about them.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I got off to a good start in the Tuesday night tournament with an interesting game in which I played a fairly precise attack. And I was happy, after abusing my Knight in Sunday&apos;s game, to make my Knight the hero of the first Tuesday night round. I must remember to love each of my pieces in each game I play.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess League Round 3: back to chess after a month off</title><link>https://franklinchen.com/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/11/pittsburgh-chess-league-round-3-back-to-chess-after-a-month-off/</guid><pubDate>Sun, 11 Nov 2012 23:24:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-winwood-2012-11-11_files/pcl3.jpg&quot; alt=&quot;Round 3 in progress&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;I had a break from chess&lt;/h2&gt;
&lt;p&gt;I took &lt;em&gt;a whole month&lt;/em&gt; off from playing chess, after completing both a six-round &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;Tuesday night tournament&lt;/a&gt; and &lt;a href=&quot;/blog/2012/10/14/pittsburgh-chess-league-round-2-natural-moves-are-often-bad/&quot;&gt;a round&lt;/a&gt; of the &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I welcomed the break because there were many projects I had temporarily put on hold during my comeback to chess. But after about three weeks, I mysteriously began to have chess dreams arrive in my sleep, and I felt the craving for battle. So I looked forward not only to round 3 of the Pittsburgh Chess League, but also signed up for the next Pittsburgh Chess Club Tuesday night tournament, which starts this week!&lt;/p&gt;
&lt;h2&gt;Today&apos;s lesson&lt;/h2&gt;
&lt;p&gt;In this round of the Pittsburgh Chess League, round 3, our team, the CMU Tartans, was paired against the Phalanx Lords. We ended up winning another match (we won our match in round 2, and had a byte in round 1). My game was the next-to-last to finish, taking almost four and a half hours to complete. I was so exhausted afterwards!&lt;/p&gt;
&lt;p&gt;Today&apos;s lesson: &lt;em&gt;passive&lt;/em&gt; moves are not only bad, but often clump together psychologically, magnifying their badness!&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-winwood-2012-11-11.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Since I took a month off from chess, and had no time to engage in any chess study whatsoever, I went into my game without any preparation. I didn&apos;t even know exactly whom I was going to face, or what color I would play. In fact, I had originally guessed that I was going to play Black on third board against someone, but I ended up playing White on second board against someone else. Of course, because of the uncertainty, I had scoped out the possibility of playing someone else on the opposing team, so I was not faced with a complete surprise.&lt;/p&gt;
&lt;h3&gt;Strength&lt;/h3&gt;
&lt;p&gt;My opponent was someone I&apos;d played three times before, years ago, and won against each time. So at the board, I wasn&apos;t worried. He is an Expert rated a hundred points below me, so he nevertheless had to be taken quite seriously, of course. He had been playing well recently, apparently, tying for second for prize money at &lt;a href=&quot;https://pscfchess.org/results/12110304.htm&quot;&gt;last weekend&apos;s Pennsylvania State Chess Championship&lt;/a&gt; (which I had no time to attend but stopped by for a few minutes to check out while in Oakland for four hours of music workshops).&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;In a slight state of confusion, straight out of the opening (an &lt;a href=&quot;https://en.wikipedia.org/wiki/English_Opening&quot;&gt;English Opening&lt;/a&gt;) I ended up suddenly deciding to play an opening variation I had never played before!&lt;/p&gt;
&lt;p&gt;What happened was that on the fly, I decided I simply did not feel like playing yet another &lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;Maróczy Bind&lt;/a&gt; type of position, and varied. What can I say? I just didn&apos;t feel like it. There is no logic to this kind of decision. It was an impulse I gave into.&lt;/p&gt;
&lt;p&gt;Well, it turns out that apparently my opponent also had not encountered this opening variation, and he played inaccurately, resulting in my gaining a large advantage in time and space:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1rk1/pp1nppbp/3p1np1/3P4/2P5/2N1BN1P/PP2BPP1/R2QK2R w KQ -&quot; caption=&quot;Opening&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;I made what I consider to be an elementary sort of error, in needlessly allowing the exchange of some minor pieces by Black, because of my rush to expand on the Queen side already. Nevertheless, I retained a real advantage despite the exchanges:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1r2/pp1bppkp/3p1np1/3P4/1PPQ4/5N1P/P3BPP1/2R1K2R w K -&quot; caption=&quot;Opening after exchanges&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black made some passive moves that allowed me to build up to a great position in preparation for a King side attack; a quicker &lt;code&gt;a5&lt;/code&gt; and without the weakening &lt;code&gt;b6&lt;/code&gt; would have created counterplay more reliably:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1r2/p2bppkp/1p1p1np1/3P4/1PPQ4/7P/P2NBPP1/2R2RK1 b - -&quot; caption=&quot;Rook lift&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I started losing the thread when, instead of closing off the Queen side and turning my attention to the King side, I tried to &quot;keep my options open&quot; (as far as pushing for &lt;code&gt;c5&lt;/code&gt;), and not only allowed Black to take control of the &lt;code&gt;a&lt;/code&gt; file, but also I gave up my back rank, believing that there was no harm in doing that. In some sense, maybe that was correct (I was in fact never in danger of losing in this game), but from a practical point of view, I was creating conditions in which I could (and did) make further inaccuracies:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3q1rk1/4pp1p/1p1p1np1/3P1b2/rPPQ4/1RR4P/3NBPP1/6K1 b - -&quot; caption=&quot;Black has counterplay&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;In a critical position in which I could have continued strongly, I made the mistake of the &lt;em&gt;wrong exchange of pieces&lt;/em&gt; in which I took Black&apos;s Bishop for my Knight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5rk1/q3pp1p/1p1p1np1/3P4/1PPQ2P1/4R2P/1R1NBPK1/r2b4 w - -&quot; caption=&quot;Exchange coming&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I cannot hide the fact that I made a similar mistake in a previous &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;chess game in September&lt;/a&gt;. If you look at that game, you will see that I created a dominant position and then &quot;greedily&quot; exchanged a good Knight for a bad Bishop. &lt;strong&gt;I have therefore uncovered a weakness of my play that I was not entirely aware of before: I like Bishops too much!&lt;/strong&gt; I am stating this weakness publicly in hope of forcing myself to be careful in the future. It&apos;s funny because I did not always have this prejudice; I used to play openings in which I quickly gave up a Bishop for a Knight. But then something changed. Now is the time to restore balance.&lt;/p&gt;
&lt;p&gt;My opponent and I traded inaccuracies in which we did not play the most active moves possible (in particular, he made one of his Rooks pointlessly passive, as did I), but overall, we reached a point at which I was in danger of not getting anywhere at all, and I finally continued my King side attack:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4n1k1/r3pp1p/1p1p2p1/1P1P2P1/1qP3BP/2R1R3/2Q2PK1/r7 b - -&quot; caption=&quot;King side attack&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Objectively, this should not have worked at all, but somehow, I had momentum and my opponent became passive at the &lt;em&gt;worst&lt;/em&gt; possible moment, and after a single passive move with the Queen, the following position was reached, which I consider to be probably won for White:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4n1k1/r3pp1p/1p1p2p1/1PqP2P1/2P1Q1BP/2R1R3/5PK1/r7 b - -&quot; caption=&quot;Strong for White&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black should have &lt;em&gt;actively&lt;/em&gt; defended against the King side attack, by fearlessly moving the Pawn up with &lt;code&gt;f5&lt;/code&gt; instead of sitting around:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4n1k1/r3pp1p/1p1p2p1/1PqP2P1/2P3BP/2R1R3/2Q2PK1/r7 w - -&quot; caption=&quot;Strong defense&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;There is a fear some of us have of moving Pawns in front of our King in the face of an attack. But tactically, sometimes that is the correct thing to do.&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;After the Pawn attack &lt;code&gt;h5&lt;/code&gt; by White, the game was basically over:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;4n1k1/r3pp1p/1p1p2p1/1P1P2PP/1qP1Q1B1/2R1R3/5PK1/r7 b - -&quot; caption=&quot;White&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Check out the game annotations for details, but this is the final position, in which Black resigned because of impending loss of a piece:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;R3nk2/1r2p2p/1p1p2p1/1P1P2P1/2P3B1/5R2/5PK1/1r6 b - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Notice how passive Black&apos;s position was at this point, with the Rook on &lt;code&gt;b7&lt;/code&gt; doing nothing, the Knight pinned on the back rank, Black&apos;s King suffocated.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Many of the problems faced by both sides in the game were a result of playing passively rather than immediately going on an attack or an active defense.&lt;/li&gt;
&lt;li&gt;I have to stop wanting to take Bishops with my Knights, despite the fact that in both games so far in which I&apos;ve mistakenly done so, I have managed to activate my Bishop eventually to advantage after all, by accident.&lt;/li&gt;
&lt;li&gt;It is no secret that human chess play is annoyingly imperfect and sentimental compared to computer analysis; human play features blocks of related moves that are either a series of passive moves or a series of over-aggressive moves, rather than a &quot;living in the present&quot; choice of a good move in a given position without regard to what bad plan one started executing earlier. The task of any chess improver must be to be more computer-like, which is ironically more Zen-like.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;The next Pittsburgh Chess Club Tuesday night tournament starts on Tuesday. I hope to play well in it. Obviously, I would like to win all six rounds and the tournament, but more than that, I simply wish to play well and let the wins take care of themselves from that. Also, there will be another round of the Pittsburgh Chess League in early December. After those are over, I will get another break from chess until sometime in January.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was pleased at finally winning my game and helping the team win the match. And I am continuing to observe these patterns of passivity in my play as well as in the play of my opponents, hoping to learn something as I document them.&lt;/p&gt;
</content:encoded></item><item><title>I decided to resign myself to continue voting</title><link>https://franklinchen.com/blog/2012/11/06/i-decided-to-resign-myself-to-continue-voting/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/06/i-decided-to-resign-myself-to-continue-voting/</guid><pubDate>Tue, 06 Nov 2012 12:05:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/voter-receipt-2012.jpg&quot; alt=&quot;My voter receipt 2012&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last year I &lt;a href=&quot;/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/&quot;&gt;wondered aloud about the act of voting&lt;/a&gt;, being unsure about how to justify my annual participation in this ritual.&lt;/p&gt;
&lt;p&gt;This being a presidential election, avoiding getting sucked in is a perpetual chore, given that it is impossible for me to completely avoid people&apos;s political pontifications on their blogs, Twitter, Facebook, Google+, etc.&lt;/p&gt;
&lt;p&gt;I even had to stay home from work in order to avoid &lt;a href=&quot;/blog/2012/07/06/obama-is-speaking-outside-my-office-window-so-why-did-i-stay-home/&quot;&gt;politicians annoyingly disrupting the workplace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My conclusion was that, for me, the only rational response (that didn&apos;t result in my getting frustrated and angry, which seems the tone of most of the politics-related chatter I see on social media) is to spend as little time as possible on politics, spend the evening before an election to do some research, and then go out and vote for the &quot;lesser evil&quot; for each race (yes, it&apos;s not just about President, and in fact, local races are the ones in which voting is most likely to make a difference).&lt;/p&gt;
&lt;p&gt;So last night, I held my nose, read up on various PA state candidates, made my choices, and this morning I went and voted. And now I&apos;m going to simply proceed with my day. I&apos;m not going to follow any election news coverage whatsoever. Instead, I&apos;m going to try to get stuff done.&lt;/p&gt;
&lt;p&gt;Oh, and whoever wins in each of these races, please go and do your job for us the best you can. Get stuff done. Stop blabbering lies and promises.&lt;/p&gt;
</content:encoded></item><item><title>The start of a local Haskell study group</title><link>https://franklinchen.com/blog/2012/11/05/the-start-of-a-local-haskell-study-group/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/05/the-start-of-a-local-haskell-study-group/</guid><pubDate>Mon, 05 Nov 2012 09:23:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.haskell.org/wikiupload/4/4a/HaskellLogoStyPreview-1.png&quot; alt=&quot;Haskell logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recently, I had a conversation with &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://billlaboon.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://billlaboon.com/&quot;&amp;gt;Bill&amp;lt;/span&amp;gt;, who was asking about resources for learning more about functional programming. I did some serious thinking about how to advise, but eventually decided to recommend that he use the &lt;a href=&quot;https://haskell.org/&quot;&gt;Haskell&lt;/a&gt; programming language as a vehicle for getting into the theory and practice of functional programming.&lt;/p&gt;
&lt;p&gt;(To fans of &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt; or &lt;a href=&quot;https://caml.inria.fr/&quot;&gt;Caml&lt;/a&gt; or &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; or &lt;a href=&quot;https://clojure.org/&quot;&gt;Clojure&lt;/a&gt; or &lt;a href=&quot;https://racket-lang.org/&quot;&gt;Racket&lt;/a&gt; or other languages: I will explain my rationale later.)&lt;/p&gt;
&lt;p&gt;Also, I recommended a particular tutorial as a decent starting point: a book available online called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://learnyouahaskell.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://learnyouahaskell.com/&quot;&amp;gt;&quot;Learn You a Haskell for Great Good!&quot;&amp;lt;/span&amp;gt; (seriously).&lt;/p&gt;
&lt;p&gt;As &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://billlaboon.com/learning-myself-a-haskell-for-great-good/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://billlaboon.com/learning-myself-a-haskell-for-great-good/&quot;&amp;gt;Bill got going&amp;lt;/span&amp;gt; and &lt;a href=&quot;https://www.chrisumbel.com/&quot;&gt;Chris&lt;/a&gt; joined us, Bill set up a Google Group to make discussion easier. If you&apos;re interested in joining the study group, let us know!&lt;/p&gt;
&lt;h2&gt;A project setup&lt;/h2&gt;
&lt;p&gt;Meanwhile, one of my first suggestions so far to the participants has been to get a decent serious development setup beyond just using the REPL for experimentation. In particular, as a proponent of &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test-Driven Development&lt;/a&gt;, I believe that anyone learning a new programming language should be given the tools to immediately get a serious process going, even if only to solve trivial problems.&lt;/p&gt;
&lt;p&gt;Since &lt;a href=&quot;https://projecteuler.net/&quot;&gt;Project Euler&lt;/a&gt; was brought up as a source of little programming exercises to solve, I decided to create a project structure with (currently) one solved problem and a test file using &lt;a href=&quot;https://hunit.sourceforge.net/&quot;&gt;HUnit&lt;/a&gt; and &lt;a href=&quot;https://batterseapower.github.com/test-framework/&quot;&gt;test-framework&lt;/a&gt; as a template one can use to set up a complete development process.&lt;/p&gt;
&lt;p&gt;Here&apos;s the link to my &lt;a href=&quot;https://github.com/FranklinChen/project-euler-haskell&quot;&gt;&lt;code&gt;project-euler-haskell&lt;/code&gt; on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Comments and participation are welcome!&lt;/p&gt;
</content:encoded></item><item><title>Attending the annual Pitt Jazz Seminar for the first time: day 2</title><link>https://franklinchen.com/blog/2012/11/03/attending-the-annual-pitt-jazz-seminar-for-the-first-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/03/attending-the-annual-pitt-jazz-seminar-for-the-first-time/</guid><pubDate>Sat, 03 Nov 2012 20:52:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.music.pitt.edu/sites/default/files/jazz-2012-cropped.jpg?1350921512&quot; alt=&quot;42nd Pitt Jazz Seminar poster&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/11/02/attending-the-annual-pitt-jazz-seminar-for-the-first-time-day-1/&quot;&gt;Yesterday&lt;/a&gt;, I attended some morning sessions of the annual Pitt Jazz Seminar. I went back for more today.&lt;/p&gt;
&lt;h2&gt;A tribute to Miles&lt;/h2&gt;
&lt;h3&gt;&lt;a href=&quot;https://randybrecker.com/&quot;&gt;Randy Brecker&lt;/a&gt;, trumpet&lt;/h3&gt;
&lt;p&gt;I liked how Randy Brecker talked about how he got into music. He listened to a lot of records as a kid, and at some point he started improvising during piano solos, by ear. He started with ballads (by Miles, Chet, etc.) and played with his brother &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.michaelbrecker.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.michaelbrecker.com/&quot;&amp;gt;Michael&amp;lt;/span&amp;gt; (who sadly died some years ago).&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://www.lewsoloff.com/&quot;&gt;Lew Soloff&lt;/a&gt;, trumpet&lt;/h3&gt;
&lt;p&gt;Lew Soloff came from a very different world. He stopped piano lessons at ten because his teachers did not emphasize &lt;em&gt;music&lt;/em&gt;, but &quot;holding the hand a certain way&quot;. He wanted trumpet because it was &lt;em&gt;shiny&lt;/em&gt;. Ha! Reminded me that it doesn&apos;t matter why you start doing something; often you have a perhaps superficial reason, and find deeper reasons later.&lt;/p&gt;
&lt;p&gt;His uncle emphasized the importance of &lt;em&gt;practice&lt;/em&gt; and admonished him for being interested in too many things. Some tips on mental attitudes: never say &quot;I can&apos;t&quot;, and also drop your &lt;em&gt;ego&lt;/em&gt;: learn from your peers. So in one summer, he went from last chair to first chair, practicing one and a half hours each day!&lt;/p&gt;
&lt;p&gt;Lew had a classical music training and therefore at first was scared to improvise. He had to overcome that fear. He also had to learn to articulate in &quot;doodle tongue&quot; rather than in the classical way.&lt;/p&gt;
&lt;p&gt;He said he eventually became open to all kinds of music, where in the past he was closed. He has a different take than Duke Ellington&apos;s famous quote, &quot;There are two kinds of music, good music and the other kind&quot;: instead, Lew likes to think that the two kinds are the &lt;em&gt;honest&lt;/em&gt; and &lt;em&gt;dishonest&lt;/em&gt;. I like this formulation.&lt;/p&gt;
&lt;p&gt;(Randy piped in saying that he became musically open because that was just the way things were in Philadelphia, where there are so many styles.)&lt;/p&gt;
&lt;p&gt;Advice: when learning ballads, first play them &lt;em&gt;without&lt;/em&gt; improvisation, focusing on purity and honesty, and expressing emotion as though singing. Learn the lyrics and understand them.&lt;/p&gt;
&lt;h2&gt;Artistry in rhythm: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.winardharper.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.winardharper.com/&quot;&amp;gt;Winard Harper&amp;lt;/span&amp;gt;, drums&lt;/h2&gt;
&lt;p&gt;Winard Harper spoke of coming from a musical family and playing at clubs by the time he was five years old. He emphasized the importance of relationships in making music come together.&lt;/p&gt;
&lt;p&gt;He&apos;s really into an African instrument that I never heard of before called a &lt;a href=&quot;https://en.wikipedia.org/wiki/Balafon&quot;&gt;&quot;balafon&quot;&lt;/a&gt;. More generally, he is interested in all kinds of world music, whether from Africa, Australia, Japan. He urged everyone to honor tradition, learn history, and do a lot of playing and listening. &quot;The more you know, the more you can use&quot;. He summed up with the message that as a drummer, when jamming, you have to face all kinds of situations, drums that are not yours, etc., and you have to learn to deal, because it&apos;s not about you but about music. Sounds wise no matter what instrument we play!&lt;/p&gt;
&lt;h2&gt;The piano in jazz: &lt;a href=&quot;https://georgecables.com/&quot;&gt;George Cables&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;George Cables emphasized that jazz is living music, through which everyone can become a &quot;co-composer&quot; through arranging and improvising.&lt;/p&gt;
&lt;p&gt;As a pianist, he didn&apos;t want to be a soloist so much as a good side man. He was most inspired by Wynton Kelly.&lt;/p&gt;
&lt;p&gt;Musically, he emphasized that the piano is a percussion instrument. He also gave a history lesson on the piano in jazz, starting from Scott Joplin and moving forward from there. He said the progression was toward &quot;freeing the bass&quot;, allowing the left hand to do a lot more.&lt;/p&gt;
&lt;p&gt;(I had to leave this session a little early because I wanted to make it to a special recorder concert elsewhere in town.)&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I found it very interesting and useful attending Pitt Jazz Seminar sessions these past two days, featuring very different musicians on different instruments, getting a broad perspective on how they operate and what they value and what they have to teach. I hope to continue attending this annual event!&lt;/p&gt;
</content:encoded></item><item><title>Attending the annual Pitt Jazz Seminar for the first time: day 1</title><link>https://franklinchen.com/blog/2012/11/02/attending-the-annual-pitt-jazz-seminar-for-the-first-time-day-1/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/11/02/attending-the-annual-pitt-jazz-seminar-for-the-first-time-day-1/</guid><pubDate>Fri, 02 Nov 2012 23:53:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.music.pitt.edu/sites/default/files/jazz-2012-cropped.jpg?1350921512&quot; alt=&quot;42nd Pitt Jazz Seminar poster&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This year I decided to attend events of the 42nd annual &lt;a href=&quot;https://www.music.pitt.edu/events/november-3-2012-42nd-annual-jazz-se120813&quot;&gt;Pitt Jazz Seminar&lt;/a&gt; for the first time. I&apos;ve never had any instruction in jazz, and frankly have only a little bit of experience trying to play it myself, so I enjoyed the opportunity to attend presentations by great performers who could talk about what they do, where they&apos;ve come from, and demonstrate their craft.&lt;/p&gt;
&lt;p&gt;I went in to Pitt campus on a Friday morning to learn from some master musicians.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://yotammusic.com/&quot;&gt;Yotam Silbertein&lt;/a&gt;, guitar&lt;/h2&gt;
&lt;p&gt;I thought it was interesting that an Israeli musician, Yotam Silbertein, kicked off the morning of seminars. Of course, as he emphasized in his talk, jazz is an international phenomenon. It happens in Israel, it happens in Japan, it happens in Europe. It may have started off in the United States, but it is everywhere now.&lt;/p&gt;
&lt;p&gt;That said, he did eventually have to head to New York, the place to be. He even speaks English with a New York style accent.&lt;/p&gt;
&lt;p&gt;He emphasized that it&apos;s necessary to go where the action is and learn from the best.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.javonjackson.com/&quot;&gt;Javon Jackson&lt;/a&gt;, tenor saxophone&lt;/h2&gt;
&lt;p&gt;Javon Jackson spoke a lot about being a professional in music: how you behave, how you work with others, and develop a career.&lt;/p&gt;
&lt;p&gt;Indeed, he pointed out that he wears a suit because it projects a professional image.&lt;/p&gt;
&lt;h2&gt;That&apos;s it for the day&lt;/h2&gt;
&lt;p&gt;There was another session later in the afternoon, but I skipped it because I needed to return to work.&lt;/p&gt;
</content:encoded></item><item><title>PodCamp Pittsburgh 7: review</title><link>https://franklinchen.com/blog/2012/10/28/podcamp-pittsburgh-7-review/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/28/podcamp-pittsburgh-7-review/</guid><pubDate>Sun, 28 Oct 2012 16:30:00 GMT</pubDate><content:encoded>&lt;p&gt;This year, I attended the two-day &lt;a href=&quot;https://www.podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt; yet again, for my third year in a row (and this is the seventh year of its existence). (I wrote a little bit about last year&apos;s PodCamp Pittsburgh (6) &lt;a href=&quot;/blog/2011/10/21/one-month-anniversary-of-my-blog/&quot;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;This year&apos;s theme was &quot;Build your digital toolbox&quot;.&lt;/p&gt;
&lt;p&gt;This year, I got Abby to come with me to part of it to see what it was about, since I had raved about 5 and 6.&lt;/p&gt;
&lt;p&gt;The emphasis of PodCamp Pittsburgh has been changing with time. I noticed that in the session descriptions. The previous two years had more of a personal focus while now, there is a lot of business interest. Still, I found useful advice while attending this year.&lt;/p&gt;
&lt;p&gt;Videos from PodCamp Pittsburgh 7 are available &lt;a href=&quot;https://www.youtube.com/playlist?list=PLS4FjD4nMvYNjjHGK1j2lFs3DUnfEurtR&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Singing and playing bossa nova favorite &quot;Chega de Saudade&quot; at Dunkin&apos; Donuts for J-Jam</title><link>https://franklinchen.com/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/28/singing-and-playing-bossa-nova-favorite-chega-de-saudade-at-dunkin-donuts-for-j-jam/</guid><pubDate>Sun, 28 Oct 2012 00:54:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/5.jpg&quot; alt=&quot;CMU Klezmer Band performing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday evening, I ended up unexpectedly &lt;a href=&quot;/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/&quot;&gt;singing alone in public for the first time in my life&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This evening, I ended up unexpectedly singing again, with guitarist &lt;a href=&quot;https://cantorben.com/&quot;&gt;Cantor Ben Rosner&lt;/a&gt; accompanying me: the first time in my life singing with an accompanist for the general public, and the first time I&apos;ve worked with a guitarist.&lt;/p&gt;
&lt;p&gt;We had just met for the first time this evening, and had only a minute ahead of time to agree on a suitable tempo and have him quickly sight read chords before we just launched into the music.&lt;/p&gt;
&lt;p&gt;I had not come to the local Dunkin&apos; Donuts in Squirrel Hill expecting to &lt;em&gt;sing&lt;/em&gt; at all, actually! What happened?!&lt;/p&gt;
&lt;h2&gt;The story behind the jam session at Dunkin&apos; Donuts&lt;/h2&gt;
&lt;p&gt;Abby had recently just met a new guy playing in the [Pittsburgh Mandolin Orchestra], &lt;a href=&quot;https://cantorben.wix.com/cantor-benjamin-rosner&quot;&gt;Cantor Ben Rosner&lt;/a&gt; of &lt;a href=&quot;https://www.bethshalompgh.org/&quot;&gt;Congregation Beth Shalom&lt;/a&gt; in Squirrel Hill. He was passing out flyers advertising a music jam session he was organizing, &quot;J-Jam&quot;, to be held tonight in the local Dunkin&apos; Donuts, which happens to be &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/home/1926901-74/hill-squirrel-dunkin-donuts-kosher-pittsburgh-says-area-jewish-restaurant&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/home/1926901-74/hill-squirrel-dunkin-donuts-kosher-pittsburgh-says-area-jewish-restaurant&quot;&amp;gt;the only Dunkin&apos; Donuts in the area that is certified kosher&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Apparently this was not the first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thejewishchronicle.net/view/full_story/19127215/article-Open-mic-night-draws-Jewish-performers-to-Dunkin%E2%80%99-Donuts?instance=news_special_coverage_right_column&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thejewishchronicle.net/view/full_story/19127215/article-Open-mic-night-draws-Jewish-performers-to-Dunkin%E2%80%99-Donuts?instance=news_special_coverage_right_column&quot;&amp;gt;Jewish community oriented music jam held at Dunkin&apos; Donuts&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-01-16)&lt;/h3&gt;
&lt;p&gt;J-Jam now has its own &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jjampgh.webs.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jjampgh.webs.com/&quot;&amp;gt;official Web site&amp;lt;/span&amp;gt; and &lt;a href=&quot;https://www.facebook.com/jjamPGH&quot;&gt;Facebook page&lt;/a&gt;. Check them out!&lt;/p&gt;
&lt;h2&gt;Deciding to participate&lt;/h2&gt;
&lt;p&gt;When I hear about music jams, I get excited as well as nervous. I always feel that I wish I were a much better musician than I am now, so that I don&apos;t always feel that I&apos;m the &lt;em&gt;worst&lt;/em&gt; one at these events, but at the same time, I learn so much from just being out there, both to enjoy hearing other musicians, and to study how they do what they do, and in turn try to provide something of my own soul to other musicians and the audience as well. It&apos;s like being naked; it&apos;s still really tough for me.&lt;/p&gt;
&lt;p&gt;But I was intrigued because, well, Dunkin&apos; Donuts should be pretty low key, right?&lt;/p&gt;
&lt;p&gt;I had spread the word to the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh Recorder Society&lt;/a&gt; mailing list, but nobody seemed up for participating, except Chuck said he was interested in coming.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I had no time whatsoever to &quot;prepare&quot; for this music jam. We exchanged some emails only earlier today, in which I mentioned some music I might play, if a suitable accompanist were available. These emails were exchanged as Abby and I were at the second day of &lt;a href=&quot;https://podcamppittsburgh.com/pcpgh-7-sessions-sunday/&quot;&gt;PodCamp Pittsburgh 7&lt;/a&gt; all day. When we came home from PodCamp Pittsburgh, all we could do was crash with a long nap, eat dinner, and frantically pack up our instruments. I brought along a little binder of stuff I might play. I had told Ben that I could play stuff like Baroque flute sonata movements or bossa nova or tango or Cuban bolero.&lt;/p&gt;
&lt;p&gt;Abby has been performing in music groups longer than I have, so she has her own selections at hand for her tamburas whenever desired.&lt;/p&gt;
&lt;h2&gt;At J-Jam&lt;/h2&gt;
&lt;p&gt;Dunkin&apos; Donuts was amazingly crowded. There were people of all ages, from toddlers to the elderly, sitting around listening to the live music and enjoying kosher food. It was pretty loud in there. I immediately decided that I would not play Baroque flute here. (I had brought it along with my Irish flute, modern flute, and soprano and alto recorders.)&lt;/p&gt;
&lt;p&gt;Since we had arrived an hour and a half past the begin time of the music jam, we had missed no shortage of performances already, I was sure. There were musicians singing and playing guitar and cello; I saw who I presumed to be Ben Rosner accompanying on mandolin at the time:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/1.jpg&quot; alt=&quot;Musicians in the middle of performing&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Meeting Ben and deciding what to do&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/2.jpg&quot; alt=&quot;Patrons in Dunkin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After the current musicians&apos; set, Ben came up to Abby and me, and said we could play after a couple more groups had their turn. He asked what I wanted to play. We took a few seconds to flip through that stuff I had brought, and decided to play one of the bossa nova songs I had brought, &quot;Chega de Saudade&quot;: he would sight read the chords and accompany me. I chose &quot;Chega de Saudade&quot; because I had given a shot at it spontaneously &lt;a href=&quot;/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/&quot;&gt;at a party a month ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I immediately made an interesting decision: although I had originally intended to play the melody on flute, and then launch into a jazzy improvisation before concluding, I decided, based on having just &lt;a href=&quot;/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/&quot;&gt;&lt;em&gt;sung&lt;/em&gt; yesterday as a pirate&lt;/a&gt;, that I was in the mood to sing, and a lot of people had been singing all evening, so I wanted to do that too. And it seemed that a voice would carry well over the conversations of the Dunkin&apos; Donuts patrons. So I would sing the song, in Portuguese of course, and then switch into flute improvisation.&lt;/p&gt;
&lt;h3&gt;A lot of good music I heard&lt;/h3&gt;
&lt;p&gt;I was really impressed by the soulful performances of everyone who showed up to sing and play instruments. Really high quality stuff.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/3.jpg&quot; alt=&quot;I-forgot-her-name&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So I heard a lot of traditional songs and Klezmer (in fact, the &lt;a href=&quot;https://cmuklezmer.weebly.com/index.html&quot;&gt;CMU Klezmer Band&lt;/a&gt; was there). Not what I usually listen to or encounter, but it was really great soaking in the different kinds of music.&lt;/p&gt;
&lt;p&gt;When one of the CMU Klezmer Band guys, the clarinetist, passed out lyrics to a particularly popular song, I even sang along, stumbling through Yiddish for the first time in my life!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/4.jpg&quot; alt=&quot;CMU Klezmer Band waiting for turn&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boulevardoftheallies.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boulevardoftheallies.com/&quot;&amp;gt;Joel&amp;lt;/span&amp;gt;, the J-Jam co-organizer who was handling the sound system throughout, performed one of his own compositions, and then one of his young guitar students performed along with him.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/7.jpg&quot; alt=&quot;Joel and student&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Familiar faces&lt;/h3&gt;
&lt;p&gt;Abby and I saw a number of familiar people. In Pittsburgh, if you meet someone for the first time, it seems that there are already a lot of connections through other people you already know.&lt;/p&gt;
&lt;p&gt;Roz, whom &lt;a href=&quot;/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/&quot;&gt;I last saw over a year ago when she was trying to sell accordions&lt;/a&gt; did some singing with the CMU Klezmer Band.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://betterfly.com/75586018&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://betterfly.com/75586018&quot;&amp;gt;Cindy Harris&amp;lt;/span&amp;gt;, who played autoharp so beautifully at &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;one of the French music jams I&apos;ve gone to&lt;/a&gt; did some solo pieces on autoharp:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/8.jpg&quot; alt=&quot;Cindy Harris on autoharp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At some point, Chuck from Pittsburgh recorder showed up. He wasn&apos;t here to play, but came to watch.&lt;/p&gt;
&lt;h3&gt;Abby played while Ben and I figured stuff out&lt;/h3&gt;
&lt;p&gt;When Abby took her turn playing some pieces solo on tambura, Ben and I ducked to the back of the store for a minute so that we could agree on a tempo as well as have him sight read the chord progressions of &quot;Chega de Saudade&quot;.&lt;/p&gt;
&lt;h3&gt;Ben and me&lt;/h3&gt;
&lt;p&gt;Ben and I returned, and set up quickly (we were the last set for the night other than a guy who was going to play some solo violin to close).&lt;/p&gt;
&lt;p&gt;I felt pretty awkward trying to sing &quot;Chega de Saudade&quot; for the first time in public, and in front of a microphone, while trying to read the Portuguese lyrics off a printout I had. (Note to self: I need to memorize these lyrics once and for all.) Ben and I had a go at it, and of course we made some mistakes, but that was expected. Then came time for me to grab my flute and improvise. Under pressure, I was less creative and accurate than I am when just improvising at home, unfortunately, but I&apos;ll learn in time to deal with the difference in setting. Also, I botched up a place to return to, so there was confusion for a moment as Ben and I found a way to gracefully end somewhere!&lt;/p&gt;
&lt;h3&gt;Just me&lt;/h3&gt;
&lt;p&gt;I decided to play one more piece, solo, that I thought I would do a lot better than the bossa nova experiment, so I got my Irish flute and chose spontaneously, while flipping through my binder, to play &quot;Waltz in the House&quot; by Emile Benoit. I love this beautiful song, and learned it half a year ago at my &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;first public jam session&lt;/a&gt;, when I was playing on Baroque flute at the time. But of course, tonight I chose to play it on Irish flute, and I played it with the best feeling and sonority I had in me, having played it for my own pleasure and for my baby nephew many times, always with the inflections and ornamentations I feel at the moment.&lt;/p&gt;
&lt;p&gt;People seemed to like this last piece I played. I also got a lot of comments afterwards on the beauty of the tone of my &lt;a href=&quot;https://www.caseyburnsflutes.com/&quot;&gt;wooden Irish flute&lt;/a&gt;; yes, it is a lovely instrument.&lt;/p&gt;
&lt;h2&gt;The next J-Jam&lt;/h2&gt;
&lt;p&gt;The next J-Jam is already scheduled for Sunday, December 16. I hope Ben and I can come up with good stuff to play together, and with more preparation!&lt;/p&gt;
&lt;p&gt;If you love music and can make it to J-Jam, please come on over to Dunkin&apos; Donuts in Squirrel Hill then! And if you would like to perform something, email Cantor Ben Rosner at the email address in the flyer below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/j-jam-2012-10-28/flyer-for-2012-12-16.jpg&quot; alt=&quot;Flyer for J-Jam 2012-12-16&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Next?&lt;/h2&gt;
&lt;p&gt;I&apos;m still rather unsatisfied with my singing. I&apos;m going to work hard on getting my singing into better shape. The next music jam I&apos;m in, I absolutely plan to be ready to sing much better.&lt;/p&gt;
&lt;p&gt;As for the jazz improvisation, that&apos;s going to take me even longer to get to where I want it. That&apos;s going to be a major project, since I have been living mostly in the classical music world lately. But I know for sure that jazz is one place I want to go.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Abby and I had a great time at our first J-Jam, both listening and performing! It&apos;s a fantastic Squirrel Hill community event that I hope will continue regularly, and I&apos;m grateful to Joel and Ben for organizing it and spreading the word to have people come over to listen and perform, and I was inspired by the wonderful performances by everyone who came to share their love of music.&lt;/p&gt;
&lt;p&gt;I look forward to participating again!&lt;/p&gt;
&lt;h3&gt;(Update of 2012-12-16)&lt;/h3&gt;
&lt;p&gt;I did not perform in or even attend &lt;a href=&quot;https://www.facebook.com/events/347798348651757/&quot;&gt;J-Jam on December 16&lt;/a&gt; after all! It quickly became clear in early December, after I met up with Ben to play together, that I was getting way too busy with many other things, and even if I hadn&apos;t been, Ben himself was busy too, such that we had no opportunity to get together again anyway to work on something to play. Furthermore, the time conflicted with the monthly meeting of the Pittsburgh Recorder Society, which I hate to miss, so I did not even show up at J-Jam in December just to watch and listen.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-10)&lt;/h3&gt;
&lt;p&gt;I did not perform in the &lt;a href=&quot;/blog/2013/02/10/attending-j-jam-in-squirrel-hill-but-not-playing-music-in-it/&quot;&gt;February 2013 J-Jam&lt;/a&gt; either, but did attend.&lt;/p&gt;
</content:encoded></item><item><title>Singing an Irish ballad as an Asian pirate at a Halloween belly dance Hafla</title><link>https://franklinchen.com/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/27/singing-an-irish-ballad-as-an-asian-pirate-at-a-halloween-belly-dance-hafla/</guid><pubDate>Sat, 27 Oct 2012 23:02:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/khafif-hafla-2012/franklin-flute.jpg&quot; alt=&quot;Franklin as pirate playing Irish flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight, I dressed as an Asian pirate and sang an Irish pirate ballad on stage at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.khafif.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.khafif.com/&quot;&amp;gt;Khafif&amp;lt;/span&amp;gt;&apos;s &lt;a href=&quot;https://www.facebook.com/events/269693989803391/&quot;&gt;annual Halloween belly dance hafla&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/khafif-hafla-2012/group-photo.jpg&quot; alt=&quot;Group photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Three days ago, I would not have guessed I would be playing this small role in the hafla!&lt;/p&gt;
&lt;h2&gt;Last year&lt;/h2&gt;
&lt;p&gt;Abby and I had gone to &lt;a href=&quot;https://www.facebook.com/events/211476745586621/&quot;&gt;last year&apos;s&lt;/a&gt; instance of Khafif&apos;s annual Halloween &lt;a href=&quot;https://www.urbandictionary.com/define.php?term=hafla&quot;&gt;hafla&lt;/a&gt; for the first time, and there was a lot of belly dancing, live music, and food. At the time, I was just a spectator, and hadn&apos;t even gone in a costume (the announced theme was &quot;video games&quot;). I have to confess that it is usually very difficult to convince me to put on a costume for an event, because I don&apos;t like standing out and I like dressing comfortably.&lt;/p&gt;
&lt;h2&gt;This year&apos;s call for performers&lt;/h2&gt;
&lt;p&gt;This year, the theme was &quot;pirates&quot;. Abby and I were going again, since she plays music at these haflas as a member of the &lt;a href=&quot;https://www.facebook.com/pages/Balkan-Babes/147472071948959&quot;&gt;Balkan Babes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Three months ago, Jenn, one of the organizers, issued on Facebook a call for performers, both dancers and musicians.&lt;/p&gt;
&lt;p&gt;I originally had no particular plan to go in costume, or to play some music at the hafla, but I just happened to notice a guy post:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Well, I&apos;m a folk singer, specializing in Irish and Scottish songs. I can&apos;t think of anything &quot;pirate&quot; in the playlist at the moment, but I&apos;ve got a number of nautical themed pieces.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Since I had become sufficiently interested in Irish music in the past months that I had &lt;a href=&quot;/blog/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/&quot;&gt;ordered an Irish flute&lt;/a&gt; and expected delivery at any moment, I immediately replied to the guy:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I like playing Irish whistle and flute music; maybe we can come up with some pirate theme together?
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;Three days ago&lt;/h2&gt;
&lt;p&gt;There was never any resumption of discussion of the Irish music idea, so I didn&apos;t follow up, since &lt;em&gt;it never occurred to me&lt;/em&gt; to want to come up with some kind of solo performance of something.&lt;/p&gt;
&lt;p&gt;But then this Wednesday, three days ago, I got a message from Jenn:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I was wondering if you guys were still wanting to play a song or two for us this weekend for the Halloween Hafla? You are more than welcome. Let us know and if so, do you guys know any piratey music. It&apos;s been awhile since we last communicated and things might have changed since late July.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;Research and preparation&lt;/h2&gt;
&lt;p&gt;I decided to see if I could quickly find a suitable &quot;Irish pirate&quot; song in order to learn it and get other people to perform it with me, with my playing it on Irish flute (an instrument I &lt;a href=&quot;/blog/2012/07/30/got-my-new-casey-burns-small-handed-irish-flute/&quot;&gt;did receive in the summer&lt;/a&gt; and have been playing, ironically, mainly for &lt;a href=&quot;/blog/2012/10/15/french-music-jam-with-unexpected-new-musicians/&quot;&gt;French music&lt;/a&gt;).&lt;/p&gt;
&lt;h3&gt;Irish pirate ballads&lt;/h3&gt;
&lt;p&gt;Out of sheer luck, the very top Google hit for &quot;Irish pirate music&quot; turned up a CD called &lt;a href=&quot;https://www.folkways.si.edu/dan-milner-guest-artists/irish-pirate-ballads-and-other-songs-of-the-sea/celtic/music/album/smithsonian&quot;&gt;&quot;Irish pirate ballads&quot;&lt;/a&gt;, and also out of sheer luck, I found that the Carnegie Library had a copy of this CD.&lt;/p&gt;
&lt;p&gt;The very next day, Thursday, I picked up the CD from the library. I listened to it and identified a song that I liked that really was about an authentic Irish pirate, and decided that I would learn it and perform it on Irish flute. The song was &quot;The Ballad of O&apos;Bruadair&quot;, also known as &quot;Out on the Ocean&quot;. It is apparently about Micheal O&apos;Bruadair, a 17th century pirate and smuggler, who of course eventually was hanged for his crimes.&lt;/p&gt;
&lt;p&gt;I responded to Jenn saying that I had found a song, and I asked around whether anyone wanted to accompany me or sing along. I got no response, but figured someone would turn up. I printed out ten copies of the lyrics, which can be found &lt;a href=&quot;https://mudcat.org/thread.cfm?threadid=124787&quot;&gt;here&lt;/a&gt;, with the idea that at worst, I would pass these out and ask for audience participation.&lt;/p&gt;
&lt;p&gt;The melody was pretty simple, and I played it several times on my flute to get it down, and also watched a performance of the song on YouTube:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;093nkli_98A&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Since I was very pressed for time before the weekend, I didn&apos;t bother to write down the melody in music notation; I thought I had it pretty well memorized. I considered writing it down &quot;just in case&quot;, but never got around to it, despite a note to myself.&lt;/p&gt;
&lt;h2&gt;Pirate costume&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/khafif-hafla-2012/franklin-abby.jpg&quot; alt=&quot;Franklin and Abby&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Meanwhile, having decided to perform music at the hafla, I decided that I had to wear a costume also. There was no way I was going to show up without a costume this year, given that I was going to be on stage. After throwing around some ideas, I decided that since I have a karate gi, I was going to wear it, and throw on a red belt and a red bandanna, and call myself an Asian pirate. Abby gave me a chain to wear around my neck also.&lt;/p&gt;
&lt;h2&gt;At the hafla&lt;/h2&gt;
&lt;p&gt;The program:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/khafif-hafla-2012/program.jpg&quot; alt=&quot;Program&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The event began with several nice belly dance performances. (I expect photos and videos to pop up on the event site eventually.)&lt;/p&gt;
&lt;h3&gt;After intermission&lt;/h3&gt;
&lt;p&gt;I was supposed to play right after intermission. I had already walked around passing out copies of the lyrics of the song.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unfortunately, my mind went totally blank as I headed backstage; I had totally forgotten the melody of the song, and had no sheet music to fall back on.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So the Balkan Babes got on stage instead while I tried to retrieve the melody by using my smartphone to look up the YouTube performance I had viewed at home.&lt;/p&gt;
&lt;p&gt;Here are the Balkan Babes in action, a photo I took backstage after I had figured out my song (Abby is on the right):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/khafif-hafla-2012/balkan-babes.jpg&quot; alt=&quot;Balkan Babes after intermission&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Luckily, I was able to get the melody back into my head with the aid of my smartphone.&lt;/p&gt;
&lt;h3&gt;My turn&lt;/h3&gt;
&lt;p&gt;Since nobody was accompanying me, my idea was to get the audience to help out by singing while I played the flute.&lt;/p&gt;
&lt;p&gt;I decided to start singing the song myself, to get into &quot;pirate&quot; character and to encourage people to sing with me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It turns out that this is the first time in my entire life I have sung alone on stage.&lt;/strong&gt; I hadn&apos;t originally planned this. In fact, I had never even sung this song at home when I was learning it; my whole plan had been to sing it only if someone else was singing it with me, and I was hoping to do a little bit of singing with someone and then being free to improvise on the flute for a while before ending.&lt;/p&gt;
&lt;p&gt;Some people did eventually join in a little bit, which was cool, but when I stopped after two verses (of the four in total) to pick up my flute, people thought the song was over or something, and did not continue clapping, stomping their feet, and singing. This was an awkward moment. I decided to just launch into playing the flute, but was too flustered by the context switch, too overloaded with anxiety, to come up with the fancy improvisation that I had intended, and don&apos;t even remember exactly what I did, except I did finish up at the end of a verse.&lt;/p&gt;
&lt;p&gt;But I survived!&lt;/p&gt;
&lt;p&gt;Apparently Abby was backstage and got a short video clip of me onto my smartphone I had left behind:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;BPhyCauHmx0&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The rest of the hafla&lt;/h3&gt;
&lt;p&gt;There was a lot more creative belly dancing for the rest of the evening, and then the Balkan Babes singing and playing music after the belly dancing was done. Lots of food to continue to eat. It was a fun event; it&apos;s always especially nice to see little kids out there dancing too while watching their mothers perform.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m grateful to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.khafif.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.khafif.com/&quot;&amp;gt;Khafif&amp;lt;/span&amp;gt; for organizing this spectacular Halloween show every year, and grateful to Jenn for reminding me that in July I had thought of playing some music, and for including me on the program at the last minute.&lt;/p&gt;
&lt;p&gt;I played just a really tiny role in the hafla, but it was nevertheless a big deal to me. As for all the unplanned mishaps that occurred, well, I&apos;ve learned this year that something unexpected always seems to happen no matter what, and although we can learn from experience (I will never forget a backup plan of a printed score again), the important thing is to just keep going, whatever has just gone &quot;wrong&quot;. The audience doesn&apos;t need to know any of that; all they see is what you make the best effort of doing in the moment.&lt;/p&gt;
</content:encoded></item><item><title>Yet another haircut from Joe: always worth the wait</title><link>https://franklinchen.com/blog/2012/10/26/yet-another-haircut-from-joe-always-worth-the-wait/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/26/yet-another-haircut-from-joe-always-worth-the-wait/</guid><pubDate>Fri, 26 Oct 2012 19:39:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;So today I got another haircut from Joe Feldman, at Harry&apos;s Barber Shoppe in Squirrel Hill. Almost exactly a year ago, &lt;a href=&quot;/blog/2011/10/29/my-favorite-barber/&quot;&gt;I fondly described my visit to Joe&apos;s&lt;/a&gt;. Today, I still make the time to get my haircuts from him, after &lt;strong&gt;fifteen years&lt;/strong&gt; now of having my hair cut only by him (other than one occasion when he was closed because of breaking his hand), on average of once every two months.&lt;/p&gt;
&lt;p&gt;Today was probably my longest wait ever, &lt;em&gt;over two hours&lt;/em&gt;! But it was worth it.&lt;/p&gt;
&lt;h2&gt;The wait&lt;/h2&gt;
&lt;p&gt;Late in the afternoon, I had called from work to verify that he was open, and he had said that nobody was in line, so I rushed to leave work early to take advantage of the opportunity for a shorter wait, but by the time I arrived, there were already &lt;em&gt;six&lt;/em&gt; people ahead of me in line, one in the chair. Since I knew from experience that he takes about twenty minutes per person, I knew I was in for a two-hour wait, and I was right.&lt;/p&gt;
&lt;p&gt;And guys kept on coming in who clearly were going to have to wait for up to three hours. Wow.&lt;/p&gt;
&lt;h2&gt;How I spent the time&lt;/h2&gt;
&lt;h3&gt;Smartphone&lt;/h3&gt;
&lt;p&gt;I tend to get my haircut from Joe on Friday if possible, to end the work week relaxing. Since &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;I have had a smartphone now for seven months&lt;/a&gt;, many occasions that used to involve my idly &quot;waiting&quot; are now opportunities to be productive. I caught up on reading and writing a lot of email (yes, it has actually become feasible to do this since I bought &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.swiftkey.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.swiftkey.net/&quot;&amp;gt;SwiftKey&amp;lt;/span&amp;gt;), as well as reading archived Web links that I had saved up.&lt;/p&gt;
&lt;h3&gt;Nap&lt;/h3&gt;
&lt;p&gt;Then I took a nap. It&apos;s been a long week, and it&apos;s going to be a long weekend!&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;After I was done napping, I kind of sat back and listened to the oldies music that Joe always has on. It&apos;s an interesting game trying to identify who is singing, because all the music is &quot;before my time&quot; (as Joe pointed out even to another guy sitting near me who was older than me, who was also playing this game). That said, I can and did easily identify Frank Sinatra, Nat King Cole, Elvis, and various others from their voices and styles. I did not identify Englebert Humperdinck; I still don&apos;t really know who he is, and have never actively listened to his music (unlike the vocalists I just mentioned).&lt;/p&gt;
&lt;p&gt;Amusingly, there was one song in which I didn&apos;t actually immediately identify the singer, but a guy gave a hint, and then I easily got the answer: &lt;a href=&quot;https://olivianewton-john.com/&quot;&gt;Olivia Newton-John&lt;/a&gt;. For once, someone who is not as far removed from &quot;my time&quot;! I saw her as a kid when my friend Lisa in elementary school in second/third grades invited me to go with her to see the premiere of &lt;a href=&quot;https://en.wikipedia.org/wiki/Grease_(film)&quot;&gt;Grease&lt;/a&gt; (her mother took us to see it). It was way too grown-up a movie for me to get at the time, but the tunes were catchy (and for quite some time all my classmates were singing them at school). So I actually have some nostalgia for Olivia Newton-John&apos;s singing.&lt;/p&gt;
&lt;h3&gt;Politics&lt;/h3&gt;
&lt;p&gt;I generally stay out of political discussions, especially during election times such as these. But two guys were expressing various opinions. I kept my mouth shut.&lt;/p&gt;
&lt;h3&gt;Place in line&lt;/h3&gt;
&lt;p&gt;One of the guys said he needed to go out for five minutes and would come back. There was a very brief and slight scene in which Joe warned him that if somebody came in the meantime, he would lose his place, because there are no reservations and that&apos;s the rule. After the guy colorfully called Joe a &quot;gangster&quot;, Joe explained how being too lenient in the past had led to bad situations in which people came and went and wanted their place back, etc. I can totally imagine that. Rules are rules. Joe has his rules, and I respect them, and they work, however anachronistic and demanding they might be in this fast-paced, multitasking age.&lt;/p&gt;
&lt;p&gt;In fact, I had actually lost my &quot;original&quot; place in line today, because I had showed up expecting no line, when I saw five in line. So I had gone back home (just a block away) to get a snack to bring to eat, and a book to maybe read, and when I got back, a guy walked in the door a split second before I did, so I became seventh in line rather than sixth.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I treasure my visits to Joe once every two months. I get not only a &lt;em&gt;terrific&lt;/em&gt; haircut, but also enjoy the periodic trip down memory lane through the oldies radio station and the chance to enjoy the &lt;em&gt;slowness&lt;/em&gt; of life that the space encourages and even enforces.&lt;/p&gt;
&lt;h2&gt;Bonus videos&lt;/h2&gt;
&lt;p&gt;In honor of Olivia Newton-John, here&apos;s a 1978 live performance by her of &quot;Hopelessly Devoted to You&quot;. Laugh if you want, but I &lt;em&gt;love&lt;/em&gt; this song, and I love her performance above all other singers&apos; covers, even to this day!&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;lR93L8sUMNg&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But here&apos;s some random guy on YouTube who sings it really quite beautifully while playing the guitar:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;3T75DDSa48k&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>My Pittsburgh Python talk: &quot;Testing with isolation: concepts and examples using the Python standard library `mock`&quot;</title><link>https://franklinchen.com/blog/2012/10/24/my-pittsburgh-python-talk-mock/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/24/my-pittsburgh-python-talk-mock/</guid><pubDate>Wed, 24 Oct 2012 23:58:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://benbiddington.files.wordpress.com/2009/09/mocks-and-stubs.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://benbiddington.files.wordpress.com/2009/09/mocks-and-stubs.png&quot;&amp;gt;[image: Mocks]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;A week ago, I saw a message on the &lt;a href=&quot;https://www.meetup.com/pghpython/&quot;&gt;Pittsburgh Python&lt;/a&gt; mailing list:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
We are looking for a presenter to talk about mock, pymox or other Python testing topics for our next meeting. If you have a different topic that you would like to present on, please let us know about that too, though preference will be given to testing-related talks this month.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I fairly quickly volunteered to talk about the Python standard library &lt;a href=&quot;https://web.archive.org/web/20181130194909/http://www.voidspace.org.uk:80/python/mock/&quot;&gt;&lt;code&gt;mock&lt;/code&gt;&lt;/a&gt;, despite never having used it!&lt;/p&gt;
&lt;p&gt;Here&apos;s a brief report of the Pittsburgh Python meeting in Google Pittsburgh (along with links to slides).&lt;/p&gt;
&lt;h2&gt;Slides&lt;/h2&gt;
&lt;p&gt;Slides are &lt;a href=&quot;/talk-on-python-mock/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Why did I volunteer?&lt;/h2&gt;
&lt;p&gt;When I volunteered to give my last talk, a &lt;a href=&quot;/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/&quot;&gt;talk at Pittsburgh Ruby&lt;/a&gt;, the reason was that I had a specific topic of my choosing on which I already had an informed opinion, and my goal was to explain it.&lt;/p&gt;
&lt;p&gt;In stark contrast to that situation, I volunteered to give a talk on testing with &lt;code&gt;mock&lt;/code&gt; in Python while not having ever used it, and in fact not ever having used &lt;a href=&quot;https://en.wikipedia.org/wiki/Mock_object&quot;&gt;mock objects&lt;/a&gt; at all in my own &lt;a href=&quot;https://en.wikipedia.org/wiki/Unit_testing&quot;&gt;unit testing&lt;/a&gt;, although I knew the basic concepts behind mocks.&lt;/p&gt;
&lt;p&gt;So I was volunteering in this case in order to &lt;em&gt;force myself to learn something in more depth&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;My preparation&lt;/h2&gt;
&lt;p&gt;Preparing for this talk was quite challenging for me. (Hmm, I have a feeling I&apos;ll always feel this way for the rest of my talks in my life!?)&lt;/p&gt;
&lt;h3&gt;Time&lt;/h3&gt;
&lt;p&gt;Deciding to suddenly prepare a talk threw a mini-bomb into my schedule for the following week, because I had many other things to work on. However, I thought it was a great opportunity to investigate something in depth that I had already wanted to for some time, so I put some other things aside. Sometimes one has to be flexible in the face of a good opportunity. &lt;em&gt;I care a huge deal about the topic of software testing&lt;/em&gt;, so I felt I could not pass up the opportunity to share some ideas with an audience.&lt;/p&gt;
&lt;h3&gt;Technical material&lt;/h3&gt;
&lt;p&gt;A huge number of people (over forty) quickly signed up to attend the Pittsburgh Python meeting, during which two talks were scheduled: one on &lt;a href=&quot;https://code.google.com/p/selenium/&quot;&gt;Selenium WebDriver&lt;/a&gt; by Steve Gross, and one by me. Wow. I don&apos;t know what&apos;s causing this explosion in the size of the Pittsburgh Python community, but that&apos;s great!&lt;/p&gt;
&lt;p&gt;I made a very quick decision &lt;em&gt;not&lt;/em&gt; to focus on all the features of the &lt;code&gt;mock&lt;/code&gt; library. That&apos;s not a talk that I would myself go to. I put myself in the shoes of the forty participants. Obviously there was going to be a wide variety of background knowledge and experience about &lt;em&gt;testing&lt;/em&gt; in general as well as about &lt;em&gt;mocks&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In fact, Abby was going to come along with me to attend the Pittsburgh Python meeting. She just started learning computer programming a couple of weeks ago, using Python as her first programming language, and &lt;a href=&quot;https://coursera.org/&quot;&gt;Coursera&lt;/a&gt; as the primary vehicle of instruction. I hoped to give a talk that she would get something usefully high-level and conceptual out of.&lt;/p&gt;
&lt;p&gt;I figured on speaking for no more than half an hour.&lt;/p&gt;
&lt;p&gt;So I wanted to focus on a clean, correct review (or introduction, as the case was surely going to be for some of the participants) of &lt;em&gt;unit testing&lt;/em&gt;. I deliberately took a &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;&lt;em&gt;test-driven development&lt;/em&gt; (TDD)&lt;/a&gt; perspective as I designed some easy-to-understand examples of the entire process of writing a test, making it fail, then writing the implementation, then running the test again, etc. I felt that TDD was the ideal way to discuss the notion of testing with &lt;em&gt;isolation&lt;/em&gt;, because if collaborating code for a system under test (SUT) does not yet exist at all, it becomes quite clear where the possible isolation boundaries are.&lt;/p&gt;
&lt;p&gt;I also wanted to use this example as a running example in order to introduce and explore questions of &lt;a href=&quot;https://en.wikipedia.org/wiki/Method_stub&quot;&gt;&lt;em&gt;stubbing&lt;/em&gt;&lt;/a&gt;, or more generally, &lt;a href=&quot;https://en.wikipedia.org/wiki/Test_double&quot;&gt;&lt;em&gt;test doubles&lt;/em&gt;&lt;/a&gt;. In particular, I brought up the ongoing controversy over the use of mocks in testing at all, framed around the pretty fair &lt;a href=&quot;https://martinfowler.com/articles/mocksArentStubs.html&quot;&gt;analysis by Martin Fowler&lt;/a&gt;. In order to be able to explain the controversy, I developed my running example to show a way of refactoring code in order to test &lt;em&gt;without&lt;/em&gt; mocking, as well as showing how one could do it &lt;em&gt;with&lt;/em&gt; mocking. And so I only explained enough features of Python &lt;code&gt;mock&lt;/code&gt; to enable illustrating the issues. I gave some examples of pros and cons to using mocks.&lt;/p&gt;
&lt;p&gt;Of course, I had to read a bunch of articles and book excerpts, and writing running code, as part of my own process of learning and understanding the controversy; these were resources I had bookmarked a year ago when I had first heard about it. Hooray for &lt;em&gt;talk-driven learning&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;Since I was not going to have time, I deliberately had no plan to discuss what I think is quite interesting, which is the &lt;em&gt;philosophy&lt;/em&gt; that drives a strictly mock-driven approach to testing. This philosophy involves rigorously taking the outside-in approach as a matter of &lt;em&gt;design&lt;/em&gt;. I have to confess that I do not currently take this extreme approach, but it intrigues me, and now that I know better what the techniques and controversies are, I may give it a try in new projects in order to see how well it works.&lt;/p&gt;
&lt;h3&gt;Presentation skills&lt;/h3&gt;
&lt;p&gt;I felt more relaxed when giving this talk than I did in my previous one (for Pittsburgh Ruby). Just this sheer fact probably helped some.&lt;/p&gt;
&lt;h3&gt;Presentation software&lt;/h3&gt;
&lt;p&gt;I continue to use &lt;a href=&quot;https://github.com/adamzap/landslide&quot;&gt;landslide&lt;/a&gt; to generate an HTML slide show.&lt;/p&gt;
&lt;h2&gt;The presentation&lt;/h2&gt;
&lt;p&gt;Steve Gross gave a little demo of Selenium WebDriver first, and took questions, before I gave my half-hour talk.&lt;/p&gt;
&lt;p&gt;I tried to ask useful questions of the audience and answer people&apos;s questions during the talk. This is a kind of skill that has to come from experience, because one can&apos;t anticipate everything ahead of time, and one has to gauge where people&apos;s minds might be. I know that when I&apos;m at someone&apos;s talk, and I&apos;m confused or lost or bored, I appreciate when the speaker can tell, and can adjust accordingly. This is clearly key. With forty people around, however, man, it&apos;s hard.&lt;/p&gt;
&lt;h2&gt;Reflections&lt;/h2&gt;
&lt;p&gt;I enjoyed speaking at the Pittsburgh Python group meeting, just my second time since &lt;a href=&quot;/blog/2012/08/23/pittsburgh-python-meetup-i-gave-my-first-lightning-talk-ever-the-topic-was-scons/&quot;&gt;my first lightning talk for the group&lt;/a&gt; during which I didn&apos;t even have any slides prepared, but just drew some pictures on the whiteboard and scrolled through some code in an Emacs buffer.&lt;/p&gt;
&lt;h2&gt;Supporting Web site&lt;/h2&gt;
&lt;p&gt;I have a &lt;a href=&quot;https://github.com/franklinchen/talk-on-python-mock&quot;&gt;supporting Web site for the talk&lt;/a&gt; with code.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I put a lot of work into the presentation I gave at Pittsburgh Python, and am grateful to Nick Sloan for bringing up the theme and calling for volunteers. I like the idea of a &quot;theme&quot; for a meeting, such as the theme of &quot;testing&quot; that was our theme this last time.&lt;/p&gt;
&lt;p&gt;And I have to thank Abby for supporting me as my week got frantic as a result of suddenly volunteering to give my talk, and for attending a talk by me for the first time ever!&lt;/p&gt;
</content:encoded></item><item><title>Reflections on Food Day</title><link>https://franklinchen.com/blog/2012/10/24/reflections-on-food-day/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/24/reflections-on-food-day/</guid><pubDate>Wed, 24 Oct 2012 22:38:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/food-day-2012-breakfast-1.jpg&quot; alt=&quot;Soup and veggies&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A year ago I celebrated &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.foodday.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.foodday.org/&quot;&amp;gt;Food Day&amp;lt;/span&amp;gt; for the first time, by sharing &lt;a href=&quot;/blog/2011/10/24/every-day-is-food-day/&quot;&gt;some reflections on what food means to me&lt;/a&gt;. Today I review my reflections and some more.&lt;/p&gt;
&lt;h2&gt;Buying food&lt;/h2&gt;
&lt;p&gt;Abby and I still take care to shop carefully for groceries and make our own tasty meals to eat. Some of our sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://kretschmannfarm.com/&quot;&gt;Kretschmann Farm&lt;/a&gt; CSA subscription for local produce&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.localharvest.org/miseras-organic-farm-M14896&quot;&gt;Misera&apos;s Organic Farm&lt;/a&gt; for local &lt;a href=&quot;/blog/2011/09/24/whats-a-nice-acorn-squash-like-you-doing-in-a-pot-of-spicy-lentils/&quot;&gt;chickens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.lewisfamilyfarms.com/&quot;&gt;Lewis Family Farms&lt;/a&gt; for local beef&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pine-richland.patch.com/articles/stoney-lane-farm-a-little-bit-country-in-suburbia&quot;&gt;Stoney Lane Farm&lt;/a&gt; for local &lt;a href=&quot;/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs/&quot;&gt;eggs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20210412232316/https://www.traderjoes.com/&quot;&gt;Trader Joe&apos;s&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eastendfood.coop/&quot;&gt;East End Food Co-op&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our food choices are based on our concerns for both &lt;em&gt;health&lt;/em&gt; and &lt;em&gt;sustainability&lt;/em&gt;. Our choices may have an impact on one or the other or both.&lt;/p&gt;
&lt;h2&gt;Cooking&lt;/h2&gt;
&lt;p&gt;When I started my blog over a year ago, I had thought I would be posting more about cooking, since I was doing a good amount of it, but as it turned out, during this year (2012), Abby took over almost all of the cooking for us.&lt;/p&gt;
&lt;h2&gt;Diet&lt;/h2&gt;
&lt;p&gt;Both Abby and I have experimented in paleo directions in the past year. As a reminder, this doesn&apos;t mean that we&apos;re just going around chowing down on all the meat we can eat. It does mean that we have&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;considerably increased our consumption of vegetables&lt;/li&gt;
&lt;li&gt;increased our consumption of various fats and oils&lt;/li&gt;
&lt;li&gt;reduced our consumption of carbs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The question of carbs&lt;/h3&gt;
&lt;p&gt;What we seemed to discover was that we needed some base level of carbs in order to maintain energy and weight levels. Through experimentation, Abby has focused on getting carbs through potatoes and sweet potatoes primarily, going almost completely off wheat. I, on the other hand, am still hooked on rice; I also still eat some wheat, but frankly, I can tell from the effects that I would probably do best to eliminate it.&lt;/p&gt;
&lt;h4&gt;Rice disaster?&lt;/h4&gt;
&lt;p&gt;Last year, I wondered about brown rice, and even briefly experimented with &lt;a href=&quot;/blog/2011/12/07/is-brown-rice-healthy-or-not/&quot;&gt;switching to white rice&lt;/a&gt;. The white rice experiment was a fast failure: the high glycemic index and lack of fiber didn&apos;t help me at all.&lt;/p&gt;
&lt;p&gt;More recently, there have been reports of &lt;em&gt;brown rice&lt;/em&gt; in particular having &lt;a href=&quot;https://www.consumerreports.org/cro/magazine/2012/11/arsenic-in-your-food/index.htm&quot;&gt;high levels of arsenic&lt;/a&gt;. This is rather disturbing, and Abby and I have agreed that I need to quickly re-evaluate my consumption of brown rice. I&apos;ve committed to trying out some alternative source of calories/fiber.&lt;/p&gt;
&lt;h2&gt;My breakfast&lt;/h2&gt;
&lt;p&gt;My breakfast has remained fairly &lt;a href=&quot;/blog/2012/01/26/improving-my-breakfast-and-other-meals/&quot;&gt;stable&lt;/a&gt; since &lt;a href=&quot;/blog/2011/10/23/paleo-diet-experimentation/&quot;&gt;I quit oatmeal&lt;/a&gt;. Basically, I eat&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;veggies&lt;/li&gt;
&lt;li&gt;eggs&lt;/li&gt;
&lt;li&gt;nuts&lt;/li&gt;
&lt;li&gt;a prune&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depending on how I feel and what&apos;s available, occasionally I&apos;ll eat some bacon or fish, and sometimes I&apos;ll add some sweet potatoes or other carbs, but typically that&apos;s it.&lt;/p&gt;
&lt;p&gt;(I stopped the flax seeds, largely out of inconvenience of grinding them!)&lt;/p&gt;
&lt;p&gt;Here&apos;s what I happened to eat today.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/food-day-2012-breakfast-1.jpg&quot; alt=&quot;Soup and veggies&quot; /&gt;
&lt;img src=&quot;../../assets/images/food-day-2012-breakfast-2.jpg&quot; alt=&quot;Eggs&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The soup and veggies were leftovers from big batches Abby or I had made earlier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my cauliflower leaf soup with garlic, carrots, sweet potatoes, curry powder, extra virgin olive oil&lt;/li&gt;
&lt;li&gt;my stir-fried cauliflower florets with garlic, green peppers, coconut oil&lt;/li&gt;
&lt;li&gt;Abby&apos;s spaghetti squash with onion and other stuff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And on top of that I also ate two fried eggs with walnuts.&lt;/p&gt;
&lt;h2&gt;My lunch and dinner&lt;/h2&gt;
&lt;p&gt;Lunch and dinner were combinations of various leftovers, all originally made by Abby (hence my not knowing the exact ingredients):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ground beef stew with green peppers, jalapeno, onion, various seasoning&lt;/li&gt;
&lt;li&gt;slow-cooked chicken with veggies&lt;/li&gt;
&lt;li&gt;leftover kale and onion&lt;/li&gt;
&lt;li&gt;dinner included sauteed zucchini and other veggies Abby cooked tonight&lt;/li&gt;
&lt;li&gt;brown rice&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fasting&lt;/h2&gt;
&lt;p&gt;Sometimes I deliberately fast for a meal or two. This happens when I just don&apos;t feel all that hungry. I treat that as a signal from my body that I don&apos;t really need to eat. My experiments have convinced me that &lt;a href=&quot;https://en.wikipedia.org/wiki/Intermittent_fasting&quot;&gt;intermittent fasting&lt;/a&gt; helps with fat loss and mental clarity. It also helps me remember to be grateful, when I do eat again.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We are human beings, not robots. We need food. And food isn&apos;t just &quot;fuel&quot;. It lives or has lived. It is complex. I am grateful to be living in a land of plenty, and that Abby has taken so much care to make varied and tasty dishes for us. But as the recent reports on arsenic reminds me, there is much we must continue to do to prevent the degradation of what we eat.&lt;/p&gt;
</content:encoded></item><item><title>Playing recorder in a group</title><link>https://franklinchen.com/blog/2012/10/21/playing-recorder-in-a-group/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/21/playing-recorder-in-a-group/</guid><pubDate>Sun, 21 Oct 2012 19:23:00 GMT</pubDate><content:encoded>&lt;p&gt;Today was the second meeting of the current season of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter of the American Recorder Society&lt;/a&gt;. I reported last month on &lt;a href=&quot;/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;how excited I was to begin the new season&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-recorder-dessert.jpg&quot; alt=&quot;Pittsburgh Recorder Society dessert by Helen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And it&apos;s not just about the tasty desserts that Helen makes for us every month, of course (which basically compel me to exercise &lt;em&gt;before&lt;/em&gt; going to the meeting).&lt;/p&gt;
&lt;p&gt;We had some new people joining us today, including a woman who had been a member of the recorder society three decades ago, and now was retired and getting back into playing the recorder. It was great having her on board. We have some really good music selections from our director Fred to work on, hopefully toward a holiday performance by our group.&lt;/p&gt;
&lt;p&gt;She mentioned it being different and hard playing in an ensemble, since she was used to playing piano alone. Her comments made me immediately think back to where I was a year ago. Coincidentally, almost exactly a year ago, &lt;a href=&quot;/blog/2011/10/30/harder-to-play-in-a-group-than-alone/&quot;&gt;I wrote about the challenges of playing in a group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m so grateful for the opportunity to play with others. It makes me realize that I spent far too much of my life being alone, doing everything alone, and that I was really missing out. Yes, being with others may be more difficult sometimes, but it completely changes my experience of life, making it so much richer.&lt;/p&gt;
&lt;h2&gt;Fred&apos;s tips I appreciated today&lt;/h2&gt;
&lt;p&gt;On one of the pieces we are working on, I&apos;m playing the alto 1 line. Fred gave me really useful feedback. He noted that I was holding back and not playing &lt;em&gt;all out&lt;/em&gt;. I said that I was afraid of going squeaky on the high G. He said that we should always play all out, and that this alto 1 part is &quot;glorious&quot; and should &quot;ring&quot;. Furthermore, he also reminded us that when we practice (either at home or in a group), we should go &lt;em&gt;beyond&lt;/em&gt; what we&apos;d do in performance, and exaggerate the elements of music that we want to bring out. There are a number of reasons for this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We must do more in practice so that when we are ready to perform, what we do will actually be easier than what we&apos;ve done already again and again in private.&lt;/li&gt;
&lt;li&gt;Our subjective perception of how we sound is inaccurate: what sounds like &quot;overdoing&quot; to us (without actually recording ourselves) may not sound like much to an actual audience.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Learning about Parasail: a new parallel programming language</title><link>https://franklinchen.com/blog/2012/10/17/learning-about-parasail-a-new-parallel-programming-language/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/17/learning-about-parasail-a-new-parallel-programming-language/</guid><pubDate>Thu, 18 Oct 2012 00:39:15 GMT</pubDate><content:encoded>&lt;p&gt;I noticed an announcement for a talk to be given at CMU for the &lt;a href=&quot;http://www.isri.cmu.edu/&quot;&gt;ISR&lt;/a&gt; by visitor Tucker Taft, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.cs.cmu.edu/afs/.cs.cmu.edu/Web/copetas/Posters/ISR-Taft12.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.cs.cmu.edu/afs/.cs.cmu.edu/Web/copetas/Posters/ISR-Taft12.pdf&quot;&amp;gt;&quot;ParaSail: A Pointer-Free Path to Object-Oriented Parallel Programming&quot;&amp;lt;/span&amp;gt;, and decided to attend.&lt;/p&gt;
&lt;p&gt;I&apos;d recognized &lt;a href=&quot;https://en.wikipedia.org/wiki/User:Optikos/S._Tucker_Taft&quot;&gt;Tucker Taft&lt;/a&gt;&apos;s name because decades ago (and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;http://www.adacore.com/company/about/executive-team/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: http://www.adacore.com/company/about/executive-team/&quot;&amp;gt;now still&amp;lt;/span&amp;gt;), he was a very prominent member of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Ada_%28programming_language%29&quot;&gt;Ada programming language&lt;/a&gt; community, being one of the primary designers of the extensions to the original Ada 83. I never actually used Ada 95, but was following it a little bit because in 1995 I had to maintain some Ada 83 code at work, so I was curious where Ada was going. (I haven&apos;t used Ada since leaving that job in 1997.)&lt;/p&gt;
&lt;p&gt;So I was curious what an Ada guy had in mind as for one of the next steps in programming language design (parallelism), and why a new language and how it would be informed by an Ada mindset.&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;Parasail, and why a new language anyway?&lt;/h2&gt;
&lt;p&gt;The new language Taft has been working on is called Parasail and &lt;a href=&quot;http://parasail-programming-language.blogspot.com/&quot;&gt;its Web site is really a blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why a new language, and not, say, libraries and idioms to bolt onto an existing language? Because to make parallelism &quot;easy&quot; to program, and correctly, language support is the way to go, leveraging types and compiler knowledge to help programmers.&lt;/p&gt;
&lt;p&gt;This is not a new thought, of course. Parallel languages have been designed and implemented for decades. But none can be said to have truly caught on universally in practice. For example, as a graduate student in the late 1990s, I learned and used &lt;a href=&quot;http://www.cs.cmu.edu/~guyb/&quot;&gt;Guy Blelloch&lt;/a&gt;&apos;s &lt;a href=&quot;http://www.cs.cmu.edu/~scandal/nesl.html&quot;&gt;NESL&lt;/a&gt;, based on the functional language &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt;, and I briefly participated in exploring bringing the ideas from NESL back into ML itself, as part of the &lt;a href=&quot;https://www.cs.cmu.edu/~pscico/&quot;&gt;PSciCo project&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell&quot;&gt;Data Parallel Haskell&lt;/a&gt; is another example of an attempt at a very high level parallel programming language.&lt;/p&gt;
&lt;p&gt;But these languages all come from the functional programming world.&lt;/p&gt;
&lt;h2&gt;Mutation&lt;/h2&gt;
&lt;p&gt;Apparently the goal of Parasail is to not force programmers to go all out into functional programming. For both style and efficiency, it may be desirable to program imperatively, with mutation. So how does Parasail try to cope with all the potential problems caused by mutation?&lt;/p&gt;
&lt;p&gt;Parasail bans pointers, hiding them from the programmer by using types. In particular, assignment is by copy, but move and swap semantics are used underneath.&lt;/p&gt;
&lt;h2&gt;Memory management&lt;/h2&gt;
&lt;p&gt;Furthermore, garbage collection is avoided through &lt;a href=&quot;https://en.wikipedia.org/wiki/Region-based_memory_management&quot;&gt;region-based memory management&lt;/a&gt;. This is an old idea, of course: I remember experimenting with using MLKit from the 1990s by Tofte and Talpin when it was hot off the press.&lt;/p&gt;
&lt;h2&gt;Code examples&lt;/h2&gt;
&lt;p&gt;Taft gave some code examples to illustrate paralellization in Parasail. For example, quicksort is important because of its use of mutation.&lt;/p&gt;
&lt;h2&gt;Other features&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;return&lt;/code&gt; is intentionally a sync point that introduces nondeterminism. Also, underneath, work stealing is used to handle the threads used underneath.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was interesting to see new work on parallel programming languages. Check out Parasail&apos;s Web site if you&apos;re interested in learning more.&lt;/p&gt;
</content:encoded></item><item><title>French music jam with unexpected new musicians</title><link>https://franklinchen.com/blog/2012/10/15/french-music-jam-with-unexpected-new-musicians/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/15/french-music-jam-with-unexpected-new-musicians/</guid><pubDate>Mon, 15 Oct 2012 23:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight was my fourth participation in &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;Lisa&apos;s French traditional dance music jam&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The evening started quietly, because only Lisa and John and I were present at first, and nobody else. Apparently people were either in classes or had other engagements.&lt;/p&gt;
&lt;p&gt;We always love having more people join us in making music, so it was great that unexpectedly, we got two people into playing with us before I had to leave after two hours! So where did they come from?&lt;/p&gt;
&lt;h2&gt;Three of us&lt;/h2&gt;
&lt;p&gt;When it was just the three of us, Lisa and John played over some new tunes they had worked on earlier, so that I could pick them up. I&apos;m much better now at learning music by ear. I&apos;m still not very fast at picking up tunes, but I&apos;m definitely better. Furthermore, although they had scribbled down some scores on paper to keep track of the different new songs, I found the handwritten attempts sufficiently difficult to decipher that I chose to completely ignore them. This is a new attitude for me: in the past, I would have scrambled to get a written score if possible. Now, I&apos;ve grown used to doing without, and not worrying about making mistakes or learning more slowly than if I had a score. It took me &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;five months&lt;/a&gt; to reach this point of relative comfort with uncertainty, confusion, and imperfection, ha!&lt;/p&gt;
&lt;h2&gt;Dancers&lt;/h2&gt;
&lt;p&gt;Very few dancers showed up at all during the evening. As a result, the ones that did show up expecting to dance started watching us continue to play music instead. But then John started saying, &quot;Hey, grab an instrument and join us!&quot;&lt;/p&gt;
&lt;p&gt;Someone I hadn&apos;t met before, Georgia, had started learning some chords on mandolin recently, and she got sucked into joining us as John handed her his mandolin.&lt;/p&gt;
&lt;p&gt;Later, Leslie arrived. She regularly attends to dance. Since there were hardly any dancers around, we said, hey, want to play? John pointed to two banjo cases he had on the floor, so she went and tried one banjo and then switched to the other, and the next thing we knew, we were all playing together.&lt;/p&gt;
&lt;p&gt;Georgia and Leslie do play other musical instruments and sing, but they just happen not to &quot;really&quot; play mandolin or banjo. I thought it was pretty cool that the unfortunate lack of dancers led to their unexpectedly joining us as musicians. I guess we&apos;ll see whether they start playing more with us!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The small number of musicians and dancers might have made the evening less interesting than past sessions, but it was great that we spontaneously added to our musical group for the evening.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Chess League Round 2: natural moves are often bad</title><link>https://franklinchen.com/blog/2012/10/14/pittsburgh-chess-league-round-2-natural-moves-are-often-bad/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/14/pittsburgh-chess-league-round-2-natural-moves-are-often-bad/</guid><pubDate>Sun, 14 Oct 2012 20:35:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-osipovich-2012-10-14_files/final.jpg&quot; alt=&quot;Final position&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today I played in a round at the &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt; for the first time in almost two years!&lt;/p&gt;
&lt;p&gt;This was round 2 of the current season; I was fortunate that our team got a bye in round 1 last month, because that bye had made it possible for me to &lt;a href=&quot;/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/&quot;&gt;attend the Pittsburgh Recorder Society meeting&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;Today&apos;s lesson: &quot;natural&quot; looking moves in chess are often bad, and even fatal. My game contained a lot of &quot;natural&quot; moves by both myself and my opponent that were no good.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-osipovich-2012-10-14.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;You never know exactly whom you&apos;ll play in the Pittsburgh Chess League team match, because although the schedules for the teams are set, it is usually not known until arrival which members of a team are actually going to play and represent the team. Individuals on a team can choose not to play, for whatever reason, and inform the team captain.&lt;/p&gt;
&lt;p&gt;A couple of days before the team match, I had an idea of whom I might play, and I turned out to be right. It was a guy I&apos;ve only played with once, when I was Black, and I had won. But since I was going to be White in the match, I had no idea what kind of Black openings he plays. Therefore, I went in just ready to play one of my usual White openings.&lt;/p&gt;
&lt;h3&gt;Strength&lt;/h3&gt;
&lt;p&gt;I knew I was considerably stronger than my opponent, who was on his rating floor of 1900.&lt;/p&gt;
&lt;h3&gt;Psychology&lt;/h3&gt;
&lt;p&gt;At the same time, I also knew that my opponent was very aggressive, and therefore, it was possible to get into trouble if I allowed him to get an attack of any kind. So I set a goal for myself of erring on the side of being more &lt;em&gt;cautious&lt;/em&gt; and &lt;em&gt;defensive&lt;/em&gt; than I ordinarily am. As my games in my &lt;a href=&quot;/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/&quot;&gt;recent Pittsburgh Chess Club tournament&lt;/a&gt; have shown, I have usually chosen to find the most committal, &quot;best&quot; move. That&apos;s great if I can be confident of following up correctly. It&apos;s not great if I make a mistake. The pragmatic question of how to synchronize my style of play with the realities of my opponent and the moment is one I have never answered perfectly.&lt;/p&gt;
&lt;h3&gt;Other factors&lt;/h3&gt;
&lt;p&gt;Also a serious issue for me going into this game was the fact that I was entering it in a physically and mentally less-energetic state than I would have liked. Yesterday I went on a tough 13-mile run with a friend in the morning, then went to a potluck/music jam in the evening, so I basically had no rest this weekend. I felt that I truly needed to conserve energy during the game, so that I would not run out in case the game lasted a long time.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;My opponent surprised me with the bizarre &lt;em&gt;first move&lt;/em&gt; he played!!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqkbnr/2pppppp/p7/1p6/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq -&quot; caption=&quot;St. George Defense&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Objectively, his opening, the infamous &lt;a href=&quot;https://en.wikipedia.org/wiki/St._George_Defence&quot;&gt;St. George Defense&lt;/a&gt; was bad, and I knew it, but I decided to play calmly and &quot;normally&quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I was partly right, but also partly wrong.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Being calm is always good, but being overly cautious deprived me of playing stronger moves. I was clearly reacting to my having been too hotheaded in my tough game from just some days ago, in which I created a great position and then lost the thread.&lt;/p&gt;
&lt;h4&gt;Ignoring the obvious&lt;/h4&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqkb1r/6pp/p3pn2/1p1p4/2pP4/2P2N2/PPB2PPP/RNBQK2R w KQkq -&quot; caption=&quot;e5 outpost&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;We reached a position in which Black&apos;s &lt;code&gt;e5&lt;/code&gt; square is obviously weak. If I had not been in my overly cautious, slow mode, I would have occupied it and secured a clear advantage immediately. Instead, I chose to just &quot;naturally&quot; &quot;develop&quot; my Queen Bishop and Knight, as though playing like a beginner who is told to &quot;develop&quot; pieces before starting any attack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Playing too &quot;naturally&quot; is something a beginner does.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An expert is not supposed to just play &quot;naturally&quot;, but evaluate the position as it uniquely exists, and strike immediately if the context allows, or &lt;em&gt;demands&lt;/em&gt;, immediate action. I wasn&apos;t playing quite like an expert today, unfortunately.&lt;/p&gt;
&lt;p&gt;In fact, in just a few moves, all my opening advantage had evaporated, as Black slowly deployed his pieces optimally:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnb2rk1/2q3pp/p2bpn2/1p1p2B1/2pP4/2P2N2/PPBN1PPP/R2Q1RK1 w - -&quot; caption=&quot;e5 OK for Black&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;When I realized that I had messed up the late opening, I tried to recover, by fighting for the &lt;code&gt;e5&lt;/code&gt; square afresh. My opponent returned my early favor by not playing the most critical fighting moves and instead also playing &quot;naturally&quot;, developing his final Bishop rather than beginning an attack on my King side that would have disrupted my late buildup and guaranteed equality. So I planted my Knight on &lt;code&gt;e5&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/2qb2p1/p1nbpn1p/1p1pN3/2pP3B/2P5/PPBNQPPP/4RRK1 b - -&quot; caption=&quot;e5 taken&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The game was basically over as soon as I occupied that outpost.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m not joking: White&apos;s advantage is so large that if you gave me this position again, against anybody, I believe I could force a win. Black has no counterplay against White&apos;s impending King side attack once &lt;code&gt;e5&lt;/code&gt; is occupied, especially given that Black also weakened &lt;code&gt;g6&lt;/code&gt; and &lt;code&gt;h7&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The rest of the game was mostly anti-climactic, because Black is so lost. But there is one more observation to make.&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;After Black played terribly and quickly lost the Exchange (a Rook for a Bishop) and was dead lost, this position arose:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3q2k1/3bn1pn/p3p1Bp/1p1pP3/2p2r2/2P2N2/PP2QPPP/4RRK1 w - -&quot; caption=&quot;What to do with the attacked Bishop?&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The &quot;natural&quot; move, &lt;code&gt;Bb1&lt;/code&gt;, saving the Bishop and keeping it attacking Black along the diagonal, happens to be &lt;em&gt;obvious&lt;/em&gt; and also &lt;em&gt;best&lt;/em&gt;. But for once in the game, I didn&apos;t play the &quot;natural&quot; move. I got sloppy. I played a &quot;clever&quot; move instead, &lt;code&gt;g3&lt;/code&gt;, attacking Black&apos;s remaining Rook.&lt;/p&gt;
&lt;p&gt;That was stupid, and cost me some hard thinking I could have avoided, because Black just &quot;naturally&quot; sacrificed another Exchange in order to reach this bizarre position:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3q2k1/3b2pn/p3p2p/1p1pP3/2p2n2/2P1QN2/PP3P1P/4RRK1 b - -&quot; caption=&quot;White is attacked&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;White is obviously totally winning, but at a price: Black has some kind of &quot;attack&quot; going on now whereas if the Bishop had retreated, Black would have had nothing. So I had to actually defend for a couple of moves to consolidate before finally beating back Black&apos;s (admittedly futile) &quot;attack&quot; once and for all:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5qk1/6p1/p3N1bp/1p1pP1n1/2p5/2PnQ3/PP3P1P/5RRK b - -&quot; caption=&quot;White smashes through&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;And the game finally ended:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5qk1/6p1/p3N2p/1p1pP1n1/2p1b3/2PnQP2/PP5P/5RRK b - -&quot; caption=&quot;Black resigned&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;I (re)learned some important lessons during this game:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sometimes the &quot;natural&quot; move is terrible.&lt;/li&gt;
&lt;li&gt;Sometimes the &quot;natural&quot; move is clearly best.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am considering scrapping the whole concept of &quot;natural&quot; altogether from my mind. Chess is a discrete game with clear consequences and a tree of possible future game states. &quot;Natural&quot; is not good enough for a high level of play; it is a metaphor grounded in the continuous world. Even when I&apos;m tired, I should not be thinking &quot;natural&quot; as an energy-saver. The question of how to gracefully degrade my play when trying to save energy, however, is difficult to answer, in this domain: I know how to run more slowly or do arithmetic sums more approximately or handwrite more sloppily, to save time or energy, but what is the best way to deliberately play chess less precisely at &quot;less critical&quot; moments and save the energy for &quot;critical&quot; moments?&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I still haven&apos;t lost a tournament game since &lt;a href=&quot;/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;returning to tournament play last month after an almost two-year absence&lt;/a&gt;. That&apos;s good, of course, but on the flip side, I have been considerably higher-rated than most of my opponents. So my current record is nothing whatsoever to boast about. And, as I have shown in my annotations to my games, I have made various errors in some of my games that could have caused me real trouble if I had made those errors against stronger opponents.&lt;/p&gt;
&lt;p&gt;Nevertheless, it&apos;s been nice to be playing at least relatively decently. I expect to be playing next month in round 3 of the Pittsburgh Chess League matches.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was happy to contribute a win to our team match (we ended up easily winning our match) in our first match in the Pittsburgh Chess League, but left my imperfect game with questions about how to keep my play sharp.&lt;/p&gt;
</content:encoded></item><item><title>Introducing a friend to the joys of trail running in Frick Park</title><link>https://franklinchen.com/blog/2012/10/13/introducing-a-friend-to-the-joys-of-trail-running-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/13/introducing-a-friend-to-the-joys-of-trail-running-in-frick-park/</guid><pubDate>Sat, 13 Oct 2012 23:14:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I had the special pleasure of introducing a friend to the joys of trail running in Frick Park.&lt;/p&gt;
&lt;p&gt;It all started with a casual comment Chris made in late August that he was thinking of doing some distance work in Frick Park, to get a change of scenery from where he lives and runs, south of Pittsburgh. I said, &quot;Hey, let&apos;s do this together&quot;, and looking at our schedules, we determined that today would be the first day we could sync up for a long run in the morning.&lt;/p&gt;
&lt;p&gt;So basically, we had this run planned a month and a half ago. And luckily, the weather was great today!&lt;/p&gt;
&lt;p&gt;This was our first run together, outside of our both having just last week run in the &lt;a href=&quot;/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/&quot;&gt;Fineview Stepathon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Back in August, Chris had warned me that he might be slow. I said that I did long runs slowly in any case, only speeding up near the end. What I didn&apos;t say was that I fully believed that with the training he&apos;s been doing toward the goals of his first 10K (which he has done: he did the &lt;a href=&quot;/categories/great-race/&quot;&gt;Great Race 10K&lt;/a&gt; this year), his first half marathon, and his first marathon, he was going to get fast in just a matter of months.&lt;/p&gt;
&lt;p&gt;And I was right! We ended up running 13 miles, and not very slowly.&lt;/p&gt;
&lt;h2&gt;The planned route&lt;/h2&gt;
&lt;p&gt;I had a basic idea of where to show Chris around in Frick Park. By coincidence, almost exactly a year ago, I actually did a writeup about a &lt;a href=&quot;/blog/2011/10/15/snapshots-of-pittsburgh-from-a-12-mile-run/&quot;&gt;favorite long run of mine in Frick&lt;/a&gt;. I figured that we might do a subset of that run, around 10 miles, this morning. We&apos;d improvise to cut the run short or add to it, based on how we were feeling.&lt;/p&gt;
&lt;h2&gt;Conditions&lt;/h2&gt;
&lt;p&gt;The temperature started at around 36 F, but was slated to go over 50 F by the time we expected to be done, and it was sunny. It was perfect fall running conditions!&lt;/p&gt;
&lt;h2&gt;My experiment today&lt;/h2&gt;
&lt;p&gt;As I have mentioned lately, I have been experimenting, with great success, with &lt;em&gt;fasting&lt;/em&gt; before running in races. Today I extended the experiment by fasting, for the &lt;em&gt;first time&lt;/em&gt; in my life, before doing a long run. I have often fasted before doing a run up to 6 miles, but not much longer than that. Typically, for a long run, I eat something before heading out, and bring a snack of some kind to eat at some point after about an hour. But I have always wondered whether eating (especially any carbs) was just training my body to depend on carbs, etc. What if I could train my body to just go into fat-burning mode and stay there, by avoiding carbs and avoiding food altogether?&lt;/p&gt;
&lt;p&gt;So today, I didn&apos;t eat before the long run, and although I brought a snack as insurance in case I bonked, I wanted to see how I would feel for the entire duration of a long run.&lt;/p&gt;
&lt;h2&gt;The run&lt;/h2&gt;
&lt;p&gt;We started off at around 10-minute pace for the first hour of the run, taking the Riverview Trail (winding all the way down), the Falls Ravine Trail down into Fern Hollow, then crossing Commercial Street and going up to Summerset at Frick and back down.&lt;/p&gt;
&lt;p&gt;We didn&apos;t go into Duck Hollow because there was a barrier with a sign saying that the section of trail was closed. I didn&apos;t know whether to believe that (I&apos;ve seen that sign there for a long time now), but didn&apos;t want to run into any possible trouble, so we turned back.&lt;/p&gt;
&lt;p&gt;Once back in Frick Park, Chris picked up the pace, to about 9-minute pace. OK. He was running faster than I would have chosen to run myself if I had been on a long run alone. I silently kept up. One thing about running with other people is figuring out what shared pace to adopt. If individuals have fitness levels that are too different, running together might not work too well. In our case, it appeared that Chris was rapidly closing in on my level, and for all I knew, could already be beyond it!&lt;/p&gt;
&lt;p&gt;Anyway, since we had cut short the route that would have led to the Monongahela River, I decided we&apos;d do more exploration within Frick Park. We took the Nine Mile Run Trail down to where it emerges in Regent Square, then came back up, then turned onto Braddock Trail. We got off Braddock Trail at the point where the annual &lt;a href=&quot;/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/&quot;&gt;Run Around The Square&lt;/a&gt; turns onto it, and headed back into Fern Hollow.&lt;/p&gt;
&lt;p&gt;Then we went up north on Tranquil Trail, branched off Homewood Trail to pass by the Frick Park Lawn Bowling Greens, see Homewood Cemetery, and head back down. By then, I calculated that we should head back, because we were going to have done about 12 miles total by the time we got back to my place.&lt;/p&gt;
&lt;p&gt;Going up Falls Ravine Trail, I finally started feeling hungry. But I was OK, not lightheaded or bonking, so I did not eat the snack I had brought. This was already the furthest I&apos;d ever run in my life completely without pre-run food or any fuel during the run (I had two or three water fountain stops but that&apos;s no calories).&lt;/p&gt;
&lt;p&gt;Taking the Riverview Trail, we reached a point at which I told Chris I liked to go fast for a whole mile uphill, so I sped up and went for it. I was going at under 8-minute pace as though running the last mile of a 10K race.&lt;/p&gt;
&lt;p&gt;At some point near the end of that uphill stretch, Chris called for me to wait up. He had gotten some stomach cramps. He said he wasn&apos;t used to running at this speed. We walked for a bit before we resumed running out of the park and back to my place.&lt;/p&gt;
&lt;h2&gt;Analysis&lt;/h2&gt;
&lt;p&gt;By my estimate, based on my pretty good feel for my pace and subtracting time at water fountains and walking, we ran about 13 miles. My feet were pretty sore (I wore my Vibram FiveFingers KSO Trek shoes, as usual in the trails), but I was feeling great; and I hadn&apos;t eaten anything since dinner the previous night! OK, I was hungry and ready to eat a meal, but I had not bonked or anything. This gives me some confidence to try more fasting experiments in future runs.&lt;/p&gt;
&lt;p&gt;I told Chris that I believed he was fundamentally strong and could run really fast, that he should add long interval training sessions to his current regimen of long runs and hilly speed training. It&apos;s the long intervals (running about a mile at 5K pace) that do wonders. We had just gone out and practically run a half marathon casually, so for his first half marathon coming up in months, he should be able to train well and actually set an ambitious time goal for it. I would not be surprised if in his first half marathon he is able to run faster than in my fastest ever half marathon! Put in the long runs and the interval training and one should be able to &lt;em&gt;race&lt;/em&gt; one&apos;s first half marathon, not merely finish it. In my experience, if one has done enough training for a half marathon, it can be raced almost as though a &quot;long&quot; version of a 10K race.&lt;/p&gt;
&lt;p&gt;The marathon is another story entirely. I may write something up about that some day.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was a beautiful day for a long run in Frick Park, and I was delighted to introduce Chris to some of my favorite routes in it.&lt;/p&gt;
&lt;p&gt;Also, I was pleased that my experiment with fasting worked out.&lt;/p&gt;
</content:encoded></item><item><title>Musicians&apos; workshop by the contra dance Great Bear Trio at the Pittsburgh Fall Dance Weekend</title><link>https://franklinchen.com/blog/2012/10/10/musicians-workshop-by-the-contra-dance-great-bear-trio-at-the-pittsburgh-fall-dance-weekend/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/10/musicians-workshop-by-the-contra-dance-great-bear-trio-at-the-pittsburgh-fall-dance-weekend/</guid><pubDate>Wed, 10 Oct 2012 20:46:00 GMT</pubDate><content:encoded>&lt;p&gt;I was invited by Donna to attend a musicians&apos; workshop being held as part of the&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pittsburghcontra.org/fdw/fdw-2012-schedule/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pittsburghcontra.org/fdw/fdw-2012-schedule/&quot;&amp;gt;Pittsburgh contra fall dance weekend&amp;lt;/span&amp;gt;. Members of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.greatbeartrio.com/Great_Bear_Trio/Home.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.greatbeartrio.com/Great_Bear_Trio/Home.html&quot;&amp;gt;Great Bear Trio&amp;lt;/span&amp;gt; discussed their perspective on the interplay between music and dance.&lt;/p&gt;
&lt;p&gt;It was a great opportunity to hear some frank and useful advice about how to work with dancers as musicians in order to collaborate to create great experiences for both, given that often there are differences in expectations.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Final round of Pittsburgh Chess Club tournament: clawing back from a terrible position to draw and tie for first</title><link>https://franklinchen.com/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/09/final-round-of-pittsburgh-chess-club-tournament-clawing-back-from-a-terrible-position-to-draw-and-tie-for-first/</guid><pubDate>Tue, 09 Oct 2012 23:58:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/chen-dean-2012-10-09_files/final-position.jpg&quot; alt=&quot;Final position&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight was the sixth (and final) round of the current six-round Tuesday night tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, the 14th Fred Sorensen Memorial. As mentioned in my report on the &lt;a href=&quot;/blog/2012/10/02/round-4-of-pittsburgh-chess-club-tournament-on-benoni-emasculation-and-learning/&quot;&gt;fifth round&lt;/a&gt;, I was going into this final round paired against the only other player with my score so far, which meant that tonight, it was &lt;strong&gt;him or me&lt;/strong&gt;, for first prize!&lt;/p&gt;
&lt;p&gt;It turned out that we drew, and therefore split first prize, both of us taking home $145 for our trouble (let&apos;s not calculate the hourly opportunity cost; we are clearly not playing chess for the money here, ha).&lt;/p&gt;
&lt;p&gt;Was this a &quot;gentlemen&apos;s draw&quot;? &lt;strong&gt;No freaking way.&lt;/strong&gt; We were both out for blood in this game, and it lasted &lt;strong&gt;four hours and fifteen minutes&lt;/strong&gt;, being the last game to finish. I was in trouble and in danger of losing during most of the game, thanks to a series of errors on my part early on when I had built up a real advantage and then squandered it. My best possible scenario was to fight hard for the draw, and I&apos;m proud I actually got it, despite my opponent pressing hard and refusing to concede the draw until the very final position.&lt;/p&gt;
&lt;p&gt;Here&apos;s the story of what happened.&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-dean-2012-10-09.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Since I learned over the weekend whom I was going to play tonight, I had time to &quot;prepare&quot; for the game. Unfortunately, sometimes I am not sure that is such a blessing. I feel more relaxed in day or weekend long tournaments in which one does not know far in advance about whom one is going to play.&lt;/p&gt;
&lt;h3&gt;Strength&lt;/h3&gt;
&lt;p&gt;Objectively, my opponent and I are close in rating (him being a little lower) and therefore an evenly matched fight was expected. As Experts, we are fairly strong players: whereas he won the Pittsburgh Chess Club Championship in 2011 and 2012, I myself won the Pittsburgh Chess Club Championship in 2006 (a tie for first through fourth) and 2007.&lt;/p&gt;
&lt;h3&gt;Psychology&lt;/h3&gt;
&lt;p&gt;It was particularly stressful for me anticipating tonight&apos;s game, because my opponent had actually played one tournament game with me in the past (in early 2011), and he had won after a really tough fight in which I felt I played quite poorly (losing a dead drawn position in the end game). It is easy to say to oneself that one should be objective and not let the sting of past losses have an effect on one&apos;s mental state, but it&apos;s easier to say than to do! I am very conscious of the feeling I have of wanting &quot;revenge&quot; for a loss, and consider this feeling to be counterproductive.&lt;/p&gt;
&lt;h3&gt;Opening choice&lt;/h3&gt;
&lt;p&gt;It is very tempting to try to &quot;prepare&quot; for someone specific, by studying up on one&apos;s opponent&apos;s likely openings or strategies days in advance. On the one hand, it can be fun to learn something in depth as part of the whole process. On the other hand, it is easy to get tunnel vision and end up thrown off by the unexpected, by expecting too much.&lt;/p&gt;
&lt;p&gt;Well, it turns out that until tonight, I had never played White against my opponent. However, I had watched him play earlier in the tournament and noticed that he played the &lt;a href=&quot;https://en.wikipedia.org/wiki/Philidor_Defence&quot;&gt;Philidor Defense&lt;/a&gt;. Now, I have only played against the Philidor Defense only once in my life, I believe, 32 years ago in my first tournament as a child. It is not a popular opening. However, it has recently suddenly become revived.&lt;/p&gt;
&lt;h4&gt;Stupid or brave? Short or long term?&lt;/h4&gt;
&lt;p&gt;As White, &lt;strong&gt;I don&apos;t have to allow Black to play the Philidor.&lt;/strong&gt; But why should I deliberately allow it, given that I can sidestep it? Because I believe that &lt;em&gt;objectively&lt;/em&gt;, the Philidor Defense is &lt;em&gt;not very good&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Also, a feature of my chess play, maybe a &lt;em&gt;perverse weakness&lt;/em&gt;, or maybe an &lt;em&gt;enterprising strength&lt;/em&gt;, is that I like to take on new challenges that are not forced on me, but freely chosen. Given the opportunity to learn a new opening and play it, I tend to go ahead and do that rather than stick entirely to my &lt;em&gt;comfort zone&lt;/em&gt;, playing what I already know. It would have been very easy for me to sidestep the Philidor tonight, but I chose to study it a bit and &lt;em&gt;deliberately&lt;/em&gt; walk into my opponent&apos;s desired opening.&lt;/p&gt;
&lt;p&gt;I have to confess that I have paid the price repeatedly over the years, losing games or drawing games instead of winning, because of deliberately playing unfamiliar kinds of positions. It is very painful to do worse because of being outside of my comfort zone. But part of me truly believes that life is richer for trying experiments and for learning from failures. In fact, if I think about the failures more objectively, I realize that many of my easy wins in recent years are wins that came to me because I had first lost in similar positions and then learned the lesson the hard way. For example, the first couple of times I played the Sicilian Defense as Black, I got killed. But then I got better and started winning a lot with it. Life is so much richer as a result of having eventually figured out how to play the Sicilian Defense!&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;So we in fact did end up in a Philidor Defense, as expected. We arrived at a very standard opening position, one which I&apos;ve never played on either side, but one that I studied.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1rk1/pp1nbppp/2pp1n2/4p3/P1BPP3/2N2N2/1PP2PPP/R1BQR1K1 b - -&quot; caption=&quot;Standard position&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Black&apos;s goal in the Philidor Defense is similar to the goal in the open Sicilian Defense or King&apos;s Indian: accept less space initially, but eventually put pressure on White&apos;s center. White&apos;s task is to hold the center, stop Black&apos;s counterplay on the Queen side and center, and basically rip apart Black&apos;s position with a King side attack.&lt;/p&gt;
&lt;p&gt;It turned out that I executed White&apos;s attack very well, actually, to a point. I reached a very good attacking position as White:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bq1rk1/ppn1bppp/2pp2n1/7Q/P2NPP2/2N1B3/BPP3PP/R3R1K1 b - -&quot; caption=&quot;King side attack&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;I totally fell apart in the early middle game, because of impatience and hubris upon &lt;em&gt;knowing&lt;/em&gt; that I had achieved a great position. Here is the first critical position, at which White has an overwhelming advantage, but at which I became extremely careless:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2q1rk1/ppn2ppp/2ppb1n1/7Q/P2RPP2/2N1B3/BPP3PP/4R1K1 w - -&quot; caption=&quot;King side attack&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I became fixated on the idea of winning Black&apos;s &lt;code&gt;d6&lt;/code&gt; Pawn, but neglected to keep my own center protected:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3qrk1/ppn2ppp/2pR2n1/7Q/P3PP2/2N1B3/bPP3PP/3R2K1 w - -&quot; caption=&quot;White losing advantage&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I tried to complicate things, but my opponent was precise in maintaining an advantage and winning a Pawn.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3qrk1/pp3pp1/2pR2p1/8/P3b3/4B3/1PP2QPP/3R2K1 b - -&quot; caption=&quot;White down a Pawn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;At this point, my only hope was to fight on with the Bishops being of opposite colors, in order to make a draw.&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;The task of drawing was made more complicated by the fact that my emotional turmoil had led me to spend a lot of time thinking and recovering, and so I was behind on the clock. It is critical not to lose too much time on the clock relative to your opponent, because in the ending, the inferior side has to play more precisely. So I made very pragmatic choices to play moves that, given very little thinking time, were not necessarily best but seemed to be consistent with a clear drawing plan and also forced my opponent to make his own choices and think, thereby narrowing the time gap between us.&lt;/p&gt;
&lt;p&gt;For hours, I defended, and eventually after a Queen trade, I grew confident that I could hold the draw:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3r1k1/1p3pp1/1Bp3p1/5b2/P2Qq3/2P4P/3R2P1/R5K1 b - -&quot; caption=&quot;Queens are off&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Time became very short for both sides, and my opponent agreed to a draw only after he was down to almost one minute left on his clock while I had two minutes on mine, and an error on his side had made the draw trivial.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;3B4/1p3r2/2pR1pk1/P1P3p1/6P1/7K/4b3/8 w - -&quot; caption=&quot;Draw agreed&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I was all sweaty from the intense effort.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;I know that it is not the wisest thing in the world to play an opening for the first time in a serious tournament game. Even if objectively I know, from study, what the strategies and possible tactics are, it is just that much more of a cognitive load to carry. In the past, I would work out new openings by playing blitz at the club, but I don&apos;t have time for much blitz chess any more.&lt;/p&gt;
&lt;p&gt;I have a bad habit of getting careless at critical moments in a game when I feel that I am on the verge of winning. In my next tournament, I will work to combat this bad habit.&lt;/p&gt;
&lt;p&gt;I was proud of fighting back for a draw successfully despite all the problems I caused myself. The game&apos;s not over until it&apos;s over.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;This is the first chess tournament that I&apos;ve won/tied-for-first since the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://main.uschess.org/assets/msa_joomla/XtblMain.php?201010121031-12226800&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://main.uschess.org/assets/msa_joomla/XtblMain.php?201010121031-12226800&quot;&amp;gt;12th Fred Sorensen Memorial&amp;lt;/span&amp;gt; of two years ago. My &quot;comeback&quot; feels fairly good, although I&apos;d like to win again a tournament outright, with a perfect score: straight wins, no draws.&lt;/p&gt;
&lt;p&gt;My rating went up a few points, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://main.uschess.org/assets/msa_joomla/XtblMain.php?201010121031-12226800&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://main.uschess.org/assets/msa_joomla/XtblMain.php?201010121031-12226800&quot;&amp;gt;from 2110 to 2122&amp;lt;/span&amp;gt;. The last-round draw with an Expert lower-rated than me did cost me some points.&lt;/p&gt;
&lt;p&gt;I haven&apos;t yet decided whether to play in the next Tuesday night tournament, which starts in a month, on Tuesday, November 13. I have a month to decide.&lt;/p&gt;
&lt;p&gt;I am, of course, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.scottberkun.com/blog/2012/how-to-be-good-at-anything/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.scottberkun.com/blog/2012/how-to-be-good-at-anything/&quot;&amp;gt;always trying to improve&amp;lt;/span&amp;gt; at chess, using however much time and effort I can actually budget toward it.&lt;/p&gt;
&lt;p&gt;Since playing in a chess tournament is a kind of athletic performance, I am trying to apply what I&apos;m learning from other forms of performance about &lt;a href=&quot;https://musiciansway.com/blog/2012/10/excelling-under-pressure/&quot;&gt;excelling under pressure&lt;/a&gt;. The mismatch I often feel between my &quot;ability&quot; and my &quot;performance&quot; is something I am addressing.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I more or less achieved my goals for this tournament. I played reasonably well, and of the five games I played, I won four and drew one. I also analyzed and published my tournament games online for the first time, warts and all.&lt;/p&gt;
</content:encoded></item><item><title>My first contra dance workshop: unexpected fun!</title><link>https://franklinchen.com/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/</guid><pubDate>Sun, 07 Oct 2012 21:19:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/first-contra-dance/motion.jpg&quot; alt=&quot;Dancers in motion&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today Abby and I attended the &lt;a href=&quot;https://www.facebook.com/events/374623475947550/&quot;&gt;first CMU contra dance workshop&lt;/a&gt; put on by the &lt;a href=&quot;https://www.facebook.com/catsdancepgh&quot;&gt;Carnegie Alliance of Traditional and Social Dance&lt;/a&gt;, as I mentioned we might when I wrote about the &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;formation of CATS Dance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You have to understand that for years I &lt;em&gt;resisted&lt;/em&gt; the idea of ever doing contra dancing. I had some bad memories of being forced to do a bit of &lt;a href=&quot;https://en.wikipedia.org/wiki/Square_dance&quot;&gt;square dancing&lt;/a&gt; in elementary school, I have a tendency to resist choreographed patterns, and frankly, I associated contra dancing with old, maybe clumsy people. In the past year, having met plenty of people who mentioned doing contra dancing, and who clearly are not old and clumsy (some are old but far from clumsy), I&apos;d gotten interested in giving it a try.&lt;/p&gt;
&lt;p&gt;The seed was first planted just from happening to get pulled into &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;playing music for contra dancing ten months ago&lt;/a&gt;. But I didn&apos;t act on it, other than participating a little bit impromptu &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/&quot;&gt;at a birthday party&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today I finally went for a full four-hour workshop, held at CMU.&lt;/p&gt;
&lt;p&gt;I had a great time, way beyond my expectations!!&lt;/p&gt;
&lt;h2&gt;Turnout&lt;/h2&gt;
&lt;p&gt;The turnout was great. I estimate there were about thirty to forty participants. Most of them appeared to be undergrad or grad students; others were older people, many of whom Abby and I already knew from elsewhere, including the &lt;a href=&quot;/categories/french-dance/&quot;&gt;French dance workshops we&apos;ve attended in the past several months&lt;/a&gt;. The predominance of young people was a good sign.&lt;/p&gt;
&lt;h2&gt;Caller&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.cdss.org/system/html/gayefifer-579cfde1.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.cdss.org/system/html/gayefifer-579cfde1.jpg&quot;&amp;gt;[image: Gaye Fifer]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;We were really blessed today to have a great caller, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://wa64.com/Waltz.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://wa64.com/Waltz.html&quot;&amp;gt;Gaye Fifer&amp;lt;/span&amp;gt;, who is not only clear in her instruction and calling, but also was always very observant and helpful to anyone who was in her line of sight. Whenever I was near her and messing up, she noticed and efficiently got me back on track. She did that for everyone, not just me. Given the size of the crowd, I found that care and attention to detail really impressive.&lt;/p&gt;
&lt;p&gt;Gaye made the whole learning experience effective, friendly, and joyful!&lt;/p&gt;
&lt;h2&gt;Band&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/first-contra-dance/gallimaufry.jpg&quot; alt=&quot;Gallimaufry&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We also had a fantastic live band, &lt;a href=&quot;https://www.facebook.com/gallimaufryband&quot;&gt;Gallimaufry&lt;/a&gt;, from Oberlin. This is a group of five youthful and very skilled musicians playing a whole bunch of instruments. I saw fiddle, cello, electric guitar, accordion, piano, drums.&lt;/p&gt;
&lt;p&gt;They played with great rhythm and sheer exuberance and expression, and seamless ensemble work. Wow. They were rocking out. They knew how to ramp it up to get the dancers moving and smiling!&lt;/p&gt;
&lt;h2&gt;Participants&lt;/h2&gt;
&lt;p&gt;The energy level and enthusiasm of the dancers today was great. I have been in dance situations in which some of the dancers were not fully engaged, not really getting into the music or the movement, or choosing to remain distant with those they rotated around to dance with. I think it&apos;s really important, for this kind of dance to work, for everyone to be fully present and open to the experience, and open to dancing with everyone else. It&apos;s a communal experience.&lt;/p&gt;
&lt;p&gt;There was a mix of beginners (like myself) as well as those who clearly already knew what they were doing. This was actually very helpful because those who knew what they were doing kept the rest of us on the right track, both through personal example and through verbal and physical reminders of what to do. As a result, typically after repeating a pattern ten times (down one end of the room to the next and then back) while the music went on and on, I was able to improve during each iteration to the point that by the end of each dance we learned, I more or less knew what to do and how to do it (not that I necessarily remembered it exactly or executed it smoothly).&lt;/p&gt;
&lt;p&gt;By the way, I got pretty sweaty during the four-hour workshop. It was intense. This isn&apos;t just shuffling around: it&apos;s real exercise, with the music being lively and everyone being in constant motion. I was starving and dehydrated after the first two hours!&lt;/p&gt;
&lt;h3&gt;Watching&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/first-contra-dance/abby-david.jpg&quot; alt=&quot;Abby partnering with David&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was a snack break halfway through, but I took other breaks to catch my breath and rest my mind, since the dances got progressively more complicated and faster (counting in four rather than eight, for example, and traveling more). It was fun to take a break and watch people dance, because the more experienced dancers added their own ornaments and spins and looked so smooth.&lt;/p&gt;
&lt;p&gt;As the caller pointed out, the subtlety and the fun in contra dancing comes from making all the &lt;em&gt;transitions&lt;/em&gt; smooth and coordinated. I have a lot of work to do to continue improving, but during the hours of the workshop as I learned to be more aware of my immediate circle and relative positions and movements, I got a real sense of how I could really improve my experience of and enjoyment of contra dance.&lt;/p&gt;
&lt;h2&gt;French dance during break&lt;/h2&gt;
&lt;p&gt;Also, during the break, Lisa taught some basic French dance to those who just couldn&apos;t get too much dancing. Hopefully this will translate into increased participation in the upcoming French dance workshops.&lt;/p&gt;
&lt;h2&gt;Waltzes&lt;/h2&gt;
&lt;p&gt;As a nice typical touch, each of the two sets were concluded with a waltz. Abby and I enjoyed the opportunity to dance together, just the two of us, during the waltzes.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Abby and I have known for a while, of course, about the regular &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Friday night contra dance by the Pittsburgh Contras and Squares&lt;/a&gt;. That&apos;s not a great time and day, unfortunately, because going out late on a Friday night does not appeal to me. I like the weekend afternoon schedule of the CMU French and contra dance workshops, currently held 4-7 PM. Being held at CMU also has the large advantages of being very close to home as well as encouraging a good turnout of young people to keep the energy up.&lt;/p&gt;
&lt;p&gt;If the current CMU schedule continues, that makes it much more likely that we&apos;ll continue to do French and contra dancing regularly.&lt;/p&gt;
&lt;p&gt;Meanwhile, I expect to play music at the &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;annual holiday ball&lt;/a&gt; again this year. This time, I am sure I will have no fear about maybe taking part in the dancing!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had an unforgettable dance experience today. I never expected to enjoy contra dancing so much, but because of how friendly all of the workshop participants were, and the caller, and the amazing band, I feel like I now have a taste of why people do this, and I hope to do more!&lt;/p&gt;
</content:encoded></item><item><title>The Fineview Stepathon 2012: Pittsburgh&apos;s grueling urban trail race</title><link>https://franklinchen.com/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/</guid><pubDate>Sat, 06 Oct 2012 23:07:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://thenorthsidechronicle.com/UserFiles/Image/stepathon.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://thenorthsidechronicle.com/UserFiles/Image/stepathon.jpg&quot;&amp;gt;[image: Stepathon steps]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I ran in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thenorthsidechronicle.com/2061_php?calendarDate=2012-10-04&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thenorthsidechronicle.com/2061_php?calendarDate=2012-10-04&quot;&amp;gt;annual&amp;lt;/span&amp;gt; &lt;a href=&quot;https://stepathon.org/&quot;&gt;Fineview Stepathon&lt;/a&gt;, a truly unique and grueling 5-mile race held in &lt;a href=&quot;https://en.wikipedia.org/wiki/Fineview_(Pittsburgh)&quot;&gt;Fineview&lt;/a&gt;, a neighborhood in the North Side of Pittsburgh.&lt;/p&gt;
&lt;p&gt;This was not the first time I&apos;d run the Stepathon: I&apos;d actually done a shorter version of it (supposedly a 5K, but clearly much shorter given how quickly I finished it) in 2006. Originally, I wasn&apos;t sure I was going to run another race this year after the &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;Great Race&lt;/a&gt;, but after telling my buddy Chris about the Stepathon, and his getting excited about the concept, I decided to commit to doing it with him, rain or shine.&lt;/p&gt;
&lt;p&gt;(Note that there was a short 2.5 mile option available, but only six people took it this year.)&lt;/p&gt;
&lt;p&gt;The Web site&apos;s description only gives a hint of what this event is like:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Are you a runner, about to run the Great Race?   An urban explorer?  A fitness nut?  Or just a masochist?  How fast should you pace yourself, going up a stairway that rises out of view?  How fast can you go?  One thing for sure, the harder you fight the steps, the harder they fight back!  We saved the best for last... the legendary Rising Main stairway.  High as a 17-story building, disorienting as it leans this way and that, your legs feeling like jelly as you near the top... The Stepathon, ready to chew you up and spit you out!
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Also, the registration form says:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Challenging course includes 12 public staircases over 1600 steps.  Vertical climb 400 feet.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s my report on this fantastic event!&lt;/p&gt;
&lt;h2&gt;Course&lt;/h2&gt;
&lt;p&gt;The course includes stairways, sidewalk steps, road sections, trail sections, grassy sections, bridges. It&apos;s really something else. With all the turns, it was very helpful indeed that signs were put up and arrows drawn on the ground where useful, and several volunteers out on the course also, who pointed the way. I really appreciated the number of volunteers in the Stepathon who made it go smoothly. They not only pointed the way, but gave encouragement, and there were water stations also along the course.&lt;/p&gt;
&lt;p&gt;Here is a &lt;a href=&quot;https://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;msa=0&amp;amp;msid=113997026750504519105.000482f8ae0315f705efc&amp;amp;ll=40.46334,-80.002184&amp;amp;spn=0.011428,0.018239&amp;amp;z=15&amp;amp;source=embed&quot;&gt;detailed map of the course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And here are &lt;a href=&quot;https://www.facebook.com/groups/110502898969170/photos/&quot;&gt;photos from the past&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I didn&apos;t prepare for this event at all. I had no goal but to do my best and pace myself well. Real preparation, of course, would have involved doing a lot of &lt;strong&gt;stair-climbing&lt;/strong&gt;. It is the case that I &lt;em&gt;almost never&lt;/em&gt; take an elevator or escalator, but take the stairs instead, wherever I go, but I&apos;m talking about actual stair-climbing training, of the form I used to engage in, during winter, when I did the summer &lt;a href=&quot;https://rachelcarsontrails.org/rct/challenge&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; three years in a row. Of course, the place for such training is the &lt;a href=&quot;https://web.archive.org/web/20121120075614/http://www.tour.pitt.edu:80/tour-080.html&quot;&gt;Cathedral of Learning&lt;/a&gt;. Once a week, I&apos;d do 36 floors, elevation gain of 440 feet, in one straight shot up, no rest: it was a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://alltrails.com/events/2010/11/cathedral-of-learning-steps-2&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://alltrails.com/events/2010/11/cathedral-of-learning-steps-2&quot;&amp;gt;great workout&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Pre-race&lt;/h2&gt;
&lt;h3&gt;Food&lt;/h3&gt;
&lt;p&gt;Just as in the Great Race, I continued my policy of not eating before the race.&lt;/p&gt;
&lt;h3&gt;Clothing&lt;/h3&gt;
&lt;p&gt;It was drizzling rain, but the temperature wasn&apos;t too bad. I wore a long-sleeve moisture-wicking shirt, long running pants, my Vibram FiveFingers Bikila LS shoes, and the brand new Great Race cap that was given to all participants of the Great Race this year. This was the first time I&apos;d ever worn a cap during a race; I didn&apos;t want water getting into my eyes (as happened actually during the Great Race). I also wore some light gloves; in particular, I expected to try to hold onto some cold and wet stairway handrails!&lt;/p&gt;
&lt;p&gt;Chris also wore his Great Race cap. Since this was a smaller race, with 70 participants, this was the first time in a race we were at a start line together. In the huge July 4 Brentwood 5K race, which was his first 5K race, we didn&apos;t start together, and in the even more huge Great Race, his first 10K race, I never even saw him at all.&lt;/p&gt;
&lt;p&gt;I saw some people wearing the yellow Great Race long-sleeve shirts they were also given to all Great Race participants. I still haven&apos;t worn mine yet. I wasn&apos;t going to wear an unfamiliar shirt for the first time when doing a race.&lt;/p&gt;
&lt;h3&gt;Pep talk&lt;/h3&gt;
&lt;p&gt;The race director warned us of the hazards in store for us, and told us to be especially careful on the slippery wooden steps and in the trails. There were lots of jokes going around about dragging our broken bodies from the steps. I enjoyed the lighthearted mood. Hey, we all signed the waivers about the dangers of this event!&lt;/p&gt;
&lt;h2&gt;Description of the race&lt;/h2&gt;
&lt;h3&gt;Stairs and trails&lt;/h3&gt;
&lt;p&gt;We started off running on the road for a bit before turning onto the first stairway. Chris was way ahead of me, but I was trying to pace myself for what lay ahead.&lt;/p&gt;
&lt;p&gt;After doing a bit of &quot;running&quot; up the stairs, I quickly realized that I was wasting my energy. I started just walking up the stairs instead. The plan was to walk up all stairways, but descend quickly, and run fast on the roads.&lt;/p&gt;
&lt;p&gt;Also, I was trying to pull myself up with my arms using the handrails, but it turns out that some handrail sections are missing or &lt;em&gt;loose&lt;/em&gt;. Yup, we were warned!&lt;/p&gt;
&lt;p&gt;At some point, we started going off into the trails. Unfortunately, I had &quot;forgotten&quot; that there might be mud issues, and I was annoyed that I had worn my Bikila LS shoes instead of my KSO Trek shoes, which would have been much better in these conditions. I had to slow down a lot to avoid slipping and falling in the muddy trails.&lt;/p&gt;
&lt;p&gt;I noticed that I was a lot faster descending steps than many people, so I started passing people during the descents. At some point, I caught up to Chris and passed him. But not too long after that, we entered a grassy section of the course, outside the fenced baseball field. I &lt;em&gt;knew&lt;/em&gt; that this was going to be treacherous, so I tried to grab with my right hand onto the fence as I ran, but still, at some point there was a drop and I slipped and fell hard, right on my butt. I picked myself up, luckily not really injured (although I had some hip pain for a day or two after the race), and kept going. After the race, Chris said he had seen me going down. Thanks to the indentation I made in the ground with my body, others behind me knew where not to step!&lt;/p&gt;
&lt;h3&gt;Roads&lt;/h3&gt;
&lt;p&gt;I did do a good bit of running on the roads, but actually, a lot of walking too, because there were such steep hills along some of the roads. Here&apos;s my rule of thumb in these kinds of races: if by walking hard I can keep up with someone who is running up a hill, clearly I am saving more energy than my competitor.&lt;/p&gt;
&lt;h3&gt;Bridges&lt;/h3&gt;
&lt;p&gt;There were various bridges, but most amusing was the bridge over I-279. When was the last time I ran in a race that crossed an interstate highway? Um, never?&lt;/p&gt;
&lt;h3&gt;The garden hose&lt;/h3&gt;
&lt;p&gt;On the big stair climb near the end, I noticed while pulling myself up the handrails that one entire section was not only missing, but replaced seamlessly with a &lt;em&gt;garden hose&lt;/em&gt;. Hilarious, but not safe! I didn&apos;t touch the hose.&lt;/p&gt;
&lt;h3&gt;Fear of getting lost&lt;/h3&gt;
&lt;p&gt;Despite all the volunteers and signs and drawn arrows, there were times when I feared getting lost. This proved detrimental to my running speed. During much of the last half hour of the race, I was basically with a pack of two other people, with nobody else in sight ahead of us, and we were taking turns leading. This was fine when I wasn&apos;t leading (typically, they were faster than me on the stairs and trails, while I was faster on the roads), but when a long stretch of road came up and I was clearly able to go faster, I was afraid to go as fast as I really could, in case I missed a turn. If I had genuinely prepared for this race, I would have studied and memorized the course map before doing it.&lt;/p&gt;
&lt;p&gt;As a result of my not going all out when I was clearly strong enough to on the roads, by the time I saw the finish line approaching, no amount of sprinting on my part could get me to catch up with my two closest competitors. I was slightly annoyed with myself for not having applied optimal race tactics.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://runhigh.com/2012RESULTS/R100612GB.html&quot;&gt;results of the race&lt;/a&gt; show that I finished in 27th place out of 70, in a time of 59:31. The two people I was running in a pack with for much of the second half of the race came in 8 seconds and 4 seconds earlier than me.&lt;/p&gt;
&lt;p&gt;I cheered Chris on as he came in some minutes later.&lt;/p&gt;
&lt;h2&gt;Post-race&lt;/h2&gt;
&lt;p&gt;Here is a view from the finish:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bbbigdawgs.weebly.com/uploads/4/4/9/1/4491611/5685188_orig.jpg&quot; alt=&quot;Welcome to Fineview&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bbbigdawgs.weebly.com/uploads/4/4/9/1/4491611/5390106_orig.jpg&quot; alt=&quot;View from finish&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(It&apos;s probably too hard to see my &quot;indentation&quot; in the ground in this photo outside the fenced ball field where I fell!)&lt;/p&gt;
&lt;p&gt;There was a little band playing some &lt;a href=&quot;https://en.wikipedia.org/wiki/Old-time_music&quot;&gt;old-time music&lt;/a&gt;. That was a nice touch to this event. I always appreciate it when post-race festivities include some music.&lt;/p&gt;
&lt;p&gt;Many refreshments were available: muffins, fruit, coffee, etc. I was pretty hungry after almost an hour of running (and on an empty stomach), and devoured some muffins and fruit. No coffee for me, though: I need to wind down, not wind up, after a race!&lt;/p&gt;
&lt;p&gt;I didn&apos;t pay much attention to the raffle prizes being given away, so who knows, I might have missed winning something.&lt;/p&gt;
&lt;p&gt;I picked up my race bag and a coaster. After I was done eating and chatting with Chris, I was getting cold and walked back to the start line and back to my car to drive home. It was kind of funny going backwards along part of the course, down the rights, down the steps, back to the start line.&lt;/p&gt;
&lt;h2&gt;Other events that took place today&lt;/h2&gt;
&lt;p&gt;Sadly, today was also the day for two other annual events that were on different days last year: the Pittsburgh Step Trek and the Run Shadyside 5K.&lt;/p&gt;
&lt;p&gt;So I had to miss both of them. Generally, given the choice between doing something that I have enjoyed recently and doing something new (or very old), I will almost always choose what I did least recently.&lt;/p&gt;
&lt;h3&gt;Pittsburgh Step Trek&lt;/h3&gt;
&lt;p&gt;Last year, Abby and I &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;did the annual Pittsburgh Step Trek&lt;/a&gt;, which is a self-guided, noncompetitive event that actually gives a similar feel to the Fineview Stepathon, in that it is an exploration of a Pittsburgh neighborhood that has a lot of hills and nooks and crannies, and of course a lot of stairways. This year I was unable to do the Step Trek because of another commitment in the afternoon.&lt;/p&gt;
&lt;p&gt;Here&apos;s a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/stories/local/neighborhoods-city/pittsburgh-steptrek-provides-a-different-view-of-city-656542/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/stories/local/neighborhoods-city/pittsburgh-steptrek-provides-a-different-view-of-city-656542/&quot;&amp;gt;local writeup of this year&apos;s event&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h3&gt;Run Shadyside 5K&lt;/h3&gt;
&lt;p&gt;Last year, since it fell on a different day, I also &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;ran the Run Shadyside 5K&lt;/a&gt;. It&apos;s a nice event, but fast and flat and crowded is not as exciting as a quirky, small Stepathon!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a great time in this year&apos;s Fineview Stepathon, and I was delighted to have introduced Chris to this event. This was one of the &lt;em&gt;most fun&lt;/em&gt; races in my life! I&apos;m grateful for all the work the volunteers did to get the route ready, handle registration, direct the race, point out directions, give us water, and provide music and food for us at the end. I totally want to do this again next year, even if schedule conflicts arise again. And I hope that maybe I&apos;ll do some targeted training in order to really conquer &quot;man versus steps&quot;!&lt;/p&gt;
</content:encoded></item><item><title>First anniversary of Steve Jobs&apos; death: let the dead bury the dead</title><link>https://franklinchen.com/blog/2012/10/05/first-anniversary-of-steve-jobs-death-let-the-dead-bury-the-dead/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/05/first-anniversary-of-steve-jobs-death-let-the-dead-bury-the-dead/</guid><pubDate>Fri, 05 Oct 2012 17:41:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://4.mshcdn.com/wp-content/gallery/steve-jobs-life-amp-times/jobs_1980s.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://4.mshcdn.com/wp-content/gallery/steve-jobs-life-amp-times/jobs_1980s.jpg&quot;&amp;gt;[image defunct]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;A year ago I dashed off an &lt;a href=&quot;/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/&quot;&gt;emotional blog post upon learning of the death of Steve Jobs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Three weeks later, I wrote &lt;a href=&quot;/blog/2011/10/27/why-i-am-not-reading-the-biography-of-steve-jobs/&quot;&gt;my last note on Steve Jobs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, having ignored basically all media coverage of Steve Jobs since last October, and still ignoring the biography, all I have to say is:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Let the dead bury the dead.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.biblegateway.com/passage/?search=Matthew+8%3A19-22&amp;amp;version=NIV&quot;&gt;Source.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Chatham Baroque: thoughts on playing new non-Baroque music on Baroque instruments</title><link>https://franklinchen.com/blog/2012/10/04/chatham-baroque-thoughts-on-playing-new-non-baroque-music-on-baroque-instruments/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/04/chatham-baroque-thoughts-on-playing-new-non-baroque-music-on-baroque-instruments/</guid><pubDate>Thu, 04 Oct 2012 23:21:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.chathambaroque.org/sites/default/files/coverimages/DSC_0070.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.chathambaroque.org/sites/default/files/coverimages/DSC_0070.jpg&quot;&amp;gt;[image: Chatham Baroque press photo]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I went to the weekly CMU music convocation, which featured the &lt;a href=&quot;https://www.chathambaroque.org/&quot;&gt;Chatham Baroque&lt;/a&gt;. They provided some interesting discussions and performances of musical excerpts of newly commissioned works as a preview before their &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chathambaroque.org/events/baroque-reframed&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chathambaroque.org/events/baroque-reframed&quot;&amp;gt;official premiere tomorrow&amp;lt;/span&amp;gt; in Pittsburgh.&lt;/p&gt;
&lt;p&gt;You might be thinking, &quot;Wait a second, &lt;em&gt;newly commissioned works&lt;/em&gt; for a Baroque ensemble playing Baroque instruments?&quot; Does this mean some derivative, neo-Baroque stuff?&lt;/p&gt;
&lt;p&gt;The answer is &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Why would one want to play newly composed music on old instruments?&lt;/h2&gt;
&lt;p&gt;Superficially, one might wonder about the point of playing newly composed music on old instruments. But then one realizes that every instrument is an &quot;old&quot; instrument. The &quot;modern&quot; piano as we know it has been around for well over a century; it is an &quot;old&quot; instrument! By now, even the &lt;a href=&quot;https://en.wikipedia.org/wiki/Electric_guitar&quot;&gt;electric guitar&lt;/a&gt; is 81 years old. It&apos;s an ancient instrument. Nobody thinks twice about writing new music for or playing music for the electric guitar.&lt;/p&gt;
&lt;p&gt;Each instrument, no matter how old or new it is, presents unique sonorities and possibilities and technical challenges. There&apos;s no reason not to explore new ways of exploiting and appreciating Baroque instruments in the service of fascinating new music.&lt;/p&gt;
&lt;h2&gt;Three composers&lt;/h2&gt;
&lt;p&gt;The three composers whose works we got a preview of were Moon Young Ha, Matthew McBane, and Lansing McLoskey. Each of them gave a brief introduction and talked about why they decided to write for the Chatham Baroque ensemble of violin, viola da gamba, and theorbo, and what they tried to do.&lt;/p&gt;
&lt;p&gt;I enjoyed the Andrew, Patricia, and Scott perform excerpts of the composers&apos; pieces. None of them were imitative neo-Baroque pieces and they were intriguing, each in a completely different way, different harmonic and rhythmic languages and emphases.&lt;/p&gt;
&lt;p&gt;I think it&apos;s great that Chatham Baroque is expanding beyond the Baroque in their musical explorations. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chathambaroque.org/events&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chathambaroque.org/events&quot;&amp;gt;Coming up in their concert season&amp;lt;/span&amp;gt;, they will be performing with some traditional Appalachian vocalists and instrumentalists. That should be interesting!&lt;/p&gt;
&lt;h2&gt;One limitation&lt;/h2&gt;
&lt;p&gt;While enjoying the previews of the new pieces, I couldn&apos;t help thinking back to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pittsburghmusicalliance.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pittsburghmusicalliance.org/&quot;&amp;gt;Pittsburgh Music Alliance&amp;lt;/span&amp;gt; season launch party that Abby and I &lt;a href=&quot;/blog/2012/09/20/my-first-bobblehead-doll-guess-who/&quot;&gt;attended recently&lt;/a&gt;. There, Chatham Baroque performed some music, but we could barely hear any of the instruments. At best, I could hear a bit of Andrew on Baroque violin, while the viola da gamba and theorbo were rather drowned out by the party noise.&lt;/p&gt;
&lt;p&gt;I think a real limitation of the Baroque instruments is that they are relatively quiet and subtle. I found this a problem myself when trying to play Baroque flute in &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;casual musical jam or party performance situations&lt;/a&gt;. In a quiet and intimate space, they work beautifully. But in a noisy, crowded world, they do not. That is my impression.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Just because you play a Baroque instrument doesn&apos;t mean you have to be stuck only playing Baroque music or neo-Baroque music. The world is wide open, constrained only by taste and acoustic realities.&lt;/p&gt;
</content:encoded></item><item><title>Round 5 of Pittsburgh Chess Club Tournament: On Benoni &quot;Emasculation&quot; and Learning</title><link>https://franklinchen.com/blog/2012/10/02/round-4-of-pittsburgh-chess-club-tournament-on-benoni-emasculation-and-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/10/02/round-4-of-pittsburgh-chess-club-tournament-on-benoni-emasculation-and-learning/</guid><pubDate>Tue, 02 Oct 2012 21:35:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2r2k1/1p1qbpp1/2n4p/p1p2b2/2Ppn3/PP3NP1/2N1PPBP/1R1QBRK1 w - -&quot; caption=&quot;White in reverse Benoni being crushed&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Tonight was the fifth (and penultimate) round of the current six-round Tuesday night tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, the 14th Fred Sorensen Memorial. I last reported on the &lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;third round&lt;/a&gt;, rather than the fourth round, because as I &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;mentioned in August upon signing up for the tournament&lt;/a&gt;, I took a bye for the fourth round because of a schedule conflict with a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghtech.org/networks/PittJug/events.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghtech.org/networks/PittJug/events.aspx&quot;&amp;gt;Pittsburgh Java User Group&amp;lt;/span&amp;gt; meeting that I wanted to attend.&lt;/p&gt;
&lt;p&gt;Thankfully, I came back for the fifth round finding that I was still tied for first, despite taking a half point bye in the fourth round, because nobody else had a perfect score after four rounds either.&lt;/p&gt;
&lt;p&gt;The game tonight ended up one-sided; right after he resigned, he called it an &quot;emasculation&quot; (I won fairly quickly, in less than two hours). However:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the unfolding of the game provides what I think is a nice illustration of how to win thematically against a Benoni opening structure&lt;/li&gt;
&lt;li&gt;my opponent and I had a good discussion, after the game, about learning and improvement&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/mirra-chen-2012-10-02.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;The paradox of choice: how to play against the English Opening as Black?&lt;/h2&gt;
&lt;p&gt;I learned some days before tonight&apos;s game that my opponent and I were going to be paired. Based on my memory, and my database of games, I expected my opponent to play the &lt;a href=&quot;https://en.wikipedia.org/wiki/English_Opening&quot;&gt;English Opening&lt;/a&gt;. In our last game, in 2010, he had played the English. I planned to avoid the variation that I had played then, because of course he would be prepared for it.&lt;/p&gt;
&lt;h3&gt;Reverse Sicilian?&lt;/h3&gt;
&lt;p&gt;I have a confession to make: in the past, I hated facing the English Opening as Black. It&apos;s the &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less&quot;&gt;paradox of choice&lt;/a&gt;: there are so many different ways to play against it. It is not a forcing, direct opening the way &lt;code&gt;1 e4&lt;/code&gt; and &lt;code&gt;1 d4&lt;/code&gt; are. In its purest form, in fact, it is a psychological trick, an attempt to play a &lt;a href=&quot;/categories/sicilian-defense/&quot;&gt;Sicilian Defense&lt;/a&gt; in reverse, but with an extra move, if Black takes up the challenge of playing &lt;code&gt;1... e5&lt;/code&gt;. That extra move makes a huge difference, both objectively and psychologically, in the kinds of positions and evaluations that can arise, as noted English Opening theoretician &lt;a href=&quot;https://www.amazon.com/Mastering-Chess-Openings-John-Watson/dp/1904600980&quot;&gt;John Watson&lt;/a&gt; has brilliantly explained. Roughly, it&apos;s like playing the Sicilian Defense but getting an extra punch in before the fight starts.&lt;/p&gt;
&lt;p&gt;In my 2010 game against my opponent, I in fact took up the challenge as Black and went into an aggressive reversed Sicilian variation, one tempo down: I played the Rubinstein Variation, which is exactly the &lt;a href=&quot;/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/&quot;&gt;Maróczy Bind&lt;/a&gt; in reverse. This is very risky, and although I won that game, I have also lost playing it. I do not play that kind of reversed Sicilian any more.&lt;/p&gt;
&lt;h3&gt;Alternatives&lt;/h3&gt;
&lt;p&gt;There are many, many alternatives to playing for a reverse Sicilian as Black. Tonight I chose to aim to fight for the &lt;code&gt;d5&lt;/code&gt; square, to play to occupy the center and Queen side.&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;As expected, my opponent played &lt;code&gt;1 c4&lt;/code&gt;, the English Opening. After some more moves, it turned out that my opponent allowed me to play a reversed &lt;a href=&quot;https://en.wikipedia.org/wiki/Benoni_Defense&quot;&gt;Benoni&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Again, there are dangers in playing reversed openings, in which Black takes the aggressive role White ordinarily takes but with a tempo down, but in this case, because of a positional subtlety, I was allowed to play a good version of the reversed Benoni as Black:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqkb1r/pp3ppp/2n1pn2/2p5/2Pp4/1P3NP1/PB1PPPBP/RN1QK2R w KQkq -&quot; caption=&quot;A good reversed Benoni for Black&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The problem for White is that he used his extra moves to play &lt;code&gt;b3&lt;/code&gt; and &lt;code&gt;Bb2&lt;/code&gt;, but now the Bishop is blocked up and is misplaced. This is an example of what proponents of the Black pieces such as John Watson and &lt;a href=&quot;https://en.wikipedia.org/wiki/Andr%C3%A1s_Adorj%C3%A1n&quot;&gt;András Adorján&lt;/a&gt; have observed about the subtleties of having extra moves: sometimes they are committal and do not help the side which has them!&lt;/p&gt;
&lt;h4&gt;Concepts of the Benoni&lt;/h4&gt;
&lt;p&gt;For those who are not very familiar with the Benoni as a chess opening, here is an overview of the goals of the two sides, which I&apos;ll call the &lt;em&gt;attacker&lt;/em&gt; and the &lt;em&gt;counter-attacker&lt;/em&gt; (in the regular Benoni, these are White and Black, respectively, and in the reversed Benoni, these are Black and White, respectively).&lt;/p&gt;
&lt;p&gt;Note that I don&apos;t mention a role &lt;em&gt;defender&lt;/em&gt; here, because this opening is so sharp and aggressive for both sides that really, both sides are simultaneously attacking and defending for their lives. This opening is not for the faint-hearted for either side! It is a &quot;kill or be killed&quot; type of opening. I have played the Benoni on both sides, and both killed and been killed. (Most recently, I &lt;a href=&quot;/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/&quot;&gt;played the counter-attacking role against a boy in a casual game&lt;/a&gt; and broke through quickly.)&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;attacker&lt;/em&gt; has more space, has a center pawn wedge thrust into the innards of the counter-attacker&apos;s position, and aims to squeeze the counter-attacker to death, preventing Queen side counterplay, while preparing to blast through at the tip of the pawn wedge.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;counter-attacker&lt;/em&gt; has less space, and hopes to launch a flank attack on the back end of the attacker&apos;s pawn wedge and destroy the attacker&apos;s center, coming around the attacker&apos;s weakened Queen side to swarm in that way.&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;The game tonight had the counter-attacker never getting Queen side counterplay off the ground, while the attacker (Black) broke through without resistance in the center: note that Black has played &lt;code&gt;e4&lt;/code&gt; successfully and White&apos;s thematic &lt;code&gt;b4&lt;/code&gt; is nowhere near possible.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4rk1/1p1qbpp1/2n2n1p/p1p2b2/2PpP3/PP3NP1/2NBPPBP/1R1Q1RK1 b - -&quot; caption=&quot;e pawn advance against the Benoni&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;There was no real end game to speak of, since by the time Queens came off the board, the game was lost for White.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;6k1/1p1rbpp1/2n4p/8/1pP5/2p2NP1/4PPBP/N2b1RK1 w - -&quot; caption=&quot;Queens are off, but game is over&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Discussion with my opponent&lt;/h2&gt;
&lt;p&gt;After the game, my opponent and I discussed the errors that he made during the game: I considered that allowing the reverse Benoni after &lt;code&gt;b3&lt;/code&gt; and &lt;code&gt;Bb2&lt;/code&gt; was an error, and then after that, failing to prevent e4 with Nd2 was an error.&lt;/p&gt;
&lt;h3&gt;Study&lt;/h3&gt;
&lt;p&gt;He noted that he had prepared for our game by studying our game in 2010 and had improved his understanding of the opening variation we had played then, but I told him that I, too, had looked at the game, and never planned to walk into his preparation. He said that he had every confidence that if I had played the same opening variation, I would have done my homework also, to improve what I did last time. He said he respected that even against a weaker player such as himself, he trusted that I would not play an opening I considered inferior or unsound &lt;em&gt;just because I could get away it&lt;/em&gt;. I really appreciated this comment and statement of trust, because in fact this is my current serious attitude. In a blitz game, I might play around, but in a serious tournament game, I will no longer play &quot;junk&quot;. &lt;em&gt;This was not always the case&lt;/em&gt;. In fact, in one of our earliest games, years ago, I had played junk against him and won, but not felt happy about doing that.&lt;/p&gt;
&lt;h3&gt;Learning&lt;/h3&gt;
&lt;p&gt;I congratulated him for doing his homework, and having improved so much in the past couple of years, and he said he learns from his mistakes. Bravo! I have no doubt that he will study the opening we played today and be ready in the future not just for me, but anyone who plays how I did today. Some people make the mistake, during these Tuesday night tournaments in which we face the same people repeatedly, of preparing one-shot ideas against specific opponents, but what we really want to do (and what he does and what I do) is use these rematches as excuses to improve our &lt;em&gt;general&lt;/em&gt; knowledge and skill.&lt;/p&gt;
&lt;p&gt;My opponent said, before we parted tonight, &quot;I don&apos;t learn from my wins. I learn from my losses.&quot;&lt;/p&gt;
&lt;p&gt;I would amend that remark, however. I try to learn from my wins as well. Just because I won this game doesn&apos;t mean I haven&apos;t gone and analyzed &lt;em&gt;where I could have won even faster&lt;/em&gt; or &lt;em&gt;possible good moves he could have made that I overlooked&lt;/em&gt;. Every game that I play, whether I win or lose, I want to learn something from. I have won games in which I played horribly and didn&apos;t see anything and only won because my opponent saw less. I&apos;m not satisfied with just &lt;em&gt;seeing more than someone else&lt;/em&gt;; I actually want &lt;em&gt;to see the naked truth&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;Next Tuesday is the last round of the six-round tournament. I am now the undisputed leader for first, meaning that if I draw next week, I am guaranteed at least a tie for first prize; if I win, I get clear first prize.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;None of that really matters to me&lt;/em&gt;. I&apos;m in this to play as well as I can, enjoy the art, enjoy the sport, and to write up everything I learn along the way, whether I win, draw, or lose. I am, of course, grateful that I have been winning.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-10-07)&lt;/h3&gt;
&lt;p&gt;Oops, it turns out that I was wrong in figuring that I was the undisputed leader for first going into the final round: in fact, someone took a bye in the fifth round after a perfect score in the first four rounds, so he and I are tied for first going into the final round, and in fact, we are playing each other on Tuesday. So if I draw, that only guarantees that we split first prize. I need to win in order to get clear first prize.&lt;/p&gt;
&lt;p&gt;I am, of course, playing for a win. For better or for worse, &lt;strong&gt;I have never played for a draw in my life, against anyone, even a Grandmaster.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Tonight I got a chance to play an opening, reverse Benoni, that I haven&apos;t played for some time in a tournament, and I won the game through clear, thematic moves. In addition, we had a pleasant discussion after the game, and I look forward to seeing him play better in this opening in the future, and I too will refine my play in it.&lt;/p&gt;
</content:encoded></item><item><title>Running my 10th Great Race 10K: &quot;obscene but in a good way&quot;</title><link>https://franklinchen.com/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/</guid><pubDate>Sun, 30 Sep 2012 19:08:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2012/great-race-expo.jpg&quot; alt=&quot;Great Race quilt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today I ran in Pittsburgh&apos;s &lt;a href=&quot;https://rungreatrace.com/&quot;&gt;Great Race 10K&lt;/a&gt; for the &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;tenth time in my life&lt;/a&gt;. For various reasons, I performed a number of experiments for this tenth running of the race, doing things I&apos;ve never done before.&lt;/p&gt;
&lt;p&gt;During the race, I heard someone say, as I passed him:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
...obscene... but in a good way!
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;It made my day.&lt;/p&gt;
&lt;p&gt;I&apos;ll explain what might have triggered this reaction.&lt;/p&gt;
&lt;h2&gt;Preparation and uncertainty&lt;/h2&gt;
&lt;p&gt;After the &lt;a href=&quot;/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/&quot;&gt;Pretty Good Race 5K&lt;/a&gt;, I was so tired out from my effort that I totally lost the desire to run. Plus my left foot was hurting more again. I ended up not running a single step for two weeks. This meant, of course, that there was no way I was going to go after the goal of beating last year&apos;s time in the Great Race 10K.&lt;/p&gt;
&lt;p&gt;In fact, there was the question of whether I should even run the Great Race at all this year! Until almost the last minute, Abby and I agreed that if I did not feel up for running it at all, I would just sell my registration. Part of me felt bad about the possibility of breaking &quot;tradition&quot; and not running the race; I have stubbornly run it while horribly sick in some years! At the same time, it&apos;s not really the end of the world if I miss a race.&lt;/p&gt;
&lt;h2&gt;Change of purpose and plan: enter the Invisible Shoes!&lt;/h2&gt;
&lt;p&gt;Eventually, after my two-week absence from running, my left foot injury resolved itself, and I started running again. The plan was to start road running (since I prefer to trail running) in preparation for the Great Race. The problem is that I actually don&apos;t like wearing my road running Vibram FiveFingers shoes, my Bikila LS shoes. In fact, since my taste in footwear has become more and more minimalist over time, the Bikila LS shoes seem like a step totally in the wrong direction. I got them last year really only for the purpose of road racing, since the KSO blisters me and the KSO Trek is for the trails.&lt;/p&gt;
&lt;p&gt;Just to start running again, I began going out for 2-3 mile casual runs in my &lt;a href=&quot;/blog/2012/07/26/walking-and-running-in-invisible-shoes-a-review/&quot;&gt;Invisible Shoes&lt;/a&gt; that I&apos;d been wearing all summer for walking, and sometimes for running. I enjoyed my short runs in these huaraches.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2012/invisible-shoes-rolled.jpg&quot; alt=&quot;Invisible Shoes rolled up&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Given that I was just getting back into running after such a long break, I never ran more than 3 miles during any of my runs leading up to the Great Race. And I never wore anything other than the Invisible Shoes. So that led me to the idea that since I wasn&apos;t going to be able to achieve a goal of running super fast this year, I could set a &lt;em&gt;different goal&lt;/em&gt; for myself.&lt;/p&gt;
&lt;p&gt;My new goal: &lt;em&gt;run the Great Race 10K in 4mm huaraches&lt;/em&gt;. More specifically, I wanted to see how my joints and muscles would hold up, as well as my feet and skin. Also, I&apos;d never run fast in huaraches before, so this would also be an experiment in running fast in them. I had every intention of running pretty fast: I simply expected that I would not be able to run as fast as if I were running more protected shoes, because of many factors such as flopping soles and more pounding, resulting in my going more conservatively than if I had already experimented and knew what the limits were.&lt;/p&gt;
&lt;p&gt;In fact, originally I had planned to run a 5K race sometime in the huaraches; I had never planned to suddenly run a 10K in them without running a 5K first!! Also, I was going to run this 10K without having run more than 3 miles at a time in an entire month.&lt;/p&gt;
&lt;h2&gt;Last minute panic and recovery&lt;/h2&gt;
&lt;p&gt;On Friday, I was coming down with a sore throat, and my boss said he and his son were both sick (they were both signed up for the Great Race this year). Now I was totally uncertain about whether I was going to run on Sunday. I tried to get healthy, and on Saturday, was feeling more stable, although a sore throat kept lingering, and picked up my race packet. Luckily, I was feeling great this morning, with no sign of a sore throat, so apparently my &quot;placebos&quot; worked (sleep, healthy food, various supplements). I canceled all my Saturday plans (such as going to a &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;French dance workshop&lt;/a&gt;) in order to rest up.&lt;/p&gt;
&lt;p&gt;The other concern was the weather forecast. All week it seemed like it was going to rain sometime this morning. I&apos;ve run in rain before, raced in rain before. I can do it. But the last time I ran in Invisible Shoes in the rain, I got into trouble. So now what? I simply decided I was going to deal with rain if it happened. Yet another variable.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;h3&gt;To eat or not to eat?&lt;/h3&gt;
&lt;p&gt;One experiment I did today that I deem a big success: &lt;em&gt;I ate almost nothing before the race&lt;/em&gt;. I ate a bunch of almonds when I was leaving the house, but that was it. In the past, I always ate something more substantial before a race. Rationally, it does not make sense, but for some reason, I always felt that I should eat a mini-meal. This was completely irrational, a weird clinging behavior I engaged in: after all, when I casually go running in the morning, I do it before breakfast! So why should race day be any different? We human beings have enough fuel stored in our bodies. It&apos;s true that when I go for a run of over, say, 8 miles, I get hungry, and like to either have a snack on me to eat, or have eaten right before going on the run, but when it comes to 5K and 10K races, clearly there is no need for me to eat before the race. Experience has shown that it only makes me feel sluggish. So from now on, &lt;em&gt;no more mini-meals before a race of 10K or shorter&lt;/em&gt;!&lt;/p&gt;
&lt;h3&gt;Shoes&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2012/franklin-before.jpg&quot; alt=&quot;Franklin wearing Invisible Shoes and race number 1853&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2012/feet-before.jpg&quot; alt=&quot;Franklin wearing Invisible Shoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As usual, I jogged a mile from home to the start line as my warmup.&lt;/p&gt;
&lt;h3&gt;Beginning&lt;/h3&gt;
&lt;p&gt;The temperature was in the low 50s F: ideal racing temperature, not too cold. Under 50, I would have worn a long-sleeve T-shirt instead of a short-sleeve one. As it was, since I anticipated rain, I did not wear my usual singlet but instead a standard short-sleeve T-shirt. It was not yet raining, thankfully!&lt;/p&gt;
&lt;p&gt;Some guy stepped on my right toes with his shoes as he wandered through the crowd. I was upset by this and hoped that my toes were OK. They were sore for a few minutes but then I forgot about them and was OK.&lt;/p&gt;
&lt;p&gt;Within the first few minutes, I saw Don Slusser ahead of me; last year I had tracked him and then passed him at the end of the race. This year, he was obviously going much slower, thanks to his shot knees, so I passed him early on.&lt;/p&gt;
&lt;p&gt;I saw my boss standing on his street corner watching the race. I asked why he wasn&apos;t running and he said he was too sick. It&apos;s too bad he had to miss the race yet again, after missing it last year because of another commitment.&lt;/p&gt;
&lt;p&gt;My huaraches seemed to be working pretty well as I ran faster than I had ever run in them. I rather enjoyed being able to feel the ground, as though I were fully barefoot. At 4mm, running with these is pretty close to being barefoot, much closer than wearing Vibram FiveFingers shoes.&lt;/p&gt;
&lt;p&gt;I wasn&apos;t paying much attention to any glances or stares at my feet, or remarks people may have been making, although a few runners did directly ask me about my &quot;flip flops&quot;, with an attitude ranging from incredulity to amusement to admiration.&lt;/p&gt;
&lt;h3&gt;Middle&lt;/h3&gt;
&lt;p&gt;Near halfway through the race, it started raining fairly steadily. I had to periodically wipe the water away from my eyes. Well, it was in the forecast. One thing I can say is that I was never in danger of overheating in this race! There have been instances of the Great Race in warm conditions under a sun, when even in a singlet I got very warm and had to dump water over my head: ha, today I got free water on my head constantly!&lt;/p&gt;
&lt;p&gt;Since I started the race further back than I usually do, there were very few people running at exactly my pace. I was always either passing or being passed by people. This is one thing annoying about big races where people can cross the start mat at very different times.&lt;/p&gt;
&lt;p&gt;However, at one point, a guy came to be in front of me who was running approximately my pace, so that I was almost a constant distance from him. On downhills I would tend to overtake him, but then he would come back. We would be mostly together for approximately the last two miles. At one point when I slowly passed him, I think I heard him say, &quot;That&apos;s obscene... but in a good way!&quot; I believe that comment was directed at me and my footwear, and I kind of took it as a compliment.&lt;/p&gt;
&lt;h3&gt;End&lt;/h3&gt;
&lt;p&gt;The water puddles were starting to get to me, as I had earlier feared. I did not feel confident about running any faster than I already was, given the road conditions and the way my huaraches were slipping around. And my toes were getting sore from the pounding. Normally, in the end of a race, I turn it on and try to use up the remaining energy I have, but today, I just did not feel confident in my footing. I continued going reasonably fast, but did not put in any finishing sprint at all. Even if I had wanted to, it would have been difficult, because of so many slower people in front of me. This is a direct consequence of my lining up at the start line far further back than I usually do: what happens is that slower people who started further up are in the way for the entirety of the race!&lt;/p&gt;
&lt;p&gt;However, I did turn it on just enough to pass that guy I had been more or less with for two miles.&lt;/p&gt;
&lt;h2&gt;Result&lt;/h2&gt;
&lt;p&gt;My chip time was 48:23, not too bad given my footwear experimentation and lack of conditioning and failure to go all out in the final mile; last year&apos;s time was 47:46. Next year, I would like to go under 47:00. I should be able to do that if I maintain a regular running regimen. 2006 was the last year that I went under 47:00.&lt;/p&gt;
&lt;h2&gt;After the race&lt;/h2&gt;
&lt;p&gt;I got some water, was given two Smiley Cookies, and ate a bagel and a banana also. I hopped on the shuttle bus back to the start line (the ride took 30 minutes), then walked 25 minute (1.5 miles) back home in the cold. In the future, I don&apos;t want to do this walk. I should park my car near the start line the night before, so that I can hop off the bus and drive home. It&apos;s no fun to be walking so long in the cold when you&apos;re tired and you&apos;re not sure what the condition of your feet are, except that they hurt.&lt;/p&gt;
&lt;p&gt;Here are my feet after I got home:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2012/feet-after.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It turns out that I got only one blister, and it was exactly where I got a blister last time I ran in the rain in the huaraches: between my first two toes. There was some roughing up of the callouses on the balls of my feet (from wearing the huaraches all summer), but otherwise, my feet were OK.&lt;/p&gt;
&lt;p&gt;After some more hours of recovery, I was feeling fine. No joint pain whatsoever, no muscle soreness whatsoever, none of that stuff. Even last year I had some stiffness when I got off the shuttle bus. My conclusion is that truly minimalist footwear trains me to land in such a way as to minimize problems to my body. No shin splints, no ankle soreness, no knee pain, no hip pain, no shot quads, no cramping calves, nothing. Just a blister, and toes and forefoot that were sore for a while but right now no longer are. It&apos;s amazing what &lt;em&gt;no cushioning for the feet at all&lt;/em&gt; did to prevent the problems I used to face when running. I am so completely sold that I will look into running more races in huaraches, and in optimizing my lacing in order to prevent the flopping limitation and that one blister spot. I am consider going up to the 6mm sole from the 4mm sole, with the idea that 6mm would be more solid for racing.&lt;/p&gt;
&lt;p&gt;Another thought: assuming a race with no rain or extreme cold or hot surfaces, I should run a race &lt;em&gt;barefoot&lt;/em&gt; sometime next year. I&apos;ll think about this. I know people who have done this. Why not? Barefoot, one does not have to worry about blisters caused from laces, or sole flopping, or water slipping. One may have other worries instead, but knowing a course ahead of time can help.&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;Official photos of me in action, including beating the guy I mentioned, are &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://orders.islandphoto.com/RACE/Proofs.aspx#26561404-00002-0026&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://orders.islandphoto.com/RACE/Proofs.aspx#26561404-00002-0026&quot;&amp;gt;here&amp;lt;/span&amp;gt;, but since they are copyrighted, I have not inserted them directly into my report here.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
</content:encoded></item><item><title>Another French music jam; also, announcing CATS Dance</title><link>https://franklinchen.com/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/</guid><pubDate>Fri, 28 Sep 2012 20:55:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://thebridge.cmu.edu/images/W170xL170/0/noshadow/Organization/603b06cbdc7847018dce159a5ed99543.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://thebridge.cmu.edu/images/W170xL170/0/noshadow/Organization/603b06cbdc7847018dce159a5ed99543.jpg&quot;&amp;gt;[image: CATS Dance photo]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;On Monday I participated for my third time in Lisa&apos;s French traditional dance music jam.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/&quot;&gt;Last time&lt;/a&gt;, I started playing my &lt;a href=&quot;/categories/irish-flute/&quot;&gt;Irish flute&lt;/a&gt; at the jam, continued playing my &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;, and left my modern flute at home.&lt;/p&gt;
&lt;p&gt;This time, I changed things up. Also, we got a new musician playing a new instrument!&lt;/p&gt;
&lt;h2&gt;Instruments and musicians&lt;/h2&gt;
&lt;p&gt;Lisa was on fiddle as usual.&lt;/p&gt;
&lt;p&gt;And we had John, who brought and used various kinds of accordions and his mandolin. (He had also brought recorders, in case I wanted to play with him, but I did not bring my recorders.)&lt;/p&gt;
&lt;p&gt;Allison was on piano.&lt;/p&gt;
&lt;p&gt;Donna was on fiddle.&lt;/p&gt;
&lt;p&gt;Most exciting to me was that Cindy came and played &lt;a href=&quot;https://en.wikipedia.org/wiki/Autoharp&quot;&gt;autoharp&lt;/a&gt;. I think the addition of the harmonic accompaniment and countermelodies she provided was really nice.&lt;/p&gt;
&lt;h2&gt;My instruments&lt;/h2&gt;
&lt;p&gt;I did &lt;em&gt;not&lt;/em&gt; bring my Baroque flute this time. I made a decision this week that I was no longer going to try to play my Baroque flute in most public situations. I have been frustrated that its soft sound gets drowned out by other instruments and just by people talking and socializing at parties. Therefore, when playing the Baroque flute in public, I will reserve it for very quiet performance situations only.&lt;/p&gt;
&lt;p&gt;I did bring my Irish flute, which served well when we were playing in appropriate keys.&lt;/p&gt;
&lt;p&gt;I have begun caving in and bringing my modern flute. It can be played more easily in all kinds of keys, and has the power to actually be heard. Maybe one day I&apos;ll have a keyed wooden flute to play traditional music on, but that day is not near at all.&lt;/p&gt;
&lt;p&gt;So after some experimentation, I believe I&apos;m come to the right instrument(s) for different situations.&lt;/p&gt;
&lt;h2&gt;Carnegie Alliance of Traditional and Social Dance (CATS Dance)&lt;/h2&gt;
&lt;p&gt;I&apos;d like to take this opportunity to promote the new CMU-based dance group, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://thebridge.cmu.edu/organization/catsdance&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://thebridge.cmu.edu/organization/catsdance&quot;&amp;gt;Carnegie Alliance of Traditional and Social Dance&amp;lt;/span&amp;gt;. Check out also their &lt;a href=&quot;https://www.facebook.com/catsdancepgh&quot;&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This group has been formed in order to grow a local community of people interested in all kinds of traditional and social dance, French dance being just one example; contra dancing and other folk dancing are also being explored.&lt;/p&gt;
&lt;p&gt;In particular, this group exists because there is increasing interest among young people in these kinds of dances and music. The Pittsburgh dance scene has sometimes been dominated by older people, and it&apos;s good to get younger people involved.&lt;/p&gt;
&lt;p&gt;Last week CATS Dance organized an outing to the regular &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt; Friday dance. Tomorrow there will be a &lt;a href=&quot;https://www.facebook.com/events/105195582969170/&quot;&gt;French dance workshop and social dance&lt;/a&gt; held directly on CMU campus.&lt;/p&gt;
&lt;p&gt;These workshops and dances are, of course, open to everyone, not just CMU students. Abby and I are not CMU students, but &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/&quot;&gt;started attending&lt;/a&gt; these workshops at CMU in January. All ages and levels of dancers are always welcome! If you&apos;re curious, drop by and check it out.&lt;/p&gt;
&lt;p&gt;The first contra dance workshop to be hosted at CMU has also already been scheduled, for Sunday, October 7. Since I&apos;ve never been to a contra dance workshop (although I had a sampling of contra dance at a birthday party &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance&quot;&gt;six months ago&lt;/a&gt;; I was very confused by it then), I hope Abby and I will make it to this workshop.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-10-07)&lt;/h3&gt;
&lt;p&gt;In fact, &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;Abby and I did make it to the contra dance workshop&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I continue to greatly enjoy the regular French music jam and meeting and playing with more musicians. Meanwhile, although I have not done much dancing lately, I am excited about the creation of CATS Dance.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-15)&lt;/h2&gt;
&lt;p&gt;Check out the latest update on the &lt;a href=&quot;/blog/2012/10/15/french-music-jam-with-unexpected-new-musicians/&quot;&gt;French music jam&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Why I missed the CMU intramural XC race this year</title><link>https://franklinchen.com/blog/2012/09/27/why-i-missed-the-cmu-intramural-xc-race-this-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/27/why-i-missed-the-cmu-intramural-xc-race-this-year/</guid><pubDate>Thu, 27 Sep 2012 22:25:00 GMT</pubDate><content:encoded>&lt;p&gt;One thing interesting about having been writing in my blog for &lt;a href=&quot;/blog/2012/09/22/celebrating-this-blogs-one-year-anniversary/&quot;&gt;just over a year now&lt;/a&gt; is the opportunity to look back one year and compare where I was then with where I am now when it comes to seasonal activities and goals.&lt;/p&gt;
&lt;p&gt;For example, today I was originally planning to run in the &lt;a href=&quot;https://athletics.cmu.edu/intramurals/index&quot;&gt;CMU intramural&lt;/a&gt; men&apos;s XC race this year, as &lt;a href=&quot;/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/&quot;&gt;I had enjoyed doing it last year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I ended up not running it for a couple of reasons.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;ve been barely running since the &lt;a href=&quot;/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/&quot;&gt;Pretty Good Race 5K&lt;/a&gt; and therefore untrained, and probably likely to finish dead last, given the very few number of guys preregistered.&lt;/li&gt;
&lt;li&gt;It was raining pretty hard, making unpleasant the thought of running outside on the grass and mud.&lt;/li&gt;
&lt;li&gt;I was feeling OK yesterday, but today was feeling unusually tired and almost sick, and I&apos;m still trying to determine whether to run the Great Race on Sunday &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;for the tenth time as planned&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some interesting observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If I had not been feeling sick, I think there was a 30% chance I would have run anyway.&lt;/li&gt;
&lt;li&gt;If I had not been feeling sick, and it had not been raining, there was a 95% chance I would have run anyway (my only fear being forgetting the course and losing contact with the second-to-last place guy).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Having a long-running blog enables me to remember what I did and what I hoped to do the following year, and compare.&lt;/p&gt;
&lt;p&gt;This year, I didn&apos;t manage to do what I planned a year ago. Well, there&apos;s always next year.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-09-30)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;I did manage to run the Great Race 2012&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>The worst chess move I ever played: why did I do that?</title><link>https://franklinchen.com/blog/2012/09/26/the-worst-chess-move-i-ever-played/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/26/the-worst-chess-move-i-ever-played/</guid><pubDate>Wed, 26 Sep 2012 23:04:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.chessbase.com/news/2012/london/london-gp18.jpg&quot; alt=&quot;Gelfand-Wang&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As happens periodically, in the chess world recently there was mention of how Wang Hao, one of the top players in the world, in a drawn position slipped into a lost position: his opponent Boris Gelfand made an easy move that forced checkmate the next move. How could such a strong player make such a terrible blunder?&lt;/p&gt;
&lt;p&gt;This was hardly the worst move a top chess player has ever made. The fact is, &lt;em&gt;everyone&lt;/em&gt; has made even worse errors than this.&lt;/p&gt;
&lt;h2&gt;Mate in one&lt;/h2&gt;
&lt;p&gt;Former world champion Vladimir Kramnik has even directly &lt;a href=&quot;https://www.chessbase.com/newsdetail.asp?newsid=3509&quot;&gt;allowed a mate in one&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;5Nk1/8/8/4K3/8/4Q3/8/n7 b - - 0 1&quot; caption=&quot;Kramnik allowed mate in one (after 34.Qe3??)&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;These kinds of blunders are so terrible that a novice chess player could be expected to find the winning moves.&lt;/p&gt;
&lt;h2&gt;My not-mate in one&lt;/h2&gt;
&lt;p&gt;I believe that my worst move ever in a tournament was not missing a mate in one, but playing and announcing a not-mate in one.&lt;/p&gt;
&lt;p&gt;In an important tournament game some years ago, I was White against an Expert rated above 2000 and achieved a completely winning position in which my opponent should have resigned long ago: I had been up a Queen for a while, but he just would not resign (he always played that way).&lt;/p&gt;
&lt;p&gt;In this position, all I had to do was take his Knight with check, and then take his Rook:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3k1n1/2r1p3/1p3N2/8/8/1PP5/5Kp1/4Q3 w - - 0 1&quot; caption=&quot;White to play and win&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But instead I took the Rook with my Queen and announced checkmate!!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r3k1n1/2Q1p3/1p3N2/8/8/1PP5/5Kp1/8 b - - 0 1&quot; caption=&quot;White played a non-checkmate&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The problem was that it was not checkmate; my opponent calmly took my Queen, I struggled in an ending a piece down, and finally lost (at one point I had actually fought back to a drawn position, miraculously, but the energy drain of having had to continue playing after my blunder caused me to falter).&lt;/p&gt;
&lt;h2&gt;The reasons for terrible blunders&lt;/h2&gt;
&lt;p&gt;Computers never make these kinds of mistakes. Only humans do. We tend to make these errors in long games in which we are very low in energy and fall victim to tunnel vision, focusing too much on a certain theme or hypothetical line of continuation, and forgetting the bigger picture. Ironically, it is stronger players who may be most prone to these kinds of errors, because a weaker player with less focus may remain able to see the &quot;simpler&quot; threats rather than get caught up in a long, complex calculation.&lt;/p&gt;
&lt;p&gt;Finally, there is the psychological element. I delivered a non-mate because the situation of my opponent continuing to play on while a Queen down disturbed me: I let my feeling of being &quot;insulted&quot; cause me to become impatient and want to &quot;punish&quot; him. I learned a big lesson from that blunder. Now when I see a checkmate, I breathe and double check that it really is a checkmate. For example, &lt;a href=&quot;/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;in the first round of my current tournament in progress, I delivered a checkmate&lt;/a&gt;, because my opponent refused to resign before it happened. I could not help pausing and double-checking that it really was mate.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It is tragicomic when we human chess players make errors that seem incomprehensible out of context. I believe that a large part of successful, consistent chess play is self-knowledge and mastery of one&apos;s mental state.&lt;/p&gt;
</content:encoded></item><item><title>Thank you, Glenn Gould, for introducing me to Schönberg!</title><link>https://franklinchen.com/blog/2012/09/25/thank-you-glenn-gould/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/25/thank-you-glenn-gould/</guid><pubDate>Tue, 25 Sep 2012 19:16:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.npr.org/assets/img/2012/09/11/gould-d36370bc547843a1b3c7ab16e31373b751a52b05-s3.jpg&quot; alt=&quot;Glenn Gould at piano&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today would have been the 80th birthday of the eccentric Canadian pianist &lt;a href=&quot;https://en.wikipedia.org/wiki/Glenn_Gould&quot;&gt;Glenn Gould&lt;/a&gt;, who actually died at age 50 in 1982, before I ever knew about him.&lt;/p&gt;
&lt;p&gt;It was nice to see an article about &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2012/09/25/160957849/glenn-gould-beyond-bachs-goldberg-variations&quot;&gt;Gould playing music other than the Bach he is mostly known for&lt;/a&gt;. Not surprisingly, my own first exposure to Glenn Gould was through his recordings of the music of Bach. I was an undergraduate and one of my friends was a big fan of Gould&apos;s and shared some recordings with me, including both the 1955 and 1982 recordings of the Goldberg Variations, and I was hooked by his uniquely quirky, rhythmic style. But my friend, being such a Gould fan, also had recordings of Gould playing anything else.&lt;/p&gt;
&lt;p&gt;To be honest, I had mixed feelings about almost all of his recordings, because he so imposed his personal notions of how he wanted composers&apos; music to sound; sometimes I could not tell whether he was being serious or being deliberately annoying, because there was so much I &lt;em&gt;loved&lt;/em&gt; and so much I &lt;em&gt;hated&lt;/em&gt;. He was never just plain solid and boring: there was no middle of the road for him. He brought his full love or boredom to everything he did. Much of his Mozart and Beethoven were terrible, to my ears (while some of it pretty good). His Brahms was uneven. Actually, much of what he did was simply &lt;em&gt;perverse&lt;/em&gt;, for lack of a better word. But in any case, I love that Gould did what he felt compelled to do.&lt;/p&gt;
&lt;h2&gt;Arnold Schönberg&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/a/ad/Arnold_Schoenberg_la_1948.jpg&quot; alt=&quot;Arnold Schönberg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fascinatingly, it was through Glenn Gould that I came to enjoy (some of) the music of &lt;a href=&quot;https://en.wikipedia.org/wiki/Arnold_Schoenberg&quot;&gt;Arnold Schönberg&lt;/a&gt;. I have to confess that I don&apos;t (yet?) understand or like Schönberg&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Twelve-tone_technique&quot;&gt;twelve-tone&lt;/a&gt; music, but I rather enjoy his very brief free &lt;a href=&quot;https://en.wikipedia.org/wiki/Atonality&quot;&gt;atonal&lt;/a&gt; piano music, which Gould played with such love that it reflected the late &lt;a href=&quot;https://en.wikipedia.org/wiki/German_Romanticism&quot;&gt;German romantic&lt;/a&gt; roots and sensibilities that were Schönberg&apos;s heritage. The three &lt;a href=&quot;https://en.wikipedia.org/wiki/Drei_Klavierst%C3%BCcke&quot;&gt;Klavierstücke Op. 11&lt;/a&gt;, that I discovered purely from browsing through Gould&apos;s recordings as lent to me in college, are beautiful and expressive works, deeply &lt;em&gt;emotional&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;My favorite of the three are the first and second, because the third is too violent and chaotic for me to really enjoy. As an undergrad, the second was my favorite, but now the first is.&lt;/p&gt;
&lt;p&gt;You can click on &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2012/09/25/160957849/glenn-gould-beyond-bachs-goldberg-variations&quot;&gt;the link to the article&lt;/a&gt; to listen to the track of Gould playing No. 1.&lt;/p&gt;
&lt;p&gt;I think it is not an accident that Gould took to this music, because I perceive him also to be a paradoxical &lt;em&gt;Romantic&lt;/em&gt; at heart who superficially seemed to reject Romanticism, for Romantic reasons.&lt;/p&gt;
&lt;h2&gt;Other recordings&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.bruceduffie.com/pollini8.jpg&quot; alt=&quot;Maurizio Pollini&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Actually, since my first discovery of this music, I prefer other performances to those of Gould. I like &lt;a href=&quot;https://en.wikipedia.org/wiki/Maurizio_Pollini&quot;&gt;Maurizio Pollini&lt;/a&gt;: below are performances of all three by him.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;DUHn7knkrLc&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;H-j497I2DfA&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;8vHNcNrojDM&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I celebrated Glenn Gould&apos;s birthday not by playing any of his Bach recordings I have, but by enjoying him playing Schönberg and other composers, and listening to others also play Schönberg. I am grateful to Gould for all he did to share with the world his personal approach to music.&lt;/p&gt;
</content:encoded></item><item><title>A fact of modern chess: computers shutting down opening theory</title><link>https://franklinchen.com/blog/2012/09/24/a-fact-of-modern-chess-computers-shutting-down-opening-theory/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/24/a-fact-of-modern-chess-computers-shutting-down-opening-theory/</guid><pubDate>Mon, 24 Sep 2012 23:17:00 GMT</pubDate><content:encoded>&lt;p&gt;I saw the report of a stunning chess game between Veselin Topalov and Rustam Kasimzhanov that resulted in a draw. I think this game illustrates some important points about modern chess at the highest levels.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chess-news.ru/en/node/9478&quot;&gt;The game&lt;/a&gt; featured a temporary piece sacrifice in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Semi-Slav_Defense#Meran_Variation:_6.Bd3&quot;&gt;Meran Variation of the Semi-Slav&lt;/a&gt; that is &lt;em&gt;exciting&lt;/em&gt; to see, but also made me feel rather &lt;em&gt;sad&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Black to move:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://chess-news.ru/sites/default/files/u5/Foto-raznoe/2012-09-23_183645.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://chess-news.ru/sites/default/files/u5/Foto-raznoe/2012-09-23_183645.jpg&quot;&amp;gt;[image: Black to move]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;For &lt;em&gt;decades&lt;/em&gt;, this kind of position has been standard opening theory, and usually it has been considered that Black&apos;s setup is not so good because it allows White to gain a lock on Black&apos;s Queen side by setting up &lt;code&gt;a3&lt;/code&gt; and &lt;code&gt;b4&lt;/code&gt; preventing Black from ever playing the freeing &lt;code&gt;...c5&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Computer analysis&lt;/h2&gt;
&lt;p&gt;I doubt that any human chess player would have come up with the sacrifice &lt;code&gt;...c5&lt;/code&gt; without computer aid.&lt;/p&gt;
&lt;p&gt;The piece sacrifice is justified because if White attempts to hang on to the piece, he will get mated on the King side. As a result, Black has just enough time to regain the piece, and the end result is a simplified position in which the only reasonable result (for sufficiently strong players) is a quick &lt;em&gt;draw&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In other words, the cleverness of this novelty by Black is entirely based on the desire to achieve a draw. In top level chess, many players are satisfied to hold a draw as Black and work hard to win as White. So the nature of novelty hunting with computer aid is very different when preparing to play Black versus preparing to play White. Usually the elite prepare as White to take a risk, throw their opponent off balance, and &lt;em&gt;possibly&lt;/em&gt; score a win, and prepare as Black to try to &lt;em&gt;guarantee&lt;/em&gt; a draw.&lt;/p&gt;
&lt;h2&gt;Some quotes from the players&lt;/h2&gt;
&lt;p&gt;From the article mentioned above:&lt;/p&gt;
&lt;p&gt;Black said: &quot;&lt;code&gt;12...с5&lt;/code&gt; is a novelty, however, it seems that a lot of spectators as well as my opponent knew about it. I just showed analyses and the game finished in a draw. We didn&apos;t spend much time on thinking today.&quot;&lt;/p&gt;
&lt;p&gt;White said: &quot;It&apos;s an obvious draw there, too many exchanges, but this happens; this is modern chess...&quot;&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;What this novelty means is that anyone playing White going into this opening variation in the future cannot play the obvious &quot;best&quot; move &lt;code&gt;12 b4&lt;/code&gt;, because it results in a draw.&lt;/p&gt;
&lt;p&gt;This subtlety interestingly accounts for the &lt;em&gt;bizarreness&lt;/em&gt; of some modern chess. Amateurs are often confused by what happens in modern chess, because why are top level players avoiding certain openings or choosing not to play obviously good moves? Sometimes it is because of events like this, in which the obvious good move leads to a forced draw. It is probably the case that the entire game of chess is a forced draw, but a human as White who wants a chance of winning against someone with computer-aided knowledge of a way to force a draw against a good move must therefore play some other move, perhaps a &quot;worse&quot; one, in order to make the game unpredictable and take away the opponent&apos;s computer-aided strength.&lt;/p&gt;
&lt;p&gt;So modern chess has actually made the game much more chaotic and surprising in some ways, when the players actually choose to fight rather than go through the computer-solved motions (which they may sometimes do to save energy or in hope that the opponent has forgotten the remedy).&lt;/p&gt;
&lt;p&gt;Chess is not yet over.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-01-18)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/01/18/modern-chess-computers-shutting-down-opening-theory-part-2/&quot;&gt;An even more amazing development in this opening variation.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>A short example of why I prefer static typing: learning Gradle</title><link>https://franklinchen.com/blog/2012/09/24/a-short-example-of-why-i-prefer-static-typing-learning-gradle/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/24/a-short-example-of-why-i-prefer-static-typing-learning-gradle/</guid><pubDate>Mon, 24 Sep 2012 17:07:00 GMT</pubDate><content:encoded>&lt;p&gt;I make no secret of the fact the I prefer to program in &lt;a href=&quot;https://en.wikipedia.org/wiki/Programming_language#Static_versus_dynamic_typing&quot;&gt;statically-typed languages&lt;/a&gt;. That is not to say that I don&apos;t write programs in dynamically typed languages. In fact, I have written and will continue to write programs in &lt;a href=&quot;/categories/perl/&quot;&gt;Perl&lt;/a&gt;, &lt;a href=&quot;/categories/python/&quot;&gt;Python&lt;/a&gt;, &lt;a href=&quot;/categories/ruby/&quot;&gt;Ruby&lt;/a&gt;, &lt;a href=&quot;/categories/javascript/&quot;&gt;JavaScript&lt;/a&gt;, and other dynamically typed programs, because pragmatically speaking, there is a whole lot more to programming to get something done than questions of &lt;a href=&quot;https://en.wikipedia.org/wiki/Type_system&quot;&gt;type systems&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nevertheless, it is always painful to me when I hit a wall when learning and using an unfamiliar API from a dynamically typed language. I always think, &quot;if only this API were statically typed, so that when I encounter an error, I can immediately look up what went wrong&quot;.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example as I&apos;ve been learning &lt;a href=&quot;https://www.gradle.org/&quot;&gt;Gradle&lt;/a&gt; while evaluating it along with learning &lt;a href=&quot;https://www.scala-sbt.org/&quot;&gt;SBT&lt;/a&gt;, as two candidate build tools for me to switch to out of &lt;a href=&quot;https://maven.apache.org/&quot;&gt;Maven&lt;/a&gt; as my build tool for a primarily Java-based project. Note that Gradle is basically an embedded domain-specific language using the dynamically typed language &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://groovy.codehaus.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://groovy.codehaus.org/&quot;&amp;gt;Groovy&amp;lt;/span&amp;gt;, while SBT is an embedded domain-specific language using the statically typed language &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Code example&lt;/h2&gt;
&lt;p&gt;Here&apos;s a code example from a book I&apos;ve been going through while studying Gradle, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://gradleware.com/registered/books/building-and-testing/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://gradleware.com/registered/books/building-and-testing/&quot;&amp;gt;&quot;Building and Testing with Gradle&quot;&amp;lt;/span&amp;gt;:&lt;/p&gt;
&lt;h3&gt;Example 3.21. Use the Ant path references inside the Gradle build&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ant.importBuild &apos;build.xml&apos;

defaultTasks = [&apos;gradleBuild&apos;]

////////////////////////////////////////////////////////////////////////
// Gradle paths retrieved from Ant and then built using a Gradle task
repositories {
    flatDir name: &apos;localRepository1&apos;, dirs: ant.references[&apos;antPathToLibs1&apos;]
    flatDir name: &apos;localRepository2&apos;, dirs: ant.references.antPathToLibs2
    flatDir name: &apos;localRepository3&apos;, dirs: &quot;antlibs&quot;
}

task gradleBuild &amp;lt;&amp;lt; {
    //Set classpath to include the JAR
    println &quot;The repositories bridged from Ant to Gradle are:&quot;
    println repositories*.name

    println repositories.localRepository1

    println repositories[&apos;localRepository2&apos;]

    println &quot;localRepository3 class = &quot; + repositories.localRepository3.class
    println &quot;localRepository3 name = &quot; + repositories.localRepository3.name
    println &quot;localRepository3 latest = &quot; + repositories.localRepository3.latest
    println &quot;localRepository3 ivyPatterns = &quot; + repositories.localRepository3.ivyPatterns
    println &quot;localRepository3 artifactPatterns =
       &quot; + repositories.localRepository3.artifactPatterns
    println &quot;localRepository3 checkconsistency =
       &quot; + repositories.localRepository3.checkconsistency
    println &quot;localRepository3 m2compatible =
       &quot; + repositories.localRepository3.m2compatible
    println &quot;localRepository3 methods =
       &quot; + repositories.localRepository3.metaClass.methods*.name.sort().unique()
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Error output&lt;/h2&gt;
&lt;p&gt;Unfortunately, this Gradle build file, when executed under the current version of Gradle, dies with an error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./run-example.bsh
:gradleBuild
The repositories bridged from Ant to Gradle are:
[localRepository1, localRepository2, localRepository3]
org.gradle.api.internal.artifacts.repositories.DefaultFlatDirArtifactRepository_Decorated@7f205d8d
org.gradle.api.internal.artifacts.repositories.DefaultFlatDirArtifactRepository_Decorated@5eef2e7c
localRepository3 class = class org.gradle.api.internal.artifacts.repositories.DefaultFlatDirArtifactRepository_Decorated
localRepository3 name = localRepository3
:gradleBuild FAILED

FAILURE: Build failed with an exception.

* Where:
Build file &apos;oreilly-gradle-book-examples/ant-classpathanttogradle/build.gradle&apos; line: 24

* What went wrong:
Execution failed for task &apos;:gradleBuild&apos;.
&amp;gt; Could not find property &apos;latest&apos; on org.gradle.api.internal.artifacts.repositories.DefaultFlatDirArtifactRepository_Decorated@8c1e4d5.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After much searching online, I still could not figure out what properties are supposed to be available from &lt;code&gt;repositories.localRepository3&lt;/code&gt;. I looked at the &lt;a href=&quot;https://www.gradle.org/docs/current/javadoc/overview-tree.html&quot;&gt;Gradle documentation&lt;/a&gt;, and I looked up the package &lt;a href=&quot;https://www.gradle.org/docs/current/javadoc/org/gradle/api/artifacts/repositories/package-tree.html&quot;&gt;&lt;code&gt;org.gradle.api.internal.artifacts.repositories&lt;/code&gt;&lt;/a&gt; without success.&lt;/p&gt;
&lt;p&gt;Gradle&apos;s API has changed since the publication of the book, obviously. And in fact, I have been submitting &lt;a href=&quot;https://github.com/gradleware/oreilly-gradle-book-examples/commit/351f31f1cdede84233b977e67031720177144aab&quot;&gt;GitHub pull requests&lt;/a&gt; as I update the code examples while encountering apparent changes. But sometimes, as in this case, it has been too confusing for me to figure out how to update the code. You could say that this is always the case for any code in any language, but what bothers me is the nature of error messages and documentation in APIs for dynamically typed languages such as Groovy. These experiences remind me that &lt;em&gt;types are documentation&lt;/em&gt;, that &lt;em&gt;types are a way for a programmer to tell the world how code is supposed to be used&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Gradle seems to be a promising build tool, and I will continue to evaluate it while skipping over the particular mysterious error I encountered (since it is not really relevant to what I want to do in my builds), but I wish I could have better figured out what went wrong with the book&apos;s code example. Meanwhile, it remains to be seen what kinds of problems I will encounter when using SBT. Again, I have to emphasize that my goal is to get things done, correctly and efficiently. Whatever works best, I will use, whatever its drawbacks: in another project, I happily used &lt;a href=&quot;/categories/scons/&quot;&gt;SCons&lt;/a&gt; as a build tool, based on the dynamically typed language Python, and of course, I have used &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://rake.rubyforge.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://rake.rubyforge.org/&quot;&amp;gt;Rake&amp;lt;/span&amp;gt; for Ruby projects.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-05-18)&lt;/h3&gt;
&lt;p&gt;Wow, that was written in fall of 2012.&lt;/p&gt;
&lt;p&gt;Since then, I have heavily used SBT from then to the present first for Java, then for Scala, which &lt;a href=&quot;/blog/2013/01/11/2013-is-my-year-of-scala/&quot;&gt;became my main programming language in early 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, in early 2015, &lt;a href=&quot;https://web.archive.org/web/20150815195326/http://blog.pivotal.io/pivotal/news-2/groovy-2-4-and-grails-3-0-to-be-last-major-releases-under-pivotal-sponsorship&quot;&gt;Pivotal got out of the Groovy business&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, in early 2015 as I adopted Haskell as my main language for new projects, I switched away from SCons as a general-purpose build tool to Haskell-based &lt;a href=&quot;https://shakebuild.com/&quot;&gt;Shake&lt;/a&gt;, which works really great for me.&lt;/p&gt;
</content:encoded></item><item><title>Living Appalachian music of Southwestern Pennsylvania: Mark Tamsula and Richard Withers with Ellen Gozion </title><link>https://franklinchen.com/blog/2012/09/23/living-appalachian-music-of-southwestern-pennsylvania/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/23/living-appalachian-music-of-southwestern-pennsylvania/</guid><pubDate>Sun, 23 Sep 2012 22:15:00 GMT</pubDate><content:encoded>&lt;p&gt;As I periodically do, I went to the Carnegie Library of Pittsburgh on a Sunday afternoon to check out a musical event, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.clpgh.org/events/details.cfm?event_id=69114&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.clpgh.org/events/details.cfm?event_id=69114&quot;&amp;gt;part of the regular World Kaleidoscope series&amp;lt;/span&amp;gt;. &lt;a href=&quot;https://www.appalachianmusic.net/&quot;&gt;Mark Tamsula and Richard Withers&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ellengozion.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ellengozion.com/&quot;&amp;gt;Ellen Gozion&amp;lt;/span&amp;gt; were there to perform some Appalachian music with very local southwestern Pennsylvanian roots.&lt;/p&gt;
&lt;p&gt;Mark talked a good bit about going through the materials collected by the historian Samuel Bayard. It was interesting to me that his research in reviving the music that Bayard documented forced Mark to get more involved in reading music, since as a traditional musician he was used to learning everything by ear, but nobody is alive any more who originally played some of this music, and all that is left to document it is scores!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/appalachian-music/three.jpg&quot; alt=&quot;Mark Tamsula, Richard Withers, Ellen Gozion&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/appalachian-music/irish-flute.jpg&quot; alt=&quot;Richard Withers on Irish flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The two instrumentalists played quite a variety of instruments: fiddle, banjo, flute, guitar, harmonica, accordion, Irish flute. I enjoyed the variety.&lt;/p&gt;
&lt;p&gt;Ellen Gozion sang some traditional ballads. She has a perfect voice and spirit for this music, singing with great purity and depth of emotional expression. Wow.&lt;/p&gt;
&lt;p&gt;After the little concert, they promoted the new CD &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.upinthebattenhouse.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.upinthebattenhouse.com/&quot;&amp;gt;Up in the Batten House&amp;lt;/span&amp;gt; and talked about upcoming projects.&lt;/p&gt;
</content:encoded></item><item><title>Celebrating the birthday of John Coltrane, the Beethoven of jazz</title><link>https://franklinchen.com/blog/2012/09/23/celebrating-the-birthday-of-john-coltrane/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/23/celebrating-the-birthday-of-john-coltrane/</guid><pubDate>Sun, 23 Sep 2012 00:44:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://userserve-ak.last.fm/serve/252/50664911.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://userserve-ak.last.fm/serve/252/50664911.jpg&quot;&amp;gt;[image: John Coltrane]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;So today is the birthday of &lt;a href=&quot;https://en.wikipedia.org/wiki/John_Coltrane&quot;&gt;John Coltrane&lt;/a&gt; (1926-1967), a towering figure in the history of jazz like no other. Several years ago, in a moment of inspiration, I quipped to a friend that while it was clear to me that &lt;a href=&quot;https://en.wikipedia.org/wiki/Charlie_Parker&quot;&gt;Charlie Parker&lt;/a&gt; the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mozart&quot;&gt;Mozart&lt;/a&gt; of jazz, it was even more clear that Coltrane was the &lt;a href=&quot;https://en.wikipedia.org/wiki/Beethoven&quot;&gt;Beethoven&lt;/a&gt; of jazz.&lt;/p&gt;
&lt;p&gt;What did I mean by that remark? I meant it on philosophical, historical, and musical levels.&lt;/p&gt;
&lt;h2&gt;Mozart to Beethoven; Parker to Coltrane&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mozart refined the &lt;a href=&quot;https://en.wikipedia.org/wiki/Classical_period_(music)&quot;&gt;Classical style&lt;/a&gt; inherited from Haydn and became a most admired practitioner of it; Mozart was accused (perhaps only fictionally) of writing &quot;too many notes&quot; in his music.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beethoven started off in the Classical tradition and then went beyond that in his &quot;middle&quot; period, and then even further beyond that in his &quot;late&quot; period, to the point where he became completely unique and an existential challenge (to emulate or reject) to all future composers of Western art music.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Charlie Parker refined &lt;a href=&quot;https://en.wikipedia.org/wiki/Bebop&quot;&gt;bebop&lt;/a&gt; in jazz, which, among other things, involved packing in quite a lot of notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Coltrane started off in the bebop tradition and then went beyond that along with Miles Davis and others, and then even further beyond that, to the point of challenging notions of what jazz even was or should be.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just as I find Beethoven in his late period to be among the most sublime, yet most bizarre music of the entire history of Western art music, and was a hard act to follow, so too Coltrane. Just as many composers after Beethoven judged that he ruined Western art music permanently, so did many jazz musicians react in the same way toward Coltrane.&lt;/p&gt;
&lt;h2&gt;A Coltrane sampler&lt;/h2&gt;
&lt;p&gt;There&apos;s a lot of good music by Coltrane I could discuss for pages and pages. Look up popular examples such as &quot;My Favorite Things&quot; and &quot;A Love Supreme&quot;, for example. But for today, I celebrated not with those favorites (which I do love), but a different set:&lt;/p&gt;
&lt;h3&gt;Giant Steps (1960)&lt;/h3&gt;
&lt;p&gt;&quot;Giant Steps&quot; features some of the most amazing yet fluid improvisation I have ever encountered, and I love this video someone created to show transcribed notes. This is a classic that I never tire of listening to.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;2kotK9FNEYU&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Vigil (1965)&lt;/h3&gt;
&lt;p&gt;&quot;Vigil&quot; is intense and even almost chaotic. It makes strange sense to me, a flow, an expression. I love it, although I don&apos;t watch it very often; I have to be in the right mood.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;5UHZaqG87N0&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ascension (1965)&lt;/h3&gt;
&lt;p&gt;OK, &quot;Ascension&quot; &lt;em&gt;makes no sense to me&lt;/em&gt;, and is not something I enjoy trying to listen to. You be the judge, but he lost me here. I&apos;m just speaking the truth.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;tgrQhBTDfhk&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;A Beethoven sampler&lt;/h2&gt;
&lt;p&gt;For kicks, even though I&apos;m not celebrating Beethoven today, here are examples of my favorite late Beethoven.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Diabelli_Variations&quot;&gt;Diabelli Variations&lt;/a&gt; (1819)&lt;/h3&gt;
&lt;p&gt;Truly amazing set of theme and variations for the piano, taking the listener to alternate realities before returning back to earth.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;wctoxElV8Os&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Gro%C3%9Fe_Fuge&quot;&gt;Große Fuge&lt;/a&gt; (1825)&lt;/h3&gt;
&lt;p&gt;Nobody at this point in history was writing stuff like this. Beethoven just went wild and created this dissonant, difficult, and emotionally cathartic movement. Amazing.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;XEZXjW_s0Qs&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Celebrating this blog&apos;s one-year anniversary</title><link>https://franklinchen.com/blog/2012/09/22/celebrating-this-blogs-one-year-anniversary/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/22/celebrating-this-blogs-one-year-anniversary/</guid><pubDate>Sat, 22 Sep 2012 18:11:00 GMT</pubDate><content:encoded>&lt;p&gt;One year ago, I started this blog, inspired by my attending &lt;a href=&quot;https://podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not going to write up a lengthy retrospective today, because I have to go soon to a concert Abby will be in tonight, as part of the &lt;a href=&quot;https://www.pittsburghmandolinsociety.org/&quot;&gt;Pittsburgh Mandolin Society orchestra&lt;/a&gt; in Synod Hall. It was interesting rereading my own &lt;a href=&quot;/blog/2011/10/21/one-month-anniversary-of-my-blog/&quot;&gt;one-month retrospective from last year&lt;/a&gt;: I&apos;ve learned so much about myself, and other people, and changed so much, during the past year of writing here.&lt;/p&gt;
&lt;p&gt;All I will say for now is: &lt;em&gt;I will continue to write for an online audience, and I expect to do this for the rest of my life&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;PodCamp Pittsburgh reminder!&lt;/h2&gt;
&lt;p&gt;PodCamp Pittsburgh 7 is happening later this year than it did last year; it is coming October 27-28. There is still a &lt;a href=&quot;https://podcamppittsburgh.com/pcpgh7-speaker-submission/&quot;&gt;call for speakers&lt;/a&gt;. I remember last year some of the guys who inspired me had joked that I should start a blog and then come back the following year to talk about it. I don&apos;t know if I&apos;m ready to do that yet, but at least it no longer sounds at all like a crazy idea!&lt;/p&gt;
&lt;h2&gt;Think about it&lt;/h2&gt;
&lt;p&gt;If you haven&apos;t attended PodCamp Pittsburgh before, check it out! Registration is open, and the whole weekend is &lt;em&gt;free&lt;/em&gt;! Unbelievable value for something that &lt;em&gt;changed my life forever&lt;/em&gt;.&lt;/p&gt;
</content:encoded></item><item><title>My first time singing bossa nova; also, a temporary farewell to Baroque flute</title><link>https://franklinchen.com/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/</guid><pubDate>Fri, 21 Sep 2012 23:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Two weeks ago, I reported on &lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;finally performing some sonatas for Baroque flute&lt;/a&gt;, at a party at my friend Henry&apos;s.&lt;/p&gt;
&lt;p&gt;Ironically, tonight, at another party of Henry&apos;s, this time a birthday party for his father (his parents have been visiting), I ended up deciding to temporarily stop playing the Baroque flute.&lt;/p&gt;
&lt;p&gt;Also, more significantly: this was the &lt;em&gt;first time in my life singing a song at all as a solo vocalist with accompaniment&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Why and how?!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Music plan&lt;/h2&gt;
&lt;p&gt;Since at the last party two weeks ago, I ended up playing on Baroque flute some selections from &quot;English Airs and Dances&quot;, this time I decided to play some other Baroque selections instead, from the &quot;4 Scottish Sonatas&quot; album.&lt;/p&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;p&gt;The party was great fun. We met more people, Henry&apos;s parents were great, we ate a lot of food, and a surprising number of people played music, including some of the young children who came to the party. Accordions, tambourines, violin, piano, me on Baroque flute, Abby on tambura, etc.&lt;/p&gt;
&lt;p&gt;I enjoyed doing some Scottish Baroque flute sonatas with Henry, but felt frustrated, as I have for some time now, both by the difficulty of playing the Baroque flute as well as the quietness of it, particularly noticeable tonight because of the large crowd of people.&lt;/p&gt;
&lt;h2&gt;How I ended up singing bossa nova unexpectedly&lt;/h2&gt;
&lt;p&gt;The musical highlight of the evening was Henry&apos;s friends Gabe and Eric entertaining us with some virtuosic and often hilarious four-hand piano music.&lt;/p&gt;
&lt;p&gt;After they were done, Gabe hung around and periodically jammed with other people, including some who decided they wanted to sing.&lt;/p&gt;
&lt;p&gt;I was so inspired that some &quot;non-singers&quot; (as they billed themselves) had the courage to sing, that I said, hey, I want to sing something! I didn&apos;t have anything prepared, but asked Gabe if he could play bossa nova for me, and he said, sure, where&apos;s a score?&lt;/p&gt;
&lt;p&gt;I said I wanted to sing my favorite, &lt;a href=&quot;https://en.wikipedia.org/wiki/Chega_de_Saudade&quot;&gt;&quot;Chega de Saudade&quot;&lt;/a&gt;, so in a comic frenzy, I brought up the score on my smartphone, accessing my Dropbox. Someone gave me another smartphone so that I could do a Web search for the lyrics (which are in Portuguese, and which I have not memorized yet) and sing them.&lt;/p&gt;
&lt;p&gt;Gabe did what he could, but it was difficult for him to read the score off the smartphone while someone tried to scroll and zoom in on it in real time. Still, we did sort of go through the song before giving up.&lt;/p&gt;
&lt;h3&gt;Breaking the barrier&lt;/h3&gt;
&lt;p&gt;In any case, this was the &lt;em&gt;first time in my life singing a song at all as a solo vocalist with accompaniment&lt;/em&gt;. I was crazy nervous, but tried not to let on that this was my first time. I didn&apos;t do too badly, considering the ad hoc circumstances.&lt;/p&gt;
&lt;p&gt;The important thing was, &lt;em&gt;I had broken a barrier&lt;/em&gt;. I knew after this experience that &lt;em&gt;there was no turning back&lt;/em&gt;. I want to sing, &lt;em&gt;seriously&lt;/em&gt;, in the future. It&apos;s time I started. I&apos;ve wanted to do this for &lt;em&gt;decades&lt;/em&gt;, since I was a toddler singing along to records and to TV and to myself and to my sister. The singing impulse got &lt;strong&gt;killed&lt;/strong&gt; in me in middle school by a music teacher who made me feel incompetent and unworthy at a time when that was the last thing an adolescent needed.&lt;/p&gt;
&lt;p&gt;I never expected that I&apos;d get my start goofing around at a party. I have gone to karaoke-type events before, at which I &lt;em&gt;never&lt;/em&gt; once considered singing, even while everyone else was doing it.&lt;/p&gt;
&lt;h2&gt;After the party&lt;/h2&gt;
&lt;p&gt;I made some decisions after the party:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I am switching focus from Baroque flute to modern flute (with corresponding change in repertoire) in order to play music that is more audible and more party-friendly. I want to be playing bossa nova, for example.&lt;/li&gt;
&lt;li&gt;I am going to start working on voice, so that I can sing at the next party of Henry&apos;s, whenever that will be.&lt;/li&gt;
&lt;li&gt;If I&apos;m going to sing bossa nova seriously, I need to know Portuguese better.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Yet another musical party has &lt;a href=&quot;/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/&quot;&gt;&lt;strong&gt;changed my life&lt;/strong&gt;&lt;/a&gt;. I now sing. Also, with some sadness, I am taking a break from Baroque flute.&lt;/p&gt;
</content:encoded></item><item><title>Four generations of Apple laptops</title><link>https://franklinchen.com/blog/2012/09/21/four-generations-of-apple-laptops/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/21/four-generations-of-apple-laptops/</guid><pubDate>Fri, 21 Sep 2012 13:52:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/transferring-macbook.jpg&quot; alt=&quot;Transferring MacBook to MacBook Pro&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I just bought a new &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.apple.com/macbook-pro/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.apple.com/macbook-pro/&quot;&amp;gt;Apple MacBook Pro&amp;lt;/span&amp;gt; to replace my old black plastic 2008 MacBook, in order to get more memory and hard drive space, plus be able to run Mountain Lion. Abby and I also used this upgrade of mine as an opportunity to give her the old MacBook and switch her from running Windows computers. We have various reasons to switch her to Mac, one of them simply being that it&apos;s easier for me to administer Macs (which I primarily use, at work and at home) than for me to have to deal with Windows computers also. Much easier to troubleshoot just one type of machine!&lt;/p&gt;
&lt;p&gt;This new purchase means that I have now owned four different generations of Apple laptops.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/PowerBook_Duo&quot;&gt;PowerBook Duo 280c&lt;/a&gt;, bought used in 1995&lt;/h2&gt;
&lt;p&gt;My first Apple laptop was a PowerBook Duo 280c that I sold not long after I bought it.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/PowerBook_140#PowerBook_145B&quot;&gt;PowerBook 145B&lt;/a&gt;, bought used in 1995&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/powerbook-145b/finder.jpg&quot; alt=&quot;PowerBook 145B up in System 7 Finder&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I [mentioned this laptop earlier]((/blog/2011/11/14/my-powerbook-145b/). It actually came out in 1993.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 MB RAM&lt;/li&gt;
&lt;li&gt;40 MB hard drive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I last used this in 1998 when traveling to a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.informatik.uni-trier.de/~ley/db/conf/pldi/pldi98.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.informatik.uni-trier.de/~ley/db/conf/pldi/pldi98.html&quot;&amp;gt;conference while in graduate school&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/PowerBook_G4&quot;&gt;PowerBook G4, 12-inch&lt;/a&gt;, bought new in 2003&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;256 MB RAM&lt;/li&gt;
&lt;li&gt;40 GB hard drive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note how in 3 years, from 1995 to 1998, I multiplied my amount of RAM by a factor of &lt;em&gt;128&lt;/em&gt;, and multiplied my hard drive by a factor of &lt;em&gt;1000&lt;/em&gt;. That was wild. The PowerBook G4 marked the end of my buying desktop computers: my last desktop computer I ever bought was actually a brand new Gateway PC in 1995.&lt;/p&gt;
&lt;p&gt;Here&apos;s a photo of my (still running &lt;a href=&quot;https://en.wikipedia.org/wiki/Mac_OS_X_Leopard&quot;&gt;Mac OS Leopard&lt;/a&gt; PowerBook G4 next to my new MacBook Pro:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/powerbook-g4-2003-macbook-pro-2012.jpg&quot; alt=&quot;PowerBook G4 2003 and MacBook Pro 2012&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MacBook&quot;&gt;MacBook, 13-inch&lt;/a&gt;, bought new in 2008&lt;/h2&gt;
&lt;p&gt;As a matter of frugality, I try to put off new computer purchases as long as possible. I probably should be &lt;em&gt;less&lt;/em&gt; frugal, since at some point decreased productivity does kick in, but in any case, I did move from the old PowerPC G4 PowerBook eventually, buying the entry level black plastic Intel MacBook.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dual processor&lt;/li&gt;
&lt;li&gt;3 GB RAM&lt;/li&gt;
&lt;li&gt;250 GB hard drive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note the dual processor. Also, note how in 5 years, from 2003 to 2008, I multiplied RAM by a factor of &lt;em&gt;12&lt;/em&gt;, and multiplied my hard drive by a factor of about &lt;em&gt;6&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Eventually I had to replace the battery, which swelled. I also upgraded to 4 GB of RAM.&lt;/p&gt;
&lt;p&gt;Here&apos;s a photo of my (still running &lt;a href=&quot;https://en.wikipedia.org/wiki/Mac_OS_X_Lion&quot;&gt;Mac OS Lion&lt;/a&gt; PowerBook G4 next to my new MacBook Pro:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/macbook-2008-macbook-pro-2012.jpg&quot; alt=&quot;MacBook 2008 and MacBook Pro 2012&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve given this laptop to Abby as her first Mac.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/MacBook_Pro&quot;&gt;MacBook Pro, 13-inch&lt;/a&gt;, bought new in 2012&lt;/h2&gt;
&lt;p&gt;I am very happy with my new MacBook Pro. I was having difficulties with my old laptop because of not quite enough RAM or hard drive space to work the way I wanted.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4 cores&lt;/li&gt;
&lt;li&gt;8 GB RAM&lt;/li&gt;
&lt;li&gt;750 GB hard drive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In 4 years, from 2008 to 2012, I multiplied RAM by &lt;em&gt;2.7&lt;/em&gt;, and hard drive by &lt;em&gt;3&lt;/em&gt;. I bet that in another 4 years, I&apos;ll feel pinched again and need yet another upgrade! But for now, I am totally content. This machine is &lt;em&gt;fast&lt;/em&gt; and &lt;em&gt;spacious&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/macbook-pro-in-box.jpg&quot; alt=&quot;MacBook Pro 2012 in box&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s amusing looking back at the progression of the Apple laptops I&apos;ve owned over the past 17 years. Speed, number of cores, amount of memory needed, amount of storage space needed, all have gone up.&lt;/p&gt;
&lt;p&gt;One thing I have learned from experience is that I should really upgrade sooner than I usually do. So maybe I should expect to upgrade in 3 years rather than in 4 years. But who knows? How demanding of resources are my Web browsers and programming tools going to be in the coming years?&lt;/p&gt;
</content:encoded></item><item><title>My first bobblehead doll: guess who?</title><link>https://franklinchen.com/blog/2012/09/20/my-first-bobblehead-doll-guess-who/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/20/my-first-bobblehead-doll-guess-who/</guid><pubDate>Thu, 20 Sep 2012 09:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/j-s-bach-bobblehead.jpg&quot; alt=&quot;Johann Sebastian Bach bobblehead&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I now own my first &lt;a href=&quot;https://en.wikipedia.org/wiki/Bobblehead&quot;&gt;bobblehead doll&lt;/a&gt;! Abby was reluctant to let me take him home, but I argued that he would inspire me in the playing of his music.&lt;/p&gt;
&lt;p&gt;So &lt;em&gt;who&lt;/em&gt;, and &lt;em&gt;why&lt;/em&gt;?&lt;/p&gt;
&lt;h2&gt;Pittsburgh Music Alliance launch party&lt;/h2&gt;
&lt;h3&gt;About&lt;/h3&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pittsburghmusicalliance.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pittsburghmusicalliance.org/&quot;&amp;gt;Pittsburgh Music Alliance&amp;lt;/span&amp;gt; had a launch party that Abby and I attended, held at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.contemporarycraft.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.contemporarycraft.org/&quot;&amp;gt;Contemporary Craft&amp;lt;/span&amp;gt; in the Strip.&lt;/p&gt;
&lt;p&gt;The Pittsburgh Music Alliance is a new collaboration of five Pittsburgh music organizations for the purpose of increasing their audience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.bachchoirpittsburgh.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.bachchoirpittsburgh.org/&quot;&amp;gt;Bach Choir of Pittsburgh&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghcamerata.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghcamerata.org/&quot;&amp;gt;Pittsburgh Camerata&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.chathambaroque.org/&quot;&gt;Chatham Baroque&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rbsp.org/&quot;&gt;Pittsburgh Renaissance and Baroque&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghchambermusic.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghchambermusic.org/&quot;&amp;gt;Pittsburgh Chamber Music Society&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more information on the &lt;a href=&quot;https://www.facebook.com/PittsburghMusicAlliance&quot;&gt;Facebook page&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Food and information tables&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/189232_472125132808229_857638441_n.jpg&quot; alt=&quot;Food and tables&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As we wandered around at the party, we sampled the food and checked out the tables of the five organizations.&lt;/p&gt;
&lt;p&gt;(There are &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.472125112808231.106189.197956923558386&amp;amp;type=3&quot;&gt;photos of the party here&lt;/a&gt;.)&lt;/p&gt;
&lt;h3&gt;Live music&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/199595_10151047722351513_1243992903_n.jpg&quot; alt=&quot;Recorder quartet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We arrived in time to see my &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; friends perform as a recorder quartet, playing a variety of selections. Fred, Helen, Mike, and Annie were delightful.&lt;/p&gt;
&lt;p&gt;Afterwards, members of the five music organizations took turns performing for us. Unfortunately, the acoustic situation was quite poor amidst the party conversations going on everywhere, but I enjoyed watching the people who sang and played for us.&lt;/p&gt;
&lt;h3&gt;The bobbleheads&lt;/h3&gt;
&lt;p&gt;We saw approximately ten bobbleheads, each in its unopened box, sitting around. I got very excited. It turned out that they were being given away. I secretly always wanted one since seeing my friend Henry with one on top of his piano; he had one of Beethoven:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/beethoven-bobblehead.jpg&quot; alt=&quot;Beethoven bobblehead&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By the bobbleheads, there was a sheet saying something like, &quot;Name a piece I wrote and you can take me home.&quot; It seemed that nobody was really enforcing this, but when I offered to take one, I said the bobblehead would help me as I worked on the composer&apos;s &lt;a&gt;flute sonatas&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Notes on Johann Sebastian Bach&apos;s flute sonatas&lt;/h2&gt;
&lt;p&gt;The composer whose bobblehead I got was, of course, &lt;a href=&quot;/categories/johann-sebastian-bach/&quot;&gt;Johann Sebastian Bach&lt;/a&gt;, a hero of mine in the past year during which I&apos;ve gradually fallen in love with Baroque music.&lt;/p&gt;
&lt;h3&gt;What instrument?&lt;/h3&gt;
&lt;p&gt;I am faced with a conundrum when trying to play Bach&apos;s flute sonatas: &lt;em&gt;what instrument should I use to play this music?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the case of his son, &lt;a href=&quot;https://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach&quot;&gt;CPE Bach&lt;/a&gt;, two months ago in a recital &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;I played a movement of CPE Bach&apos;s solo flute sonata&lt;/a&gt; using a modern flute. I feel that the nature of CPE Bach&apos;s music, more dramatic and agitated, makes the modern flute a reasonable instrument for the piece; I feel that it is definitely reasonable to play the music on a Baroque flute instead, but that I actually prefer it on modern flute.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Plus, CPE Bach&apos;s music is much easier to play on modern flute.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, Johann Sebastian Bach&apos;s flute sonatas, although I prefer them on Baroque flute than to modern flute, are much harder to play on Baroque flute. It turns out that I dislike almost all recordings I&apos;ve come across of this music on modern flute, with one exception: the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pahudbach.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pahudbach.com/&quot;&amp;gt;recordings&amp;lt;/span&amp;gt; of &lt;a href=&quot;/categories/emmanuel-pahud/&quot;&gt;Emmanuel Pahud&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;My decision&lt;/h3&gt;
&lt;p&gt;I&apos;ve made an unpleasant decision. I work on the slow, easy movements of the flute sonatas on Baroque flute, and I don&apos;t currently work on the harder movements at all. I&apos;m still far worse on Baroque flute than on modern flute, and those fast movements are beyond me on Baroque flute. And I don&apos;t really want to play the music on modern flute. This is just my personal choice.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a great time at the Pittsburgh Music Alliance season launch party. It was inspiring to see my recorder friends playing, and to see others in the early music community performing with enthusiasm. (Seeing people singing as an ensemble even got me thinking about getting into that sometime maybe.) If you enjoy fresh, vital performances of early music, check out the five organizations mentioned!&lt;/p&gt;
&lt;p&gt;Finally, I&apos;m grateful to now be the proud owner of a Johann Sebastian Bach bobblehead doll. Every time I see him, I remember that I must play his music with verve and soul, because he&apos;s watching.&lt;/p&gt;
</content:encoded></item><item><title>Round 3 of Pittsburgh Chess Club tournament: another approach against the Sicilian: squeezing with the Bind</title><link>https://franklinchen.com/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/19/round-3-of-pittsburgh-chess-club-tournament-another-approach-against-the-sicilian-squeezing-with-the-bind/</guid><pubDate>Wed, 19 Sep 2012 07:46:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/14th-fred-sorensen-memorial/round-3.jpg&quot; alt=&quot;Third round&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday was the third round of the current six-round Tuesday night tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, the 14th Fred Sorensen Memorial.&lt;/p&gt;
&lt;p&gt;Every round has gotten tougher and tougher, as it should because winners get paired against each other. This week I was White against a youthful opponent who was, like me, an Expert in rating (his current rating is 2034, while mine is 2110). I expected an intense struggle, and there was one. Our game was the second to last to finish, taking just over four hours to complete, going all the way to the endgame.&lt;/p&gt;
&lt;p&gt;In this post, I discuss&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;White fighting against the Sicilian in a different way from how I have discussed earlier&lt;/li&gt;
&lt;li&gt;the reasons for certain inaccuracies in the game that made it longer than it could have been&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Playing the Sicilian as White&lt;/h2&gt;
&lt;p&gt;In my post about my game in the second round, I discussed &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;some philosophical and psychological ideas behind playing the Sicilian as either color&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have also written about one way of playing White in the Sicilian, aiming for quick development and a &lt;a href=&quot;/blog/2012/09/15/deja-vu-in-chess-recognize-this-sicilian-pattern/&quot;&gt;direct attack on Black&apos;s King&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The slow approach&lt;/h3&gt;
&lt;p&gt;Yesterday, I played White in the Sicilian, but in a very different style: the slow, &quot;positional&quot; style of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mar%C3%B3czy_Bind&quot;&gt;Maróczy Bind&lt;/a&gt;. I was using a bit of psychology, entering the game with the intention of playing a space-gaining type of game to squeeze my opponent to death. I had never played my opponent before, but based on general experience, like to use a squeeze when facing younger opponents rather than a direct attack on the King.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk2r/pp2ppbp/2np1np1/8/2PNP3/2N5/PP2BPPP/R1BQK2R w KQkq - 2 8&quot; caption=&quot;Maróczy Bind&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The point of the Bind is to gain space using the &lt;code&gt;c4&lt;/code&gt; and &lt;code&gt;e4&lt;/code&gt; Pawns, and start off the game really just defending these Pawns and the &lt;code&gt;d4&lt;/code&gt; square, and preventing Black from gaining counterplay. The plan then is to complete development and fortifying the position, and only after that begin some kind of attack on Black, whether on the Queen side, center, or King side, depending on the concrete direction of the game.&lt;/p&gt;
&lt;p&gt;Black&apos;s task against the Bind is to relieve pressure through exchanging minor pieces and taking advantage of holes in White&apos;s position by maneuvers to establish outposts and then engage in counterplay, usually on the Queen side but sometimes also in the center or even King side.&lt;/p&gt;
&lt;h2&gt;A note on generalism in chess&lt;/h2&gt;
&lt;p&gt;I am happy to play in a variety of different styles in chess, in different openings. There was a time when I preferred to be a &lt;em&gt;specialist&lt;/em&gt;, but in the end, I found it more fun and effective, personally, to be a &lt;em&gt;generalist&lt;/em&gt;. I think today, especially, when people have access to databases of games and computer-aided analysis of forcing tactical lines, generalism and unpredictability are actually assets.&lt;/p&gt;
&lt;p&gt;For example, I am aware that every time I annotate one of my games here online, I am providing research material for any future opponents of mine. So be it. You can be sure that I will never play exactly the same way as I have just played recently!&lt;/p&gt;
&lt;h2&gt;Overview of my game&lt;/h2&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;The game didn&apos;t even originally start out as a Sicilian. It started out with what I expected was going to become a &lt;a href=&quot;https://en.wikipedia.org/wiki/King&apos;s_Indian_Defence&quot;&gt;King&apos;s Indian Defense&lt;/a&gt;, but my opponent refused to comply, and transposed into the Maróczy Bind of the Accelerated Dragon of the Sicilian Defense instead.&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;At a critical point near the end of the opening phase, I chose a less familiar, more aggressive continuation than what most people play (and what my opponent expected). My opponent fell in with my plans and allowed me to achieve what I considered a pleasant Bind on his position.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1q2rk1/pp2ppbp/3p1np1/3P4/2PB1P2/8/PP2B1PP/R2Q1RK1 b - - 0 13&quot; caption=&quot;Maróczy Bind in action&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;To my surprise, instead of letting me continue the slow strangle, my opponent responded violently with an interesting Pawn sacrifice to open up the position. However, he tried to hard to not make it a sacrifice, and to regain the Pawn, but that resulted in my keeping the Pawn anyway and also smashing into his King side. I pressed on with the attack, and quickly achieved a winning position by force.&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r4k2/pq2p2p/1n1pBrp1/1P6/3Q1PP1/8/PP5P/R4RK1 w - - 1 22&quot; caption=&quot;Winning attack&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;But then I strangely faltered, losing mental energy. In retrospect it is hard to see how I missed what I missed, but sometimes that happens. I had not budgeted my energy expenditure well during the game: I spent a lot of energy playing almost perfectly, like a computer, earlier in the game, to achieve the won position, and then once I achieved the won position, I somehow relaxed and got careless.&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;I played what I thought was the winning move, and expected resignation, when all of a sudden I noticed that I missed a single move by Black, a move that completely altered the nature of the position. I even momentarily thought I might be losing!!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/p3pk2/3pqP2/1P4Q1/P5P1/4R3/1P5r/4KR1r w - - 5 34&quot; caption=&quot;Queen checks&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I regrouped and saw that I was not losing, but Black could simplify into an endgame one Pawn down that might be good enough for a draw. I had a possible winning plan in case Black entered into this endgame and was prepared to fight it out.&lt;/p&gt;
&lt;p&gt;But then it was Black&apos;s turn to falter badly, and he chose not to enter the endgame, but this resulted in my winning by means of a threat against his King. The only way for Black to stop checkmate was to enter a worse endgame, a King and Pawn endgame that was hopeless. I marched my &lt;code&gt;a&lt;/code&gt; Pawn toward its Queening square and he resigned. What an end to the game!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;8/4k3/Pp1p4/6p1/6P1/8/1P3K2/8 b - -&quot; caption=&quot;Final position&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;The complete annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-ahlborg-2012-09-18.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Yesterday&apos;s game was an intense and long. The ups and downs reflect human fallibility as well as ingenuity. After a good deal of accurate and forcing play, I almost let a win slip away, but my opponent erred and I managed to win after all. Chess reminds me again and again that even when the game is almost over, you cannot get careless and let up on the pressure until the game really is over.&lt;/p&gt;
</content:encoded></item><item><title>Is Constitution Day Constitutional?</title><link>https://franklinchen.com/blog/2012/09/18/is-constitution-day-constitutional/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/18/is-constitution-day-constitutional/</guid><pubDate>Tue, 18 Sep 2012 11:01:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.cmu.edu/posner-center/exhibits/special-images/billrights1.jpg&quot; alt=&quot;Bill of Rights at CMU&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday was &lt;a href=&quot;https://en.wikipedia.org/wiki/Constitution_Day_(United_States)&quot;&gt;Constitution Day&lt;/a&gt;, which I&apos;ve &quot;observed&quot; in some fashion since 2005, which was when I saw the first annual announcement of its observance at Carnegie Mellon University. My memory is fuzzy about what I actually did on Constitution Day on most years, but I remember that in 2005 I stopped by the Posner Center to look at &lt;a href=&quot;https://www.cmu.edu/posner-center/exhibits/bill-of-rights.html&quot;&gt;one of the four existing copies of the US Bill of Rights&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Last year, I watched Pittsburgh Councilman &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.billpeduto.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.billpeduto.com/&quot;&amp;gt;Bill Peduto&amp;lt;/span&amp;gt; speak at CMU; I remember him focusing a lot on the Bill of Rights and our need to be vigilant in protecting our rights, and telling of his concerns resulting from incidents that happened during the &lt;a href=&quot;https://pittnews.com/newsstory/city-departments-to-investigate-circumstances-of-g-20-arrests/&quot;&gt;G-20&lt;/a&gt;. This year, Magisterial District Judge &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://judgepedia.org/index.php/Hugh_F._McGough&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://judgepedia.org/index.php/Hugh_F._McGough&quot;&amp;gt;Hugh F. McGough&amp;lt;/span&amp;gt; was the featured speaker at CMU; he spoke about the history of the Pennsylvania judicial system and of constitutions in general.&lt;/p&gt;
&lt;p&gt;I never actually knew or thought about the origin and nature of Constitution Day until yesterday. I was surprised.&lt;/p&gt;
&lt;h2&gt;Why is Constitution Day observed?&lt;/h2&gt;
&lt;p&gt;It turns out (and I did not know this until it was discussed during the presentation) that Constitution Day is a recent invention. It was first observed in 2005, after a bill on spending was amended by Senator Robert Byrd to include the establishment of Constitution Day. The law mandated that any school receiving federal funds had to observe Constitution Day and teach something about the American Constitution on that day (or an adjacent weekday in case of a weekend).&lt;/p&gt;
&lt;h2&gt;Posner&apos;s objection&lt;/h2&gt;
&lt;p&gt;Happening to be present at the &lt;a href=&quot;https://www.cmu.edu/posner-center/&quot;&gt;Posner Center&lt;/a&gt;, and in fact sitting next to me during the presentation, were &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.rrdc.com/mgmt_bio_posner.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.rrdc.com/mgmt_bio_posner.html&quot;&amp;gt;Henry Posner III&amp;lt;/span&amp;gt; and his wife. When a question was asked of them near the end of the presentation, regarding whether they thought the institution of Constitution Day was a good idea, Mr. Posner responded in a very interesting way.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.rrdc.com/images/posner.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.rrdc.com/images/posner.jpg&quot;&amp;gt;[image: Henry Posner III]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Mr. Posner quite emphatically stated that he objected to how Constitution Day was slipped into the spending bill with a &quot;political&quot; agenda and with a mandate and a condition (in order for a school to receive federal funding).&lt;/p&gt;
&lt;p&gt;I thought this objection was interesting and could lead to a good debate, on Constitution Day itself of all days, about what is or should be constitutional, but I really had to leave right after the talk, so I did not stay around to discuss the matter with Mr. Posner.&lt;/p&gt;
&lt;p&gt;Later in the evening, however, I did look up Mr. Posner, since by demeanor and words he struck me as probably having strong libertarian views. I believe I confirmed that in my Web searches.&lt;/p&gt;
&lt;p&gt;Also, as I came up with a catchy title for my blog post, I found that others had already used my title. Someone at the George Mason University School of Law in fact had already written &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=893903&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=893903&quot;&amp;gt;a little paper&amp;lt;/span&amp;gt; with the exact title, &quot;Is Constitution Day Constitutional?&quot;&lt;/p&gt;
&lt;p&gt;And last year someone wrote an article, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.nytimes.com/2011/09/17/opinion/constitution-day-happy-illegal-holiday.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.nytimes.com/2011/09/17/opinion/constitution-day-happy-illegal-holiday.html&quot;&amp;gt;&quot;Happy Illegal Holiday!&quot;&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;My reactions&lt;/h2&gt;
&lt;p&gt;I&apos;m not a lawyer, and even if I were, the notion of what is &quot;unconstitutional&quot; is, as we have seen again and again in the divided opinions on the Supreme Court, controversial. I see the point in being unhappy with too many federal mandates, but at the same time, from a pragmatic point of view, Constitution Day observance does not appear to be too onerous, and I happen to have inadvertently enjoyed and learned from its observance at CMU over since 2005.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed CMU&apos;s observance of Constitution Day this year, learning some things about Pennsylvania and other state history from the Honorable Hugh McGough as well as picking up on the history of Constitution Day itself and Mr. Posner&apos;s objection to it.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-09-17)&lt;/h3&gt;
&lt;p&gt;I &lt;a href=&quot;/blog/2013/09/17/on-not-celebrating-constitution-day-this-year/&quot;&gt;chose not to celebrate Constitution Day in 2013&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-09-17)&lt;/h3&gt;
&lt;p&gt;I returned to observing Constitution in &lt;a href=&quot;/blog/2014/09/17/observing-constitution-day-with-the-supreme-court-and-privacy-the-fourth-amendment-in-the-digital-age/&quot;&gt;2014&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>My end-of-summer vegetable medley recipe</title><link>https://franklinchen.com/blog/2012/09/17/end-of-summer-vegetable-medley-recipe/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/17/end-of-summer-vegetable-medley-recipe/</guid><pubDate>Mon, 17 Sep 2012 08:41:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/end-of-summer-vegetable-medley.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I whipped up what I&apos;ll call my &quot;end-of-summer vegetable medley&quot; (since summer is basically over now), using ingredients we happened to have on hand, from &lt;a href=&quot;/categories/kretschmann-farm/&quot;&gt;Kretschmann Farm&lt;/a&gt; as well as from Abby&apos;s parents.&lt;/p&gt;
&lt;h2&gt;Recipe&lt;/h2&gt;
&lt;h3&gt;Equipment&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Large skillet (I happened to use a wok)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Ingredients&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Oil for high heat (I used coconut oil)&lt;/li&gt;
&lt;li&gt;One green pepper&lt;/li&gt;
&lt;li&gt;One green zucchini&lt;/li&gt;
&lt;li&gt;One yellow zucchini&lt;/li&gt;
&lt;li&gt;One tomato&lt;/li&gt;
&lt;li&gt;Garlic, one large clove&lt;/li&gt;
&lt;li&gt;Seasoning mix (I used sea salt and &lt;a href=&quot;https://web.archive.org/web/20131002095303/http://www.traderjoes.com/fearless-flyer/article.asp?article_id=539&quot;&gt;Trader Joe&apos;s 21 Seasoning Salute&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fresh cilantro&lt;/li&gt;
&lt;li&gt;Extra virgin olive oil&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Preparation&lt;/h3&gt;
&lt;p&gt;Green pepper: slice into strips.&lt;/p&gt;
&lt;p&gt;Green zucchini: slice into thin coins.&lt;/p&gt;
&lt;p&gt;Yellow zucchini: slice into thin coins.&lt;/p&gt;
&lt;p&gt;Tomato: slice thinly.&lt;/p&gt;
&lt;p&gt;Garlic: crush and mince a large clove (or more if you prefer).&lt;/p&gt;
&lt;p&gt;Cilantro: chop up a bunch of fresh cilantro.&lt;/p&gt;
&lt;h3&gt;Cooking&lt;/h3&gt;
&lt;p&gt;Once the ingredients are ready, the rest only takes a few minutes at high heat.&lt;/p&gt;
&lt;p&gt;Heat the oil in the skillet to high heat. When the skillet is ready, put the green pepper and zucchinis into the skillet and toss/stir to coat with oil. Then add the seasoning mix and continue to toss/stir for a while.&lt;/p&gt;
&lt;p&gt;When the vegetables look to be half done (to your liking; I prefer them to retain some bite rather than be soggy), add the tomato and garlic and continue to toss.&lt;/p&gt;
&lt;p&gt;When everything is almost done, add the cilantro and toss/stir briefly, then turn off the heat.&lt;/p&gt;
&lt;p&gt;Add extra virgin olive oil.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
</content:encoded></item><item><title>Excited by the new season of the Pittsburgh Recorder Society</title><link>https://franklinchen.com/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/16/excited-by-the-new-season-of-the-pittsburgh-recorder-society/</guid><pubDate>Sun, 16 Sep 2012 20:04:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Today was the first meeting of the new season (September-May) of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter of the American Recorder Society&lt;/a&gt; (and &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;on Facebook&lt;/a&gt;). I was excited to be back, since the last time I actually played recorder at all was a month and a half ago at a &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;potluck/recital&lt;/a&gt;; I&apos;ve been focused recently on playing &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; and &lt;a href=&quot;/categories/flute/&quot;&gt;modern flute&lt;/a&gt;, with a tiny bit of &lt;a href=&quot;/categories/piano/&quot;&gt;restarting piano&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We have a new plan this season!&lt;/p&gt;
&lt;h2&gt;A new plan for this season&lt;/h2&gt;
&lt;p&gt;Our director, Fred, told us of a new plan for this season, geared toward working toward pieces that we will actually perform in a concert as a complete ensemble. Last season we didn&apos;t end up having a concert, for example. This year, his plan is to include work on music that has two choirs of voices, to make it easier for more people to be involved and also in order to make performance possible even if someone for some reason is not available.&lt;/p&gt;
&lt;h2&gt;The music we worked on today&lt;/h2&gt;
&lt;p&gt;Today we started working on the meditative &quot;Kyrie de la &lt;a href=&quot;https://en.wikipedia.org/wiki/Missa_Papae_Marcelli&quot;&gt;Missa Papae Marcelli&lt;/a&gt;&quot; by Palestrina (1562), and the joyful &quot;Jubilate Deo&quot; by Lodovico Viadana (1600s?).&lt;/p&gt;
&lt;p&gt;The Palestrina is gorgeous music and I am excited about our working toward play it beautifully as a unified ensemble:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;IIcrgNtyX0U&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;We also started work on &quot;Jubilate Deo&quot;, which is divided into two choirs:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;qrtxRkXRz5Y&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Stuff someone donated to us&lt;/h2&gt;
&lt;p&gt;Someone donated a whole bunch of music to us and even some instruments. Here are the scores I picked up (there were plenty left over that others did not pick up, but I resisted the temptation to take more than I was ever going to work on):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/donated-recorder-music.jpg&quot; alt=&quot;Selection of recorder music someone donated to the Pittsburgh Recorder Society&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Baroque stuff, Handel, Telemann, sopranino &quot;bird&quot; tunes, old English airs and dances, a three volume set of &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program&quot;&gt;Van Eyck&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Music or chess?&lt;/h2&gt;
&lt;p&gt;Until today, I was not entirely sure whether I was going to make it to the recorder society meeting! Today happened to also be the first round of the new season of the &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt;, and recently &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;I committed to&lt;/a&gt; being an alternate player for a team playing in it. My understanding was that, being an alternate player, I would not often be depended on by our team to always be available to play, but because our top two boards were not going to play today, and I did not plan to play, we had to go as far down the list as our third and final alternate player. This meant that if something went wrong, we would have a forfeit. So I told the team captain that in case of emergency, I could play.&lt;/p&gt;
&lt;p&gt;All things being equal, I prioritize music in my life over chess, but I would have gone to play for the team to avoid a forfeit if that had been required today. But it turned out that because of the odd number of teams in our division, our team got a bye today, so that was perfect timing: I went to the recorder society meeting knowing that there was no conflict.&lt;/p&gt;
&lt;h3&gt;Trying to recruiting someone from chess into music&lt;/h3&gt;
&lt;p&gt;By coincidence, yesterday when &lt;a href=&quot;/blog/2012/09/15/deja-vu-in-chess-recognize-this-sicilian-pattern/&quot;&gt;I was at the chess club and ended up playing blitz&lt;/a&gt;, I ran into a fellow chess player I hadn&apos;t talked with in years, and we were talking about the Pittsburgh Chess League and I mentioned that I didn&apos;t intend to play chess today because I was going to play music instead. In the course of conversation, it turned out that he had just bought himself a recorder and was just starting to play it!&lt;/p&gt;
&lt;p&gt;I told him he should join the Pittsburgh Recorder Society, and that there were great beginner lessons before the general playing begins: &lt;a href=&quot;/blog/2011/10/18/disagreement-on-the-use-of-time/&quot;&gt;over a year ago I had gone to these lessons by Fred&lt;/a&gt; and learned quite a lot.&lt;/p&gt;
&lt;p&gt;Unfortunately, he ended up not showing up today; it turned out that instead playing chess as an alternate for a team. I&apos;ve reminded him that there are no more conflicts with chess in the upcoming months, so I hope to see him playing recorder in October! I will personally remind him again when the next meeting grows near. (Peter, if you&apos;re reading this, please consider joining us!)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s good to be playing recorder in an ensemble again. And I hope to bring in more people to the Pittsburgh Recorder Society, including beginners.&lt;/p&gt;
</content:encoded></item><item><title>Déja vu in chess: recognize this Sicilian pattern?</title><link>https://franklinchen.com/blog/2012/09/15/deja-vu-in-chess-recognize-this-sicilian-pattern/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/15/deja-vu-in-chess-recognize-this-sicilian-pattern/</guid><pubDate>Sat, 15 Sep 2012 21:01:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;Just a couple of days ago I wrote about &lt;a href=&quot;/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/&quot;&gt;playing the Sicilian Defense in chess&lt;/a&gt;. I noted how I play both sides of the Sicilian Defense: I enjoy the fight both as White and as Black.&lt;/p&gt;
&lt;p&gt;Tonight I stopped by the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; briefly, and played four quick blitz games for fun. One of them was one of my shortest blitz games ever. I think it lasted no more than &lt;em&gt;thirty seconds&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;How did that come about?&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/1p1ppBbp/p5p1/n7/3NP3/2N1B3/PPP2PPP/R2QK2R b KQkq -&quot; caption=&quot;Black resigned, 2012&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Patterns&lt;/h2&gt;
&lt;p&gt;Back in the 1960s, the psychologist and chess master &lt;a href=&quot;https://en.wikipedia.org/wiki/Adriaan_de_Groot&quot;&gt;Adrian de Groot&lt;/a&gt; famously did research on how expert chess players differ from novice and intermediate chess players in their thought processes. In the end, he found that recognizing and using patterns was one of the key differences: it was not so much that experts could calculate much faster and deeper, but that they could recognize patterns and hone in on relevant features to investigate further during a game.&lt;/p&gt;
&lt;p&gt;Most of us who play at a chess club at all are at a high enough level that we use and recognize patterns called &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_opening&quot;&gt;chess openings&lt;/a&gt;. Earlier this week I wrote about a particular chess opening, the Sicilian Defense.&lt;/p&gt;
&lt;p&gt;The reason we can play entire chess games in &quot;blitz&quot; fashion (with under 5 minutes per game for each side, usually, but sometimes players agree to play under 10 minutes or 3 minutes or even just 1 minute, which I sometimes enjoy doing) is because we can rely a lot on pattern matching.&lt;/p&gt;
&lt;p&gt;So in one of my 10-minute blitz games tonight, we each played the first six moves in probably no more than six seconds (counting one second to just physically move a piece from one square to another and then hit the clock), because it was just a standard Sicilian Defense variation that we both knew by heart up till that point.&lt;/p&gt;
&lt;h2&gt;When the position is new, there still may be approximate pattern matches&lt;/h2&gt;
&lt;p&gt;Very quickly in chess, the position becomes new, something that one has not seen before in the previous couple of thousand games of chess in one&apos;s life. This is what makes chess so fascinating: it is just not possible to memorize all the possible positions in chess. Even if you have played millions of games of chess, the very next game you will probably encounter a position different from anything you have seen before.&lt;/p&gt;
&lt;p&gt;In the blitz game, novelty began at move six, when my opponent played a non-standard move. This made me pause for just about one second before making my next move (instead of the first six moves during which I did no real thinking at all). Did I do some kind of big calculation? No: from general principles and an approximate matching with the dozens of similar positions I have seen before, combined with &quot;theoretical principles&quot; suggesting that the move was inaccurate, I simply continued with a reasonable reply. In a slower game, I might have taken more time to figure out what a &quot;best&quot; reply would be, but when time is short, &quot;good&quot; is good enough.&lt;/p&gt;
&lt;p&gt;Meanwhile, even at move six, my pattern recognition was already kicking in. I was immediately recognizing the similarity to a game that I played 27 years ago, in 1985. Yes, we chess players who intensely love the game actually do remember elements of many of the games we have ever played in our lives; and those of who remember the most play the best. By coincidence, I was remembering a game that just three months ago I wrote about, &lt;a href=&quot;/blog/2012/06/02/they-published-my-brilliant-chess-game/&quot;&gt;a game of mine that was published in Michigan Chess after it was played&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Comparison&lt;/h3&gt;
&lt;p&gt;Compare the following positions, which occurred after I played my Bishop to &lt;code&gt;c4&lt;/code&gt;, and Black is to move.&lt;/p&gt;
&lt;p&gt;The first is from 1985:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;rnbqk1nr/1p1pppbp/p5p1/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq -&quot; caption=&quot;Black to move, 1985&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The second is from tonight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/1p1pppbp/p1n3p1/8/2BNP3/2N1B3/PPP2PPP/R2QK2R b KQkq -&quot; caption=&quot;Black to move, 2012&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The similarities are obvious: both are positions out of the Accelerated Dragon of the Sicilian, and Black is behind on King-side development, and has played an early &lt;code&gt;a6&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The differences involve Black&apos;s Knight on &lt;code&gt;c6&lt;/code&gt; and White&apos;s Bishop on &lt;code&gt;e3&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;The critical position&lt;/h2&gt;
&lt;p&gt;It turned out that my blitz opponent fell into a trap that I have never seen before in its exact form, but it was so close to similar traps that I could easily focus on seeing whether the similarities justified a similar continuation on my part.&lt;/p&gt;
&lt;p&gt;The critical position has White to move and win.&lt;/p&gt;
&lt;p&gt;The first is from 1985:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1nbqk1nr/2rpppbp/p5p1/1p1B4/3NP3/2N1B3/PPP2PPP/R2QK2R w KQk -&quot; caption=&quot;White to move, 1985&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The second is from tonight:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqk1nr/1p1pppbp/p5p1/n7/2BNP3/2N1B3/PPP2PPP/R2QK2R w KQkq -&quot; caption=&quot;White to move, 2012&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;In both positions, the winning move is &lt;code&gt;Bxf7+&lt;/code&gt; followed by &lt;code&gt;Ne6&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In 1985, I had actually thought for about half an hour to verify that this truly wins. Tonight, I thought for about ten seconds to prove in my head that it wins, and then I played the move, after which my opponent also thought for about ten seconds and then resigned.&lt;/p&gt;
&lt;h2&gt;The point of pattern matching&lt;/h2&gt;
&lt;p&gt;The point is the pattern matching &lt;em&gt;does not automatically give you the answer&lt;/em&gt;, but gives you a &lt;em&gt;possible head start&lt;/em&gt; in the search for finding an answer: it gives you a goal to aim for, and in many cases substitutes &lt;em&gt;verification&lt;/em&gt; for &lt;em&gt;search&lt;/em&gt;. Search is hard. Verification is often easy. For example, if you had to guess someone&apos;s password by just brute force going through the alphabet, it would take forever. But if you knew up front that very likely this person will use certain words or numbers, then you can just try out various combinations of those and maybe get the answer without searching through every legal possibility. The same happens in chess, music, tennis, programming, cooking, flying, and everything else: having seen and personally experienced many patterns and their possible solutions makes it easier to solve new problems.&lt;/p&gt;
&lt;p&gt;There is a caveat I would like to explore in future writing: the &lt;em&gt;danger of misleading patterns&lt;/em&gt;. We humans love to find patterns and often rely on patterns when they are actually completely misleading. Failure in chess and other human activities often comes from relying too much on analogies from patterns.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/sicilian-f7.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Also, I have to repeat what I said in my &lt;a href=&quot;/blog/2012/06/02/they-published-my-brilliant-chess-game/&quot;&gt;earlier post about this pattern&lt;/a&gt;: it is not original; I first saw it in a Bobby Fischer game that I saw and studied in around 1978.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Pattern matching&lt;/em&gt;, both looking to create good patterns and looking to avoid falling into bad ones, is key in developing expertise in chess. Although most games I play have their own unique novel character, sometimes I play a game in which some key pattern is all there is to the game.&lt;/p&gt;
</content:encoded></item><item><title>The passion of Bach&apos;s Air on the G String: three very different interpretations</title><link>https://franklinchen.com/blog/2012/09/14/passion-of-bachs-air-on-the-g-string-three-different-interpretations/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/14/passion-of-bachs-air-on-the-g-string-three-different-interpretations/</guid><pubDate>Fri, 14 Sep 2012 06:45:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Yesterday, while driving home from work, I had my radio on, tuned to Pittsburgh&apos;s classical music station, &lt;a href=&quot;https://web.archive.org/web/20260306045917/https://www.wqed.org/fm/&quot;&gt;WQED FM&lt;/a&gt;, as usual, and I immediately recognized the piece that was being performed. I listened with curiosity and then anger and disappointment as I made my way home.&lt;/p&gt;
&lt;p&gt;It was a movement from one of Johann Sebastian Bach&apos;s orchestra suites
(Orchestral Suite No. 3 in D major, BWV 1068), the movement that has been popularized in the form of &lt;a href=&quot;https://en.wikipedia.org/wiki/Air_on_the_G_String&quot;&gt;&quot;The Air on the G String&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think this piece is a good litmus test of how we perceive and appreciate Baroque music.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-06-10)&lt;/h3&gt;
&lt;p&gt;Many readers have commented on this post, and therefore I have written
an &lt;a href=&quot;/blog/2015/06/10/revisiting-bachs-air-on-g-string-from-a-singing-and-dancing-viewpoint/&quot;&gt;important sequel&lt;/a&gt; to this post, 3 years later!&lt;/p&gt;
&lt;h2&gt;A listening test&lt;/h2&gt;
&lt;p&gt;Please click around on the YouTube videos to get a taste of different ways of performing the Air from Bach&apos;s suite. I&apos;ve embedded three very different interpretations, each with its own qualities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which do you like most of the three?&lt;/li&gt;
&lt;li&gt;Which do you dislike most of the three?&lt;/li&gt;
&lt;li&gt;Why?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;People can get very emotional about differences in musical taste, and I&apos;m not here to start an argument (just look at any of the comment threads on YouTube videos and you see what I mean!), but rather a discussion. I recognize that your choices might be &lt;em&gt;completely different&lt;/em&gt; from mine, and I&apos;m &lt;em&gt;completely OK&lt;/em&gt; with that, and hope that you might be &lt;em&gt;completely OK&lt;/em&gt; with my choices also!&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;e2OoJamNLMQ&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;SZ6nS1wau0I&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;VEpCjxOJgms&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Objective comparisons&lt;/h2&gt;
&lt;h3&gt;Stokowski&lt;/h3&gt;
&lt;p&gt;The first version is an arrangement by Leopold Stokowski, from maybe the 1950s. It is a very slow, richly scored, melodically oriented version with emphasis on a deep, swelling vibrato-filled string sound. Different lines are given emphasis, one after another.&lt;/p&gt;
&lt;h3&gt;Croatian Baroque Ensemble&lt;/h3&gt;
&lt;p&gt;The second version is a live performance from 2010 by the Croatian Baroque Ensemble. It is played on period instruments, very briskly, with a prominent harpsichord continuo, with minimal vibrato in the strings.&lt;/p&gt;
&lt;h3&gt;Karajan&lt;/h3&gt;
&lt;p&gt;The third version is from a recording by Herbert von Karajan and the Berlin Philharmonic, from maybe the 1980s. It is marked by a blend of legato voices, with an emphasis on unified beautiful tone.&lt;/p&gt;
&lt;h2&gt;What your preference means&lt;/h2&gt;
&lt;p&gt;First, I would like to point out that of these three versions, although I have a clear personal ranking, there are many things I don&apos;t like about my favorite version of the three. If I were setting up a performance of this piece, I would make many different interpretive choices. Therefore, my indication of my preference is not an endorsement of every element of my preferred version.&lt;/p&gt;
&lt;p&gt;The style classification system I&apos;m using here is directly taken from the fascinating book by &lt;a href=&quot;https://en.wikipedia.org/wiki/Bruce_Haynes&quot;&gt;Bruce Haynes&lt;/a&gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.oup.com/us/catalog/general/subject/Music/MusicHistoryWestern/EarlyMusicMedievalRenaissance/&lt;s&gt;/dmlldz11c2EmY2k9OTc4MDE5NTE4OTg3Mg==&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.oup.com/us/catalog/general/subject/Music/MusicHistoryWestern/EarlyMusicMedievalRenaissance/&lt;/s&gt;/dmlldz11c2EmY2k9OTc4MDE5NTE4OTg3Mg==&quot;&amp;gt;&quot;The End of Early Music&quot;&amp;lt;/span&amp;gt;. In fact, the Air from the G String is used as an example in his book. My observations and descriptions here, however, are my own.&lt;/p&gt;
&lt;h3&gt;Stokowski: the Romantic style&lt;/h3&gt;
&lt;p&gt;If you liked the Stokowski best, you favor the old-fashioned Romantic style, music played with a long heart-throbbing melodic line and rich accompaniment. Soulful cellos are your thing.&lt;/p&gt;
&lt;p&gt;If you dislike, you have a problem with odd composer-unintended arrangements, super-slow sentimentality, and personal idiosyncrasies such as slowing down to savor a particular romantic moment.&lt;/p&gt;
&lt;h3&gt;Croatian Baroque Ensemble: the Period style&lt;/h3&gt;
&lt;p&gt;If you like the Croatian Baroque Ensemble best, you favor a quick rhythm and counterpoint, with an emphasis on dissonance, as the carrier of heightened emotion. You like music to be played as though spoken, with many separated phrases, as though question and answer pairs.&lt;/p&gt;
&lt;p&gt;If you dislike, you don&apos;t like the rougher sound of non-vibrato violins, the dissonant attacks, and most of all, the speed and detachment of phrases that removes the relaxing, romantic mood you prefer.&lt;/p&gt;
&lt;h3&gt;Karajan: the Modern style&lt;/h3&gt;
&lt;p&gt;If you like Karajan, you focus on clear, beautiful tone, and seamless integration of instruments, avoidance of roughness and imperfection.&lt;/p&gt;
&lt;p&gt;If you dislike, you find the endless legato lifeless and missing the extra edge of passion, and you perceive that the emphasis on integration detracts from the clarity of individual voices.&lt;/p&gt;
&lt;h2&gt;My preferences&lt;/h2&gt;
&lt;p&gt;I prefer the Period approach of the Croatian Baroque Ensemble. I find it the most poignant and passionate of the three selections. I like the pauses of silence, the emphasis and swelling into the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.bach.org/bach101/instrumental/3rd_suite_orch_bwv1068.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.bach.org/bach101/instrumental/3rd_suite_orch_bwv1068.html&quot;&amp;gt;dissonant moments&amp;lt;/span&amp;gt;. The tempo is fast enough that the phrases feel like speaking and breathing. This is the Bach I have fallen in love with and have been enjoying playing myself in the past two years on &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; and &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Second, I have an honest, real emotional response to the Romantic approach of Stokowski, however perverse and bizarre it may be. It&apos;s clearly nothing resembling what Bach would have expected in a performance. But on its own, it&apos;s an ingenious product of Stokowski&apos;s personal vision. You could say that Stokowski stole Bach&apos;s notes and then composed his own thing using them as a starting point, changing everything else (from instrumentation to tempo to dynamics to articulation). I respect that. So even though part of me is horrified by this kind of plagiarism, part of me is also excited and wish that more of this perverse creativity would happen today. The Romantic approach went out of style decades ago, however, in favor of the Modern approach.&lt;/p&gt;
&lt;p&gt;Finally, the Modern approach basically leaves me cold. Yes, the Karajan version was the one I heard in my car while driving home from work. I felt angry and sad by how the performance did not really inspire me. It was boring and muddy to me. Karajan may have been playing the pitch values of the notes the way Bach wrote them down, and not &quot;disrespectfully&quot; messed with the elements that Stokowski eagerly transformed and added to, but to me, his performance was more of a boring lecture to sit through than something that made me sit up and engage with the music. &lt;em&gt;It was muzak to me.&lt;/em&gt; That was my reaction.&lt;/p&gt;
&lt;h2&gt;Period contrast: Ton Koopman with Amsterdam Baroque Orchestra&lt;/h2&gt;
&lt;p&gt;I mentioned earlier that there are many things I would do differently than the Croation Baroque Ensemble. The Period approach, like the Romantic and Modern ones, is not a single interpretation: it&apos;s an entire approach with much diversity.&lt;/p&gt;
&lt;p&gt;Here is a live performance in Period style that is noticeably different from the Croatian Baroque Ensemble performance. It is slower and sweeter, for example. But it also has more contrast between the long legato lines and the detached figures within them.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;NlT8yeEYbMs&quot; /&amp;gt;&lt;/p&gt;
&lt;h3&gt;Which do I like better?&lt;/h3&gt;
&lt;p&gt;Of the two sample Period performances, which do I prefer?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Who knows??&lt;/em&gt; When there are things I like and dislike about both? At some point (I try to make this quick), I stop being a listener or critic, and feel the need to &lt;em&gt;stop listening&lt;/em&gt;, and go to work &lt;em&gt;myself&lt;/em&gt; on how I would do things very differently, from anyone else, as a performer, to express my personal feeling for the music. That is why I&apos;ve switched in the past two years from being a listener to being a performer. I can&apos;t sit around pining away waiting from someone to play something the way I really like it. I have to do the work myself.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope this little exercise is helpful in clarifying some of the differences in the approach to performing and enjoying Baroque era music. The question of how to best deal with music from the 1700s is one that everyone who plays or listens to it has to grapple with, whether implicitly or explicitly. I think Haynes&apos; basic framework of three different styles is a useful one.&lt;/p&gt;
&lt;p&gt;Myself, in the past year or two during which I have suddenly fallen in love with Baroque music, after a lifetime of not really liking it at all, I have been persuaded by the Period approach, both as a listener and now also as a performer.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-06-10)&lt;/h3&gt;
&lt;p&gt;Many readers have commented on this post, and therefore I have written
an &lt;a href=&quot;/blog/2015/06/10/revisiting-bachs-air-on-g-string-from-a-singing-and-dancing-viewpoint/&quot;&gt;important sequel&lt;/a&gt; to this post, 3 years later!&lt;/p&gt;
</content:encoded></item><item><title>Happy Programmers&apos; Day!</title><link>https://franklinchen.com/blog/2012/09/12/happy-programmers-day/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/12/happy-programmers-day/</guid><pubDate>Wed, 12 Sep 2012 21:56:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy &lt;a href=&quot;https://en.wikipedia.org/wiki/Programmers&apos;_Day&quot;&gt;Programmers&apos; Day&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I only by accident found out that today was Programmers&apos; Day. It is apparently observed the 256th day of each year. This is my first year of &quot;observing&quot; the day.&lt;/p&gt;
&lt;p&gt;Since the day is almost over, I hurriedly came up with this little piece of code. Guess what it does?&lt;/p&gt;
&lt;p&gt;{% codeblock Mystery Ruby lang:ruby https://github.com/FranklinChen/programmers-day/blob/master/ruby/mystery.rb %}
require_relative &apos;utils&apos;&lt;/p&gt;
&lt;p&gt;class Mystery
attr_reader :mysterious
end
{% endcodeblock %}&lt;/p&gt;
&lt;p&gt;The trick, of course, lies in what we have in &lt;code&gt;utils.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class Class
  alias orig_attr_reader attr_reader

  def attr_reader(*args)
    args.each do |arg|
      if arg == :mysterious
        puts &quot;Happy Programmers&apos; Day!&quot;
      end
    end

    orig_attr_reader(*args)
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Very simple, nothing fancy, but perverse enough for a bit of Programmers&apos; Day fun.&lt;/p&gt;
</content:encoded></item><item><title>Round 2 of the Pittsburgh Chess Club tournament: winning in the Sicilian Defense; the philosophy and psychology of struggle</title><link>https://franklinchen.com/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/12/round-2-of-the-pittsburgh-chess-club-tournament-winning-in-the-sicilian-defense-the-philosophy-and-psychology-of-struggle/</guid><pubDate>Wed, 12 Sep 2012 07:41:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/14th-fred-sorensen-memorial/round-2.jpg&quot; alt=&quot;Second round&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday was the second round of the current six-round Tuesday night tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, the 14th Fred Sorensen Memorial.&lt;/p&gt;
&lt;p&gt;Last week &lt;a href=&quot;/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;I reported on my quick &quot;Greek gift sacrifice&quot; win in the first round&lt;/a&gt;. This week, my game was far from quick: it was a long struggle lasting most of the allotted four-hour maximum; my game lasted over three hours before I finally won.&lt;/p&gt;
&lt;p&gt;In this post, I frankly discuss the course of the game, including the crucial &lt;em&gt;psychological&lt;/em&gt; aspects.&lt;/p&gt;
&lt;p&gt;I begin with a summary of the basic &lt;em&gt;philosophical&lt;/em&gt; concepts of the opening, the Sicilian Defense, in terms that I hope both &lt;strong&gt;novices&lt;/strong&gt; and &lt;strong&gt;non-chess-players&lt;/strong&gt; can appreciate.&lt;/p&gt;
&lt;h2&gt;Playing as Black in chess&lt;/h2&gt;
&lt;p&gt;When one is playing as Black in chess, there are two philosophies of how to face White:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;defend&lt;/em&gt; against and neutralize White&apos;s first move advantage, by also occupying the center and holding it against White&apos;s attack&lt;/li&gt;
&lt;li&gt;ignore White&apos;s game plan, and choose to start an indirect &lt;em&gt;counter-attack&lt;/em&gt; on White&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first option is safest, while the second option is risky.&lt;/p&gt;
&lt;h2&gt;Brief introduction to the Sicilian Defense&lt;/h2&gt;
&lt;p&gt;In the Sicilian Defense, the second, very aggressive option is chosen: the basic idea is the Black on the very first move unbalances the position, taunting White, saying, &quot;attack my King if you dare, but I&apos;m going for your Queen side&quot;. Whereas White has claimed the center with the e Pawn, Black plays on the flank with the c Pawn:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.thechesswebsite.com/wp-content/uploads/2012/07/sicilian-big.jpg&quot; alt=&quot;Sicilian Defense&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Sicilian_Defence&quot;&gt;Sicilian Defense&lt;/a&gt; in chess is, in my view, the most exciting of all chess openings for Black.&lt;/p&gt;
&lt;p&gt;The critical lines in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Sicilian_Defence#Open_Sicilian:_2.Nf3_and_3.d4&quot;&gt;open Sicilian&lt;/a&gt; are those in which White takes up Black&apos;s challenge head on and opens up the position by allowing Black to trade the c Pawn for White&apos;s d Pawn. For example (as in my game yesterday):&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.thechesswebsite.com/images/najdorf-medium.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.thechesswebsite.com/images/najdorf-medium.jpg&quot;&amp;gt;[image: Najdorf Variation]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h3&gt;I have played both sides of the Sicilian&lt;/h3&gt;
&lt;p&gt;Playing this opening as Black is not for the faint of heart. Famous temperamental, attacking players such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Bobby_Fischer&quot;&gt;Bobby Fischer&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Garry_Kasparov&quot;&gt;Garry Kasparov&lt;/a&gt; used it as their weapon of choice during their careers.&lt;/p&gt;
&lt;p&gt;I did not play the Sicilian Defense as Black as a kid. I only started playing it as an adult as part of my reinvention of myself as a chess player when returning to the game after a twenty-year absence. I had shied away from the Sicilian because of a desire to be different (it&apos;s a popular opening) and because of laziness (I did not want to study a lot of opening theory).&lt;/p&gt;
&lt;p&gt;In fact, when I was a kid, I liked nothing better than playing the White side of the Sicilian. I loved destroying Black in the Sicilian.&lt;/p&gt;
&lt;p&gt;During my time in the past couple of years finally starting to play the Sicilian Defense as Black, I have suffered some horrendous quick losses as Black, in which my King was hunted down and destroyed as White Pawns and pieces crashed through my defenses. But I have also enjoyed some really exciting wins as Black as I fended off White&apos;s attack and destroyed White&apos;s Queen side and center.&lt;/p&gt;
&lt;h3&gt;Black&apos;s goals&lt;/h3&gt;
&lt;p&gt;In the critical lines of the open Sicilian, Black&apos;s goal is to defend accurately against any attacks by White while slowly building up a counter-attack. The hope is that as White&apos;s attack out of the opening fails and becomes overextended, Black will be in position to explode and rip White apart. It&apos;s an exciting way to play.&lt;/p&gt;
&lt;p&gt;Here is an example of a great position for Black (in the game I just played yesterday):&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r2qkb1r/1b3ppp/pn2p3/3pn2P/1p1NP1P1/3BBP2/PPP2Q2/1NKR3R b kq -&quot; caption=&quot;Prokhov-Chen&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Notice that Black is still far behind in King side development, but has managed to take control of the Queen side and center away from White. Black has a clear advantage here, but no win yet, and must play precisely to maintain the advantage and not fall into danger.&lt;/p&gt;
&lt;p&gt;(In fact, at this very moment in the game, I started playing poorly. More on that later.)&lt;/p&gt;
&lt;h3&gt;White&apos;s goals&lt;/h3&gt;
&lt;p&gt;In the critical lines of the open Sicilian, White&apos;s goal is to find tactics in order to break through to Black&apos;s King before Black has any chance to do anything useful in return.&lt;/p&gt;
&lt;p&gt;Here is an example of a great position for White, from a &lt;a href=&quot;/blog/2012/06/02/they-published-my-brilliant-chess-game/&quot;&gt;&quot;brilliancy&quot; I played in 1985&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1nbqk1nr/2rpppbp/p5p1/1p1B4/3NP3/2N1B3/PPP2PPP/R2QK2R w KQk -&quot; caption=&quot;Chen-Winfield, Michigan Open 1985&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Notice that Black is far behind in piece development, and White already has pieces mobilized against Black&apos;s King, and in fact has a won game.&lt;/p&gt;
&lt;p&gt;When White plays well and Black plays poorly in the Sicilian Defense, the result is usually a brutal win for White (as it was in this old game of mine).&lt;/p&gt;
&lt;h2&gt;My game&lt;/h2&gt;
&lt;p&gt;As Black yesterday, I faced an opponent I have played several tournament games with over the years. He always plays aggressively. All my games with him have been very tense, with a lot of tactics in the air and many opportunities for both sides to go wrong at critical moments.&lt;/p&gt;
&lt;h3&gt;The opening&lt;/h3&gt;
&lt;p&gt;I played the Sicilian against him, and by move eight the battle lines had already been drawn: in an English Attack, he was attacking my King side with the Pawn advance g4 and I was attacking his Queen side with the Pawn advance b5.&lt;/p&gt;
&lt;p&gt;He played the opening inaccurately and I obtained a thematic Black advantage.&lt;/p&gt;
&lt;h3&gt;The middle&lt;/h3&gt;
&lt;p&gt;Unfortunately, at a critical position, I chose an inferior continuation that left me with no remaining advantage.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Psychologically&lt;/em&gt;, it&apos;s always difficult when you are playing a chess game and realize that you have made a mistake and that all the work you did to secure an advantage is gone. Objectively, the correct thing to do is to stay calm and play the position as it exists in the &lt;em&gt;present&lt;/em&gt;, rather than dwell on the &lt;em&gt;past&lt;/em&gt;, but this is easier said than done.&lt;/p&gt;
&lt;p&gt;I find that it is easy to slip into one of two errors at such critical turning points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;get angry about losing advantage, and desperately make aggressive moves to try to reclaim an advantage&lt;/li&gt;
&lt;li&gt;get fearful of losing even more ground, and pre-emptively become passive and defensive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this game, I leaned into the second failure mode. At first, I was tempted to go the first route, by continuing my Queen side attack without regard for my King. It&apos;s possible that, without the anger component, such an attack was justifiable (a computer might choose it). But I knew that my mind was unbalanced and that I might not be able to properly fend off an attack on my King. So I took the conservative way out, by planning to put my King into safety. As a result, I allowed White to get a fine middle game position, but I saved energy to recoup mentally.&lt;/p&gt;
&lt;p&gt;After my King was safe, I restarted my Queen side attack, even though objectively the chances of its success were by now very low.&lt;/p&gt;
&lt;p&gt;However, White fell prey to psychology as well. My opponent must have been trying to achieve a draw, because instead of playing aggressively, he blocked up the Pawns and then tried to trade off all our Rooks to go into what he thought was a safe endgame for him.&lt;/p&gt;
&lt;h3&gt;The end&lt;/h3&gt;
&lt;p&gt;I became more and more confident about my chances as he embarked on this defensive course of action, because it showed the psychologically, he was not able to understand that he had a clear advantage he could exploit. My realization that he was faltering mentally made me regain my poise and focus and I played to make the most of my position.&lt;/p&gt;
&lt;p&gt;Then at a critical point, when my attacking plans were about to reach an end, he panicked and played a blunder that enabled me to win a Pawn for nothing.&lt;/p&gt;
&lt;p&gt;At this point, it was still possible for him to have defended well and maybe even drawn, despite the Pawn deficit. But instead, he continued to fall apart. I took care to play very precisely to take control of the situation on the board, and after fourteen moves (played in 73 minutes; he took 29 minutes to think while I took 44 minutes to think), he resigned.&lt;/p&gt;
&lt;p&gt;I was proud of how I came back from a seemingly lifeless, drawn position to restore my mental state to one of objective calculation, and secure the win after his blunder of a Pawn.&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/prokhov-chen-2012-09-11.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Winning my game in round 2 was not easy. I let my opening advantage peter out, became discouraged, regrouped mentally, then was lucky that my opponent blundered and gave me a chance to win the game all over again, and I did. This is the life cycle of many chess games between humans.&lt;/p&gt;
</content:encoded></item><item><title>The paradox of writing: doing versus writing</title><link>https://franklinchen.com/blog/2012/09/10/the-paradox-of-writing-doing-versus-writing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/10/the-paradox-of-writing-doing-versus-writing/</guid><pubDate>Mon, 10 Sep 2012 08:21:00 GMT</pubDate><content:encoded>&lt;p&gt;For about eight months now I&apos;ve been faced with quite a paradox: although I have written a good amount of content for my blog since I started it just under a year ago, in September 2011, the fact remains that by the end of 2011, I&apos;d fallen way behind on writing about really important things that I had been doing in my life. I intended to catch up this year, but instead, I launched into even more significant, life-changing projects, &lt;em&gt;very few of which I have actually even reported on at all here&lt;/em&gt;!&lt;/p&gt;
&lt;h2&gt;What is the paradox?&lt;/h2&gt;
&lt;p&gt;The paradox is that starting the blog at all was part of a larger plan to transform my life, to explore ideas, share my feelings, and try new things, and &lt;em&gt;this plan succeeded wildly&lt;/em&gt;. As a result, I became very engaged in many activities, to the point that I &lt;em&gt;had no time&lt;/em&gt; to write about the things that I do.&lt;/p&gt;
&lt;p&gt;So it&apos;s about &lt;em&gt;doing&lt;/em&gt; versus &lt;em&gt;writing&lt;/em&gt;. With limited time and energy, I have to make choices. My choice has been to do things rather than write about them, except during a down time during which I am taking a break or when I find it easy to whip out an entire blog post off the top of my head.&lt;/p&gt;
&lt;h2&gt;The problem&lt;/h2&gt;
&lt;p&gt;I feel that my omission of &lt;em&gt;most&lt;/em&gt; of what I&apos;ve been doing in my life paints a misleading picture to my readers who may be interested in following the progression of my thoughts and progress on my projects.&lt;/p&gt;
&lt;p&gt;More than that, I feel like I have forced myself into a false dilemma. Part of why I have &lt;em&gt;several dozen&lt;/em&gt; draft posts (about 35,000 lines of text) that I have not completed may be a lingering trace of perfectionism, under which I feel like writing a complete, fairly long blog post that has a real story line and is not just the equivalent of a short Facebook status update or tweet.&lt;/p&gt;
&lt;h2&gt;The solution&lt;/h2&gt;
&lt;p&gt;What is the solution?&lt;/p&gt;
&lt;p&gt;My goal in writing at all is to &lt;em&gt;entertain&lt;/em&gt; and &lt;em&gt;edify&lt;/em&gt;. My time is extremely limited, so I don&apos;t like wasting it by writing fluff; I feel that just writing stuff like &quot;I did X&quot; is pointless unless it is amusing or useful to my reader. I like writing &quot;I did X because Y and I learned Z and I rethought A and now I want to do B and maybe you can relate and think about X or B too.&quot;&lt;/p&gt;
&lt;p&gt;I think that the only solution is for me to accept that I will never be able to write as much as I would like, because I prefer to spend my time &lt;em&gt;doing&lt;/em&gt; instead of &lt;em&gt;writing&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;But other people can&lt;/h3&gt;
&lt;p&gt;I see people like &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://sethgodin.typepad.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://sethgodin.typepad.com/&quot;&amp;gt;Seth Godin&amp;lt;/span&amp;gt; turning out very short but pointed blog posts frequently. I think it&apos;s time for me to learn from that model. Often, I could get more to the point with brief posts rather than long reports. So I think I will move in this direction.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My goal set almost a year ago to keep my blog truly regular and active has been difficult to achieve because my desire to write long posts has conflicted with my increasing involvement in other activities. I chose to simply not write rather than write half-baked posts. But there is another option to explore: being more concise.&lt;/p&gt;
&lt;h2&gt;What is your writing strategy?&lt;/h2&gt;
&lt;p&gt;If you write, how do you manage a regular writing plan and schedule, as you get busy? How do you feel about short versus long posts? Do you prefer to write nothing rather than have to write something short?&lt;/p&gt;
</content:encoded></item><item><title>Finally performing some sonatas for Baroque flute</title><link>https://franklinchen.com/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/</guid><pubDate>Sat, 08 Sep 2012 23:26:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.boosey.com/imagesw/shop/product/$wm1_0x700_$&lt;em&gt;ED_12861-English_Airs_cov.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.boosey.com/imagesw/shop/product/$wm1_0x700&lt;/em&gt;$_ED_12861-English_Airs_cov.jpg&quot;&amp;gt;[image: English Airs and Dances]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Abby and I went to another party at Henry&apos;s, the first one we&apos;ve been to &lt;a href=&quot;/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/&quot;&gt;in five months&lt;/a&gt;. He&apos;s had other parties, but we&apos;ve been very busy all spring and summer.&lt;/p&gt;
&lt;p&gt;Tonight was another big musical milestone for me.&lt;/p&gt;
&lt;h2&gt;Music plan&lt;/h2&gt;
&lt;p&gt;Henry had actually announced two parties coming up. This party was going to feature a four-hand piano recital after dinner, to be performed by his friends Gabe and Eric. The second party was going to be for his father&apos;s birthday, as his parents were going to be visiting him. He was asking whether anyone wanted to play for his father&apos;s birthday party, so I volunteered for that, saying that I would like to play some music for Baroque flute.&lt;/p&gt;
&lt;p&gt;Henry was very curious to hear me play Baroque flute, since I had in fact never played it at one of his earlier parties. He said I should bring along the music to the first party so that he could read the keyboard part, before his father&apos;s birthday party.&lt;/p&gt;
&lt;h3&gt;Baroque flute&lt;/h3&gt;
&lt;p&gt;For the past couple of months, the Baroque flute has been my main focus of music practice, because of my fascination with Baroque music and the special qualities of the Baroque flute (in contrast with the modern flute). It&apos;s a very difficult instrument to play, unfortunately. Nevertheless, I want to get at least close to using the Baroque flute to create the kind of sound and texture I want to get from Baroque music.&lt;/p&gt;
&lt;p&gt;So I have been using the book/CD sets from the Carnegie Library that I found in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boosey.com/pages/shop/prod_series_list.asp?seriesID=10214&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boosey.com/pages/shop/prod_series_list.asp?seriesID=10214&quot;&amp;gt;&quot;Baroque Around the World&quot; series&amp;lt;/span&amp;gt;. Ironically, the first of those sets that I had taken out, I had done not even knowing it was Baroque music, and &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;used it for practicing with modern flute&lt;/a&gt;! In fact, I once performed one of the selections, Henry Holcombe&apos;s Air in E minor, on modern flute (gasp), at a &lt;a href=&quot;/blog/2012/04/27/baroque-jam-session-at-cmu/&quot;&gt;&quot;Baroque music jam session&quot;&lt;/a&gt;. It was not until recently that I decided to start playing the music on Baroque flute. Now, I don&apos;t want to play this music on modern flute if I can help it!&lt;/p&gt;
&lt;p&gt;Recently, I took out some of the other volumes from the &quot;Baroque Around the World&quot; series. For example, I was intrigued by the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boosey.com/shop/prod/Johnson-David-4-Scottish-Sonatas-Baroque-Around-the-World-series-Book-CD/2001256&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boosey.com/shop/prod/Johnson-David-4-Scottish-Sonatas-Baroque-Around-the-World-series-Book-CD/2001256&quot;&amp;gt;&quot;4 Scottish Sonatas&quot;&amp;lt;/span&amp;gt; volume. Much of the music is clearly for violin, but some of it seems to work pretty well for flute also. In any case, it is different.&lt;/p&gt;
&lt;p&gt;For Henry&apos;s parties, I decided to focus on playing well a few of the selections &quot;English Airs and Dances&quot;.&lt;/p&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;p&gt;The usual things happened at the party before our pianists showed up to perform after dinner: good food, conversation, chess, music jamming. Abby brought her various stringed instruments to play.&lt;/p&gt;
&lt;p&gt;I ended up reading almost the whole book of &quot;English Airs and Dances&quot; with Henry on piano. &quot;Oops&quot;. I should know by now that if I bring a book of music, we&apos;ll go through a lot more than the few selections I thought I was preparing. So I had to sight read some stuff I had never actually played. I can&apos;t play very fast on Baroque flute, so I was botching things up here and there. No matter, it was fun.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Up till now, I had never actually performed Baroque flute sonatas and other works with keyboard accompaniment. This is partly because I am not very good at Baroque flute and also because I just don&apos;t have as many opportunities to play Baroque flute with other people as I do using other instruments. In any case, I was pleased to finally be out there on Baroque flute.&lt;/p&gt;
</content:encoded></item><item><title>Running my 8th Pretty Good Race 5K: dealing with disappointment</title><link>https://franklinchen.com/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/07/running-my-8th-pretty-good-race-5k-dealing-with-disappointment/</guid><pubDate>Fri, 07 Sep 2012 19:47:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2012/registration.jpg&quot; alt=&quot;Registration table&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This year I ran, for the eighth time in my life, the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;CMU Pretty Good Race 5K&lt;/a&gt;; on National Running Day earlier this year, I described &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;how special this race has been to me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Things did not go as planned, but I made the most of the event anyway, and was happy and even amused by some of the things that happened.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;One of the big problems was that I was not at all feeling prepared for the race.&lt;/p&gt;
&lt;h3&gt;Foot problem&lt;/h3&gt;
&lt;p&gt;For one thing, I felt very tired for days after my last race, the &lt;a href=&quot;/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/&quot;&gt;Run Around the Square of almost two weeks ago&lt;/a&gt;. I gave so much of myself during that race that afterwards, I just didn&apos;t feel like running again for a while.&lt;/p&gt;
&lt;p&gt;Worse than that, my left foot has been bothering me ever since that race, discouraging me even more from continuing my regular running. I am pretty sure that I injured my arch area because I had the shoe strap of my Vibram FiveFingers KSO Trek shoe too tight. I had it on tighter than during my normal runs, out of &quot;fear&quot; of the shoe coming off or slipping during the race on the Schenley Park hilly trail. &lt;strong&gt;Shoe too tight was a mistake I will never make again.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Life intervened&lt;/h3&gt;
&lt;p&gt;Finally, and most significantly, I have spent the last week spending a lot of time on the talk I gave yesterday at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby group&amp;lt;/span&amp;gt;, as &lt;a href=&quot;/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;I had promised I would a month ago&lt;/a&gt;. That took a lot out of me. In fact, if I had not already committed, with Abby, to run the Pretty Good Race this year, I would not have done it at all, after all my energy was drained in the past week. But it would have been unfair to bail out on Abby given that this is one of the few races we have started doing together.&lt;/p&gt;
&lt;p&gt;I suppose I could have decided to give the talk for the October meeting of the Ruby group instead, knowing up front the annual date of the Pretty Good Race. That had crossed my mind, but I also had instantly decided (with no regrets) that giving the talk as soon as possible after I promised to do it was of much higher priority than anything involving any of my races.&lt;/p&gt;
&lt;h2&gt;Weather conditions&lt;/h2&gt;
&lt;p&gt;The race was made much more difficult by the unpredictable weather. For days it would be cold, then hot. Well, it turned out that race day was very hot. It had to be like 80F. I was even thinking that this might be the warmest race I&apos;ve ever run in, but actually, that&apos;s probably not quite true: races in July tend to be pretty hot.&lt;/p&gt;
&lt;h2&gt;The plan&lt;/h2&gt;
&lt;p&gt;So I started the race with no hope whatsoever of surpassing last year&apos;s time of 24:36. I was just going to try to run an honest race at steady effort, and use my usual mental tricks of trying to speed up in the second half and try to catch people ahead of me. In particular, the fearsome very long uphill at the end is something that I wanted to have enough energy for to sprint up; in every year up till now, I have waited until the finish line is in sight before I start my sprint. I did not always manage to pass everyone in front of me, and I also at least once let someone sprint past me.&lt;/p&gt;
&lt;p&gt;This year, during some training runs on the course, I experimented with running hard for just the second half and figuring out how much energy to conserve so that I would be able to start the sprint from far beyond that point, from around the curve. That way, I would have the possibility of powering through with nobody able to catch me. &lt;em&gt;I&apos;d never started my sprint from so far out before in any race&lt;/em&gt;, so this was going to be an experiment.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2012/franklin-before-race.jpg&quot; alt=&quot;Franklin before the race&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Beginning&lt;/h3&gt;
&lt;p&gt;I went out at a steady pace. After less than a mile, runners had more or less spread out and found their pace. I slowly caught up to someone who was running at approximately my pace. This is when things got interesting.&lt;/p&gt;
&lt;p&gt;This runner ahead of me sensed that I was catching up and decided to surge. I was confused by this move, but just kept on going at my pace. Maybe she just preferred running with nobody around her; but I was trying to give her some space by coming up from the side and behind her, rather than directly behind her. Having someone breathe down your neck is not very pleasant, after all.&lt;/p&gt;
&lt;h3&gt;Middle&lt;/h3&gt;
&lt;p&gt;As she kept increasing her distance from me, I concluded that she was probably just faster than me, found her natural pace, and I would never catch her. There was nobody else visible directly ahead of me, so I had no other target during the first half of the race, but I knew that since it was mostly uphill, and I&apos;m stronger downhill than uphill, and a lot of runners go out too fast in the first half of races, it was a question of whom I would start catching during the second half.&lt;/p&gt;
&lt;p&gt;But then, as I approached the turnaround point (this is an out and back course on Panther Hollow Trail), I noticed that far ahead of me, beyond the designated turnaround point (where there were volunteers directing people to turn around, and some runners were in fact there turning around), was this runner who had blasted past me. Maybe she was in the zone or something, but she missed the turnaround point! She started coming back as I reached the turnaround point.&lt;/p&gt;
&lt;p&gt;I felt bad that she had made a mistake, but then again, this was a new opportunity for me. I already knew that she was faster than me. But she wasted time and energy falling behind me in the race. Could I actually prevent her from coming past me during the entire second half of the race, given my head start?&lt;/p&gt;
&lt;p&gt;I didn&apos;t look back once as I focused on running the second half of the race, almost all downhill.&lt;/p&gt;
&lt;h3&gt;End&lt;/h3&gt;
&lt;p&gt;Probably no more than a quarter mile from the end, she passed me and started putting distance between us. But at my targeted location to put in my kick, I &lt;em&gt;screamed&lt;/em&gt;, three or four times, while doing what I&apos;d done in training: going into an all-out long sprint. I think I totally freaked her out, because she kind of just stepped aside and started jogging or something (that&apos;s what it seemed like as I charged past and then around the curve and then up the steep hill).&lt;/p&gt;
&lt;p&gt;I continued throwing out a periodic scream until I finished. For the first hundred or so races in my life, I never screamed, but I started this habit only last year, at &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;Run Shadyside&lt;/a&gt;. I believe it actually helps me a lot when I&apos;m in pain and need to &quot;wake up&quot; into a new gear of existence temporarily. I just worry about whether it scares people.&lt;/p&gt;
&lt;p&gt;It turned out that I finished ten seconds earlier than her. Mission accomplished, after all.&lt;/p&gt;
&lt;h2&gt;What is important&lt;/h2&gt;
&lt;p&gt;Here I am, shortly after finishing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2012/franklin-exhausted.jpg&quot; alt=&quot;Franklin exhausted&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s Abby coming up the hill for the finish:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pretty-good-race-2012/abby-finishing.jpg&quot; alt=&quot;Abby finishing on the uphill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was pretty proud of having executed the most demanding sprint finish of my entire life. I know that my final race time of 26:05 is far slower than my 24:36 of last year, but as far as my effort was concerned, I did give it my all. &lt;em&gt;It&apos;s not about how fast I went, but how much I gave of what I had.&lt;/em&gt; (Apparently, at the London Olympics, some runner was banned for &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.telegraph.co.uk/sport/olympics/athletics/9456916/Algerian-runner-banned-for-not-trying-hard-enough-at-London-2012.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.telegraph.co.uk/sport/olympics/athletics/9456916/Algerian-runner-banned-for-not-trying-hard-enough-at-London-2012.html&quot;&amp;gt;&quot;not trying hard enough&quot;&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;Abby, in her second Pretty Good Race, ran 2:07 faster than last year, in more difficult conditions. It&apos;s really great how she&apos;s improved her fitness so much since she started running. &lt;em&gt;It&apos;s not about how fast she ran, but how she&apos;s improved.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The next race&lt;/h2&gt;
&lt;p&gt;The next race that I&apos;m already committed to is the Great Race 10K, which I&apos;m signed up already to run for the &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;tenth time&lt;/a&gt;. I still need to recover my energy for it, and also let my foot pain go away.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;For various reasons, I was not able to run the Pretty Good Race fast this year. But I had an exciting experience anyway and made the most of it.&lt;/p&gt;
</content:encoded></item><item><title>My Pittsburgh Ruby talk: &quot;nil: historical, theoretical, comparative, philosophical, and practical perspectives&quot;</title><link>https://franklinchen.com/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/06/my-pittsburgh-ruby-talk-nil/</guid><pubDate>Thu, 06 Sep 2012 23:07:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-ruby-nil.jpg&quot; alt=&quot;Franklin speaking at Pittsburgh Ruby on nil&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;As promised&lt;/a&gt;, I finally &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/79619402/&quot;&gt;gave a talk&lt;/a&gt; at our local &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby group&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;p&gt;Here&apos;s a brief report (along with links to a video and slides).&lt;/p&gt;
&lt;h2&gt;A video and slides&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/49474228?badge=0&quot; width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://vimeo.com/49474228&quot;&amp;gt;Franklin Chen - nil&amp;lt;/a&amp;gt; from &amp;lt;a href=&quot;https://vimeo.com/user11358803&quot;&amp;gt;Corey Purcell&amp;lt;/a&amp;gt; on &amp;lt;a href=&quot;https://vimeo.com&quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;Slides are &lt;a href=&quot;/talk-on-nil/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;My preparation&lt;/h2&gt;
&lt;p&gt;Preparing for this talk was quite challenging for me.&lt;/p&gt;
&lt;h3&gt;Time&lt;/h3&gt;
&lt;p&gt;First of all, I couldn&apos;t work on the talk right after Steel City Ruby Conf ended, because I almost immediately disappeared, for almost two weeks, for a trip to New Mexico with Abby for a friend&apos;s wedding and our own little vacation tacked onto it.&lt;/p&gt;
&lt;p&gt;And I came back to face a whole of projects to pick back up on after the long absence, including stuff at work, &lt;a href=&quot;/blog/2012/08/17/the-inaugural-liberty-mile-a-review-of-pittsburghs-first-road-mile-race/&quot;&gt;running in a mile race for the first time&lt;/a&gt;, continuing to &lt;a href=&quot;/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/&quot;&gt;play French traditional dance music&lt;/a&gt;, and &lt;a href=&quot;/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/&quot;&gt;returning to playing tournament chess after almost two years&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Technical material&lt;/h3&gt;
&lt;p&gt;Word of my talk was spread fairly wide because it was going to happen during the first meeting of the Pittsburgh Ruby group after Steel City Ruby Conf and because various friends of mine were interested in finally seeing me give a talk and I&apos;d given it a provocative title. Over twenty people were signed up on the &lt;a href=&quot;https://www.meetup.com/pittsburgh-ruby/events/79619402/&quot;&gt;Meetup page&lt;/a&gt; in no time at all.&lt;/p&gt;
&lt;p&gt;I faced the obvious question of what material to include, given that the scope of the topic is vast (any Web search for the topic of the use of &lt;code&gt;nil&lt;/code&gt; or &lt;code&gt;null&lt;/code&gt; quickly brings up no shortage of blog posts and rants about it).&lt;/p&gt;
&lt;p&gt;Also, given that I expected quite a diverse audience, I had to think about what might be possible to convey clearly in no more than an hour of time.&lt;/p&gt;
&lt;p&gt;I wanted to focus on conveying that there &lt;em&gt;really&lt;/em&gt; is a problem, that it is &lt;em&gt;not&lt;/em&gt; a matter of debate that it exists. I also wanted to explain the problem in terms of &lt;em&gt;types&lt;/em&gt;, so I felt I had to give a quick overview of &lt;em&gt;static type systems&lt;/em&gt;, because I believed that most of the audience had never seen or used one in a modern form.&lt;/p&gt;
&lt;p&gt;I used the contrasting examples of &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;John McCarthy&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Tony_Hoare&quot;&gt;Tony Hoare&lt;/a&gt; in order to illustrate that the &lt;em&gt;problem&lt;/em&gt; exists whether you are coming from the &lt;em&gt;dynamically typed&lt;/em&gt; world (as McCarthy was) or the &lt;em&gt;statically typed&lt;/em&gt; world (as Hoare was). I thought it was particularly important to point out that most mainstream &quot;statically typed&quot; languages exhibit the &lt;code&gt;null&lt;/code&gt; problem because people like Hoare took a shortcut and put a hole into languages such as C and Java.&lt;/p&gt;
&lt;p&gt;I also wanted to frame the issues along some philosophical axes, in terms of who is responsible for what and how, when something goes wrong in code. If we want principled solutions, we have to understand what is at stake, other than hacking something to maybe sometimes work.&lt;/p&gt;
&lt;p&gt;Since I expected to spend most of the time really explaining the problem, I did not spend much time on solutions. I explained the static typing &lt;a href=&quot;https://en.wikipedia.org/wiki/Option_type&quot;&gt;&lt;code&gt;Maybe&lt;/code&gt; (or &lt;code&gt;Option&lt;/code&gt;) solution&lt;/a&gt;, but left it open-ended what the best solution is when it comes to dynamically typed languages such as Ruby; I suggested that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Null_Object_pattern&quot;&gt;Null Object pattern&lt;/a&gt; or the &lt;a href=&quot;https://martinfowler.com/eaaCatalog/specialCase.html&quot;&gt;Special Case pattern&lt;/a&gt; may be usable, but there are issues when trying to object-orientify in the face of &lt;a href=&quot;https://en.wikipedia.org/wiki/Multiple_dispatch&quot;&gt;multiple dispatch&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Presentation skills&lt;/h3&gt;
&lt;p&gt;Having very little experience in giving presentations (and knowing that I have done quite poorly in the past), I spent a good amount of time reading various books and blog posts of advice on presenting. I found them very useful and will continue to study them and apply their insights. At some point I&apos;ll write up a compilation of what I have found useful. I am absolutely committed to a lifetime pursuit of improving my presentation skills, because if I can&apos;t explain my ideas clearly and convincingly to people, then who else can do it for me? It&apos;s my responsibility if I want to have a real impact on the world.&lt;/p&gt;
&lt;p&gt;I also jumped at the opportunity to give an &lt;a href=&quot;/blog/2012/08/23/pittsburgh-python-meetup-i-gave-my-first-lightning-talk-ever-the-topic-was-scons/&quot;&gt;impromptu lightning talk at the Pittsburgh Python group meeting&lt;/a&gt;, as practice in facing people and speaking.&lt;/p&gt;
&lt;h3&gt;Presentation software&lt;/h3&gt;
&lt;p&gt;I had some struggles as I decided was presentation software to use in order to prepare slides. I didn&apos;t want to use a proprietary format, and I wanted to be able to easily include nicely formatted code fragments. I found no perfect solution, but ended up using the &lt;a href=&quot;https://github.com/adamzap/landslide&quot;&gt;landslide&lt;/a&gt; tool implemented in Python to generate an HTML slide show.&lt;/p&gt;
&lt;h2&gt;The presentation&lt;/h2&gt;
&lt;p&gt;I arrived in something of a manic mood. I was quite nervous, but I treated the situation in exactly the same way as I&apos;ve been learning from having started to perform music in the past year. The presentation is not about &lt;em&gt;me&lt;/em&gt;. It&apos;s about trying to offer something valuable to everyone who is taking the time to be there to see it: hopefully something entertaining, intriguing, and practically useful.&lt;/p&gt;
&lt;p&gt;I finished up earlier than I expected, in less than hour. (I took that as a sign that I had gone too fast, unfortunately.)&lt;/p&gt;
&lt;h2&gt;Reflections&lt;/h2&gt;
&lt;p&gt;I am very grateful to have been given the opportunity to speak at the Pittsburgh Ruby group meeting. A lot of people spread the word around and we had something like twenty-five people show up! That was a great turnout. And it was an alert, friendly, supportive group of people.&lt;/p&gt;
&lt;p&gt;I appreciated that some individuals came up to me and said they liked the talk. Also, I think that my considerable work into trying to be meaningfully entertaining (with my opening anecdotes involving McCarthy and Hoare) seemed a success.&lt;/p&gt;
&lt;p&gt;In the end, I believe I had too much material. This is obviously a typical problem in many presentations, especially where one wants to make sure that everyone gets to the same page through a &quot;review&quot; of concepts (which unfortunately will be brand new to some people). I don&apos;t know how to solve this problem. Maybe a suggested reading list, targeted tutorial, or questionnaire before the talk? Or splitting into multiple installments? I will continue to grapple with this question of how to completely reach a sufficient number of people in an audience.&lt;/p&gt;
&lt;p&gt;I felt this experience was a little breakthrough for me, as a first step in giving a full-length presentation and beginning to experience the &quot;other side&quot; of presentations (since I have attended so many as a listener). It feels like when I moved over from dancing to the other side, playing music for dancers.&lt;/p&gt;
&lt;h2&gt;Supporting Web site&lt;/h2&gt;
&lt;p&gt;I have a &lt;a href=&quot;https://github.com/franklinchen/talk-on-nil&quot;&gt;supporting Web site for the talk&lt;/a&gt; whose purpose is to be a place for me to add references and code as I continue monitoring this topic online.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I put a lot of work into the presentation I gave at Pittsburgh Ruby, and was pretty happy about how it turned out. Of course, I&apos;m raising the bar for the future. I plan to continue giving presentations when I feel I have something real to share and contribute, not only at Pittsburgh Ruby, but for other groups and occasions also.&lt;/p&gt;
</content:encoded></item><item><title>Round 1 of the Pittsburgh Chess Club tournament: the Greek gift sacrifice</title><link>https://franklinchen.com/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/09/04/round-1-of-the-pittsburgh-chess-club-tournament-the-greek-gift-sacrifice/</guid><pubDate>Tue, 04 Sep 2012 20:38:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/14th-fred-sorensen-memorial/round-1.jpg&quot; alt=&quot;Start of first round&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight was the first round of the latest six-round Tuesday night tournament at the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt;, &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;my first tournament in almost two years&lt;/a&gt;, the 14th Fred Sorensen Memorial.&lt;/p&gt;
&lt;h2&gt;The tournament&lt;/h2&gt;
&lt;p&gt;There was quite a large turnout for this tournament. Apparently a good number of people who had not played for a while (like me), chose to come back also! There were also new faces.&lt;/p&gt;
&lt;p&gt;Always most striking to me after I&apos;ve been away for a while is to see kids whom I haven&apos;t seen in years, because they often end up many feet taller! They are dangerous opponents, because they typically are growing their chess as rapidly as they are growing taller.&lt;/p&gt;
&lt;p&gt;I am the highest-rated player in the tournament, as I often used to be. However, since I have not played in tournament conditions in a while, I need to warm back up to my past tournament strength.&lt;/p&gt;
&lt;h3&gt;What is my purpose?&lt;/h3&gt;
&lt;p&gt;A bunch of guys noticed that I was &quot;back&quot; and ribbed me about it, asking me if I was back to dominate or to have fun. I replied, in all seriousness, that I am back for &lt;em&gt;fun&lt;/em&gt;. Sure, I want to win, but I don&apos;t want to get obsessive about chess again.&lt;/p&gt;
&lt;h2&gt;The game&lt;/h2&gt;
&lt;p&gt;This being round one, I played against someone considerably lower-rated than me, but someone who has certainly won or drawn games against me in the past. Lower-rated doesn&apos;t mean a guaranteed loss, else there would be no point in playing. I try to take all my opponents seriously, no matter what their rating. I actually have learned the hard way that &lt;em&gt;disrespect&lt;/em&gt; has a way of resulting in blowback. I must earn every win I achieve.&lt;/p&gt;
&lt;p&gt;My opponent and I both played fairly quickly. The last time I played in tournaments, I was very doubtful of myself and overthought trying to compensate. So for this tournament, I have decided to try to relax and play reasonable moves without overthinking and trying to absolutely optimize as a computer would.&lt;/p&gt;
&lt;p&gt;I ended up winning in less than an hour, by smashing through as White using the classic &lt;a href=&quot;https://en.wikipedia.org/wiki/Greek_gift_sacrifice&quot;&gt;Greek gift sacrifice&lt;/a&gt;. I have used this sacrifice in several games over my life. It&apos;s always cute to use it. I have accidentally fallen victim to it in the past also!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/14th-fred-sorensen-memorial/chen-kirk.jpg&quot; alt=&quot;The Greek gift sacrifice in action&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The annotated game&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chen-kirk-2012-09-04.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was pleased to see a large turnout at the latest Tuesday night tournament at the Pittsburgh Chess Club, including old faces as well as new ones. I played a clean game in which I managed to use the Greek gift sacrifice to quickly win. I enjoyed not only the win, but what I felt to be sound, correct play on my part. A good start for me in this tournament, but I expect next week to be much tougher!&lt;/p&gt;
</content:encoded></item><item><title>Why I do not play chess online: chess as a human activity</title><link>https://franklinchen.com/blog/2012/08/30/why-i-do-not-play-chess-online-chess-as-a-human-activity/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/30/why-i-do-not-play-chess-online-chess-as-a-human-activity/</guid><pubDate>Thu, 30 Aug 2012 01:19:00 GMT</pubDate><content:encoded>&lt;p&gt;I found out, while reading the magazine &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_Life&quot;&gt;&quot;Chess Life&quot;&lt;/a&gt;, to which I am subscribed to as a &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;member of the United States Chess Federation&lt;/a&gt; (USCF), that there are apparently plans to offer &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://uschess.org/onlineplay/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://uschess.org/onlineplay/&quot;&amp;gt;online chess play&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I have to confess that I have &lt;em&gt;never&lt;/em&gt; been interested in playing chess online. I also do not like to play chess against computers, and not just because &lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/&quot;&gt;my first experience playing chess against a computer was bizarrely negative&lt;/a&gt;. I understand that many people take great pleasure in both of these activities, but I still restrict myself to playing chess only against humans, and face to face. Here&apos;s why.&lt;/p&gt;
&lt;h2&gt;Growing up with chess with my father&lt;/h2&gt;
&lt;p&gt;I&apos;ve written about some &lt;a href=&quot;/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him/&quot;&gt;life lessons I learned from playing chess with my father&lt;/a&gt;, but not actually told the story of how we ended up joining the USCF and playing in rated tournaments. Here&apos;s the story.&lt;/p&gt;
&lt;h2&gt;Taking chess more seriously in the 3rd grade because of China&lt;/h2&gt;
&lt;p&gt;I&apos;ve mentioned &lt;a href=&quot;/blog/2012/06/01/life-lessons-i-learned-from-a-lunch-recess-chess-game-with-a-classmate-at-age-seven/&quot;&gt;getting into chess more seriously in the 2nd grade because of a strange incident at school&lt;/a&gt;. My story picks up from there in the 3rd grade.&lt;/p&gt;
&lt;p&gt;One day in 1978, my father excitedly clipped out a chess game annotated in the regular chess column in the Sunday New York Times, and showed it to me playing it out. He might still have this clipping saved somewhere in a folder. It was a famous (notorious) game in which a relatively weak chess master from China, &lt;a href=&quot;https://en.wikipedia.org/wiki/Liu_Wenzhe&quot;&gt;Liu Wenzhe&lt;/a&gt;, won against a Dutchman, &lt;a href=&quot;https://en.wikipedia.org/wiki/Jan_Hein_Donner&quot;&gt;Jan Hein Donner&lt;/a&gt;, a strong grandmaster.&lt;/p&gt;
&lt;p&gt;You have to understand that in the 1970s, China was not taken seriously in the West. This was the first time in which a chess player of Chinese descent had scored a major upset against a Westerner. For my father, this was a big deal: he had always played a good game of &lt;a href=&quot;https://en.wikipedia.org/wiki/Xiangqi&quot;&gt;Chinese chess&lt;/a&gt;, but never invested any time in improving at &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess&quot;&gt;&quot;Western&quot; chess&lt;/a&gt;. Just seeing that someone of Chinese descent could play well caused him to become truly enthusiastic about Western chess. (For the curious, here is a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.huffingtonpost.com/lubomir-kavalek/chess-in-clouds-of-smoke_b_1270659.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.huffingtonpost.com/lubomir-kavalek/chess-in-clouds-of-smoke_b_1270659.html&quot;&amp;gt;record of the famous Donner-Liu game&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;From that day on, every time I walked off to the local store on Sunday morning to buy the New York Times to bring back home, my father and I would immediately clip out the chess column and study it together. We both got more serious about studying chess books we got from the public library.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-04-15)&lt;/h3&gt;
&lt;p&gt;The author of the New York Times chess column, Robert Byrne, &lt;a href=&quot;/blog/2013/04/15/rip-robert-byrne/&quot;&gt;just died&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Fourth grade: joining the local chess club&lt;/h2&gt;
&lt;p&gt;After we moved after my third grade, my father found out that there was a chess club that met in the basement of the local community center, and he brought me there.&lt;/p&gt;
&lt;h3&gt;Cigar smoke and chess with the guys&lt;/h3&gt;
&lt;p&gt;It was quite an experience entering the chess club. The place was filled with cigar smoke and loud men slamming chess pieces around, wisecracking and swearing. Many of the guys were old, but there were younger guys also, although the youngest one was about twenty years old; I was just ten.&lt;/p&gt;
&lt;p&gt;Somehow, in the midst of this chaos, I was welcomed to the club and enjoyed playing. Sometimes my six-year-old sister came along too, but it was clear that she didn&apos;t really belong.&lt;/p&gt;
&lt;h2&gt;Tournaments&lt;/h2&gt;
&lt;p&gt;It wasn&apos;t long before the guys told us about USCF and ratings and tournaments and encouraged us to join USCF and play in rated tournaments. So my father and I signed up and played in the Michigan Open. We both won trophies in our first tournament, and continued to play.&lt;/p&gt;
&lt;h2&gt;Social&lt;/h2&gt;
&lt;p&gt;For me, a very shy boy who had relatively little interaction with his schoolmates outside of school, playing chess became the closest thing I had to a &lt;em&gt;social life&lt;/em&gt;. So I have always associated chess with being social, with seeing people smile and frown, with sitting across from someone and noticing his (or very occasionally, her) changes in emotion, concentration, etc.&lt;/p&gt;
&lt;h2&gt;Playing chess against computers or by means of a computer&lt;/h2&gt;
&lt;p&gt;I never even touched a chess computer again (after my mentioned initial experience in the 2nd grade) until well into high school, when I bought a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://tluif.home.xs4all.nl/chescom/EngFidExc.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://tluif.home.xs4all.nl/chescom/EngFidExc.html&quot;&amp;gt;Fidelity Excellence&amp;lt;/span&amp;gt; in the 11th grade. Playing against this computer was frustrating. In the mid-1980s, an affordable chess computer or program was still rather weak. I had no real fun playing with the computer. My enjoyment of chess was tied to the human aspects of the game rather than the purely calculational aspects.&lt;/p&gt;
&lt;p&gt;I didn&apos;t really touch chess again after high school until twenty years later. I was surprised by how much better computers had gotten but again took no pleasure in playing against a program running on my computer. And I saw that online chess had become popular, but had no interest in participating.&lt;/p&gt;
&lt;h2&gt;Back to humanity&lt;/h2&gt;
&lt;p&gt;In 2004, I became a member again of the USCF and started receiving &quot;Chess Life&quot; in the mail. I opened up the first issue I received, and noticed that it had an article mentioning my old chess buddy &lt;a href=&quot;https://en.wikipedia.org/wiki/Ben_Finegold&quot;&gt;Ben Finegold&lt;/a&gt; whom I first met back in the cigar-smoke chess club days in Michigan when I was ten and he was eleven. We&apos;d played a good amount of blitz chess together as well as three rated tournament games. Unlike me, he went off to become a chess professional and one of the top chess players in the US, while my chess skill stagnated and I went to college, etc. I wondered whether to take up chess again, to see if I could continue my improvement where I left off as a kid.&lt;/p&gt;
&lt;p&gt;While visiting my parents for Christmas in 2004, I challenged my father to a chess game for the first time in over twenty years. We played, I did well, and when I returned to Pittsburgh, I searched online and found the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghcc.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghcc.org/&quot;&amp;gt;Pittsburgh Chess Club&amp;lt;/span&amp;gt; and stopped by for a visit. The guys were really friendly, I started playing blitz chess, like the old days, and in early January 2005, I joined the club and registered for my first tournaments in twenty years.&lt;/p&gt;
&lt;p&gt;It was good to be back. To humanity, really, more so than to chess.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It makes me feel old-fashioned, but I have no interest in playing chess online. To me, the game simply has a deeper significance to me than some kind of intellectual puzzle, a significance rooted in its role in my life.&lt;/p&gt;
</content:encoded></item><item><title>Five reasons we just stocked up on Vibram FiveFingers KSO Trek shoes</title><link>https://franklinchen.com/blog/2012/08/28/five-reasons-we-just-stocked-up-on-vibram-fivefingers-kso-trek-shoes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/28/five-reasons-we-just-stocked-up-on-vibram-fivefingers-kso-trek-shoes/</guid><pubDate>Tue, 28 Aug 2012 19:47:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/85802484@N06/7858001266&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7253/7858001266_58020e37f8_b.jpg&quot; alt=&quot;Run Around the Square, Regent Square&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abby and I just stocked up on Vibram FiveFingers KSO Trek shoes: we got &lt;em&gt;two&lt;/em&gt; brand new pairs for me and &lt;em&gt;two&lt;/em&gt; for her as well. Why the extravagant purchases? Here are five reasons.&lt;/p&gt;
&lt;h2&gt;Reason 1: trail running&lt;/h2&gt;
&lt;p&gt;In August 2010, I bought my first pair of KSO Trek shoes, primarily for the purpose of trail running, since I was sick and tired of the knee and shin and blistering problems I seemed to have whenever trail running extensively in any regular shoes, and I wanted more durability and protection against rocks than I got from running in less built-up racing flats meant for road running.&lt;/p&gt;
&lt;p&gt;Furthermore, I had bought the KSO shoes earlier, but they just weren&apos;t, for me, suitable for much trail running, because of blistering issues and lack of protection (later, as I got used to more minimalist running, the protection no longer became an issue, but the blistering remained, so the last time I did trail running in the KSO shoes as a test was in June for &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;National Running Day&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;After a little bit of breaking in, during which I had a few blisters, &lt;em&gt;I never got blistered again, for two years and counting&lt;/em&gt;. The kangaroo leather is very nice and quickly seems to conform to your feet and becomes smooth.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have never run in the trails with my old regular monotoed running shoes again.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have never experienced knee or shin problems again when trail running.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Reason 2: hiking&lt;/h2&gt;
&lt;p&gt;At first, I resisted the idea of wearing the KSO Trek hiking, because my typical hike involves terrain considerably rougher than my local trail runs, and goes on for more hours. But a year ago, in August 2011, following the lead of Abby, who started hiking in her Trek Sport shoes (which are similar to the KSO Trek in protection but are not made of kangaroo leather), I finally shed my &quot;trail running&quot; shoes that I had been hiking in, reluctantly, for several years (even though I always ended up with some knee/shin/calf/ankle/foot pain/soreness and some blistering on long hikes).&lt;/p&gt;
&lt;h3&gt;Starting out with 6 miles&lt;/h3&gt;
&lt;p&gt;My first KSO Trek hiking experience was on a hike that was only 6 miles long. But that experience was a revelation. I had &lt;em&gt;no problems&lt;/em&gt; at all during the hike. I just had some tightness in my right shin after that hike, undoubtedly due to imperfect form. But no blistering, and no lasting foot soreness. As a result, &lt;em&gt;I have never hiked again in regular monotoed shoes, but only in KSO Trek shoes&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Moving up to 20 miles&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/rachel-carson-trail.jpg&quot; alt=&quot;On the Rachel Carson Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This May, I decided I wanted to really put the KSO Trek to the test. I wore the shoes on my most extreme hike of this year, a 20-mile training hike on the &lt;a href=&quot;https://rachelcarsontrails.org/rct&quot;&gt;Rachel Carson Trail&lt;/a&gt;. I finished the hike with no blisters whatsoever, no knee pain. Yes, my feet were sore as heck after all the banging on rocks and tree roots and down the hills, but foot soreness always happened anyway whenever I did a 20-mile hike on the Rachel Carson Trail in any footwear. The interesting thing is that I recovered from this foot soreness extremely quickly, much more quickly than I ever recovered from foot soreness wearing more padded shoes.&lt;/p&gt;
&lt;p&gt;Unfortunately, I cannot answer the fascinating question of whether I could do the 35-mile &lt;a href=&quot;https://rachelcarsontrails.org/rct/challenge&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; in KSO Trek shoes. I have completed the Challenge three times, each time with a different pair of regular monotoed trail running shoes, and each time with leg and foot issues (including severe blisters). The reason I cannot answer the question is that my feet were noticeably &lt;em&gt;more&lt;/em&gt; sore after 20 miles on the trail in KSO Trek than they ever were in the regular shoes. There might be a problem with scalability.&lt;/p&gt;
&lt;h4&gt;Injinji socks&lt;/h4&gt;
&lt;p&gt;However, earlier, in March, I had gone on a really tough hilly, bushwhacking exploratory hike that was about 10 miles long, and worn Injinji toe socks with my KSO Trek shoes. The socks provided additional protection that completely removed foot soreness. Unfortunately, I simply did not enjoy the extra bulk around my toes, and therefore have chosen not to wear socks again except when necessary in cold weather. But it is certainly conceivable that with socks, 35 miles on the Rachel Carson might be doable with KSO Trek shoes.&lt;/p&gt;
&lt;h3&gt;A recent hike&lt;/h3&gt;
&lt;p&gt;Abby and I enjoyed &lt;a href=&quot;https://www.trails.com/tcatalog_trail.aspx?trailid=HGS212-001&quot;&gt;Atalaya Mountain&lt;/a&gt; in Santa Fe this month when we were in New Mexico. She wore her Trek Sport, I wore my KSO Trek.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/atalaya-abby.jpg&quot; alt=&quot;Abby with Trek Sport&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/atalaya-franklin.jpg&quot; alt=&quot;Franklin with KSO Trek&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Reason 3: paddling&lt;/h2&gt;
&lt;p&gt;At some point, Abby and I decided to start wearing Vibram FiveFingers shoes kayaking. I started off wearing the KSO, but then realized that wearing the KSO Trek offered a lot of advantages with no down side. Being thicker and leather, they protected better against being under the sun. The extra protection when stepping out into the water and onto rocky shores was also welcome.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rio-grande-paddling.jpg&quot; alt=&quot;Kayaking down the Rio Grande&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Down the Rio Grande in New Mexico, with view of Sandia Crest.)&lt;/p&gt;
&lt;h3&gt;No shoe funk&lt;/h3&gt;
&lt;p&gt;Finally, there is the &lt;a href=&quot;https://birthdayshoes.com/the-definitive-guide-to-cleaning-vibram-five-fingers-a-k-a-how-to-get-the-smell-out-of-your-vibrams&quot;&gt;infamous problem that the synthetic Vibram shoes tend to end up stinking&lt;/a&gt; after getting wet, even after washing! Abby and I found no perfect solution to this problem. It turns out that the leather shoes don&apos;t suffer from this problem &lt;em&gt;at all&lt;/em&gt;. All I have to do is rinse the shoes thoroughly (without even any soap or detergent), air dry them, and then they are just fine. Believe it.&lt;/p&gt;
&lt;h2&gt;Reason 4: holes in my toes after two years and over a thousand miles&lt;/h2&gt;
&lt;h3&gt;Discovering holes on Vulcan&lt;/h3&gt;
&lt;p&gt;I don&apos;t know when holes started forming in my KSO Trek shoes from 2010, because I did not have a habit of checking regularly for holes. I only know that I started feeling the ground with my toes only after a particular outing during which I spent over an hour running the &lt;a href=&quot;https://www.nps.gov/petr/planyourvisit/volcanoes.htm&quot;&gt;three Petroglyph volcanoes&lt;/a&gt; near Albuquerque this month.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/petroglyph-volcanoes.jpg&quot; alt=&quot;Panorama of Petroglyph volcanoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/franklin-petroglyph-volcanoes.jpg&quot; alt=&quot;Franklin getting ready to run the volcanoes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was fairly high up on Vulcan and descending when I first noticed the sensations of volcanic rock rubbing on my bare toe.&lt;/p&gt;
&lt;p&gt;(Here&apos;s Abby hiking toward Vulcan after I had already run down and was headed the other way.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/abby-hiking-to-vulcan.jpg&quot; alt=&quot;Abby hiking to Vulcan&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Examining the holes&lt;/h3&gt;
&lt;p&gt;Here are the holes, which occurred at the sides of the second toes of both my feet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/hole-in-left.jpg&quot; alt=&quot;Hole in left shoe&quot; /&gt;
&lt;img src=&quot;../../assets/images/kso-trek/hole-in-right.jpg&quot; alt=&quot;Hole in right shoe&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After Abby and I ordered and received our new shoes (Abby decided to finally also go for KSO Treks, after seeing how much I loved them in the past two years), I took some photos to illustrate the wear and tear:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/old-and-new.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the old shoes are pretty worn down:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/kso-trek/old-new-bottom.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/kso-trek/old-new-side.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m not going to retire the old shoes yet, of course. I kind of like that they have, through being worn down, become more minimalist; feeling a little bit of dirt touch my toes once in a while is no problem at all (especially given my experiments with entirely barefoot running). I expect to continue to wear the old shoes for years to come; I did just start wearing a new pair (which &lt;a href=&quot;/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/&quot;&gt;I just ran a race in and Abby also&lt;/a&gt;, but will come up with a rotation system.&lt;/p&gt;
&lt;h2&gt;Reason 5: Vibram is discontinuing the KSO Trek shoes and they are on sale!&lt;/h2&gt;
&lt;p&gt;Finally, the unbelievable news: Vibram is discontinuing the KSO Trek, my favorite shoe!!&lt;/p&gt;
&lt;p&gt;But a sale is going on right now: we picked up four pairs at a clearance price, and so can you &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://birthdayshoes.com/labor-day-minimalist-barefoot-sales&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://birthdayshoes.com/labor-day-minimalist-barefoot-sales&quot;&amp;gt;before they disappear for good&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am very sad that Vibram is discontinuing the shoe that I have happily put well over a thousand miles on trail running, hiking, and paddling. I hope that by stocking up, I will be able to enjoy the KSO Trek for several years.&lt;/p&gt;
</content:encoded></item><item><title>My second French music jam: playing my Irish flute in public for the first time</title><link>https://franklinchen.com/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/</guid><pubDate>Mon, 27 Aug 2012 22:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight I participated for the second time in a new little &lt;a href=&quot;https://www.facebook.com/groups/182324948478861/&quot;&gt;French traditional dance&lt;/a&gt; music jam session that &lt;a href=&quot;/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited/&quot;&gt;started up in July&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This time, I played not only my &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; (which happens to be the instrument I&apos;ve mostly been playing for the past two months), but also my &lt;a href=&quot;/blog/2012/07/30/got-my-new-casey-burns-small-handed-irish-flute/&quot;&gt;new Irish flute I got a month ago&lt;/a&gt;. I did &lt;em&gt;not&lt;/em&gt; bring my modern flute at all.&lt;/p&gt;
&lt;p&gt;As we did the last time, after we played around for an hour or so, we then played for dancers for another hour. I enjoyed the experience a lot, and was less nervous than I was the first time. I am slowly improving at learning a tune, without a score, while someone is playing it, and then imitating the melodic line or filling in a harmonically sensible line on the fly.&lt;/p&gt;
&lt;h2&gt;Instruments and musicians&lt;/h2&gt;
&lt;p&gt;I finally received my Irish flute a month ago and have spent some minutes every day breaking it in at home. Tonight was its &quot;debut&quot; in public. I enjoyed the louder, stronger sound.&lt;/p&gt;
&lt;p&gt;I still used the Baroque flute, for key signatures that my keyless Irish flute does not work well for (half-holing is a pain).&lt;/p&gt;
&lt;p&gt;We also had fiddles, melodeon, guitar, mandolin (not all at the same time, since John was switching between melodeon and mandolin depending on the key of the song, given the limitations of the melodeon), and I felt that the Irish flute was balanced pretty well with the other instruments, better than the Baroque flute did in the first session in July (when it was often drowned out).&lt;/p&gt;
&lt;p&gt;We lost some musicians from last time, because one of them left town, and the clarinetist has a class in the evening and therefore cannot arrive till later, when she comes to dance. But we had two new people!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Our little French music group is gaining momentum. I&apos;m very excited! Also, as the CMU fall semester starts, there are plans to really promote French and other traditional music and dance in the form of an official CMU student organization.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-09-28)&lt;/h2&gt;
&lt;p&gt;In fact, &lt;a href=&quot;/blog/2012/09/28/another-french-music-jam-also-announcing-cats-dance/&quot;&gt;CATS Dance successfully launched in September&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Latin jazz in Pittsburgh: Puro Queso</title><link>https://franklinchen.com/blog/2012/08/26/latin-jazz-in-pittsburgh-puro-queso/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/26/latin-jazz-in-pittsburgh-puro-queso/</guid><pubDate>Sun, 26 Aug 2012 22:31:00 GMT</pubDate><content:encoded>&lt;p&gt;One great thing about Pittsburgh is the free cultural programs at the Carnegie Library. Abby and I checked out a local Latin jazz quartet, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://puroquesojazz.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://puroquesojazz.com/&quot;&amp;gt;Puro Queso&amp;lt;/span&amp;gt;, performing at the main branch of the library in Oakland, as part of their regular &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.carnegielibrary.org/events/details.cfm?event_id=69113&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.carnegielibrary.org/events/details.cfm?event_id=69113&quot;&amp;gt;Sunday afternoon World Kaleidoscope series&amp;lt;/span&amp;gt;. This event was also posted on the &lt;a href=&quot;https://www.meetup.com/pittsburgh-free/events/77709582/&quot;&gt;&quot;Free and Almost Free in Pittsburgh&quot; meetup group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was amused to notice that when we arrived, I recognized the saxophonist! It was someone I had seen around a lot on campus at work at CMU. I figured he must be staff or faculty. (I looked him up and sure enough, he is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.history.cmu.edu/faculty/eiss.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.history.cmu.edu/faculty/eiss.html&quot;&amp;gt;Paul Eiss, professor in the history department&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/puro-queso/soprano-sax.jpg&quot; alt=&quot;Paul Eiss on soprano sax&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/puro-queso/tenor-sax.jpg&quot; alt=&quot;Paul Eiss on tenor sax&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As usual at these library events, where time is limited and the purpose is to spark interest not only in the music but also to encourage concert attendance and CD purchases, the mustical selections tended toward well-known classic crowd pleasers, rather than more adventurous material or wilder improvisation. In any case, it was fun, and Abby and I danced a little too. Some of the selections I recognized:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bossa nova: Song of the Jet (&lt;a href=&quot;https://letras.mus.br/tom-jobim/49065/&quot;&gt;Samba do Avião&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;bossa nova: &lt;a href=&quot;https://en.wikipedia.org/wiki/Mas_que_Nada&quot;&gt;Mas Que Nada&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bolero: &lt;a href=&quot;https://en.wikipedia.org/wiki/B%C3%A9same_Mucho&quot;&gt;Besame mucho&lt;/a&gt;, featuring a female vocalist&lt;/li&gt;
&lt;li&gt;a Cuban &lt;a href=&quot;https://en.wikipedia.org/wiki/Son_%28music%29&quot;&gt;son&lt;/a&gt; whose name I have forgotten&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>My eighth time doing Run Around the Square 5K</title><link>https://franklinchen.com/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/25/my-eighth-time-doing-run-around-the-square-5k/</guid><pubDate>Sat, 25 Aug 2012 10:47:00 GMT</pubDate><content:encoded>&lt;p&gt;Today Abby and I ran in the annual &lt;a href=&quot;https://www.runaroundthesquare.com/&quot;&gt;Run Around The Square 5K race&lt;/a&gt;. As usual at this time in late August, it was a warm day.&lt;/p&gt;
&lt;p&gt;This race is special because Run Around The Square was the &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;first race I ever ran in my life&lt;/a&gt;, back in 2000, and because it is also the first race Abby ever ran &lt;a href=&quot;/blog/2011/12/31/reflections-on-2011/&quot;&gt;(just last year, 2011)&lt;/a&gt;: so today was my 128th lifetime race (according to my race log I keep) and Abby&apos;s 5th lifetime race.&lt;/p&gt;
&lt;h2&gt;My goal this year&lt;/h2&gt;
&lt;p&gt;My goal for the race for this year was to run it faster than I did last year (which also would automatically mean running it faster than any year since six years ago, 2006).&lt;/p&gt;
&lt;p&gt;My time from last year was 24:36, and I believed from my last timed interval workout, on Tuesday, that I could run 24:30 today at fastest, so there was little room for error. I had hoped months ago that I would be in shape to run considerably faster in Run Around The Square this year, but travel and other interruptions caused me to train only haphazardly for races this year.&lt;/p&gt;
&lt;p&gt;Did I achieve my goal? The story turns out to be more complicated than I expected.&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;h3&gt;First mile&lt;/h3&gt;
&lt;p&gt;I took care during the first mile of the race not to go out too fast.&lt;/p&gt;
&lt;p&gt;We all passed by a lot of musicians on the streets, of course: a really fun tradition that goes way back. As I expected, I saw &lt;a href=&quot;/blog/2011/12/18/fun-at-the-east-end-food-co-op-winterfest/&quot;&gt;Kimberlee Faught&lt;/a&gt; playing violin at one point:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/85802484@N06/7857971836&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/8286/7857971836_496cf2afe7_b.jpg&quot; alt=&quot;Run Around the Square, Regent Square&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As usual, I ignored all the champagne and beer stops on the race course. That&apos;s a charming and venerable tradition at this race, but drinking alcohol would &lt;em&gt;not&lt;/em&gt; help me run as fast as I can!&lt;/p&gt;
&lt;h3&gt;Second mile&lt;/h3&gt;
&lt;p&gt;Once in the trails of Frick Park, there is no longer any question of going too fast; there is only a question of avoiding going too slow. The uphill is really tough. And I&apos;m much better running downhill than running uphill. During the second mile, my only thought is to maintain my effort level rather than my pace, because when the big downhill comes at the end of the race, I need to have enough energy in the tank to blast downhill, however crappy I might already be feeling.&lt;/p&gt;
&lt;p&gt;Actually, that&apos;s false: my other thought is to keep hydrated and cool. I sacrifice a little bit of time during the second mile because up near the tennis courts, I always grab a cup of water from a friendly volunteer and drink some of it while pouring the rest of it over my head and rubbing it through my hair and onto my face and neck. (I don&apos;t take any more water after this point in the race.)&lt;/p&gt;
&lt;p&gt;In any case, about halfway through the race, with more than ten minutes projected to go, I was feeling pretty pukey and my breathing getting harder. &lt;strong&gt;Good&lt;/strong&gt;; that&apos;s just a sign that I&apos;m following my 5K race game plan. It is impossible to &lt;em&gt;race&lt;/em&gt; a 5K without feeling pukey, whatever your level is. &lt;strong&gt;If you&apos;re not feeling pukey by the middle of a 5K race, you&apos;re not running the race as fast as you&apos;re physically capable of running it.&lt;/strong&gt; I realize that many people run just for fun and don&apos;t want or need to feel pukey in order to enjoy a race, and there have been races in which I have not gone all out, normally, I run a race in order to test my limits of existence.&lt;/p&gt;
&lt;h3&gt;Third mile&lt;/h3&gt;
&lt;p&gt;Third mile, there&apos;s the big downhill on the trail. The tricky thing is how to pass a lot of people. The problem with large trail races is that there are a lot of people who go out too fast early on or are much worse at running downhill than at running uphill; the result is congestion during the downhill parts of the course. I did manage to run downhill well without losing too much in efficiency.&lt;/p&gt;
&lt;h3&gt;Final sprint&lt;/h3&gt;
&lt;p&gt;My vision was getting fuzzy from the pain, and my mind confused, when I was approaching the finish line. I couldn&apos;t tell from the big clock whether I had already missed my chance at beating last year&apos;s time. Seriously. It was reading 24:3x as far as I could tell, which meant that I already lost my chance to run 24:30. But was I going to beat 24:36? I had no idea. I thought I was going to see the &quot;3&quot; digit move to &quot;4&quot; at any time.&lt;/p&gt;
&lt;p&gt;Part of me wanted to shut down and quit and just watch the &quot;4&quot; digit arrive on the clock. Part of me knew that I still had enough energy to push harder, even as I was already sprinting, for another second or two (or more?!). Reality became distorted, I lost confidence, and I finished the race &lt;em&gt;not knowing whether I had really tried my best at the end&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;After the race&lt;/h3&gt;
&lt;p&gt;I checked my watch after I finished the race and didn&apos;t know what to think. Did I succeed or fail at my time goal? My watch made it look like I finished in 24:40, but I wasn&apos;t confident that I hit the &quot;start&quot; at the right time, and I was even less confident that I hit &quot;stop&quot; right after crossing the finish line (I was guessing that I didn&apos;t hit the button until a second or two after actually finishing).&lt;/p&gt;
&lt;p&gt;After Abby finished, I kept telling her I was upset that I didn&apos;t think I really went all out in the final minute of the race. Then I got over my disappointment and let it go; in the grand scheme of life it hardly matters!&lt;/p&gt;
&lt;h2&gt;More comments about the race&lt;/h2&gt;
&lt;p&gt;Abby was initially confused that everyone got a medal for the race. It was to commemorate the 30th anniversary of this race.&lt;/p&gt;
&lt;p&gt;As usual, there were refreshments and snacks after the race provided by &lt;a href=&quot;https://www.runaroundthesquare.com/#!sponsors&quot;&gt;many generous sponsors&lt;/a&gt;, and hot dogs and beer (I chose not to take any beer this year). I bumped into a lot of people I knew and met some friends of friends. One of them turned out to be someone who is apparently a friend of two completely different Pittsburgh friends I have. He took photos of Abby and me wearing our Vibram FiveFingers KSO Trek shoes:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/85802484@N06/7858001266/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7253/7858001266_58020e37f8_b.jpg&quot; alt=&quot;Run Around the Square, Regent Square&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abby likes this race because much of it is on the trails of Frick Park and we end in Fern Hollow, where there is a lot of greenery, nature at work (as opposed to some races we&apos;ve done, which have been pure road races that end in some parking lot). Whenever I hear positive comments about this area, I am reminded of how long it took to redesign and restore Fern Hollow such that it is &lt;a href=&quot;/blog/2011/10/15/snapshots-of-pittsburgh-from-a-12-mile-run/&quot;&gt;one of the real pleasures for me when I run in Frick Park&lt;/a&gt;. Ironically, I do remember the early days of Run Around The Square, which did end in Fern Hollow when it wasn&apos;t quite as nice as it is now.&lt;/p&gt;
&lt;p&gt;Also, we appreciate the new moisture-wicking T-shirts given to those who registered. These shirts are much more practical and useful than the old cotton T-shirts. I&apos;ll be happily wearing around the new Run Around The Square T-shirt when getting sweaty in the years to come.&lt;/p&gt;
&lt;h2&gt;So did I in fact achieve my time goal?&lt;/h2&gt;
&lt;p&gt;I wouldn&apos;t know what really happened until many hours after the race when I saw the race results online: apparently my clock time was in fact 24:39.55, so I did finish before the &quot;4&quot; digit came to view. And my chip time (which is the one I consider my &quot;real&quot; time) was 24:35.6, nipping last year&apos;s chip time of 24:36. I did it!!&lt;/p&gt;
&lt;h2&gt;Running this race over the years&lt;/h2&gt;
&lt;p&gt;A summary of the eight years that I&apos;ve done Run Around The Square:
&amp;lt;table style=&quot;border: 1px solid black; padding: 15px&quot;&amp;gt;
&amp;lt;thead&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Index&amp;lt;/th&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Year&amp;lt;/th&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Chip time&amp;lt;/th&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Comment&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/thead&amp;gt;
&amp;lt;tbody&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;1&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2000&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;27:23&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;First race ever, as part of radically changing my life at age 30&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;20&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2001&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;23:19&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;4:04 faster after a year! Lost weight, trained seriously.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;43&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2002&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;23:01&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;18 seconds faster.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;104&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2006&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;23:27&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Missed 3 years of the race; 26 seconds slower than last time&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;114&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2008&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;24:39&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Slow; untrained and unrested the night before race.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;118&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2009&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;25:20&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Untrained; unmotivated to push hard at end.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;121&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2011&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;24:36&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;First time Abby ran in a race with me.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;128&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2012&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;24:35.6&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Managed to achieve my best time since 2006!&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;h2&gt;Goal for next year?&lt;/h2&gt;
&lt;p&gt;I don&apos;t know what goal to set for next year. I suppose I could set a goal of getting yet faster, breaking 24:15. That sounds reasonable to me. Going back down to 24:00 may even be possible. It&apos;s too early right now to tell. But one thing is for sure: I have no intention of slowing down from this year to next.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Run Around The Square is a really fun community event and 5K race in Pittsburgh that I try to run every year when I can. It was my first race ever and this year&apos;s was my 128th race, and it was Abby&apos;s first race. Running a race for so many years allows me to appreciate its quirks, track the state of my fitness, and experience its evolution as an event. I&apos;m very thankful for this long-running tradition that just celebrated its 30th anniversary with the help of the Regent Square community and all the sponsors.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Python meetup: I gave my first lightning talk ever; the topic was SCons</title><link>https://franklinchen.com/blog/2012/08/23/pittsburgh-python-meetup-i-gave-my-first-lightning-talk-ever-the-topic-was-scons/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/23/pittsburgh-python-meetup-i-gave-my-first-lightning-talk-ever-the-topic-was-scons/</guid><pubDate>Thu, 23 Aug 2012 21:53:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I gave my first &lt;a href=&quot;https://en.wikipedia.org/wiki/Lightning_talk&quot;&gt;lightning talk&lt;/a&gt; in my life, as far as I can remember.&lt;/p&gt;
&lt;p&gt;I spoke for probably around five minutes at the monthly meeting of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghpython.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghpython.org/&quot;&amp;gt;Pittsburgh Python User Group&amp;lt;/span&amp;gt;, which had a &lt;a href=&quot;https://www.meetup.com/pghpython/events/72341992/&quot;&gt;module show-and-tell night&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I originally had not planned to attend the meeting, since although I have been to meetings of the Python group since January 2011, &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;I stopped going over a year ago&lt;/a&gt;. But I suddenly decided on short notice to volunteer before the meeting to give a little talk on the Python-based tool &lt;a href=&quot;https://www.scons.org/&quot;&gt;SCons&lt;/a&gt;. I did this for a couple of reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two weeks ago at Steel City Ruby Conf, &lt;a href=&quot;/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;I decided to start giving talks at programming groups&lt;/a&gt;; I committed to giving a talk at the Ruby group, but this week suddenly saw the opportunity to give a low-pressure lightning talk at the Python group.&lt;/li&gt;
&lt;li&gt;I&apos;d mentioned my use of SCons a long time ago at the Python group and I have been feeling obliged to actually promote this excellent tool.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The module show and tell&lt;/h2&gt;
&lt;p&gt;It turned out that only four of us had described ahead of time a module to talk about. The first three spoke about &lt;code&gt;multiprocessing&lt;/code&gt;, &lt;code&gt;formencode&lt;/code&gt;, and &lt;code&gt;urllib2&lt;/code&gt;, then I finally stepped up and talked about SCons. After that, it was good to see people spontaneously get up and talk about other Python libraries and software, including &lt;code&gt;requests&lt;/code&gt;, &lt;code&gt;numba&lt;/code&gt;, &lt;code&gt;lxml&lt;/code&gt;, &lt;code&gt;melopy&lt;/code&gt;, and &lt;code&gt;logbook&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;What I tried to do in my talk&lt;/h3&gt;
&lt;p&gt;I tried to give a concrete example of why I use SCons to manage building various artifacts from source files and directories, analyzing them, and removing outdated material. Essentially, in 2006, I was looking for an alternative to GNU &lt;code&gt;make&lt;/code&gt; because I wanted the power of a full-blown programming language in order to do builds that require real computation that depend on conditions, SCons. SCons is an embedded &lt;a href=&quot;https://en.wikipedia.org/wiki/Domain-specific_language&quot;&gt;domain specific language&lt;/a&gt; for construction, in contrast to &lt;code&gt;make&lt;/code&gt;, which is an external domain specific language (actually, GNU &lt;code&gt;make&lt;/code&gt; is more than that; it is a perverse Turing-complete language).&lt;/p&gt;
&lt;p&gt;Using SCons, I can generate dependencies dynamically by writing Python code (in contrast to the &lt;code&gt;make&lt;/code&gt; paradigm in which one often writes, using some separate language, a script to generate a &lt;code&gt;Makefile&lt;/code&gt; to include into the master &lt;code&gt;Makefile&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Furthermore, &quot;builders&quot; that do the work of connecting targets with sources can be written in Python; in &lt;code&gt;make&lt;/code&gt;, builder actions are shell commands, which means that if you have to do something nontrivial, you have to write some program to call from &lt;code&gt;make&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is so much more convenient to do everything with Python and Python libraries rather than to write extra programs to call.&lt;/p&gt;
&lt;p&gt;During the talk, I drew some sketches of directory trees and sources and targets on the whiteboard to illustrate what kinds of actions were handled by an SCons script I had written for a specific purpose at work.&lt;/p&gt;
&lt;p&gt;For a longer talk, I would have prepared a few slides and added more clarifying detail to my presentation, but I decided to just do this one impromptu.&lt;/p&gt;
&lt;h2&gt;My source code&lt;/h2&gt;
&lt;p&gt;The source code for my example SCons script is available on &lt;a href=&quot;https://github.com/FranklinChen/update-childes-talkbank/&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since it was originally written in 2006, it was not developed the way I would do it today (for example, it is a single monolithic script, does not have proper user-level documentation, has hard-coded strings, and was not designed in a test-driven way), but it works. If new requirements cause me to need to change the code, I will definitely refactor first.&lt;/p&gt;
&lt;p&gt;Part of me had wanted to refactor before public release, but I decided that perfectionism had held me back too long from sharing, so I was just going to put the code as it is.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have very little experience giving talks at all. The few &quot;long&quot; talks I&apos;ve given over the years have been a nerve-wracking experience in which I did badly. I have a long-term goal of actually being a decent public speaker, so that I can share my knowledge more effectively with the world. It will take study, practice, self-assessment, and experience. I&apos;ve delayed progress on this goal for too long, and am happy to start putting myself out there, starting small in lower-stakes situations and building up from there.&lt;/p&gt;
</content:encoded></item><item><title>Steel City Ruby Conf review: Part 1: It&apos;s About People</title><link>https://franklinchen.com/blog/2012/08/22/steel-city-ruby-conf-review-part-1-its-about-people/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/22/steel-city-ruby-conf-review-part-1-its-about-people/</guid><pubDate>Wed, 22 Aug 2012 11:29:00 GMT</pubDate><content:encoded>&lt;p&gt;The inaugural &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://steelcityrubyconf.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://steelcityrubyconf.org/&quot;&amp;gt;Steel City Ruby Conf&amp;lt;/span&amp;gt; was over two weeks ago. I was so excited by it that I vowed to change my life in several ways. Although I was way too busy with work, and a wedding to fly to (that Abby and I expanded into a full-blown vacation), I knew that the excitement would fade if I did not do at least one thing in order to remember and revisit the experience, so I wrote up a &lt;a href=&quot;/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/&quot;&gt;very short blog post&lt;/a&gt; immediately after the conference in order to publicly commit to both &lt;em&gt;writing&lt;/em&gt; more and also &lt;em&gt;doing&lt;/em&gt; something new.&lt;/p&gt;
&lt;p&gt;Here&apos;s part 1 of my actual review of the conference.&lt;/p&gt;
&lt;h2&gt;The keynote of Corey Haines&lt;/h2&gt;
&lt;p&gt;The conference opened on Friday, August 3, after some delays because of the long registration line, with Corey Haines giving the keynote.&lt;/p&gt;
&lt;p&gt;This was my first Ruby conference, and I had never seen &lt;a href=&quot;https://web.archive.org/web/20130825081313/http://www.coreyhaines.com/&quot;&gt;Corey Haines&lt;/a&gt; before, but I knew of him as one of the founders of &lt;a href=&quot;https://coderetreat.org/&quot;&gt;Coderetreat&lt;/a&gt;, an unusual workshop an instance of which I attended and &lt;a href=&quot;/blog/2011/12/06/global-day-of-coderetreat-pittsburgh/&quot;&gt;reported on last December&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The talk was geared toward people attending a conference for the first time, but having gone to some conferences in the past, I found it informative and inspiring nonetheless.&lt;/p&gt;
&lt;p&gt;Corey pointed out that the primary purpose of a conference is to &lt;em&gt;meet people&lt;/em&gt;. We all really know this; there is only so much one can actually get out of sitting around at technical talks (I will write more about that in part 2 of this series).&lt;/p&gt;
&lt;h3&gt;Introversion versus shyness&lt;/h3&gt;
&lt;p&gt;Yet, as Corey pointed out, many of us are &lt;em&gt;introverts&lt;/em&gt;. He identified himself as an introvert. And we also tend to be &lt;em&gt;shy&lt;/em&gt;. Corey correctly pointed out that there is a substantial &lt;a href=&quot;https://www.google.com/search?q=introversion+shyness&quot;&gt;difference between the concepts of introversion and shyness&lt;/a&gt;, and that introverts don&apos;t also have to act shy.&lt;/p&gt;
&lt;p&gt;I&apos;m an introvert; &lt;strong&gt;that is part of who I am and will never change&lt;/strong&gt;. I have also battled shyness all my life; in fact, my level of shyness was for decades extreme and severe and hampered me greatly. I am far less shy now than I have been in the past, and I continue to work on being even less so.&lt;/p&gt;
&lt;h3&gt;A call to action&lt;/h3&gt;
&lt;p&gt;Corey advised us &lt;em&gt;not to eat alone&lt;/em&gt;. He also said to &lt;em&gt;sit with people you don&apos;t already know&lt;/em&gt;, because why should we go to a conference and just hang out with our colleagues whom we already see every day? He even challenged us to &lt;em&gt;meet twenty new people&lt;/em&gt; over the conference weekend.&lt;/p&gt;
&lt;h2&gt;My response to Corey&apos;s keynote&lt;/h2&gt;
&lt;h3&gt;At the conference&lt;/h3&gt;
&lt;p&gt;Inspired by Corey, I did many things differently at this conference than I have done in the past.&lt;/p&gt;
&lt;p&gt;I decided that in between talks, I would do some switching of where I sat, so that I would mix with more new people.&lt;/p&gt;
&lt;p&gt;I decided that in between talks, I would, apart from getting up to take a break, actively seek out conversation.&lt;/p&gt;
&lt;p&gt;I knew I would not meet twenty new people (I did not take Corey&apos;s advice literally but rather in spirit), but I did end up meeting and talking with more new people in two days than I usually do in several months.&lt;/p&gt;
&lt;p&gt;I took the opportunity also to talk much more in depth with local people I had met in the past but mostly had engaged in small talk with.&lt;/p&gt;
&lt;p&gt;I ate lunch with different groups of people, all new and some from out of town. At Saturday&apos;s party sponsored by ModCloth, I met yet more people while eating appetizers.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-08-23)&lt;/h4&gt;
&lt;p&gt;One personal detail I did not make note of here in this post was that I approached Jim Weirich and thanked him for the time he came to Pittsburgh to give a talk, and played music on ukulele with some members of the Pittsburgh Ruby user group, before giving his talk, &quot;The Polite Programmer&apos;s Guide to Ruby Etiquette&quot; (which was a fine presentation I learned a lot from). This was on December 2, 2010, and was my second attendance of the group (my first was the November 4, 2010 meeting). I was taken totally by surprise by this musical prelude to the presentation! My gut impression was that any community that celebrated having fun with music was one worth continuing to check out.&lt;/p&gt;
&lt;p&gt;Not only did this fun draw me into the Ruby group, but also it played a role in encouraging me to take up playing music, and indeed, ukulele eventually! &lt;a href=&quot;/blog/2013/08/23/another-unexpected-life-change-one-month-of-learning-to-play-ukulele/&quot;&gt;The full story is here&lt;/a&gt;. One part of the story is in 2012, I was afraid to participate in the lunch time music jam with Jim and other people, but in 2013, I stepped up, and played ukulele.&lt;/p&gt;
&lt;h3&gt;After the conference&lt;/h3&gt;
&lt;p&gt;I followed more people on Twitter and began connecting with more people (local and not) with LinkedIn.&lt;/p&gt;
&lt;p&gt;I vowed to start giving talks at local user groups, starting with the local Ruby group.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Corey Haines really set the tone for my experience of Steel City Ruby Conf. His keynote was a catalyst for my setting in motion some changes I already &quot;knew&quot; I should be making in my life but out of inertia had not followed up on. I thank him for saying what needs to be said.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;If you were at Steel City Ruby Conf&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;If you were at Steel City Ruby Conf, I want to know what you got out of it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did you reflect on your experience and share it with someone, through private conversation or through a public discussion?&lt;/li&gt;
&lt;li&gt;How is your personal or work life, two weeks later, different as a result?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;(Update of 2013-08-23)&lt;/h2&gt;
&lt;p&gt;I never finished writing a &quot;Part 2&quot; to this post. It was supposed to focus on the technical side of the conference, with the observation that it was not just about Ruby, but about practices that are independent of programming language and/or have to do with larger issues in the world of software development beyond the &quot;coding&quot; part.&lt;/p&gt;
</content:encoded></item><item><title>Returning to chess, a lifetime sport: playing in the Pittsburgh Chess League</title><link>https://franklinchen.com/blog/2012/08/21/returning-to-chess/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/21/returning-to-chess/</guid><pubDate>Tue, 21 Aug 2012 10:16:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/uscf-life-member-certificate.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So far, I&apos;ve only &lt;a href=&quot;/categories/chess/&quot;&gt;written a few times here about chess&lt;/a&gt;, because over a year ago, I deliberately decided (for the nth time) to quit my involvement in chess.&lt;/p&gt;
&lt;p&gt;But because this summer, I finally finished paying for and receiving my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.uschess.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.uschess.org/&quot;&amp;gt;United States Chess Federation (USCF)&amp;lt;/span&amp;gt; &lt;em&gt;life membership&lt;/em&gt;, I decided to put some chess back into my life.&lt;/p&gt;
&lt;h2&gt;Chess sometimes has been the most important thing in my life&lt;/h2&gt;
&lt;p&gt;I feel ambivalent about admitting it, but at many points over the decades, &lt;strong&gt;chess was the most important thing in my life&lt;/strong&gt;. For example, I wrote my college application essay about how chess is a science, an art, and a sport. And this wasn&apos;t only because the college that I ended up attending was also the one with a strong chess club that had a year earlier sent me a letter encouraging me to apply and join the chess team.&lt;/p&gt;
&lt;p&gt;It turned out that not long after arriving in college, my focus turned toward my studies, and apart from a some casual play in my dorm, and one appearance at the chess club, I never even &lt;em&gt;looked&lt;/em&gt; at chess again for twenty years.&lt;/p&gt;
&lt;p&gt;So it&apos;s actually possible to quit. But I came back in 2005 for a reason: I missed it.&lt;/p&gt;
&lt;h2&gt;Chess as hobby, as sport&lt;/h2&gt;
&lt;p&gt;I have determined that chess will &lt;em&gt;never&lt;/em&gt; again will be one of the most important things in my life. That said, there&apos;s no reason why I can&apos;t keep it as a fairly casual hobby. I think of it now as a sport more than anything else. That&apos;s why I decided recently to return to a little bit of tournament play, in the spirit of sport. After years of absence from the &lt;a href=&quot;https://www.pitt.edu/~schach/ChessPA/ChessLeague/wpapcl.htm&quot;&gt;Pittsburgh Chess League&lt;/a&gt;, which is organized into team matches that occur once a month, I have signed on as an &quot;alternate&quot; player for the CMU Tartans team. As a member of the team who is not on the top four boards, I will not be required to play every month, so the time commitment is low.&lt;/p&gt;
&lt;h3&gt;Introduction to the Pittsburgh Chess League&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-chess-league-2007-other.jpg&quot; alt=&quot;Pittsburgh Chess League round in fall 2007&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;d like to take the opportunity to promote the Pittsburgh Chess League, which is a great way for chess enthusiasts of &lt;em&gt;all ages&lt;/em&gt; and of &lt;em&gt;all strengths&lt;/em&gt; to have fun playing in teams one Sunday afternoon a month, starting in September and ending in April for summer break. It&apos;s especially great seeing the number of happy young children who play in the lower divisions, in addition to those who have over years become strong and play in the upper divisions (many of whom have beaten me). Please contact &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pitt.edu/~schach/ChessPA/wpastate.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pitt.edu/~schach/ChessPA/wpastate.htm&quot;&amp;gt;Tom Martinak&amp;lt;/span&amp;gt; if you have any interest in participating in this venerable Pittsburgh chess tradition and would like to join a team or create your own.&lt;/p&gt;
&lt;h3&gt;My previous years in the Pittsburgh Chess League&lt;/h3&gt;
&lt;p&gt;The team I was on years ago, Rocky&apos;s Rooks, has sadly disbanded. I played for Rocky&apos;s Rooks for a couple of years as one of the top boards.&lt;/p&gt;
&lt;p&gt;We actually won the Pittsburgh Chess League in the 2006-2007 season, and I won the second board prize:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-chess-league-2006-champion-rockys-rooks.jpg&quot; alt=&quot;Pittsburgh Chess League 2006-2007 champion: Rocky&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-chess-league-2006-second-board.jpg&quot; alt=&quot;Franklin with Pittsburgh Chess League 2006-2007 second board trophy&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Those were the days when I was very competitive.&lt;/p&gt;
&lt;h3&gt;CMU Tartans team&lt;/h3&gt;
&lt;p&gt;But now, as a second alternate, I will most likely play for team points only when our top two players choose to skip a round because of schedule conflicts or because of weak competition they choose not to waste their time facing.&lt;/p&gt;
&lt;p&gt;Our first board is &lt;a href=&quot;https://en.wikipedia.org/wiki/Ruan_Lufei&quot;&gt;Ruan Lufei&lt;/a&gt;, a titled &lt;a href=&quot;https://en.wikipedia.org/wiki/Woman_Grand_Master#Woman_Grandmaster_.28WGM.29&quot;&gt;Woman Grandmaster&lt;/a&gt; who was runner-up in the last world women&apos;s championship, and our second board is &lt;a href=&quot;https://web.archive.org/web/20111227052642/http://www.saintlouischessclub.org/player-bio/2011-us-womens-championship/wim-iryna-zenyuk&quot;&gt;Iryna Zenyuk&lt;/a&gt;, a titled &lt;a href=&quot;https://en.wikipedia.org/wiki/FIDE_titles#Woman_International_Master_.28WIM.29&quot;&gt;Woman International Master&lt;/a&gt;. Both are PhD graduate students at Carnegie Mellon, so they are very busy young women!&lt;/p&gt;
&lt;p&gt;I&apos;d like to thank &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://triblive.com/x/pittsburghtrib/news/s_717323.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://triblive.com/x/pittsburghtrib/news/s_717323.html&quot;&amp;gt;Jeff Quirke&amp;lt;/span&amp;gt; for taking me into the CMU Tartans team as an alternate player.&lt;/p&gt;
&lt;h2&gt;Other creative outlets for chess&lt;/h2&gt;
&lt;p&gt;Although I am now clearly retired from the most serious competition in chess, I have ideas of combining chess with other passions of mine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;writing&lt;/li&gt;
&lt;li&gt;theoretical analysis&lt;/li&gt;
&lt;li&gt;teaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have done a little bit of &lt;a href=&quot;/categories/chess/&quot;&gt;writing about chess here&lt;/a&gt; and will continue to do so now and then. I have unpublished chess opening novelties that I may present. And finally, I would like to explore options for teaching chess: I have enjoyed helping some friends improve their enjoyment, understanding, and performance, and wish to pursue further the teaching/coaching role.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;My lifetime membership in the US Chess Federation reminds me that I&apos;m not done with chess in my life, although my days as a serious competitor are over. I&apos;m transitioning into different roles and attitudes. This isn&apos;t easy, but chess is too fun to just give up entirely because one facet of it is over. I look forward to playing some fun chess in the Pittsburgh Chess League and continuing to also engage in the game outside of just personal play.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-21)&lt;/h3&gt;
&lt;p&gt;Three years later, I made a focused push, temporarily putting many
things aside in my life, in the fall of 2015 to &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieve my US Chess
National Master&lt;/a&gt; title, and finally made it, a dream come true.&lt;/p&gt;
&lt;p&gt;Also, I have been teaching private lessons since 2013.&lt;/p&gt;
</content:encoded></item><item><title>The inaugural Liberty Mile: a review of Pittsburgh&apos;s first road mile race, a great community event</title><link>https://franklinchen.com/blog/2012/08/17/the-inaugural-liberty-mile-a-review-of-pittsburghs-first-road-mile-race/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/17/the-inaugural-liberty-mile-a-review-of-pittsburghs-first-road-mile-race/</guid><pubDate>Fri, 17 Aug 2012 21:44:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/liberty-mile-2012.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight I was really excited to race in, and also watch, the inaugural &lt;a href=&quot;https://web.archive.org/web/20240702010808/https://libertymile.org/&quot;&gt;GNC Live Well Liberty Mile&lt;/a&gt;, a road race that runs along Liberty Avenue in Pittsburgh, starting from the Strip District and ending downtown.&lt;/p&gt;
&lt;p&gt;It&apos;s about time Pittsburgh had a road mile race! Pittsburgh already has the wonderful&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://rungreatrace.com/&quot;&gt;Great Race&lt;/a&gt;, which &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;I ran for my ninth time last year&lt;/a&gt; and will run for my tenth time this year (good think I pre-registered early, because today it &lt;a href=&quot;https://pittsburgh.cbslocal.com/2012/08/17/2012-great-race-officially-sold-out/&quot;&gt;already sold out!!&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmarathon.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmarathon.com/&quot;&amp;gt;Pittsburgh Marathon&amp;lt;/span&amp;gt;, which I&apos;ve run once.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this event is here to stay. Here&apos;s my report on the event as both a runner and a spectator.&lt;/p&gt;
&lt;h2&gt;My history in the mile&lt;/h2&gt;
&lt;p&gt;I&apos;ve run a mile race only twice before in my life, and that was on the track at Carnegie Mellon University. A decade ago, in June 2002, I ran in my first track mile, the Pittsylvania Mile on that track, and did it in 6:22. I could have run faster, but because of total inexperience, went out way too fast for the first quarter, doing it in 1:22, and paying the price in the other laps.&lt;/p&gt;
&lt;p&gt;The following year, 2003, in probably my peak condition in my life, I improved, doing the Pittsylvania Mile in 6:10. I still went out too fast, in 1:26, had no sense of rhythm, slowed down a lot to try to compensate for going out too fast, then had too much energy at the end, which was wasted. Again, I had not trained for the mile distance at all, but happened to be in my peak condition anyway just because I was still conditioned from my intense training for the Pittsburgh Marathon that I had just done in May (my lifetime personal best in the 5K of 20:37 was achieved just two weeks after the Pittsburgh Marathon).&lt;/p&gt;
&lt;p&gt;So I never broke a 6-minute mile during my peak.&lt;/p&gt;
&lt;p&gt;That was the last timed mile I ever ran, until tonight.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;Again, I wasn&apos;t prepared for the mile at all. Apart from not having run much because of a non-running injury to my left leg that happened a month ago (from which I have fully recovered), I have just come back from a week of unexpected travel and am still kind of recovering from that. And no speed work to speak of in the past month, other than a few random sprints (which I do for general physical conditioning when I don&apos;t do much else).&lt;/p&gt;
&lt;p&gt;I had no idea what &quot;mile pace&quot; feels like. I just figured I would run a bit faster than 5K pace (which I always have a reasonable feel for).&lt;/p&gt;
&lt;p&gt;I hoped to finish somewhere near 6:30.&lt;/p&gt;
&lt;h2&gt;Dr. Vonda Wright&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://vondawright.com/images/stories/vonda-at-work.png&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://vondawright.com/images/stories/vonda-at-work.png&quot;&amp;gt;[image: Vonda Wright]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I bumped into &lt;a href=&quot;https://vondawright.com/&quot;&gt;Dr. Vonda Wright&lt;/a&gt; while heading toward the start line, and thanked her for her support of those of us who care about maintaining our health as we get older. I want to plug her great work in promoting lifetime fitness, especially for those over 40. She has written a book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://vondawright.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=62&amp;amp;Itemid=83&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://vondawright.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=62&amp;amp;Itemid=83&quot;&amp;gt;&quot;Fitness After 40&quot;&amp;lt;/span&amp;gt; which is pretty good and has a lot of scientifically-backed tips on remaining strong and vital and even reversing what used to be considered &quot;normal aging&quot;.&lt;/p&gt;
&lt;p&gt;I heard about Dr. Wright from a &lt;a href=&quot;/blog/2012/01/20/cmu-fitness-challenge-keynote-lecture-by-vonda-wright-stay-strong-at-any-age/&quot;&gt;CMU &quot;healthy campus week&quot; talk she gave this January&lt;/a&gt;. Even though I had already known some of what she advocated, I was impressed that she summarized well the whole gamut of what we now know to be effective ways to increase strength and flexibility and avoid injury. Again, I recommend her books to anyone of any age who wants to be smart about diet and exercise and more than that, a whole philosophical approach to living in general.&lt;/p&gt;
&lt;h2&gt;The race, in waves&lt;/h2&gt;
&lt;p&gt;The race was held in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.libertymile.org/Race-Waves.asp&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.libertymile.org/Race-Waves.asp&quot;&amp;gt;waves separated by ten or twenty minutes&amp;lt;/span&amp;gt;. This is obviously necessary because of the variation in people&apos;s speed. The slower, open waves were held first, and the elite racers were in the final waves.&lt;/p&gt;
&lt;h3&gt;Early waves&lt;/h3&gt;
&lt;p&gt;I arrived to pick up my race number when the first wave was already in progress. There was a bit of confusion in the first two waves because a good number of people arrived late or were unclear about when to run, and therefore missed the first wave. Most of these seemed to be kids. By the way, it was great to see so many kids at the Liberty Mile. Running a 5K (3.1-mile) race can be daunting for a kid, but a single mile is surely a great introduction to many kids (and adults too!) to the joy of running. I think it is really great that the Liberty Mile is not just an elite race, but also a race anyone can participate in.&lt;/p&gt;
&lt;h3&gt;My race, in the Masters wave&lt;/h3&gt;
&lt;p&gt;The Masters &quot;Winning at 40+&quot; wave was the first qualification-required wave.&lt;/p&gt;
&lt;p&gt;I ran in this serious, competitive wave, not one of the open waves, because I easily qualified to run in this wave, whose requirement was proof of ability to run an 8-minute mile.&lt;/p&gt;
&lt;p&gt;Lining up, I saw a lot of really fit-looking people in this wave, many of whom were clearly well over 40. In any case, anyone who looked anywhere near my age (42) was obviously going to kick my butt all the way to the moon. There was no chance for an age-group prize for me today! No problem: as a non-elite racer, I don&apos;t race for prizes, but just to do the best that I can.&lt;/p&gt;
&lt;p&gt;I ended up running &lt;a href=&quot;https://runhigh.com/2012RESULTS/R081712AD.html&quot;&gt;6:38.8&lt;/a&gt;, good for 26th place out of 27 in my age group, ha! I was disappointed that I didn&apos;t make 6:30 as I had originally hoped when I signed up a month ago, but that&apos;s OK.&lt;/p&gt;
&lt;p&gt;In the first quarter, I ran 1:29; oops, went out too fast yet again! &lt;strong&gt;I hereby pledge that before the next mile race I run, I will actually train and learn not to go out too fast.&lt;/strong&gt; There is no excuse for running three mile races going out too fast. I don&apos;t go out too fast in 5K or longer distances, after all.&lt;/p&gt;
&lt;p&gt;In the second and third quarters, 1:46 and 1:46 showed that I had gone out too fast. I did save something for the sprint finish, however, and did the final quarter in 1:38.&lt;/p&gt;
&lt;p&gt;A serious and unexpected problem I had while running this race was that my mouth got very dry and I had trouble breathing as a result. It was pretty weird. I don&apos;t exactly remember this in my mile races from a decade ago. I did hydrate considerably before the race.&lt;/p&gt;
&lt;p&gt;Also, of course, as I do in 5K races, I felt like puking during the final quarter, and my arms were getting tingly and losing sensation. It&apos;s just what happens to me in the final push. I believe there is no way to avoid feeling like puking if I&apos;m running as hard as I can, but I have a feeling that the problem with my arms has to do with my tightening up (rather than relaxing) and flailing around. I plan to try to fix that for my next races this month and next month; what is required, clearly, is disciplined speed work, which is something I have not done in years.&lt;/p&gt;
&lt;h3&gt;Enjoying being a spectator&lt;/h3&gt;
&lt;p&gt;The really cool thing about a mile race held in waves is that you get to be a spectator for the remaining waves after you&apos;re done. In a 5K race or longer, there aren&apos;t any heats and you never get to be a spectator.&lt;/p&gt;
&lt;p&gt;I was wowed watching the &quot;Unstoppable&quot; under-40 wave whose qualification time was running faster than 6:00. Watching good, fast running is a real pleasure to me, like watching skilled dancers.&lt;/p&gt;
&lt;p&gt;Also a treat was getting to watch the female elite wave and male elite wave. These &lt;a href=&quot;/blog/2012/07/27/why-i-do-not-watch-the-olympics-any-more/&quot;&gt;Olympic&lt;/a&gt;-caliber runners looked so elegant with their long, powerful strides.&lt;/p&gt;
&lt;h2&gt;My shoes&lt;/h2&gt;
&lt;p&gt;I&apos;d been considering running a race soon wearing my &lt;a href=&quot;/blog/2012/07/26/walking-and-running-in-invisible-shoes-a-review/&quot;&gt;Invisible Shoes huaraches&lt;/a&gt;, but without testing them out with speed work, I&apos;m not ready to go there yet.&lt;/p&gt;
&lt;p&gt;So I wore the shoes I&apos;ve been &lt;a href=&quot;/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/&quot;&gt;road racing in for almost a full year now&lt;/a&gt;, the Vibram FiveFingers Bikila LS. They worked out just fine. I didn&apos;t get blistered because it was cool and it was only a mile. Next month I&apos;ll see whether I get blistered in the Great Race &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;the way I did last year&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Race organization&lt;/h2&gt;
&lt;p&gt;I thought the race was pretty well-organized, especially given that this was the first time such a race has been held in Pittsburgh. Thanks go to the sponsors, the timers, the announcers, the volunteers who handed out race numbers and stocked water and bagels at the finish line and handed out goodie bags and T-shirts, the police officers who closed the roads and lanes where necessary and directed traffic and kept Liberty Avenue clear, the spectators who cheered, the providers of the many port-a-johns near the start line, the &lt;a href=&quot;https://bringbackthemile.com/news/detail/Miller_and_Kampf_Win_GNC_Live_Well_Liberty_Mile&quot;&gt;elite runners who put on a display of amazing running&lt;/a&gt;. Everyone without question was helpful and friendly. The whole experience was just wonderful.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The inaugural GNC Live Well Liberty Mile was a great event. I hope it is the beginning of a Pittsburgh tradition that, like the Great Race and the Pittsburgh Marathon, will continue for years and decades to come.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-09)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/08/09/getting-up-when-reality-punches-you-in-the-face-running-the-second-liberty-mile-in-pittsburgh/&quot;&gt;I ran the second Liberty Mile a year later.&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Playing Baroque flute at my friend&apos;s wedding reception</title><link>https://franklinchen.com/blog/2012/08/12/playing-baroque-flute-at-my-friends-wedding-reception/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/12/playing-baroque-flute-at-my-friends-wedding-reception/</guid><pubDate>Sun, 12 Aug 2012 23:50:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/new-mexico/wedding.jpg&quot; alt=&quot;Steve and Kelly&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today was a very special day.&lt;/p&gt;
&lt;p&gt;It was the wedding day of one of my best friends, Steve, whom I first met in Pittsburgh over a decade ago. Abby and I were thrilled to have been able to travel to be there for Steve and to meet and get to know Kelly.&lt;/p&gt;
&lt;p&gt;It suddenly started raining very hard at the outdoor wedding, which caused a lot of improvised changes in plans, but the rain cleared up eventually and everything went well: the details do not matter when we&apos;re talking about love and friendship and family. It was a lovely ceremony; the couple customized their own vows, which were funny as well as deeply serious and moving.&lt;/p&gt;
&lt;h2&gt;Planning for my small musical role&lt;/h2&gt;
&lt;p&gt;I had a small role to play. When Steve had told me about the wedding, I had immediately asked him if he would like me to play some music for him (since all the weddings I&apos;ve been to have involved a DJ or some friend handling iTunes off a laptop at some point). Eventually, after more important details were planned out, such as a string quartet hired to play before the wedding and during the ceremony, it was decided that I could play for maybe ten minutes after dinner at the reception in order to transition to the toasts.&lt;/p&gt;
&lt;p&gt;I decided to bring my plastic &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; as being the best instrument to withstand easy travel to New Mexico.&lt;/p&gt;
&lt;p&gt;So I memorized some of the traditional music I&apos;ve played before on Baroque flute, taking selections from an &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;Irish/Scottish/Acadian set of scores&lt;/a&gt; as well the &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;French traditional dance music I got from Gregory&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How the music situation turned out&lt;/h2&gt;
&lt;p&gt;First of all, because of the rain, the string quartet had to stay inside, so there was no music for the ceremony itself, unfortunately.&lt;/p&gt;
&lt;p&gt;Second, because of the rain, the sound system driven in by the bride&apos;s brother got wet and was inoperable, so there was not going to be an iTunes-based background music during the dinner reception.&lt;/p&gt;
&lt;p&gt;So ironically, my little music performance after dinner turned out to have some more prominence than I expected, simply because of the rain. I played a selection of songs, solo, including spontaneous ornamentation during the repeats, of course. I did not play entirely without stumbling, but was pretty inspired because Steve&apos;s niece, about two years old, ended up turning around on her chair, standing up to face me, and smiling and dancing to the music!&lt;/p&gt;
&lt;p&gt;I was touched that a number of people came up to me later and said they enjoyed the performance. Somehow, in a single moment, I remembered why I have chosen the musical path I deliberately put myself on &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;earlier this year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/new-mexico/franklin-flute.jpg&quot; alt=&quot;Franklin playing Baroque flute&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt very honored to be able to attend my friend Steve&apos;s wedding and to provide a bit of musical entertainment for the guests at the reception. And to see his niece all excited and dancing while I played basically made my year.&lt;/p&gt;
</content:encoded></item><item><title>The first Steel City Ruby Conf: an amazing experience</title><link>https://franklinchen.com/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/07/the-first-steel-city-ruby-conference-an-amazing-experience/</guid><pubDate>Tue, 07 Aug 2012 01:05:00 GMT</pubDate><content:encoded>&lt;p&gt;(Updated 2012-08-22)&lt;/p&gt;
&lt;p&gt;Last Friday and Saturday, I attended the intense new local tech conference in Pittsburgh, the first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://steelcityrubyconf.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://steelcityrubyconf.org/&quot;&amp;gt;Steel City Ruby Conference&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It was one of the most amazing, unusual experiences in my entire life.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ll write up more about this conference in a week or two, as I have a lot to do right now.&lt;/p&gt;
&lt;p&gt;For now, I&apos;m just announcing that I have been inspired to plan to do many things I&apos;ve never done before. One of these many things is to finally give a talk at the local &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby group&amp;lt;/span&amp;gt;, after almost two years of lurking there.&lt;/p&gt;
&lt;p&gt;It&apos;s time for me to contribute by doing more than showing up the meetings and sometimes asking questions and participating in discussions. It&apos;s time to be more active. So I&apos;ve committed to giving a talk on Thursday, September 6, 2012. I still don&apos;t know all the details, but I have decided that the topic will be &lt;code&gt;nil&lt;/code&gt;, and I will approach the topic through historical, theoretical, comparative, philosophical, and practical points of view.&lt;/p&gt;
&lt;p&gt;I&apos;ll give more details later this month.&lt;/p&gt;
&lt;h2&gt;Update of 2012-08-22&lt;/h2&gt;
&lt;p&gt;Here is &lt;a href=&quot;/blog/2012/08/22/steel-city-ruby-conf-review-part-1-its-about-people/&quot;&gt;part 1 of my review of Steel City Ruby Conf&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The paradox of practice: it&apos;s harder to go slow than go fast</title><link>https://franklinchen.com/blog/2012/08/02/the-paradox-of-practice-its-harder-to-go-slow-than-go-fast/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/08/02/the-paradox-of-practice-its-harder-to-go-slow-than-go-fast/</guid><pubDate>Thu, 02 Aug 2012 23:09:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, by coincidence, I&apos;ve seen a lot of articles about the benefits of &lt;em&gt;slow&lt;/em&gt; practice of a skill, whether in music or martial arts. Some good links that really apply to all physical skills:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bulletproofmusician.com/is-slow-practice-really-necessary/&quot;&gt;Is slow practice really necessary?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://musiciansway.com/blog/2011/02/a-different-kind-of-slow-practice/&quot;&gt;A different kind of slow practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://billplakemusic.org/2012/07/18/keep-this-aim-in-mind-when-practicing-slowly/&quot;&gt;Keep this aim in mind when practicing slowly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://themartialartscoach.com/train-slow-to-learn-fast&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://themartialartscoach.com/train-slow-to-learn-fast&quot;&amp;gt;Train slow to learn fast&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We live in an era of &lt;em&gt;speed&lt;/em&gt;. It&apos;s gotten to the point that there have arisen some movements against speed, for &lt;a href=&quot;https://en.wikipedia.org/wiki/Slow_Movement&quot;&gt;&lt;em&gt;slow&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a confession to make: it&apos;s really hard for me to practice music slowly. I myself am guilty of often practicing music too quickly, not making the most of my practice. For a while, when I was starting to play music again after an absence of three decades, I was pushing myself with a &lt;a href=&quot;/blog/2011/09/29/a-musicians-best-friend/&quot;&gt;metronome&lt;/a&gt;. That was useful for a while, but eventually I realized I had to slow down.&lt;/p&gt;
&lt;p&gt;I am now actually trying to apply the advice in the articles mentioned and &lt;em&gt;really&lt;/em&gt; slow down in music. Because I know in my heart that slowing down works.&lt;/p&gt;
&lt;p&gt;When I think about it, I have successfully used slow practice in many fields in the past, from ballroom dance to running to chess. I&apos;d like to give examples of what slow practice actually means in each of these and how I attribute my success to it.&lt;/p&gt;
&lt;h2&gt;Ballroom dance&lt;/h2&gt;
&lt;p&gt;When I was learning &lt;a href=&quot;/categories/ballroom-dance/&quot;&gt;ballroom dance&lt;/a&gt; over a decade ago, I started out as a very uncoordinated, clumsy, confused beginner in the &lt;a href=&quot;https://cmubdc.org/&quot;&gt;Carnegie Mellon University Ballroom Dance Club&lt;/a&gt;. I was &lt;em&gt;very lucky&lt;/em&gt; that I stumbled around only about a month before I started getting quality professional instruction in a small group setting (a benefit of the club) supplementing the large group classes (which I had found barely helpful, frankly).&lt;/p&gt;
&lt;h3&gt;Rumba to cha cha&lt;/h3&gt;
&lt;p&gt;I will never forget the Latin (International style) dance technique lessons of &lt;a href=&quot;https://www.artandstyledancestudio.com/&quot;&gt;Rozana Sweeney&lt;/a&gt;. She basically treated us as she would little kids intending to become professional ballroom dancers. Unlike in the group classes at CMU, where we were just shown steps and patterns and told to go do them, we were shown a very limited repertoire of movements that were broken down to atomic components (so much as that is possible for a continuous art form) and practiced &lt;em&gt;very slowly&lt;/em&gt;. We were not allowed to move on until we had at least some rudimentary &quot;mastery&quot; of the &quot;basics&quot;. I&apos;d never had any dance experience before, so it was quite eye-opening how effective this stern approach to instruction was.&lt;/p&gt;
&lt;p&gt;We started off practicing the International rumba basics. We were taught about straight legs, bent legs, foot turnout, hip rotation, contrary motion of body and arms, etc. We went through the movements so slowly (to beats or music much slower than the actual standardized-tempo dance music) that many of us lost balance and tripped over ourselves. &lt;em&gt;It is harder to move slow than fast.&lt;/em&gt; Balance is important. If you go fast, you cheat because you can move without full balance.&lt;/p&gt;
&lt;p&gt;Eventually we moved on to cha cha, which is a rather faster dance, but similar to a sped-up rumba with a very fast extra three &quot;cha cha cha&quot; steps. I couldn&apos;t help noticing how my cha cha &quot;magically&quot; improved, &lt;em&gt;without ever practicing cha cha&lt;/em&gt;, just from practicing rumba so much. The reason was clear: making the slow precise is the key to making the fast precise. If the slow is not efficient and exact, then going fast will only result in a magnification of inefficiency and sloppiness. I believe nobody can dance a good cha cha who can&apos;t also dance a good rumba. That&apos;s just how it works.&lt;/p&gt;
&lt;h3&gt;Slow waltz and foxtrot to quickstep and Viennese waltz&lt;/h3&gt;
&lt;p&gt;Focusing on the slow was also true of our International standard dance instruction, which came from some other instructors.&lt;/p&gt;
&lt;p&gt;We started off with slow waltz and foxtrot, working on the technique in slow motion, before dancing the fast quickstep and Viennese waltz. The fast dances are quite strenuous (as a runner, I compare dancing them with a partner to be as tiring as running) and things fall apart if you haven&apos;t figured out how to move efficiently and together slowly first.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;p&gt;I improved very quickly in ballroom dance once I started having the serious technique lessons and worked on basic movements by myself outside of class, repeatedly. I still feel I had a lot of potential improvement still in me, because of the foundational slow practice, at the time &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;when I quit competitive ballroom dancing&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Running&lt;/h2&gt;
&lt;p&gt;When I started &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt;, I was 29 years old and had been sedentary all my life. I didn&apos;t know what I was doing when I first started running. I would just go out and run hard, get out of breath very quickly, stop, and go on. I got sore this way, and also did not actually improve my speed much during my first sloppy year of running. I only got &lt;em&gt;much faster&lt;/em&gt; when I learned the science of how to run &lt;em&gt;slowly&lt;/em&gt;. I got much faster than friends I was running with who were still running the unsystematic way, at a faster training pace than me.&lt;/p&gt;
&lt;p&gt;It is possible to run too slowly for benefit. But the trick is to run slowly enough in order to be relaxed, observe one&apos;s form, correct it, and put in the time to slowly build up endurance. Running too fast only led me to go for a shorter period of time, execute with poor form, and get injured.&lt;/p&gt;
&lt;p&gt;It is not actually easy to run slowly, properly. It is trivial to run slowly sloppily. Many people you see on the roads or in the parks who are &quot;jogging&quot; are going slowly and sloppily. Stomping loudly into the ground, head tilted back, slow long strides: that&apos;s not a good way to run slowly. If you want to run slowly, the right way to do it is to adopt a good upright, balanced posture, be aware of landing under the hip, using the glutes and not the knees, and most important, making sure the cadence is &lt;em&gt;not too slow&lt;/em&gt;. In other words, slow doesn&apos;t mean everything is slow; it means slowing down some variables but maintaining structural and dynamic integrity of the whole. Taking a super long stride slowly violates the physics of how to move.&lt;/p&gt;
&lt;p&gt;Needless to say, for optimal training one must also run fast. Again, here the principle of adjusting variables applies, however. Running very fast for a long time is not the most effective way to train. The most effective way to train is known to be &lt;em&gt;interval training&lt;/em&gt;, in which you run fast but for a short period of time, then rest, then continue. In a sense, here the &quot;slow&quot; variable is distance covered while not resting. In slow running, the &quot;slow&quot; variable is the speed, not the distance.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;p&gt;After a couple of years, upon finding good running technique books and Web sites, and applying them, I went from nothing to winning age-group medals and trophies in local races in Pittsburgh (admittedly not so competitive in my age group). I am a believer in the importance of having learned to run sufficiently slowly when the training situation calls for it.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;Most &lt;a href=&quot;/categories/chess/&quot;&gt;chess&lt;/a&gt; players, myself included, enjoying playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Fast_chess&quot;&gt;fast chess&lt;/a&gt;. Five-minute games are exciting and fun because you can play so many of them in a given time and there is little time to think. But we all know that playing too much blitz chess can harm one&apos;s &quot;serious&quot; slow chess games, games in which you may get two hours of time on your clock rather than five minutes. The problem, of course, is that getting used to making moves without thinking much does not train you to know how to think more deeply when you have much more time to use.&lt;/p&gt;
&lt;p&gt;Learning to play chess slowly is a challenge. I was never very good at playing slowly as a child, because I was impatient, and did not have a chess teacher to discipline me. When I returned to playing serious tournament chess, twenty years after not playing a single game, I suffered tremendously, because I had no idea how to make use of time during slow games. But with practice, analyzing games at home slowly in order to simulate the process, I learned how to look more deeply in the tree of possible game continuations. I would give myself three minutes, say, to do an analysis, and then computer-check it.&lt;/p&gt;
&lt;p&gt;I noticed that getting better at playing slowly actually helped me get better at playing quickly too (to some extent). There is a statistical correlation, indeed, between the regular strength of a chess player (as measured by an official rating) and his or her speed strength (as measured by an official speed rating). This should not be surprising: in distance running, there is a correlation between speed at running a mile and speed at running a marathon. The mile and marathon are very different distances, but a certain kind of fundamental efficiency is involved in both.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;p&gt;Just over a year after I started playing chess again, initially poorly, my practice in playing slow chess at Tuesday night &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; tournaments (at two hours per game for each player) in combination with some (but not too much) casual fast chess at the club resulted in my surprising excellence at &quot;slow fast&quot; chess: I won the &lt;a href=&quot;https://pscfchess.org/results/06040808.htm&quot;&gt;2006 Pennsylvania State Game/29 Championship&lt;/a&gt; with a perfect score, and also won the &lt;a href=&quot;https://pscfchess.org/results/06101414.htm&quot;&gt;2006 Pennsylvania State Action Chess Championship&lt;/a&gt; with a perfect score (at time controls of 29 minutes per game and 30 minutes per game, respectively). Doing well at two-hour games made me even better at 29-minute games.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Slow practice works. It has worked for me in different fields. I want to make it work for music.&lt;/p&gt;
&lt;p&gt;Slow practice requires much discipline, patience, and metacognitive awareness It is easy to take shortcuts unless one has bootstrapped a skill enough in order to be able to know oneself and to recognize one&apos;s weaknesses and deliberately work on correcting them. Wonderful Web sites and books and videos on technique do exist that can help these days, even without a personal instructor.&lt;/p&gt;
</content:encoded></item><item><title>Zapping the PRAM several times to install Mountain Lion</title><link>https://franklinchen.com/blog/2012/07/31/zapping-the-pram-several-times-to-install-mountain-lion/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/31/zapping-the-pram-several-times-to-install-mountain-lion/</guid><pubDate>Tue, 31 Jul 2012 14:18:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday at work I tried to upgrade my desktop iMac from Lion to Mountain Lion. I failed miserably. I tried various things, including running Disk Utility to repair the hard drive, but I kept getting the error &quot;There was a problem installing Mac OS X.  Try reinstalling.&quot;&lt;/p&gt;
&lt;p&gt;I searched online for help, and found that a lot of other people had encountered the &lt;a href=&quot;https://discussions.apple.com/thread/4139771?start=0&amp;amp;tstart=0&quot;&gt;same problem&lt;/a&gt;. And a lot of people reported success after &lt;a href=&quot;https://support.apple.com/kb/HT1379&quot;&gt;resetting the PRAM&lt;/a&gt;, or as my boss over the years has called it, &quot;zapping the PRAM&quot;.&lt;/p&gt;
&lt;p&gt;I tried zapping the PRAM but failed, so I gave up for the day, having a lot of important work to do.&lt;/p&gt;
&lt;p&gt;Today I noticed that some people recommended doing the reset multiple times in a row to really clear things. So I did this, holding down the Command, Option, P, R keys continuously while the machine rebooted four times. It worked!&lt;/p&gt;
&lt;p&gt;I was so amused, never having personally zapped PRAM in my 28 years of using Macintosh computers, much less continuously, that I had to have a photo taken:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/zapping-pram-mountain-lion-install.jpg&quot; alt=&quot;Franklin zapping PRAM to install Mountain Lion&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am often surprised by how a Web search can lead quickly to solutions to problems I have with computers, appliances, etc. I am grateful for the power of the crowd to be helpful. In the old days, frustrating calls to technical support would have been required (and possibly not fruitful).&lt;/p&gt;
</content:encoded></item><item><title>Got my new Casey Burns Small-Handed Irish flute!</title><link>https://franklinchen.com/blog/2012/07/30/got-my-new-casey-burns-small-handed-irish-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/30/got-my-new-casey-burns-small-handed-irish-flute/</guid><pubDate>Mon, 30 Jul 2012 20:37:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m excited that I finally got my Casey Burns Small-Handed Folk Flute, a fine keyless Irish flute, that &lt;a href=&quot;/blog/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/&quot;&gt;I ordered almost two months ago&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Here are photos of my flute, assembled and disassembled:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/irish-flute/casey-burns-small-handed-folk-flute-assembled.jpg&quot; alt=&quot;Casey Burns Small-Handed Folk Flute, assembled&quot; /&gt;
&lt;img src=&quot;../../assets/images/irish-flute/casey-burns-small-handed-folk-flute-disassembled.jpg&quot; alt=&quot;Casey Burns Small-Handed Folk Flute, disassembled&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now I have to start breaking it in, gradually, over the next month, according to the instructions.&lt;/p&gt;
</content:encoded></item><item><title>My first appearance on a music recital program</title><link>https://franklinchen.com/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/</guid><pubDate>Sat, 28 Jul 2012 23:41:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-ars-recital-summer-2012.jpg&quot; alt=&quot;Pittsburgh Recorder Society spring 2012 recital program&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A month and a half ago, &lt;a href=&quot;/blog/2012/06/15/preparing-for-my-first-solo-flute-performance-notes-on-perfectionism-and-high-standards/&quot;&gt;I reported on an upcoming music recital I was going to perform in&lt;/a&gt;. In fact, I did perform, on Sunday, June 17, 2012. &lt;em&gt;It was my first appearance in my life on a musical recital program, and my first time solo on modern flute.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The event was an informal spring dinner party/recital at Helen&apos;s home for the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter of the American Recorder Society&lt;/a&gt;. (By the way, we also have a &lt;a href=&quot;https://www.facebook.com/PittsburghRecorderSociety&quot;&gt;Facebook page&lt;/a&gt; now.)&lt;/p&gt;
&lt;p&gt;Why did I put myself on the spot, by volunteering to play, and what did I choose to play?&lt;/p&gt;
&lt;h2&gt;The recital program&lt;/h2&gt;
&lt;p&gt;The program had several of us perform a dozen musical selections in a variety combinations (also performing at the end but not listed on the program were Mike and Fred).&lt;/p&gt;
&lt;p&gt;(This year, Abby had submitted for the program a piece for Bulgarian tambura, &quot;Ihtimansko Horo&quot;, and this is on the printed program, but at the last minute, she had problems as a result of restringing her instrument during the week, and ended up not performing, unfortunately.)&lt;/p&gt;
&lt;p&gt;Myself, I had chosen three musical selections to play:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Doen Daphne D&apos;over Schoone Maeght&quot; from Jacob Van Eyck&apos;s &quot;Der Fluyten Lust-Hof&quot;; solo soprano recorder&lt;/li&gt;
&lt;li&gt;Lachlann Dubh (Scottish slow air); Baroque flute&lt;/li&gt;
&lt;li&gt;II. Allegro from C.P.E. Bach&apos;s sonata in A minor for solo flute, Wq 132; modern flute&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Background: why I played&lt;/h2&gt;
&lt;h3&gt;Last year&apos;s party/recital&lt;/h3&gt;
&lt;p&gt;I only started playing recorder and joining the Pittsburgh Recorder Society just over a year ago. After I had only spent a couple of months playing alto recorder (and therefore being at a total beginner level), Helen held her party/recital on June 19, 2011, and invited people to volunteer to play. I was, of course, not ready to prepare anything I felt interesting enough to perform.&lt;/p&gt;
&lt;p&gt;Actually, it did not even occur to me at the time that I would perform at all any time soon. But in fact, in addition to the prepared performances by several of the people, we also ended up playing something in a large group that we had worked on at the monthly meeting of the Pittsburgh Recorder Society. Even in such casual circumstances, I found myself almost paralyzed with anxiety, sitting there while Abby and other people sat and watched us play.&lt;/p&gt;
&lt;p&gt;It should be noted that at this point in my life last year, &lt;em&gt;I had not played music in front of a sitting audience in decades&lt;/em&gt;, and never with any seriousness; I was thirteen when I was last stumbling around playing in marching band with no enthusiasm and just an anonymous figure in a crowd:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/lamphere-high-marching-band.jpg&quot; alt=&quot;Franklin in Lamphere High School marching band uniform&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Anyway, I survived playing casually in the group, as Abby watched and took photos that day:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-ars-recital-summer-2011/group.jpg&quot; alt=&quot;Pittsburgh Recorder Society group performing at summer 2011 recital&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have to confess that I was actually shaking and hyperventilating at times, messing up my breathing. It all seems so silly now, but that&apos;s how it was. We do what we need to do, eventually become less sensitive, and move on.&lt;/p&gt;
&lt;h3&gt;Setting a goal and deadline&lt;/h3&gt;
&lt;p&gt;I didn&apos;t tell anyone that June day last year, but after going home, I made a solemn vow to myself: I was going to spend the entire following year practicing recorder seriously and effectively, in order to be able to prepare something to play at the next party/recital. I had no idea what I was going to play, because the first step was simply to continue improving using some recorder method books, before actually trying to learn a real piece. My goal was to have something substantial to play, to display how much I had learned and improved. (And not shake with anxiety.)&lt;/p&gt;
&lt;h2&gt;Why I chose the selections I played this year&lt;/h2&gt;
&lt;h3&gt;Which instrument(s)?&lt;/h3&gt;
&lt;p&gt;It turns out that in a single year, I had not only improved at alto recorder, but had also learned soprano recorder. I had also bought a tenor recorder and begun playing it (same fingerings as soprano recorder). And by fall last year, I had also &lt;a href=&quot;/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/&quot;&gt;bought a bass recorder&lt;/a&gt; and begun playing it.&lt;/p&gt;
&lt;p&gt;Completely unexpectedly, in November I had begun &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;trying to play modern flute again&lt;/a&gt;. Even more unexpectedly, later I also &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;decided to take up the Baroque flute&lt;/a&gt;, after having explained &lt;a href=&quot;/blog/2011/11/17/flute-versus-recorder/&quot;&gt;why I had no plan to try Baroque flute anytime soon&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;And I also started playing the &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;Irish tin whistle&lt;/a&gt;. It has been quite a year of music for me.&lt;/p&gt;
&lt;p&gt;So what instruments and music was I going to play for the recital at Helen&apos;s?&lt;/p&gt;
&lt;h3&gt;The answer: play three of my instruments&lt;/h3&gt;
&lt;p&gt;I decided that I would pick three fairly short music selections and play them on three different instruments as appropriate for the music&apos;s style and period. Also, to simply my preparation, I looked for music I could play alone rather than, say, requiring a keyboard accompaniment.&lt;/p&gt;
&lt;h4&gt;Late Renaissance or early Baroque (1650s?)&lt;/h4&gt;
&lt;p&gt;I chose to play a selection from Van Eyck to show off the soprano recorder. Actually, I had played this selection for an audience before (a blog post about that life-changing experience, a &quot;Baroque jam session&quot;, on Friday, April 27, is still to be written). It was by pure accident that I came across Van Eyck&apos;s music to play; I had found the score in the Carnegie Library of Pittsburgh&apos;s catalog while looking for any recorder music at all.&lt;/p&gt;
&lt;p&gt;A personal reason I wanted to play this was that I had not heard any interpretation that I really liked, from CDs or YouTube. Therefore, I wanted to fill a hole and try to play the music the way I felt it. This is the fundamental reason I have been playing music rather than just listening to others do it: self-expression.&lt;/p&gt;
&lt;h5&gt;(Update of 2012-10-30)&lt;/h5&gt;
&lt;p&gt;Here is the finally published post about the &lt;a href=&quot;/blog/2012/04/27/baroque-jam-session-at-cmu/&quot;&gt;Baroque jam session&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Traditional Scottish air (1700s?)&lt;/h4&gt;
&lt;p&gt;A Baroque flute seemed appropriate to play this slow song. It could have used accompaniment, but I added it to the program too late to have someone accompany me on harp or mandolin or something.&lt;/p&gt;
&lt;p&gt;I was a little hesitant to play the Baroque flute in public, because I had only really started playing it, and was clearly in need of serious improvement (in fact, it has been my main instrument of focus in the past month), but I thought I might as well put in a two-minute song for variety&apos;s sake, and as a baseline since I had already decided that next year, I want to play the Baroque flute again at the 2013 party/recital, and much better.&lt;/p&gt;
&lt;h4&gt;Late Baroque or pre-Classical (1750s?)&lt;/h4&gt;
&lt;p&gt;The CPE Bach sonata I had fallen in love with hearing it by accident on modern flute performed by &lt;a href=&quot;/blog/2011/11/22/james-galway-made-me-hate-flute/&quot;&gt;Emmanuel Pahud&lt;/a&gt; when I was browsing YouTube one day for solo flute material. After hearing it, I vowed that one day I would play the whole thing.&lt;/p&gt;
&lt;p&gt;I chose what seemed to be the easiest movement to focus on, and practiced it on modern flute.&lt;/p&gt;
&lt;p&gt;There is, of course, a question of which flute is best suited for this music. Given the period, perhaps a simple system keyed wooden flute? But I don&apos;t have one, and currently have no intention of getting one or learning to play it.&lt;/p&gt;
&lt;p&gt;It would be possible to play it on a Baroque flute, but much more difficult. When I get better at Baroque flute, I just might consider playing CPE Bach on it, but I feel that the modern flute is not inappropriate for this music.&lt;/p&gt;
&lt;h2&gt;How I fared&lt;/h2&gt;
&lt;p&gt;Well, I played. I got nervous, I made various errors I did not make in practice, I made errors that I made in practice, but I actually did manage to go up alone and play. I can&apos;t pretend that I played very well (in fact, now, over a month later, I could play each of these selections noticeably better than I did), but I did what I could at the time.&lt;/p&gt;
&lt;p&gt;By the way, since Abby&apos;s parents came to the party/recital this year, this was also the first time they ever saw me perform.&lt;/p&gt;
&lt;p&gt;I was considerably less nervous than a year ago, but still more nervous than I really need to be. So next year, 2013, I expect to be more seasoned and more performance-ready.&lt;/p&gt;
&lt;p&gt;After we all played, we enjoyed the potluck dinner and had a good time. What else could I ask for, an evening of music, food, and friends?&lt;/p&gt;
&lt;p&gt;(Sorry, I have no photos or videos of any of the activities. I was too busy experiencing rather than spectating, and I don&apos;t think anyone actually took any photos or videos.)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The Pittsburgh Recorder Society spring potluck/recital means a lot to me because it was there last year that I continued to get to know the members, after having just joined, met new people, heard people play, and got the idea that I too could perform, if I worked at improving. I set some goals, was happy that Abby and her parents came along to see me perform, and the experience renewed my commitment to continuing to play and improve in the Pittsburgh Recorder Society group as well as on my own on Baroque flute and modern flute. I have every intention of having even more fun in my upcoming year of music!&lt;/p&gt;
</content:encoded></item><item><title>Ignoring London 2012: why I do not watch the Olympics any more</title><link>https://franklinchen.com/blog/2012/07/27/why-i-do-not-watch-the-olympics-any-more/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/27/why-i-do-not-watch-the-olympics-any-more/</guid><pubDate>Fri, 27 Jul 2012 22:17:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.london2012.com/imgml/partners/olympic/olympic-logo.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.london2012.com/imgml/partners/olympic/olympic-logo.jpg&quot;&amp;gt;[image: Olympic logo]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.london2012.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.london2012.com/&quot;&amp;gt;2012 summer Olympics in London&amp;lt;/span&amp;gt; have begun.&lt;/p&gt;
&lt;p&gt;I am not watching it, and I will not follow any of the events or results in the news.&lt;/p&gt;
&lt;p&gt;I am speaking as one who has fond childhood memories of watching the summer Olympics, and even some exciting memories of watching as late as Athens 2004. Why my change of heart?&lt;/p&gt;
&lt;h2&gt;Not about sport&lt;/h2&gt;
&lt;p&gt;First, I have to say that I admire feats of strength, endurance, flexibility, and ingenuity in sport, and I appreciate the demonstrations of willpower and self-discipline that excellence in sport demand. So my problems with the Olympics have nothing to do with the natural and beautiful demonstration of human virtues that athletes at their best can display.&lt;/p&gt;
&lt;h2&gt;Memories as a child&lt;/h2&gt;
&lt;p&gt;I have positive memories of watching the Olympics on TV with my parents and sister when I was a child. I remember seeing &lt;a href=&quot;https://www.edwinmoses.com/&quot;&gt;Edwin Moses&lt;/a&gt; blasting past his competition as a hurdler; he was my hero because he was a &lt;a href=&quot;https://espn.go.com/sportscentury/features/00016350.html&quot;&gt;science geek wearing glasses&lt;/a&gt;. I remember watching the struggling faces and bodies of marathoners such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Toshihiko_Seko&quot;&gt;Toshihiko Seko&lt;/a&gt;, who caught our eye because he was Asian.&lt;/p&gt;
&lt;h2&gt;Memories as an adult&lt;/h2&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/2000_Summer_Olympics&quot;&gt;Sydney 2000&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;For a long time, I stopped watching sports, but I watched Sydney 2000 because I had finally actually taken up &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt; and was looking for inspiration. It was there the distance running events that I mostly paid attention to, and it was thrilling to see Haile Gebrselassie defeat Paul Tergat by the thinnest of margins in the 10000m. But I watched a whole lot of other stuff too, from swimming to Greco-Roman wrestling. I recorded off TV and watched hours and hours of Olympic coverage.&lt;/p&gt;
&lt;p&gt;But as I watched the track sprint events, and more and more noticed how selective and slanted the American NBC coverage of the whole Olympics was, I grew to question what I was participating in by excitedly watching and discussing these games. Marion Jones was all hyped up by the American TV coverage, for example. And the rumors of illegal doping by athletes (&lt;a href=&quot;https://en.wikipedia.org/wiki/Use_of_performance-enhancing_drugs_in_the_Olympic_Games&quot;&gt;not a new problem&lt;/a&gt;, of course; the Ben Johnson scandal was one reason I stopped watching the Olympics for years) kept on bothering me.&lt;/p&gt;
&lt;p&gt;Also, the economics of the Olympics bothered me. Australia was clearly going all out in spending to host the games. For what, exactly?&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/2004_Summer_Olympics&quot;&gt;Athens 2004&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I watched Athens 2004, in order to keep track of my favorite distance events; it was nice to see Kelly Holmes double in the 800m and 1500m, and Hicham El Guerrouj double in the 1500m and 5000m, for example.&lt;/p&gt;
&lt;p&gt;Yet again, the American TV coverage was suspect. This time it was all about Michael Phelps. Meanwhile, Konstantinos Kenteris, the Greek favorite sprinter, disappeared before a drug test, and withdrew from the games.&lt;/p&gt;
&lt;p&gt;Worse, the cost to Greece seemed significant. Construction projects were behind schedule, and could Greece really recoup worthwhile benefits from this extravagant expenditure of hosting the games?&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/2008_Summer_Olympics&quot;&gt;Beijing 2008&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Immediately after Athens, I decided that I was no longer going to follow the Olympics. So I did not watch Beijing 2008.&lt;/p&gt;
&lt;p&gt;Well before Beijing 2008 actually occurred, I realized that the Olympics had become a bizarre, expensive embarrassment, an out-of-control commercial enterprise.&lt;/p&gt;
&lt;p&gt;Marion Jones and a whole slew of other American sprinters had their Sydney 2000 medals stripped because of doping.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The hypocrisy of the games became clear to me, when considering what was really going on. Nations were going out of their way to make their athletes perform, at all costs; this happened in the Cold War era in the Eastern Bloc, of course, but more recently, witness Ma Junren&apos;s &quot;army&quot; of Chinese distance runners that pulled out of Sydney 2000.&lt;/p&gt;
&lt;p&gt;I&apos;m tired of the doping, the media frenzy, the sponsorships, the consumerism, the bankrupting of local economies that the Olympics is all about. Everything has gotten more and more extreme.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.salon.com/2012/07/27/the_force_of_olympic_branding_salpart/&quot;&gt;branding has gotten more forceful&lt;/a&gt;. The Olympic beast is ravenous.&lt;/p&gt;
&lt;p&gt;I&apos;ve been done with the Olympics since 2004, and I&apos;m not coming back.&lt;/p&gt;
</content:encoded></item><item><title>Walking and running in Invisible Shoes: a review of the Connect</title><link>https://franklinchen.com/blog/2012/07/26/walking-and-running-in-invisible-shoes-a-review/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/26/walking-and-running-in-invisible-shoes-a-review/</guid><pubDate>Thu, 26 Jul 2012 21:28:00 GMT</pubDate><content:encoded>&lt;p&gt;For three weeks now, I have been wearing a pair of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.invisibleshoe.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.invisibleshoe.com/&quot;&amp;gt;Invisible Shoes&amp;lt;/span&amp;gt; huaraches almost exclusively when walking and running outside. I have worn them daily walking, and I have run in them on roads, on sidewalks, on grass, and in park trails.&lt;/p&gt;
&lt;p&gt;This is a review of the 4mm sole Connect model (I might get a 6mm sole Contact later).&lt;/p&gt;
&lt;p&gt;Here is what the shoes look like with &quot;slip-on/slip-off&quot; lacing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/invisible-shoes-connect/without-feet.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/invisible-shoes-connect/bottom.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, the sole is quite thin, just 4mm:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/invisible-shoes-connect/side-view.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here are some photos of me wearing the shoes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/invisible-shoes-connect/grass.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/invisible-shoes-connect/asphalt.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why wear such a thin shoe?&lt;/h2&gt;
&lt;p&gt;Ten years ago, in 2002, I learned about the &lt;a href=&quot;https://en.wikipedia.org/wiki/Tarahumara_people&quot;&gt;Tarahumara&lt;/a&gt; Native Americans who live in Mexico and are famed for long-distance running. I was fascinated that they chose to run in minimalist huaraches. At the time, I was doing a lot of serious &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt;, and perpetually had problems with running shoes. I figured out from trial and error that the more minimalist I got, the more I enjoyed the feel of running and the fewer injuries I received, but I didn&apos;t know how minimalist I could really get before the cons outweighed the pros. By 2002, I had gotten as far as wearing racing flats by New Balance and Asics for races and some of my training runs, but no shoe was perfect.&lt;/p&gt;
&lt;p&gt;I had also tried wearing a variety of ordinary sandals for walking and running, but they had all kinds of ergonomic problems that led me to give up on them. The strapping systems, the substantial (by my standards) heels, and the curved &quot;arch support&quot; all caused discomfort.&lt;/p&gt;
&lt;p&gt;Fast-forward to 2009, when I bought my first pair of Vibram FiveFingers minimalist shoes. These changed my life, being sufficiently minimalist to defeat a number of problems I&apos;ve had with traditional mono-toed shoes. As long-time readers of &lt;a href=&quot;/categories/fivefingers/&quot;&gt;this blog know&lt;/a&gt;, I&apos;ve been wearing them exclusively for all kinds of activities, ranging from regular everyday walking to running on roads, running on trails, hiking, kayaking, rafting.&lt;/p&gt;
&lt;p&gt;In the past year, I have tried a little bit of &lt;a href=&quot;/categories/barefoot-running/&quot;&gt;barefoot running&lt;/a&gt;, but that is still too extreme for me to do often or for a long period of time.&lt;/p&gt;
&lt;p&gt;So I decided that now was the time to try to get more minimalist than FiveFingers, toward the &quot;barefoot&quot; feel, but without the most glaring drawbacks of being barefoot. Luckily, the surprising popularity of &lt;a href=&quot;https://chrismcdougall.com/&quot;&gt;Chris McDougall&apos;s&lt;/a&gt; book &quot;Born to Run&quot; has resulted in a good number of people selling minimalist huaraches for running.&lt;/p&gt;
&lt;h2&gt;Buying&lt;/h2&gt;
&lt;p&gt;Barefoot Ted had long sold his version of huaraches, the &lt;a href=&quot;https://www.lunasandals.com/&quot;&gt;Luna Sandals&lt;/a&gt;. I decided to try, instead, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.invisibleshoe.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.invisibleshoe.com/&quot;&amp;gt;Invisible Shoes&amp;lt;/span&amp;gt;, because these are more minimalist than the Luna, which in its classic form has a 6mm sole as well as a foot bed. I may well try the Luna at some point, but my goal for now is to approximate the barefoot feel, rather than pick the best huaraches for serious rugged use, and work up from there. So I went for the 4mm Connect version of the Invisible Shoes.&lt;/p&gt;
&lt;p&gt;For now, instead of buying a DIY kit, I decided that the simplest hassle-free way to break into huaraches was to buy a &lt;a href=&quot;https://www.lunasandals.com/&quot;&gt;custom-made&lt;/a&gt; shoe that had the soles cut and punched and laced up, ready to immediately wear. I traced my foot, scanned the trace, and emailed it, and quickly received my pair in the mail.&lt;/p&gt;
&lt;p&gt;If you are interested in trying out huaraches, I recommend following this route if the thought of DIY problems might otherwise discourage you. I may go DIY in the future, now that I see the final product.&lt;/p&gt;
&lt;h2&gt;Tying&lt;/h2&gt;
&lt;p&gt;The question of how to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.invisibleshoe.com/tying/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.invisibleshoe.com/tying/&quot;&amp;gt;tie&amp;lt;/span&amp;gt; laces always pops up. For now, I have not experimented with different methods in order to evaluate what works best for me for secureness and comfort. I have been using the slip-on/slip-off system that came with the shoe, adjusting it as needed when my foot feels too tight or too loose.&lt;/p&gt;
&lt;h2&gt;Walking&lt;/h2&gt;
&lt;p&gt;Before I got Invisible Shoes, my regular walking shoes were my Vibram FiveFingers KSO shoes. But once I got the Invisible Shoes, I completely stopped wearing the KSO for everyday walking.&lt;/p&gt;
&lt;h3&gt;Pros&lt;/h3&gt;
&lt;p&gt;My toes have real freedom. Toe shoes like the Vibram FiveFingers compartmentalize the toes, so although they solve my wide-foot problem, they do not give me total freedom of the whole front of the foot that I like.&lt;/p&gt;
&lt;p&gt;Good ventilation, like being barefoot. FiveFingers get hot in summer, resulting in sweat and sometimes blisters. I don&apos;t get blisters walking in Invisible Shoes.&lt;/p&gt;
&lt;p&gt;With the slip-on/slip-off system, I really can slip on and off easily. Since I like going barefoot indoors, it&apos;s a plus to be able to slip on and off the shoes so easily.&lt;/p&gt;
&lt;h3&gt;Cons&lt;/h3&gt;
&lt;p&gt;There is some rubbing at key points on the foot: the knot in the lacing system on top of the foot, and the lacing that passes between the big toe and the second toe. In practice, none of this has been a real problem except when it&apos;s raining and my feet get wet, in which case I get chafed.&lt;/p&gt;
&lt;p&gt;The soles, being so thin, flop around a bit. Occasionally a sole will fold under and cause me to trip, but this happens very rarely. The main problem is mostly social: the flopping sound draws attention; I prefer to walk very silently (which I can do in most closed shoes).&lt;/p&gt;
&lt;p&gt;The thinness of the soles also result in my feet getting very hot when I&apos;m just standing for a period of time on hot asphalt or concrete (this is the same problem as I have when going barefoot). So standing at a street intersection waiting for a long light or in a parking lot while putting stuff into a car is not so pleasant.&lt;/p&gt;
&lt;p&gt;The thinness of the soles means walking over rough terrain is not always pleasant.&lt;/p&gt;
&lt;p&gt;Note that all the problems with the thinness of the soles might not be present if I had the 6mm sole rather than the 4mm sole.&lt;/p&gt;
&lt;h2&gt;Running&lt;/h2&gt;
&lt;p&gt;Disclaimer: I have run only four or five times in these shoes so far, so I will accumulate more experience as I continue to run in them.&lt;/p&gt;
&lt;h3&gt;Pros&lt;/h3&gt;
&lt;p&gt;Running in these shoes on the roads and sidewalks is predictable and pleasant, very much like running barefoot. I am considering doing more tests to determine whether to run a road race 5K or 10K in these shoes! I have not run at race pace in these shoes yet. I may need to adjust lacing systems in order to feel confident about running at maximum speed without a flopping or lace-loosening problem.&lt;/p&gt;
&lt;h3&gt;Cons&lt;/h3&gt;
&lt;p&gt;There is sole flopping when running. Actually there is less flopping than when walking, though.&lt;/p&gt;
&lt;p&gt;Running in the trails has not worked too smoothly. The 4mm sole really is quite thin for trail running. I noticed this when running in Frick Park, where some of the trails are more rocky than others. I also noticed this even when running in &lt;a href=&quot;/blog/2012/06/18/walking-the-scenic-route-through-schenley-park-to-work/&quot;&gt;Schenley Park on the Pretty Good Race course&lt;/a&gt;, where the downhill section had me periodically hitting rocks harder than comfortable.&lt;/p&gt;
&lt;p&gt;There is also the annoyance of stuff getting between the foot and the sole when running in the trails. Since I don&apos;t like stopping, I&apos;ve tried to simply flex my foot to let the material slide back out during the next couple of strides, and this mostly works. But I got one blister during a run on the trails, possibly because of loose material that got between my foot and the sole that I didn&apos;t bother completely shaking out.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The 4mm Connect model of Invisible Shoes is great for walking around in. For running, I need to do more tests to find out how they hold up in more demanding conditions of speed and terrain. I would also like to compare the 4mm Connect model with the 6mm Contact model.&lt;/p&gt;
</content:encoded></item><item><title>Mideast Early Music Workshop 2012: a life-changing experience!!</title><link>https://franklinchen.com/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/</guid><pubDate>Sat, 21 Jul 2012 22:43:00 GMT</pubDate><content:encoded>&lt;p&gt;The whole past week (July 15-21, 2012), I attended my first ever music camp, the annual &lt;a href=&quot;https://web.archive.org/web/20220521024012/http://www.mideastearlymusic.addr.com/&quot;&gt;Mideast early music workshop&lt;/a&gt; held at LaRoche College. It totally changed my life!&lt;/p&gt;
&lt;p&gt;A big report, with photos and videos:&lt;/p&gt;
&lt;h2&gt;Why I decided to attend&lt;/h2&gt;
&lt;p&gt;I have loved music all my life, but never had any private instruction, or any intensive group instruction either.&lt;/p&gt;
&lt;h3&gt;Old?&lt;/h3&gt;
&lt;p&gt;After passing age 40, I started thinking about mortality, and making a list of what my biggest regrets in life would be if I died soon. On the &lt;em&gt;very top&lt;/em&gt; of the list was my lifelong regret that I never had the courage to get serious about music. I had made excuse after excuse to downplay following my musical dreams (in part a legacy of my internalizing my parents&apos; constant discouragement of music as a &quot;waste of time&quot;, but also because I was &lt;em&gt;not willing to make the required sacrifices as a very busy adult&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;So before I turned 41, I decided to finally start the process of getting serious about music, and in February 2011 (less than one and a half years ago), I started to learn to play &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; because it was easy to get started on, was new to me (without the baggage of my difficult experiences with flute and piano) and most of all, because of the existence of the Pittsburgh Recorder Society as a friendly place to finally play with other people. I mentioned this in &lt;a href=&quot;/blog/2011/09/22/byron-janis-on-overcoming-adversity/&quot;&gt;one of my first posts on this blog&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;First hearing of the workshop&lt;/h3&gt;
&lt;p&gt;In March 2011, I went to the meeting of the Pittsburgh Recorder Society &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;for the first time&lt;/a&gt;. At the April 2011 meeting, Helen passed out flyers for the Mideast workshop. I was interested in it and asked her and others about it, but as a total beginner felt that it was not worth attending until I got much better first.&lt;/p&gt;
&lt;p&gt;After another year, I did in fact improve significantly on recorder (and musically in general), and therefore &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/&quot;&gt;decided this past March&lt;/a&gt; to attend the workshop. I pegged myself as finally having reached a beginner/intermediate level suitable for benefiting from the workshop.&lt;/p&gt;
&lt;h3&gt;Gary Marcus&lt;/h3&gt;
&lt;p&gt;It also turns out that just this February, I picked up Gary Marcus&apos;s book &lt;a href=&quot;https://web.archive.org/web/20260214203441/http://garymarcus.com/books/guitarzero.html&quot;&gt;&quot;Guitar Zero&quot;&lt;/a&gt; and read it. It is about his experience finally immersing himself in music at the age of 40. This book helped me decide to attend the workshop this year.&lt;/p&gt;
&lt;h2&gt;Instruments&lt;/h2&gt;
&lt;p&gt;It turned out that you have to choose a primary instrument (from among recorder, viol, and (Baroque) flute), but can also study secondary instruments. I decided that because of my strong interest in flute (both Baroque flute and modern flute), I would choose &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;&lt;em&gt;Baroque flute&lt;/em&gt;&lt;/a&gt; as my primary instrument.&lt;/p&gt;
&lt;p&gt;Possible secondary instruments are recorder, viol, harp, voice, and capped reeds (for Renaissance band): I chose &lt;em&gt;recorder&lt;/em&gt; (of course), &lt;strong&gt;but also&lt;/strong&gt; &lt;em&gt;voice&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I was deathly scared of getting into singing, but felt that this was my chance to finally jump into it!! I have &lt;em&gt;never&lt;/em&gt; sung with anyone before (in elementary and middle school, I basically lip-synced when supposed to sing), and have almost never sung in the presence of any other human being (I believe I sang for Abby once). I had a definitely goal of unobtrusively getting my start in singing here, in an informal group setting, and then moving forward from there.&lt;/p&gt;
&lt;h2&gt;Classes&lt;/h2&gt;
&lt;p&gt;The classes I tentatively planned to take were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Baroque flute technique&lt;/li&gt;
&lt;li&gt;recorder consort&lt;/li&gt;
&lt;li&gt;all-workshop ensemble&lt;/li&gt;
&lt;li&gt;bass recorder ensemble&lt;/li&gt;
&lt;li&gt;improvisation&lt;/li&gt;
&lt;li&gt;voice class&lt;/li&gt;
&lt;li&gt;English country dance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I expected it to be a pretty intense schedule, and it definitely was!!&lt;/p&gt;
&lt;h2&gt;Evening before: informal dinner at Helen&apos;s&lt;/h2&gt;
&lt;p&gt;Helen hosted dinner at her place for both locals and out-of-towners arriving in town for the workshop. About a dozen of us showed up, and Abby came along. Since most of the attendees and instructors already knew each other for years (decades in most cases!), I found it a great way to start getting to know some people. Yes, this is an &quot;old people&quot; music camp. At age 42, I was by far the baby of the entire group. It seems that a good number of retired people attend the camp. Some of the instructors are younger than me, but it appeared that all the students were going to be older than me. I have to confess that last year, when I was &quot;warned&quot; that this was an &quot;old people&quot; camp, I had reservations, but the fact is, music is for any age, and interestingly, since getting involved in music last year, I have been consistently surprised and delighted by how younger-looking or younger-acting musicians tend to be.&lt;/p&gt;
&lt;h2&gt;Day 1: Sunday (July 15)&lt;/h2&gt;
&lt;p&gt;Sunday afternoon, I drove up to LaRoche College to check in and pay the registration balance, and got my key to the dorm room where I would be staying for the week. Mike of the Pittsburgh Recorder Society had agreed to share a room with me.&lt;/p&gt;
&lt;p&gt;Dinner in the LaRoche dining hall was varied and tasty, as I expected given the excellent lunch I had enjoyed at LaRoche during &lt;a href=&quot;/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/&quot;&gt;Pittsburgh TechFest in June&lt;/a&gt;! I was starving, having become considerably underweight in the past couple of weeks because of being really busy and stressed, and welcomed the opportunity to chow down. I ate not only a whole lot of healthy food, but also couldn&apos;t help myself and ate a cupcake, a cookie, and ice cream also!&lt;/p&gt;
&lt;h3&gt;Introduction and all-workshop ensemble&lt;/h3&gt;
&lt;p&gt;The introduction to the workshop happened after dinner&lt;/p&gt;
&lt;p&gt;Marilyn introduced the workshop, along with the instructors. Marilyn has been the organizer of this workshop for something like 45 years, I believe: wow!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/intro.jpg&quot; alt=&quot;Instructors on the left&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/intro2.jpg&quot; alt=&quot;The rest of the instructors&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Immediately following the introduction was the first meeting of the all-workshop ensemble. We had substantial-looking spiral-bound books of ensemble music and I wondered how much of it we would go through!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/all-workshop-music.jpg&quot; alt=&quot;Book and people ready to play&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;English country dance&lt;/h3&gt;
&lt;p&gt;After that was the first meeting of English country dance. I was sad not to be dancing with Abby (she was not enrolled in the workshop because this isn&apos;t her kind of music), but enjoyed learning something new and getting a bit of exercise. Since it started from scratch, it was less intimidating than &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/&quot;&gt;my first experience with English country dance four months ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, given that I was the young baby of the bunch, going a bit slowly was helpful to me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/english-country-dance.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Day 2: Monday (July 16)&lt;/h2&gt;
&lt;p&gt;I enjoyed a fine breakfast, including eggs, sausages, and potatoes, and felt myself regaining some much-needed weight. Also, regarding the dorm rooms: they have air-conditioning, much appreciated given the hot and muggy summer!&lt;/p&gt;
&lt;h3&gt;Baroque flute technique&lt;/h3&gt;
&lt;p&gt;I felt very intimidated in Majbritt&apos;s morning Baroque flute technique class. There were six of us in the class, and I was clearly the least experienced. My flute playing (whether modern or flute) is at a beginner&apos;s level, as I have been playing for only a few months really. In fact, this is &lt;em&gt;exactly&lt;/em&gt; why I chose flute as my &lt;em&gt;primary&lt;/em&gt; instrument in the workshop: to get good instruction in technique before I progressed too far on my won. Even with recorder, I had to unlearn some bad habits early on that I had developed from working on it myself for a month or so before joining the Pittsburgh Recorder Society!&lt;/p&gt;
&lt;p&gt;In class we had a &quot;review&quot; of basic concepts of Baroque flute technique such as the correct &lt;em&gt;embouchure&lt;/em&gt; adjustments to get the intonation right of all the various notes: for example, the F is sharp unless you adjust the embouchure, and the F-sharp is flat unless you adjust the embouchure in the other way.&lt;/p&gt;
&lt;p&gt;Then we talked about &lt;em&gt;articulation&lt;/em&gt;. One new thing I learned here was to be aware of the &lt;em&gt;end&lt;/em&gt; of a note, very important compared with playing modern instruments.&lt;/p&gt;
&lt;p&gt;I took a lot of notes, as well as made annotations in the music we got.&lt;/p&gt;
&lt;h3&gt;Voice class&lt;/h3&gt;
&lt;p&gt;Eric taught voice class. There was a good balance of men and women. He handed us spiral-bound books of musical selections.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/voice-eric.jpg&quot; alt=&quot;Eric Haas&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/voice-men.jpg&quot; alt=&quot;Other men in voice class&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We went through a bunch of songs, and I . It was tremendous fun. I had never in my life sight-sung before (!!!), so I was very nervous. I tried not to let on that I was a total novice (unlike everyone else there). I took a lot of notes on what was tricky and marked up the song book for further study.&lt;/p&gt;
&lt;p&gt;The somewhat nerve-wracking thing was that no men were really tenors, and a bunch sang bass, so Eric, Chris, and I sang tenor. I&apos;m a baritone, not a tenor: the high notes were scary.&lt;/p&gt;
&lt;h3&gt;Lunch&lt;/h3&gt;
&lt;p&gt;I totally stuffed myself for lunch. So much good food.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/monday-lunch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Recorder consort&lt;/h3&gt;
&lt;p&gt;Emily was the instructor for my recorder consort class. I was put into a lower-level class because of being relatively new (having played recorder for less than two years). I didn&apos;t mind, because I knew that I had much to learn.&lt;/p&gt;
&lt;p&gt;Emily focused a lot on things like where to breathe, and in paying attention to others in an ensemble. I learned to write in commas for breathing in music scores (in the flute class, Majbritt also emphasized finding the phrasing and the breathing, and this has been a theme at Pittsburgh Recorder Society meetings as well). I realized that I still had a lot to absorb from these lessons.&lt;/p&gt;
&lt;p&gt;Emily also told us to find the narrative in any music we played. It&apos;s not just isolated notes; music has a push and pull.&lt;/p&gt;
&lt;h3&gt;Bass ensemble&lt;/h3&gt;
&lt;p&gt;James (whom I amusingly first encountered online through his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jnote.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jnote.org/&quot;&amp;gt;fantastic multi-track melodica videos&amp;lt;/span&amp;gt; before finding out that he teaches recorder at the Mideast workshop) led the bass ensemble. I still play bass recorder only very infrequently, so I was nervous, but joined the bass ensemble because I thought it would be fun.&lt;/p&gt;
&lt;h3&gt;Improvisation&lt;/h3&gt;
&lt;p&gt;Alan taught improvisation. I had never actually specifically learned improvisation techniques before, but want to eventually get truly serious about improvisation, so I was excited to take this class, which was quite participatory. He would describe a concept, such as the pentatonic scale, and then have us do something with it. The class was enthusiastic. I was actually pretty moved by how individual everyone&apos;s inventiveness was, even doing basic things, and that helped me loosen up as well.&lt;/p&gt;
&lt;h3&gt;Medieval fiddle&lt;/h3&gt;
&lt;p&gt;On a whim, I checked out the medieval fiddle class. I borrowed a medieval fiddle to take back to my room after class. (But it would turn out that the instrument had problems, and I had too much other stuff to do, and had never played a string instrument before, so I ended up returning it and not returning to the class.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/medieval-fiddle.jpg&quot; alt=&quot;A medieval fiddle&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Dinner&lt;/h3&gt;
&lt;p&gt;Abby came up to visit and joined me for dinner while on her way to mandolin orchestra rehearsal, which is actually close by.&lt;/p&gt;
&lt;p&gt;I ate an ice cream cone, but realizing that I was gaining a lot of weight already after 24 hours at LaRoche, I chose not to eat cake or cupcakes.&lt;/p&gt;
&lt;h3&gt;All-workshop ensemble&lt;/h3&gt;
&lt;p&gt;Intense stuff. I took pages and pages of notes as Eric talked about different styles, phrasing, &quot;painting&quot;, dissonances, imitation, counterpoint, the significance of words in text, changes in meter, etc. We read through a lot of pieces to work on for the week.&lt;/p&gt;
&lt;h3&gt;English country dance&lt;/h3&gt;
&lt;p&gt;We learned more stuff.&lt;/p&gt;
&lt;h3&gt;Study!&lt;/h3&gt;
&lt;p&gt;Finally, after all the classes into the evening, I got to spend some hours in my dorm room or across the hall in an empty meeting room used for classes in the day (since sometimes Mike was in the dorm room or going to bed earlier than me) doing what review of my notes I could, as well as practicing for each of my classes.&lt;/p&gt;
&lt;p&gt;It was intense: I had been given so much to learn already after a single day! I was right in choosing to live on site rather than take the commuter option, because the commute from Pittsburgh would have been stressful and time-consuming for me, taking away energy and time I could spend on classes and preparation.&lt;/p&gt;
&lt;h2&gt;Day 3: Tuesday (July 17)&lt;/h2&gt;
&lt;h3&gt;Flute&lt;/h3&gt;
&lt;p&gt;I learned about &lt;a href=&quot;https://en.wikipedia.org/wiki/Notes_in%C3%A9gales&quot;&gt;&lt;em&gt;inégal&lt;/em&gt;&lt;/a&gt; for the first time. I hadn&apos;t know that this &quot;swinging&quot; of notes (familiar in jazz) also applied to Baroque music!&lt;/p&gt;
&lt;p&gt;We continued our study of articulation. I learned a huge amount about &quot;t&quot; and &quot;d&quot; and runs of notes as well as leaps. It was very difficult for me to execute all this, so I tried to focus on one aspect at a time.&lt;/p&gt;
&lt;h3&gt;Voice&lt;/h3&gt;
&lt;p&gt;More work, and a lot of fun.&lt;/p&gt;
&lt;h3&gt;Recorder consort&lt;/h3&gt;
&lt;p&gt;Reinforcing the technique points we learned yesterday.&lt;/p&gt;
&lt;h3&gt;Bass class&lt;/h3&gt;
&lt;p&gt;It continued being a challenge for me to alternate between reading bass clef for bass recorder and reading treble clef for it as well.&lt;/p&gt;
&lt;h3&gt;Improvisation&lt;/h3&gt;
&lt;p&gt;Musical structure such as ABA, ABACA (rondo).&lt;/p&gt;
&lt;h3&gt;Nap time&lt;/h3&gt;
&lt;p&gt;Cutting out medieval violin meant having a block of nap time, much-needed!&lt;/p&gt;
&lt;h3&gt;Dinner&lt;/h3&gt;
&lt;p&gt;I created a pattern of eating ice cream every day at dinner, and continued to gain weight.&lt;/p&gt;
&lt;h3&gt;All-workshop ensemble: singing?&lt;/h3&gt;
&lt;p&gt;Some of the pieces we went through could optionally be sung, so Eric asked us to think of whether we wanted to sing or play an instrument for our performance on Friday. I was intrigued by the option to sing. &quot;Ecco l&apos;Aurora&quot; was very interesting to sing, but also rather challenging to me, with its leaps and modulations.&lt;/p&gt;
&lt;p&gt;But because of the relative lack of tenor volunteers, I decided I would switch from playing tenor recorder and work on singing it on Friday. I was partly inspired by Chris&apos;s example, and also by the guy sitting next to me who decided to sing.&lt;/p&gt;
&lt;h3&gt;English country dance&lt;/h3&gt;
&lt;p&gt;We learned a new dance, but also started focusing on improving on a particular dance for Friday&apos;s performance.&lt;/p&gt;
&lt;h3&gt;Study&lt;/h3&gt;
&lt;p&gt;I was practicing in the empty meeting room until at 11 PM, Charles, whose dorm room was actually right next door, told me he was going to sleep. Oops! If I didn&apos;t do English country dance, I could practice earlier.&lt;/p&gt;
&lt;h2&gt;Day 4: Wednesday (July 18)&lt;/h2&gt;
&lt;h3&gt;Flute&lt;/h3&gt;
&lt;p&gt;Very detailed articulation instruction. Also, notes on hemiolas.&lt;/p&gt;
&lt;h3&gt;Master class&lt;/h3&gt;
&lt;p&gt;I was very excited to attend the &lt;a href=&quot;https://en.wikipedia.org/wiki/Master_class&quot;&gt;master class&lt;/a&gt;. I had never attended a master class before, actually, although I had seen some videos of the concept.&lt;/p&gt;
&lt;p&gt;It turned out that Karen had prepared a piece for Baroque flute for the master class, and Mike had prepared a piece for recorder.&lt;/p&gt;
&lt;p&gt;I took a huge number of notes. For each of them, I first took notes while they played their pieces, then I took more notes as the instructors gave feedback. I found it quite useful to compare what they observed with what I had observed independently (or not noticed at all). The whole experience was tremendously instructive for me, giving me a huge amount of information to apply to my own playing. I don&apos;t know if I have the courage to expose myself to scrutiny in public like this. I&apos;m certainly appreciative of Karen and Mike doing so!&lt;/p&gt;
&lt;p&gt;I noticed some observations in common among the instructors and for both Karen and Mike. The gist of the advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;add more variety in &lt;em&gt;articulation&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;play with more &lt;em&gt;freedom&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;find and express the &lt;em&gt;shape&lt;/em&gt; and melodic line&lt;/li&gt;
&lt;li&gt;look for the meaning of leaps and &lt;em&gt;dissonance&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found these insights profoundly useful, and found it inspiring to see Karen and Mike work to make some changes in their playing in response to the instructors&apos; feedback.&lt;/p&gt;
&lt;h4&gt;Karen&lt;/h4&gt;
&lt;p&gt;Karen prepared one of the twelve &lt;a href=&quot;https://en.wikipedia.org/wiki/12_Fantasias_for_Solo_Flute_%28Telemann%29&quot;&gt;Telemann fantasias for solo flute&lt;/a&gt;, no. 2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/master-class-karen.jpg&quot; alt=&quot;Karen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/master-class-karen-majbritt.jpg&quot; alt=&quot;Majbritt feedback for Karen&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Mike&lt;/h4&gt;
&lt;p&gt;By coincidence, Mike played another of the Telemann fantasias for solo flute, no. 10, but he played it on alto recorder instead of flute.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/master-class-mike.jpg&quot; alt=&quot;Mike&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was a funny moment in which Mike used his leg to play a high F-sharp. Later, Emily and James showed him a good technique hint, preparing the F-sharp by bringing up the leg already in anticipation, and then bringing the head down toward the leg instead of vice versa.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/master-class-mike-james-leg.jpg&quot; alt=&quot;Mike raising leg, with James and Emily&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Lunch&lt;/h3&gt;
&lt;p&gt;After lunch, Mike and I helped Chris move his harpsichord. (Chris drove his own harpsichord up from home and it&apos;s used for many sessions at the workshop.)&lt;/p&gt;
&lt;h3&gt;Recorder consort&lt;/h3&gt;
&lt;p&gt;People had been leaving our recorder consort class one by one; Wednesday, we were down to five! I wondered why this was going on. Admittedly, we were moving slowly through the music, because a couple of us were more on the beginner side and had trouble sight reading, staying with the score, keeping fingerings straight. I myself had silently considered switching, but I found the &quot;slower&quot; pace an opportunity to really focus on trying to work on various basic things that are more important than &quot;getting through&quot; a lot of musical selections. I really needed to get down what I was learning about breath, resonance, and intonation, as well as ensemble unity.&lt;/p&gt;
&lt;h3&gt;Free time!&lt;/h3&gt;
&lt;p&gt;Wednesday there is scheduled &quot;free time&quot; during which there are no classes. I was totally exhausted by this point in the week and napped for two and a half hours!! Then I finally went outside for a 40-minute run, in my new Invisible Shoes (which I wore around daily and got a lot of comments on); I had originally intended to get regular exercise in every day while at camp, but had simply felt overwhelmed by the desire to make the most of my music classes and practice (at least I did do an hour of English country dance every evening).&lt;/p&gt;
&lt;h3&gt;White Elephant Sale&lt;/h3&gt;
&lt;p&gt;After dinner, I browsed around at the &lt;a href=&quot;https://en.wikipedia.org/wiki/White_Elephant_Sale&quot;&gt;White Elephant Sale&lt;/a&gt;. I kicked myself for having totally forgotten to bring some stuff to donate to it. I was amused that Helen managed to get rid of a particular item that she had wanted out of her home for some time.&lt;/p&gt;
&lt;h3&gt;Chris and harpsichord&lt;/h3&gt;
&lt;p&gt;I had been so busy that I had not bothered to think about signing up for playing with Chris on harpsichord. Unfortunately, by the time I checked the signup sheet, I saw that it was full (empty slots conflicted with my class time).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/harpsichord-signup.jpg&quot; alt=&quot;Chris harpsichord signup sheet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There were signup sheets all along for other stuff too, such as people wanting to find others to play with. That is actually a large part of the appeal of the workshop. I didn&apos;t participate in any of that because as a newcomer, I was focused on exploring classes. But obviously, those who had come to the workshop for years and decades did not necessarily need or want to spend all their time on classes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/other-signup.jpg&quot; alt=&quot;Other signup sheets&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Faculty concert&lt;/h3&gt;
&lt;p&gt;Another highlight of Wednesday was the faculty concert. This was great. Bagpipes, recorders, Renaissance flutes, Baroque flutes, harpsichord, viola da gamba, even sackbut! It was a real treat to see all our instructors performing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/bagpipes.jpg&quot; alt=&quot;Alan on bagpipes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/faculty-concert-2.jpg&quot; alt=&quot;Group&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/faculty-concert-3.jpg&quot; alt=&quot;Group&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/faculty-concert-james-majbritt.jpg&quot; alt=&quot;James and Majbritt in duet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was intrigued by Emily playing Debussy&apos;s &quot;Syrinx&quot; on a special tenor recorder.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/emily-syrinx.jpg&quot; alt=&quot;Emily playing Syrinx on special tenor recorder&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/chris-harpsichord.jpg&quot; alt=&quot;Chris solo on harpsichord&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/faculty-concert-flutes.jpg&quot; alt=&quot;Eric, Emily, Majbritt on flutes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/judith-viol.jpg&quot; alt=&quot;Judith on viol&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A short video clip from the faculty concert (I found out that my phone made an unstoppable annoying click when taking video, so I never used my phone again for video after this; other videos I post here came from the camera Abby brought on Friday):&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vpXVEf7NfSw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Practice&lt;/h3&gt;
&lt;p&gt;Finally I got time to practice. There was a lot of stuff to prepare for the Friday concert.&lt;/p&gt;
&lt;h2&gt;Day 5: Thursday (July 19)&lt;/h2&gt;
&lt;h3&gt;Breakfast&lt;/h3&gt;
&lt;p&gt;Because of the considerable weight gain (approximately &lt;em&gt;four pounds&lt;/em&gt; so far since arrival), I decided to stop eating potatoes (which seemed to be available in some form at every meal).&lt;/p&gt;
&lt;h3&gt;Flute&lt;/h3&gt;
&lt;p&gt;More technique. Lip and tongue placement, different scales. We finally decided on what to play for the concert, a selection by Dittersdorf. I was one of those on the easiest part, the third part of the trio, playing &quot;bass&quot;.&lt;/p&gt;
&lt;h3&gt;Voice&lt;/h3&gt;
&lt;p&gt;We worked through a bunch more selections while continuing to refine the one we had decided to perform on Friday.&lt;/p&gt;
&lt;p&gt;By the way, it came in really handy this week that I have at least basic competence in French, Italian, Latin, and German, because we sang in all these languages!&lt;/p&gt;
&lt;h3&gt;Bass&lt;/h3&gt;
&lt;p&gt;I got to class early enough (a rarity, since usually I was rushing from voice class) to take a photo.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/bass-setup.jpg&quot; alt=&quot;Mike and James&quot; /&gt;&lt;/p&gt;
&lt;p&gt;By the way, since I had hardly played bass before coming to this workshop, I hadn&apos;t realized that my bass tended to be sharp and I learned I had to keep the head joint pulled out to a certain degree. Useful to finally find that out.&lt;/p&gt;
&lt;h3&gt;Improvisation&lt;/h3&gt;
&lt;p&gt;We did blues stuff, and Alan pulled out his guitar to give us chords as the rest of us took turns on recorder.&lt;/p&gt;
&lt;h3&gt;Special mini-class on practice techniques&lt;/h3&gt;
&lt;p&gt;I attended a one-session class on practice techniques by Emily. I found this tremendously useful and took a lot of notes. Some of the key ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;don&apos;t practice a mistake&lt;/li&gt;
&lt;li&gt;importance of warmup with focus (physical but also mental)&lt;/li&gt;
&lt;li&gt;go slow, do it right&lt;/li&gt;
&lt;li&gt;break down difficult tasks&lt;/li&gt;
&lt;li&gt;it all starts with the mind: first decide and know what you want to accomplish, then figure out the physical means&lt;/li&gt;
&lt;li&gt;repetition and grouping into units&lt;/li&gt;
&lt;li&gt;isolation of aspects of technique&lt;/li&gt;
&lt;li&gt;classify goals as long, medium, and short term&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;All-workshop ensemble&lt;/h3&gt;
&lt;p&gt;We had a shorter session, in order to make more time for the following ad hoc student concert.&lt;/p&gt;
&lt;p&gt;Eric had singers lined up in front so that we would run through &quot;Ecco l&apos;Aurora&quot; as it was going to be presented on Friday: I stood with Chris for tenor and found it tremendously helpful to have him at my side so that when I was uncertain or got lost, I had someone to anchor back to.&lt;/p&gt;
&lt;p&gt;Instrumentalists were reminded to play as though singing, articulating consistently with the words of the text.&lt;/p&gt;
&lt;h3&gt;Ad hoc student concert&lt;/h3&gt;
&lt;p&gt;A lot of participants in the workshop look forward to this as one of their highlights of the experience. I did not sign up to perform for this because I was focused entirely on classes.&lt;/p&gt;
&lt;p&gt;Each selection was short, and there were a whole lot of individuals and groups that came up to present something. Some people had prepared something before the workshop. Others had met up and were playing for the first time together. It was a fun time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/ad-hoc-audience.jpg&quot; alt=&quot;Ad hoc student concert audience&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Practice&lt;/h3&gt;
&lt;p&gt;Finally at 10 PM I started music practice!&lt;/p&gt;
&lt;h2&gt;Day 6: Friday (July 20), final day&lt;/h2&gt;
&lt;h3&gt;Flute&lt;/h3&gt;
&lt;p&gt;We reviewed what we were playing for the concert, but also moved on to work some more on music we were not performing.&lt;/p&gt;
&lt;h3&gt;Voice&lt;/h3&gt;
&lt;p&gt;We went over the two pieces we were to perform at the concert, then closed the class with work on some more pieces in the book.&lt;/p&gt;
&lt;h3&gt;Recorder consort&lt;/h3&gt;
&lt;p&gt;Final review.&lt;/p&gt;
&lt;h3&gt;Bass&lt;/h3&gt;
&lt;p&gt;We did a lot of intonation adjustment, since many of us were sharp!&lt;/p&gt;
&lt;p&gt;James had particular ideas about performance presentation, and told us to hold up our instruments after we were done playing, watch out for extraneous sucking, and refrain from bringing too much junk (extra clothing, shoe boxes, etc.) with us. Also, we were to bring only the two pages of music we were to play, not binders of all our music.&lt;/p&gt;
&lt;h3&gt;Improvisation&lt;/h3&gt;
&lt;p&gt;Final class. We did not plan to perform as a group in the concert.&lt;/p&gt;
&lt;h3&gt;Dinner&lt;/h3&gt;
&lt;p&gt;Abby had come up for dinner on Monday. I hadn&apos;t seen her since then, and she came up to see the final concert. I was happy she was able to make it!&lt;/p&gt;
&lt;h3&gt;Final concert&lt;/h3&gt;
&lt;p&gt;The final student concert showcased what everyone had worked on so hard for the week. Because I took so many classes, I was in several groups that performed. Here are just a sample of photos and videos from the concert. I apologize for not having full coverage, but as I was occupied with performing, after my first performance, I completely stopped messing around with my phone and just focused on enjoying others&apos; performances and getting ready to switch in when one of my groups was up! Abby did take some photos and videos, but only when I was involved!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/harps.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/recorder-eric.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/recorder-eric-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Me in flute&lt;/h4&gt;
&lt;p&gt;Abby took this photo of me in Majbritt&apos;s flute group:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/flute-majbritt.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Me in voice ensemble&lt;/h4&gt;
&lt;p&gt;Eric tuning for the voice ensemble (I&apos;m standing next to Chris as usual):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/voice-tuning.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Clips from our two selections:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/SfptMbkdwsw&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/nF-5ph82sJ4&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Immediately after the voice ensemble performance, Abby commented to me that during performance, I ended up &quot;hiding&quot; with my score in my hands rising up and up, partially covering my face. Admittedly, I was very nervous, but also, I was trying to cover up my inability to keep a straight face while barking on the tenor dog line!! (For the final all-workshop ensemble performance, I made sure not to hide.)&lt;/p&gt;
&lt;h4&gt;Bass ensemble&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/bass-final.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.mideastearlymusic.addr.com/P1160081.jpeg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.mideastearlymusic.addr.com/P1160081.jpeg&quot;&amp;gt;[image defunct]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/NY8YQfYErfc&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h4&gt;Concluding all-workshop ensemble performance&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/all-workshop-final.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Me and Chris:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mideast-workshop-2012/all-workshop-final-franklin-chris.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.mideastearlymusic.addr.com/P1160084.jpeg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.mideastearlymusic.addr.com/P1160084.jpeg&quot;&amp;gt;[image: All-workshop ensemble]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.mideastearlymusic.addr.com/P1160083.jpeg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.mideastearlymusic.addr.com/P1160083.jpeg&quot;&amp;gt;[image: All-workshop ensemble]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CBGZlAWB7BI&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h3&gt;Party&lt;/h3&gt;
&lt;p&gt;There was a party afterwards with unique tasty treats that Abby and I attended, and she got to meet more of my instructors and classmates.&lt;/p&gt;
&lt;p&gt;People started to pack up and prepare to leave. It was a long week, but what a fun one!&lt;/p&gt;
&lt;p&gt;I was, of course, asked whether I planned to come back next year. I said I would like to, but could not yet commit to that.&lt;/p&gt;
&lt;h2&gt;More photos&lt;/h2&gt;
&lt;p&gt;More photos of the whole workshop week can be found &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://mideastearlymusic.addr.com/newpglogo.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://mideastearlymusic.addr.com/newpglogo.htm&quot;&amp;gt;here at the workshop site&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Saturday at home: thoughts&lt;/h2&gt;
&lt;p&gt;I weighed myself the next day. I&apos;d gained a total of &lt;em&gt;seven pounds&lt;/em&gt; in five days. On the one hand, I had gone in underweight, so it was good I finally made up for that, but now I was a bit overweight, as Abby noticed.&lt;/p&gt;
&lt;p&gt;Reflecting on the week, I resolved to put into practice everything I had learned at the workshop. It was going to take time to develop new habits, make use of new awareness, but I now knew of the path forward. Before attending the workshop, I had gotten advice here and there that was useful, and I had read up on things by myself, but there is nothing like being immersed in an environment of total learning, feedback, and collaboration.&lt;/p&gt;
&lt;p&gt;Attending this workshop has given me fresh concrete direction and musical goals as well as the determination to push on and not settle for anything less than doing what I can to musically express myself.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;I am grateful to Marilyn, all the instructors (especially those of my classes: Majbritt, Emily, Eric, James, Alan), my classmates (especially Chris for voice, without whom I would have felt lost), the staff of LaRoche College, and the members of the Pittsburgh Recorder Society who first told me of this workshop and also attended (Helen, Annie, Mike, Sam, Maggie who danced with me). Mike was a considerate dorm roommate for the week. And I am particularly grateful that Abby supported me in my quest to improve my musicianship and enabled me to attend the workshop, and also visited me twice for dinner and to see me in the final student concert.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had an amazing time at the Mideast early music workshop. I am going to continue my study of Baroque flute and recorder, and voice as well, and do more with improvisation. Now that I have seen and worked with more really good musicians up front (both instructors and students at the workshop: I noticed that quite a few of the students themselves are actually professional musicians on non-early instruments), I have a much clearer idea of how I want to sound and what kind of technique I need to develop in order to make that into reality. Mostly, I feel that some kind of psychological block has been removed and that I now have real courage where I still didn&apos;t have it before attending the workshop: courage to experiment, to fail, to continue.&lt;/p&gt;
</content:encoded></item><item><title>Another terrifying music jam session but I played a little bit of blues and old time</title><link>https://franklinchen.com/blog/2012/07/07/another-terrifying-music-jam-session-but-i-played-a-little-bit-of-blues-and-old-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/07/another-terrifying-music-jam-session-but-i-played-a-little-bit-of-blues-and-old-time/</guid><pubDate>Sat, 07 Jul 2012 23:37:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened&quot;&gt;Just earlier this week, I went to a music jam where I was afraid to play&lt;/a&gt; and so I didn&apos;t.&lt;/p&gt;
&lt;p&gt;Today Abby and I went to another intimidating potluck/jam session, this time hosted by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.appalasia.com/Mimi.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.appalasia.com/Mimi.htm&quot;&amp;gt;Mimi Jong&amp;lt;/span&amp;gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://classic-sculpture.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://classic-sculpture.com/&quot;&amp;gt;Susan Wagner&amp;lt;/span&amp;gt;. Mimi had invited Abby, but hadn&apos;t yet met me; I knew who she was through having been to an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.appalasia.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.appalasia.com/&quot;&amp;gt;Appalasia&amp;lt;/span&amp;gt; performance with Abby at some point earlier.&lt;/p&gt;
&lt;p&gt;This time I played a little bit. I almost didn&apos;t, but felt that I had to start with something.&lt;/p&gt;
&lt;h2&gt;Lots of music&lt;/h2&gt;
&lt;p&gt;There was music going on outside in back of the home. Wow. It was fantastic stuff, what everyone was doing.&lt;/p&gt;
&lt;p&gt;There was Mimi on &lt;a href=&quot;https://en.wikipedia.org/wiki/Erhu&quot;&gt;erhu&lt;/a&gt;, of course. There was a keyboard and sound system set up. People on bass, guitars, drums of all kinds, claves, banjos, violin, singing, you name it. All kinds of music was being jammed to. A lot of Latin music, sung by someone who seemed a native Spanish speaker.&lt;/p&gt;
&lt;p&gt;I recognized a violinist as being someone who had played Baroque violin at a recital I had been at in April.&lt;/p&gt;
&lt;p&gt;In any case, there were clearly a lot of professional musicians here and so I felt really intimidated. I did a lot of watching and listening and quite enjoyed experiencing joy and inventiveness unfold.&lt;/p&gt;
&lt;p&gt;It was fascinating seeing Mimi kicking off &lt;a href=&quot;https://en.wikipedia.org/wiki/Summertime_(song)&quot;&gt;&quot;Summertime&quot;&lt;/a&gt; on erhu. Hey, why not?&lt;/p&gt;
&lt;p&gt;Some of the Latin and Brazilian songs I knew the melodies for, and if I only knew all lyrics and could actually sing, I would have wanted to join in for.&lt;/p&gt;
&lt;h2&gt;Joining in&lt;/h2&gt;
&lt;p&gt;But Mimi encouraged Abby and me to join in. At some point, Abby did join in.&lt;/p&gt;
&lt;p&gt;Part of the problem for me, besides the fact that I felt naked and helpless without a music score to read, was that I&apos;d brought one case of instruments this time, which included some recorders as well as a Baroque flute, and it didn&apos;t seem like any of these instruments was really suitable for the occasion. In my hurry to arrive at the potluck already running late, I had forgotten to bring my modern flute!&lt;/p&gt;
&lt;p&gt;I did the best I could and took out my Baroque flute and tried joining in. Some old time music came on and I found it not so difficult to do something for that, although nothing I was proud of.&lt;/p&gt;
&lt;p&gt;What I remember mainly is when Mimi started some blues and at some point I came in and gave it a shot, and although I didn&apos;t last very long, I got something in that wasn&apos;t totally horrible. Somehow that was very liberating, getting those few seconds in for the evening. At least I didn&apos;t walk away from the party this evening without playing anything at all.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Attending this potluck/jam session was an immensely exciting experience for me. I feel like I am truly expanding my musical world, and getting inspired. I too would like to be singing my favorite Latin songs. And I really like blues improvisation. I will start doing these things eventually; they are no longer just remote possibilities, but what I have seen people doing in front of my own eyes and not in an impersonal concert but at a casual, fun party.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-01-28)&lt;/h3&gt;
&lt;p&gt;Six months later, I participated in &lt;a href=&quot;/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/&quot;&gt;my first blues jam&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-09-28)&lt;/h3&gt;
&lt;p&gt;Over a year later, I reported on &lt;a href=&quot;/blog/2013/09/28/an-erhu-player-and-a-tuba-player-at-a-party-said-lets-jam/&quot;&gt;participating in a music jam at another one of these parties with Mimi&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Obama is speaking outside my office window, so why did I stay home?</title><link>https://franklinchen.com/blog/2012/07/06/obama-is-speaking-outside-my-office-window-so-why-did-i-stay-home/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/06/obama-is-speaking-outside-my-office-window-so-why-did-i-stay-home/</guid><pubDate>Fri, 06 Jul 2012 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Right now, President Obama is &lt;a href=&quot;https://web.archive.org/web/20240422192956/https://www.cmu.edu/news/stories/archives/2012/july/july3_obama.html&quot;&gt;speaking&lt;/a&gt; on the College of Fine Arts lawn at Carnegie Mellon University, right outside my office window. Apparently, &lt;a href=&quot;https://twitter.com/thetartan/status/221267182707949569&quot;&gt;&quot;the line for President Obama&apos;s visit to CMU goes from Purnell to Gesling Stadium&quot;&lt;/a&gt;. That&apos;s some line.&lt;/p&gt;
&lt;p&gt;Yesterday at work I saw a lot of setup going on out on the lawn:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/obama-cmu-setup.jpg&quot; alt=&quot;CFA lawn being set up for Obama&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Anyway, today I stayed at home. Why did I stay at home when I could have picked up a free ticket yesterday for this event? (Below is a photo of someone else&apos;s ticket since I did not get one.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/obama-cmu-ticket.jpg&quot; alt=&quot;Ticket for Obama event at CMU&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;It&apos;s not about Obama&lt;/h2&gt;
&lt;p&gt;First, I want to make it clear that this is not about Obama. It is not about whether I like or hate him, or whether I will vote for or against him this fall. If it were Mitt Romney, I would not be attending.&lt;/p&gt;
&lt;h2&gt;It&apos;s about politics&lt;/h2&gt;
&lt;p&gt;I don&apos;t like politics, but &lt;a href=&quot;/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/&quot;&gt;I do vote&lt;/a&gt;. In fact, just in the last couple of years, I even do what I have to do in order to vote in closed primaries. I find it extremely distasteful to have to register for some official &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.goodreads.com/quotes/show/401859&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.goodreads.com/quotes/show/401859&quot;&amp;gt;party&amp;lt;/span&amp;gt; in order to vote in primaries, but I did it.&lt;/p&gt;
&lt;p&gt;At various points in my life, I have either been apathetic, cynical, or idealistic about politics. Right now, I would say I am simply realistic and take a rational approach, devoid of all emotion. I minimize following of political news or getting into heated arguments. I go out twice a year to vote.&lt;/p&gt;
&lt;p&gt;Nothing Obama is saying right now or not saying would likely affect my vote, so from a rational point of view, there is nothing to be gained from wasting valuable time (and suffering in the summer heat outside) just to hear him on his campaign tour. Furthermore, if he really is saying anything truly interesting, I&apos;m sure I&apos;ll get the executive summary from someone and if I really wanted to, I could get a transcript too, probably.&lt;/p&gt;
&lt;p&gt;In a world of too much pointless information, I don&apos;t need political speeches to use up my brain cells.&lt;/p&gt;
&lt;h2&gt;It&apos;s especially about presidents&lt;/h2&gt;
&lt;p&gt;I&apos;m particularly uninterested in following presidential politics, because the cult of the presidency has overwhelmed American politics. The president gets credit or blame for everything. People forget that the US was founded with three branches of government, and the executive is just one of those three. Congress and the Supreme Court are critical. In fact, just recently we saw how important the Supreme Court is, when the Roberts Supreme Court &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.forbes.com/sites/aroy/2012/07/01/the-supreme-courts-john-roberts-changed-his-obamacare-vote-in-may/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.forbes.com/sites/aroy/2012/07/01/the-supreme-courts-john-roberts-changed-his-obamacare-vote-in-may/&quot;&amp;gt;surprisingly upheld Obamacare&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;At a time when monarchy was still the norm, George Washington chose not to become a king. We&apos;re not supposed to have kings in this country. Yet people really do long for king-like figures, whether as saviors or villains. This longing is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.enduringword.com/commentaries/0908.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.enduringword.com/commentaries/0908.htm&quot;&amp;gt;part of human nature&amp;lt;/span&amp;gt;, unfortunately. I&apos;m doing my part to choose to buck human nature and ignore presidents.&lt;/p&gt;
&lt;p&gt;I&apos;d be more likely to attend a speech by a prospective candidate for Mayor of Pittsburgh than to attend speeches by any future presidents or presidential candidates.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Obama&apos;s talking, and I stayed at home to get stuff done.&lt;/p&gt;
</content:encoded></item><item><title>Petrified at a music jam session so I didn&apos;t play but watched and listened</title><link>https://franklinchen.com/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/03/petrified-at-a-music-jam-session-so-i-didnt-play-but-watched-and-listened/</guid><pubDate>Tue, 03 Jul 2012 22:35:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited&quot;&gt;Just yesterday, I went to a music jam&lt;/a&gt; and was anxious but got over that and participated.&lt;/p&gt;
&lt;p&gt;Today Abby and I went to a &lt;em&gt;very different&lt;/em&gt; one, a potluck/music jam hosted by Susan Waggoner, whom we&apos;ve known for a long time through various Pittsburgh music and dance activities. Susan is involved particularly in the Cajun music/dance scene, and was also in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/stories/local/neighborhoods-city/accordion-pool-partys-another-use-for-empty-lawrenceville-pool-357459/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/stories/local/neighborhoods-city/accordion-pool-partys-another-use-for-empty-lawrenceville-pool-357459/&quot;&amp;gt;Accordion Pool Party&amp;lt;/span&amp;gt; that Abby played in three years ago, and also has been doing &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/&quot;&gt;French dancing&lt;/a&gt; with us.&lt;/p&gt;
&lt;p&gt;I was so &lt;em&gt;terrified&lt;/em&gt; at this party that I didn&apos;t play &lt;em&gt;at all&lt;/em&gt;, despite bringing my instruments. I just didn&apos;t feel up to it. But I learned a lot.&lt;/p&gt;
&lt;h2&gt;Two main groups of musicians&lt;/h2&gt;
&lt;p&gt;It turned out that there were a bunch of musicians playing music outside in the back of the home. I wasn&apos;t super familiar with what they were playing. Then there were some musicians playing music inside in the living room.&lt;/p&gt;
&lt;p&gt;They really knew what they were doing, and were singing and playing by ear, no scores in sight. Without any scores, I had no clue how I could contribute, so I didn&apos;t even take out my instruments. This was &lt;em&gt;real&lt;/em&gt; jamming, not the kind that I did yesterday where most (but not all) of the stuff we did involved songs I had brought scores for or at least had heard before.&lt;/p&gt;
&lt;h3&gt;Old time music&lt;/h3&gt;
&lt;p&gt;I was told by the men and women who were inside that those outside were playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Old-time_music&quot;&gt;&quot;old time&quot;&lt;/a&gt; music. I hadn&apos;t been familiar with the term or genre.&lt;/p&gt;
&lt;p&gt;Abby liked being outside, and also has been playing mandolin, so spent time checking out that group. I think she played along some too. It seemed to be mostly fiddlers, with banjo, mandolin, percussion, etc.&lt;/p&gt;
&lt;p&gt;I checked it out, but the music happened not to be quite so interesting to me; it moved fast, had a lot of notes, but seemed somewhat monotonous to my taste.&lt;/p&gt;
&lt;h3&gt;Country blues music&lt;/h3&gt;
&lt;p&gt;Inside, however, I was really captivated by what was going on. They said that they were playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Country_blues&quot;&gt;&quot;country blues&quot;&lt;/a&gt;. I liked the harmonic changes and the rhythmic qualities and improvisation. Guitars, harmonica, piano, singing. I was impressed by how the singers made up entire lyrics on the spot, often very funny or off-color.&lt;/p&gt;
&lt;p&gt;I stayed around inside soaking in what was going on, and thought, I could see myself someday playing along.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I was really excited to meet more musicians and widen my musical experience at the potluck/jam session. I felt pretty inspired by what I saw going on, music as a really communal, creative experience.&lt;/p&gt;
&lt;p&gt;Noticing the huge gap between what these musicians were able to do and what I am able to do, I know that it takes a long time to get where they are, but I want to have that kind of everyday facility.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-07-07)&lt;/h3&gt;
&lt;p&gt;Four days later, we went to another potluck/jam session, and &lt;a href=&quot;/blog/2012/07/07/another-terrifying-music-jam-session-but-i-played-a-little-bit-of-blues-and-old-time/&quot;&gt;I played a little bit&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-01-28)&lt;/h3&gt;
&lt;p&gt;Seven months later, I participated in &lt;a href=&quot;/blog/2013/01/28/my-first-blues-music-jam-happened-after-the-regular-french-music-jam/&quot;&gt;my first blues jam&lt;/a&gt;. The pianist there, Anders, was the same one I first saw here.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-07-03)&lt;/h3&gt;
&lt;p&gt;At &lt;a href=&quot;/blog/2013/07/03/second-year-at-july-3-music-party-still-only-listening-without-playing/&quot;&gt;my second year&lt;/a&gt; of this annual party, I still did not feel comfortable enough with the crowd to try to participate musically.&lt;/p&gt;
&lt;h3&gt;(Update of 2014-07-03)&lt;/h3&gt;
&lt;p&gt;At &lt;a href=&quot;/blog/2014/07/03/third-year-at-july-3-music-party-and-finally-participated-in-jamming/&quot;&gt;my third year&lt;/a&gt; of this annual party, I actually played both piano and ukulele!&lt;/p&gt;
</content:encoded></item><item><title>My first French music jam: anxious but excited</title><link>https://franklinchen.com/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited/</guid><pubDate>Mon, 02 Jul 2012 23:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight I participated for the first time in a new local &lt;a href=&quot;https://www.facebook.com/groups/182324948478861/&quot;&gt;French traditional dance&lt;/a&gt; music jam session that is getting off the ground, organized by Lisa. I was really excited about the formation of our group.&lt;/p&gt;
&lt;p&gt;How did this come about?&lt;/p&gt;
&lt;h2&gt;Inspired by Gregory&lt;/h2&gt;
&lt;p&gt;What happened was that after &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;Gregory left us this summer&lt;/a&gt;, I told Lisa that I really wanted to do the kind of thing Gregory had been doing, playing French music for dancers. Lisa was excited about this and thought it would be cool for herself to start playing fiddle again. She found some other people who were interested in playing French music together, and so we met up!&lt;/p&gt;
&lt;h2&gt;Instruments&lt;/h2&gt;
&lt;p&gt;Tonight, I played both my &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; and my modern flute. I didn&apos;t really want to play the modern flute, but there were times when we played some music in keys I wasn&apos;t comfortable with on Baroque flute. Meanwhile, it will take a long time for the &lt;a href=&quot;/blog/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/&quot;&gt;Irish flute I ordered&lt;/a&gt; to be made and shipped. I really want to use the louder Irish flute when feasible.&lt;/p&gt;
&lt;p&gt;Lisa had her fiddle, and someone else also had a fiddle.&lt;/p&gt;
&lt;p&gt;A guy brought his melodeon (button accordion), which unfortunately is limited in the keys it can play in. He sometimes used the old upright piano also. There was someone else who also used the piano.&lt;/p&gt;
&lt;p&gt;And there was someone on clarinet.&lt;/p&gt;
&lt;h2&gt;How it went&lt;/h2&gt;
&lt;p&gt;I was quite nervous, because much of what we did was not from printed scores, but from people&apos;s memories of their favorite tunes. I in fact ended up using my phone to send Lisa a PDF of Gregory&apos;s French music score compilation so that she could print it out for some of us!&lt;/p&gt;
&lt;p&gt;I quickly noticed that my Baroque flute was being drowned out by the other instruments. So I pulled out my modern flute sometimes in order to be heard more.&lt;/p&gt;
&lt;p&gt;We went on for quite some time as the dancers arrived and became restless, and then we played for them for about an hour. Actually, I was heard better then, because Lisa and some other musicians gave introductory lessons or themselves wanted to dance. The result was that after a while, it was just Donna on fiddle, John on melodeon, and me on Baroque flute playing for the dancers.&lt;/p&gt;
&lt;p&gt;It&apos;s really a joy playing music for people to dance to. I feel like I&apos;m starting to fulfill my dream that &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;I dared to mention in March: that of being the musician rather than the dancer at a dance&lt;/a&gt;. During his time here in Pittsburgh, I was really inspired by the example of Gregory (who has finished his stay in the country and gone back to Europe) to start learning tunes by ear, ornamenting, and improvising. I&apos;m still quite a beginner at this approach to music, but this is what I&apos;ve always wanted to do.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The first French music jam and new format for the French dance (live music instead of iTunes) was a great start of something new. We were all so excited that we definitely want to continue doing this. I look forward to continuing to play together.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-08-27)&lt;/h2&gt;
&lt;p&gt;And less than two months later, I am &lt;a href=&quot;/blog/2012/08/27/my-second-french-music-jam-playing-my-irish-flute-in-public-for-the-first-time/&quot;&gt;still involved in the new French music jam&lt;/a&gt;, and finally with my own Irish flute!&lt;/p&gt;
</content:encoded></item><item><title>Attending my first Google I/O Extended: Pittsburgh</title><link>https://franklinchen.com/blog/2012/06/27/attending-my-first-google-io-extended-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/27/attending-my-first-google-io-extended-pittsburgh/</guid><pubDate>Wed, 27 Jun 2012 22:43:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I finally entered Google Pittsburgh&apos;s office in Bakery Square as a visitor for the first time, thanks to being told by a friend about an event called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.eventbrite.com/e/google-io-extended-pittsburgh-registration-3630312362&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.eventbrite.com/e/google-io-extended-pittsburgh-registration-3630312362&quot;&amp;gt;&quot;Google I/O Extended: Pittsburgh&quot;&amp;lt;/span&amp;gt;, which he sent me an invitation to. I decided to attend, out of curiosity.&lt;/p&gt;
&lt;h2&gt;Tour&lt;/h2&gt;
&lt;p&gt;Having never been inside Google Pittsburgh before, of course as soon as I arrived I joined a group of people for a tour led by Jen Crowley. Impressive space. Very clean. High-quality food available, and labeled in jars. Ha, it was mentioned that the chef is building a chicken coop.&lt;/p&gt;
&lt;p&gt;There is a massage room, shower, meditation room, music room. They clearly want employees to feel &quot;at home&quot;.&lt;/p&gt;
&lt;p&gt;The work space is &quot;open plan&quot;. I saw dogs running around.&lt;/p&gt;
&lt;p&gt;I was surprised to see a lot of people wearing Google shirts. I guess there must be corporate pride here?&lt;/p&gt;
&lt;h2&gt;Brunch&lt;/h2&gt;
&lt;p&gt;After the tour, I checked out the brunch they had for us. Fancy stuff. I socialized with other attendees I recognized from the local programming community, as well as other people I hadn&apos;t seen in over a decade, like old CMU classmates of mine.&lt;/p&gt;
&lt;h2&gt;Welcome&lt;/h2&gt;
&lt;p&gt;Andrew Moore gave a welcome speech. I hadn&apos;t seen him in around 15 years, since I was in graduate school in computer science at CMU and he was a professor there, before Google existed at all. I was interested in what he had to say about what Google Pittsburgh was up to. He said Google Shopping will be big (I don&apos;t think I&apos;ve ever used it!). He also emphasized that Google Pittsburgh focuses on systems: monitoring and debugging all off Google&apos;s infrastructure. They&apos;re also working on NLP stuff and he said they have a need for people who understand the political and philosophical aspects of interpretation. They&apos;re also interested in Agile and Scrum expertise for managing projects.&lt;/p&gt;
&lt;p&gt;I noticed that there were around 120 people seated for his talk, and maybe 5 were female. I always find these lopsided ratios jarring, since where I work females actually outnumber males.&lt;/p&gt;
&lt;h2&gt;Keynote, live-streamed&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/VuC0i4xTyrI&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;The keynote went on and on. There was talk of Android, Jelly Bean, Google Play, and a lot of other stuff.&lt;/p&gt;
&lt;p&gt;The freakiest thing to me was the demonstration of Glass. At first, it was entertaining to see the skydivers do their thing, but then when it came to someone monitoring and capturing a baby, all I could think of was &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Truman_Show&quot;&gt;&quot;The Truman Show&quot;&lt;/a&gt;. I do not want to live in a brave new world in which we are all wearing Glass.&lt;/p&gt;
&lt;p&gt;Overall, nothing in the keynote actually interested me. I&apos;m &quot;behind&quot; as far as tech culture is concerned, although three months ago I actually bought &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;my first smartphone&lt;/a&gt;, an Android phone, purely because my old dumb phone died.&lt;/p&gt;
&lt;h2&gt;The Web Platforms Cutting Edge&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/2txPYQOWBtg&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;It was very crowded, and the session was running late already, because of technical difficulties in the room we were in. We eventually switched rooms.&lt;/p&gt;
&lt;p&gt;The presentation was about a &quot;shadow DOM&quot;.&lt;/p&gt;
&lt;p&gt;I mentally checked out because the state of Web development saddens me. There has to be a better way.&lt;/p&gt;
&lt;h2&gt;Reception, beer tasting and food pairings&lt;/h2&gt;
&lt;p&gt;There was fancy food.&lt;/p&gt;
&lt;h2&gt;Live session: Production at Scale: Topics in Warehouse Scale Computing&lt;/h2&gt;
&lt;p&gt;It was already 4:30 PM by the time I finally got to attend a live session.&lt;/p&gt;
&lt;p&gt;Todd Underwood emphasized the vastness of scale that creates unique challenges for Google that don&apos;t exist elsewhere. Site reliability engineering (SRE) is tough. He talked about how even extremely rare events such as undetectable RAM errors have to be accounted for in fault tolerance. I came away with an appreciation for the magnitude of the task.&lt;/p&gt;
&lt;h2&gt;Live Session: Another Look at Scale: Designing Software to Fit its Dimensions&lt;/h2&gt;
&lt;p&gt;Joe McClain emphasized that decisions have to consider the business case, not just the technical case. Everything from developer scaling to code life span is monitored and analyzed.&lt;/p&gt;
&lt;h2&gt;Paul Irish on tooling&lt;/h2&gt;
&lt;p&gt;One thing lacking in Web development right now has been a standardized work flow. I see people doing a lot of ad hoc project setups, builds, etc., for managing HTML, CSS, and JavaScript. I was happy to see Paul Irish demonstrating the new tool &lt;a href=&quot;https://web.archive.org/web/20260326180022/https://yeoman.io/&quot;&gt;Yeoman&lt;/a&gt;. It looked pretty promising.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was definitely interesting to check out what Google&apos;s been up to, and I appreciate the opportunity to take a look inside the Pittsburgh office, physically and technically.&lt;/p&gt;
</content:encoded></item><item><title>RSpec new expectation: finally not shoving a verb into a noun</title><link>https://franklinchen.com/blog/2012/06/23/rspec-new-expectation-finally-not-shoving-a-verb-into-a-noun/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/23/rspec-new-expectation-finally-not-shoving-a-verb-into-a-noun/</guid><pubDate>Sat, 23 Jun 2012 22:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently saw a note describing how Ruby&apos;s RSpec will soon deprecate &lt;code&gt;should&lt;/code&gt; in favor of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax&quot;&amp;gt;&quot;new expectation syntax&quot;&amp;lt;/span&amp;gt; &lt;code&gt;expect&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I sighed. &lt;code&gt;should&lt;/code&gt; was a terrible mistake in the first place.&lt;/p&gt;
&lt;p&gt;Calling this a change in &lt;em&gt;syntax&lt;/em&gt; is misleading. It&apos;s the &lt;em&gt;semantics&lt;/em&gt; that matters, and it&apos;s the obsessive desire to play with syntax in the first place that led to the original &lt;code&gt;should&lt;/code&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Monkey_patch&quot;&gt;monkey-patching&lt;/a&gt; nightmare.&lt;/p&gt;
&lt;p&gt;In the terminology of Steve Yegge&apos;s famous rant about the &lt;a href=&quot;https://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html&quot;&gt;kingdom of nouns&lt;/a&gt;: there was no good reason to shove the &lt;em&gt;verb&lt;/em&gt; &lt;code&gt;should&lt;/code&gt; into a class definition (&lt;em&gt;noun&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;An expectation of something shouldn&apos;t be monkey-patched into an object.&lt;/p&gt;
&lt;p&gt;The expectation is external, not internal, not something to be owned by a class. The new RSpec finally recognizes this.&lt;/p&gt;
</content:encoded></item><item><title>Walking the scenic route through Schenley Park to work</title><link>https://franklinchen.com/blog/2012/06/18/walking-the-scenic-route-through-schenley-park-to-work/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/18/walking-the-scenic-route-through-schenley-park-to-work/</guid><pubDate>Mon, 18 Jun 2012 22:08:00 GMT</pubDate><content:encoded>&lt;p&gt;Two months ago, I &lt;a href=&quot;/blog/2012/04/16/one-week-of-commuting-on-foot-because-of-cmu-carnival/&quot;&gt;spent a whole week&lt;/a&gt; commuting to work at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cmu.edu/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cmu.edu/&quot;&amp;gt;Carnegie Mellon University&amp;lt;/span&amp;gt; by walking instead of driving, because of the annoyances of parking during Carnival week.&lt;/p&gt;
&lt;p&gt;Because I enjoyed that experience so much, since then, I have walked to/from work at least once a week! Usually my route has included either Forbes Avenue or Schenley Drive, but once I went on other roads through Schenley Park.&lt;/p&gt;
&lt;p&gt;Last week I started making the trails of Schenley Park part of my walk. This adds probably half a mile to the walk (for a total of just less than 2.5 miles from home to work); time efficiency was why I had not taken this indirect route before.&lt;/p&gt;
&lt;p&gt;Here are some photos of my walk to CMU last week.&lt;/p&gt;
&lt;h2&gt;Going barefoot to Schenley Park&lt;/h2&gt;
&lt;p&gt;I went barefoot the entire way from home to Schenley Park.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/barefoot.jpg&quot; alt=&quot;Barefoot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Reaching the Schenley Park sign on Hobart Street:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/hobart.jpg&quot; alt=&quot;Schenley Park sign on Hobart Street&quot; /&gt;&lt;/p&gt;
&lt;p&gt;About to enjoy barefoot running on the grass to cross Beacon Street and Bartlett Street to reach the &lt;a href=&quot;https://www.examiner.com/article/schenley-park-bartlett-street-playground&quot;&gt;Bartlett Playground&lt;/a&gt;. Note that the &lt;a href=&quot;https://web.archive.org/web/20121120075614/http://www.tour.pitt.edu:80/tour-080.html&quot;&gt;Cathedral of Learning&lt;/a&gt; is visible in the background.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/beacon-bartlett-grass.jpg&quot; alt=&quot;Grass at Hobart Street and Beacon Street&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Arriving at the Bartlett Shelter sign:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/bartlett-shelter.jpg&quot; alt=&quot;Sign for Bartlett Shelter&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Right behind the playground is the entrance to the Panther Hollow Trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/bartlett-panther-hollow-trail.jpg&quot; alt=&quot;Sign for Panther Hollow Trail&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Panther Hollow Trail to Schenley Park Cafe and Visitor Center&lt;/h2&gt;
&lt;p&gt;This section of the Panther Hollow Trail that I followed all the way to the &lt;a href=&quot;https://web.archive.org/web/20150914202243/https://www.pittsburghparks.org/schenleyparkcafe&quot;&gt;Schenley Park Cafe and Visitor Center&lt;/a&gt; is the all-downhill section of the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;Pretty Good Race 5K&lt;/a&gt; course that I ran on to &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;celebrate National Running Day on June 6&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My apologies to the barefoot purists, but I immediately found the trail too rough for my bare feet and put on my Vibram FiveFingers KSO shoes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/vibram-fivefingers-kso.jpg&quot; alt=&quot;Vibram FiveFingers KSO shoes on Panther Hollow Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A typical view while running downhill on the Panther Hollow Trail for about 0.9 mile:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/panther-hollow-trail-downhill.jpg&quot; alt=&quot;Panther Hollow Trail going downhill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A sign at the base of the steps that lead up to the Schenley Park Cafe and Visitor Center. I appreciate the renovations in the Pittsburgh parks in the past several years that include such features as the new signs that I think help visitors a lot.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/steps-sign.jpg&quot; alt=&quot;Schenley Park sign at base of steps&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally out of the trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/schenley-park-cafe-and-visitor-center.jpg&quot; alt=&quot;Schenley Park Cafe and Visitor Center&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Across Flagstaff Hill to my office at Carnegie Mellon University&lt;/h2&gt;
&lt;p&gt;A view of Phipps Conservatory as well as the &lt;a href=&quot;https://web.archive.org/web/20121120075614/http://www.tour.pitt.edu:80/tour-080.html&quot;&gt;Cathedral of Learning&lt;/a&gt; in the distance:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/phipps-cathedral.jpg&quot; alt=&quot;Phipps Conservatory&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One is probably not supposed to do so, but I climbed up the stone border (about four feet high) to enter Flagstaff Hill. The more circuitous route to my office would be to take Schenley Drive, which curves around, but it&apos;s shorter (and also more scenic and strenuous) to go up the hill directly and steeply, and then descend.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/flagstaff-hill.jpg&quot; alt=&quot;Flagstaff Hill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Taking in the view of the Cathedral of Learning against the lovely blue sky, while running through the grass on Flagstaff Hill:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/cathedral-of-learning-from-flagstaff-hill.jpg&quot; alt=&quot;Cathedral of Learning visible from Flagstaff Hill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My office is barely visible through the trees as I descend:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/office-through-trees.jpg&quot; alt=&quot;Office visible through trees&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A convenient path to Frew Street:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/path-to-frew-street.jpg&quot; alt=&quot;Path to Frew Street&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At my office building:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/commute-schenley-park/office-building.jpg&quot; alt=&quot;My office building&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;It is a lot of fun on a nice day to walk to work the &quot;long&quot; way that goes through the trails of Schenley Park and also Flagstaff Hill.&lt;/p&gt;
&lt;p&gt;I am so grateful that Pittsburgh is friendly and stimulating for walking in. And, of course, I am grateful that &lt;a href=&quot;https://en.wikipedia.org/wiki/Mary_Schenley&quot;&gt;Mary Schenley&lt;/a&gt; donated the land to Pittsburgh way back that became Schenley Park.&lt;/p&gt;
</content:encoded></item><item><title>Review of Coursera course: Model Thinking</title><link>https://franklinchen.com/blog/2012/06/16/review-of-coursera-course-model-thinking/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/16/review-of-coursera-course-model-thinking/</guid><pubDate>Sat, 16 Jun 2012 22:09:00 GMT</pubDate><content:encoded>&lt;p&gt;I finally got my &quot;Statement of Accomplishment&quot; for the Coursera course &lt;a href=&quot;https://www.coursera.org/course/modelthinking&quot;&gt;&quot;Model Thinking&quot;&lt;/a&gt;, which lasted for four months, starting in February, taught by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://vserver1.cscs.lsa.umich.edu/~spage/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://vserver1.cscs.lsa.umich.edu/~spage/&quot;&amp;gt;Scott Page&amp;lt;/span&amp;gt; of the University of Michigan.&lt;/p&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;Why did I take this course? Largely out of curiosity, because it was there and &quot;free&quot;, and because &lt;a href=&quot;https://mathbabe.org/2012/02/12/new-online-course-model-thinking/&quot;&gt;mathbabe&apos;s blog mentioned it&lt;/a&gt;. There was no direct applicability to anything I&apos;m doing now for work or anything. But I was hoping to get some insight into the construction and use of mathematical models in general, in light of all the controversies that come up with regard to whether models can be trusted or are useful.&lt;/p&gt;
&lt;p&gt;There was much online video lecture time, along with quizzes and assignments and a huge amount of reading (simply because the course lasted a whole ten weeks). The instructor was very clear in his lectures. I enjoyed seeing how certain kinds of surprisingly simple models can generate complex phenomena. Of course, this does not necessarily mean that the phenomena we see are &quot;explained&quot; by such models, but that complex phenomena do not necessarily imply that a complex model is required.&lt;/p&gt;
&lt;h2&gt;Two Coursera courses so far this year&lt;/h2&gt;
&lt;p&gt;This course was a huge amount of work, and during February and March I was also concurrently taking and completed another Coursera course, &lt;a href=&quot;/blog/2012/04/13/free-course-review-software-engineering-for-software-as-a-service-part-i-from-coursera/&quot;&gt;&quot;Software Engineering for Software as a Service (Part I)&quot;&lt;/a&gt;. This plus everything else I have been doing in the first half of this year was really overkill.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>The Joy of Eating Ice Cream for Breakfast</title><link>https://franklinchen.com/blog/2012/06/16/the-joy-of-eating-ice-cream-for-breakfast/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/16/the-joy-of-eating-ice-cream-for-breakfast/</guid><pubDate>Sat, 16 Jun 2012 19:27:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/coffee-bean-blast.jpg&quot; alt=&quot;Trader Joe&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recently I started eating ice cream for breakfast. I was amused because this was something I haven&apos;t done since I was a child, when my sister and I managed for a while to convince our parents to let us eat ice cream for breakfast.&lt;/p&gt;
&lt;p&gt;Is there a contradiction between my eating ice cream for breakfast and my supposedly paying attention to my health?&lt;/p&gt;
&lt;h2&gt;How my sister and I got to eat ice cream as kids&lt;/h2&gt;
&lt;p&gt;As kids, my sister and I loved ice cream, of course. We managed to find a way to sometimes eat it for breakfast. Basically, we volunteered to make breakfast on some weekends. We had found some kid-oriented &quot;cookbooks&quot; at a garage sale or something at some point, and we learned about cinnamon toast and other such &quot;American&quot; breakfasts that were foreign to our parents. It was fun for us to take charge of breakfast once in a while, and have an excuse to make super-sugary concoctions to eat.&lt;/p&gt;
&lt;p&gt;Frankly, it was easy enough for us in general to just say, &quot;We&apos;re eating American style&quot;, in order to avoid eating rice porridge with dried shrimp bits and pork bone broth and greens (to tell the truth, I actually liked that, but at some point wanted to eat &quot;American&quot; like my classmates). But it was even more fun to be able to say, &quot;We found this recipe in a &lt;em&gt;book&lt;/em&gt;.&quot;&lt;/p&gt;
&lt;p&gt;A couple of times, we managed to get ice cream into the picture. We must have found a recipe that called for it. We got frozen waffles, and prepared them with syrup and topped with ice cream. I remember that being pretty good.&lt;/p&gt;
&lt;h2&gt;But ice cream is not a good food&lt;/h2&gt;
&lt;p&gt;I have to explain that Abby and I don&apos;t eat ice cream much any more. We&apos;ve found that it is too sugary and makes us feel tired or bloated in large quantities. You don&apos;t have to be &lt;a href=&quot;/categories/paleo/&quot;&gt;paleo&lt;/a&gt; to understand and experience the drawbacks of ice cream (not that we&apos;re strictly paleo anyway).&lt;/p&gt;
&lt;p&gt;However, I&apos;m a big believer in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.t-nation.com/free_online_article/most_recent/in_defense_of_cheat_days&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.t-nation.com/free_online_article/most_recent/in_defense_of_cheat_days&quot;&amp;gt;intermittent cheating&amp;lt;/span&amp;gt;, so I&apos;m happy to eat ice cream now and then as a special treat, but otherwise, I don&apos;t really need it.&lt;/p&gt;
&lt;h2&gt;Why I had to eat ice cream for breakfast&lt;/h2&gt;
&lt;p&gt;I didn&apos;t buy this bucket of Trader Joe&apos;s Coffee Bean Blast ice cream; Abby did. She thought it would be a nice post-&lt;a href=&quot;/categories/hiking/&quot;&gt;hike&lt;/a&gt; treat. Unfortunately, it has turned out in the past months that whenever we go out on a weekend for a hike or some other outdoors adventure, we come back in the evening, and it&apos;s too late to eat this ice cream.&lt;/p&gt;
&lt;p&gt;The problem is caffeine. Eating this ice cream would mess up our night of sleep. In fact, I verified this once, eating some of the ice cream in the evening: oops.&lt;/p&gt;
&lt;p&gt;Frustrated, I didn&apos;t know when I &lt;em&gt;could&lt;/em&gt; eat this coffee ice cream. Clearly, the only time I could possibly eat it would be before late afternoon. Furthermore, the only safe context for me to eat something like this would be after I exercised. Since I have a preference for exercising in the morning before breakfast anyway, the perfect time for eating this ice cream was breakfast. Generally, after exercising, I can eat sugary foods to an extent without compromising my energy levels.&lt;/p&gt;
&lt;h2&gt;What I did to earn my breakfast&lt;/h2&gt;
&lt;p&gt;I went for a five-mile &lt;a href=&quot;/categories/running/&quot;&gt;run&lt;/a&gt; in &lt;a href=&quot;/categories/frick-park/&quot;&gt;Frick Park&lt;/a&gt;. I wore my Vibram FiveFingers Bikila LS shoes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/vibram-fivefingers-bikila-ls.jpg&quot; alt=&quot;Vibram FiveFingers Bikila LS shoes&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My real breakfast&lt;/h2&gt;
&lt;p&gt;At breakfast, I eat only two spoons of ice cream, actually. That is enough to satisfy me. At this rate, I&apos;ll take forever to finish that tub. More reason for me to exercise every morning this summer!&lt;/p&gt;
&lt;p&gt;I followed up with the rest of my breakfast, which is typical of what I&apos;ve been eating since &lt;a href=&quot;/blog/2011/10/23/paleo-diet-experimentation/&quot;&gt;completely abandoning my former oatmeal breakfast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/breakfast-brentwood.jpg&quot; alt=&quot;My breakfast along with Brentwood 5K entry form&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two &lt;a href=&quot;/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs/&quot;&gt;eggs&lt;/a&gt; fried with spice mix and olive oil&lt;/li&gt;
&lt;li&gt;Spinach from our &lt;a href=&quot;https://www.kretschmannfarm.com/&quot;&gt;Kretschmann Farm&lt;/a&gt; box&lt;/li&gt;
&lt;li&gt;Sweet potatoes and bacon bits&lt;/li&gt;
&lt;li&gt;Walnuts&lt;/li&gt;
&lt;li&gt;Strawberries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oh, and Abby I have signed up for the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.brentwood5k.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.brentwood5k.com/&quot;&amp;gt;Brentwood Firecracker 5K race&amp;lt;/span&amp;gt;. I last did that race eleven years ago, in 2001. I have a serious goal of beating my time from that year!&lt;/p&gt;
&lt;p&gt;I have only two more weeks of training with ice cream, before running the race. Wish me luck!&lt;/p&gt;
</content:encoded></item><item><title>Preparing for my first solo flute performance: notes on perfectionism and high standards</title><link>https://franklinchen.com/blog/2012/06/15/preparing-for-my-first-solo-flute-performance-notes-on-perfectionism-and-high-standards/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/15/preparing-for-my-first-solo-flute-performance-notes-on-perfectionism-and-high-standards/</guid><pubDate>Fri, 15 Jun 2012 00:01:00 GMT</pubDate><content:encoded>&lt;p&gt;A month ago I reported on getting a &lt;a href=&quot;/blog/2012/05/18/got-my-new-and-more-ergonomic-flute&quot;&gt;new flute that was more ergonomic for me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am definitely enjoying the new flute. In particular, as I&apos;ve been practicing an Allegro movement of a solo flute sonata, the fast passages involving a G# are painful and awkward on my old flute that has an inline G instead of an offset G. The offset G eases the reach for my short ring and pinkie fingers. As you can see from the photo, my left pinkie finger in particular is so short that even with the offset G it is almost completely straight! (And this is with my proper placement of the flute somewhat down and forward from the body to minimize the twist of the entire left hand.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/flute-left-hand-offset-g.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(The split E also helps a lot right now, giving me a clean E much more easily than my old flute, but this has nothing to do with ergonomics.)&lt;/p&gt;
&lt;h2&gt;First solo flute performance&lt;/h2&gt;
&lt;p&gt;The big news is that I&apos;m preparing to perform solo on flute on Sunday for the &lt;strong&gt;first time in my life.&lt;/strong&gt; This after having really played flute only for half a year. Yes, I&apos;m nervous, of course. But I volunteered to do this. Why?&lt;/p&gt;
&lt;p&gt;I&apos;m preparing this sonata movement for an informal music recital I&apos;ll be part of on Sunday. It will be the my first time playing a solo piece on flute in someone else&apos;s presence!&lt;/p&gt;
&lt;h2&gt;Rejecting perfectionism: getting the ego out of the way&lt;/h2&gt;
&lt;p&gt;I&apos;ve only really been playing flute for half a year, so I&apos;m not able to play this piece with all the qualities I want from what I hear in my head. I expect that by next year I should be able to play it much more like what I hear in my head.&lt;/p&gt;
&lt;p&gt;In the past I would have hesitated to play something before I was &quot;ready&quot;, because I suffered from perfectionism, but I&apos;ve adopted a new philosophy of life in the past year, in which I&apos;ve decided to actually &lt;em&gt;make&lt;/em&gt; and &lt;em&gt;show&lt;/em&gt; myself publicly, &quot;failing&quot; if necessary in order to demand progress and improvement of myself. In the past, I would hole up and &quot;secretly&quot; work on something in hope of emerging publicly as though I were a fully-formed genius. It&apos;s funny thinking about how fragile my ego used to be.&lt;/p&gt;
&lt;p&gt;I felt the urge to play this piece now because this piece really moves me and I have not heard a recording of it that fully captures what I experience in my mind as I &lt;em&gt;live&lt;/em&gt; the music myself, and I judge that I can express, however imperfectly, a great deal of the spirit of the music, and hope to &lt;em&gt;share&lt;/em&gt; my interpretation, work in progress as it is, right now.&lt;/p&gt;
&lt;p&gt;I have learned in the past couple of months that when I play music, if I play it with true feeling, then people can sense that and enjoy it, overlooking technical flaws I still have. This encourages me, because I play not only for my own pleasure but for others.&lt;/p&gt;
&lt;h2&gt;Rejecting disrespect: refusing to play what I don&apos;t understand yet&lt;/h2&gt;
&lt;p&gt;I&apos;m only playing the second movement of this sonata because of difficulty and time constraints. The third movement is harder. The first movement is slow and theoretically should be &quot;easy&quot;, but actually, I find it problematic. I still don&apos;t fully &quot;understand&quot; that music. I have listened to recordings of it and they don&apos;t completely &quot;speak&quot; to me. Until I successfully parse and understand this first movement, I&apos;m not willing to play it, because if I don&apos;t get it, how can I play in such a way that someone else gets it? What would be the point?&lt;/p&gt;
&lt;p&gt;I distinguish this reluctance from perfectionism. There&apos;s a difference between showing something that is imperfect but has some value and showing something that I don&apos;t sufficiently understand myself.&lt;/p&gt;
&lt;p&gt;The negation of perfectionism isn&apos;t just casual sloppiness; it is having &lt;a href=&quot;https://musiciansway.com/blog/2012/06/high-standards/&quot;&gt;high standards&lt;/a&gt; but also being realistic. And that depends on context.&lt;/p&gt;
&lt;p&gt;In my current situation, I am playing informally for friends and family, not for a general public, so I am willing to go out there without being as polished as I would for a sizable public. But even then, I must respect my friends and family, and not present something that is of net negative rather than positive value for them.&lt;/p&gt;
&lt;h2&gt;Prior experience&lt;/h2&gt;
&lt;p&gt;I have, of course, built up to my plan to play a piece for flute solo for the first time. Unfortunately, I have not yet written up for this blog yet all the various experiences in the past months that have served as &quot;preparation&quot;. Some of them have had to do with performing music with other people on other instruments. Some important ones involved my first solos in my life on &lt;em&gt;any&lt;/em&gt; instrument at all. But this one coming up will be the hardest piece I will have played for other people, on the instrument that I am least proficient at. So the pressure is still there.&lt;/p&gt;
</content:encoded></item><item><title>Tasty Vietnamese lunch at Thanh Tòng in Eden Center, and how we chose to eat there</title><link>https://franklinchen.com/blog/2012/06/14/tasty-vietnamese-lunch-at-thanh-tong-in-eden-center/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/14/tasty-vietnamese-lunch-at-thanh-tong-in-eden-center/</guid><pubDate>Thu, 14 Jun 2012 22:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Some weeks ago when Abby and I were in DC to stay with my sister and her husband in order to see and help out with our new &lt;a href=&quot;/categories/nephew/&quot;&gt;nephew&lt;/a&gt;, we took a trip to go to the &lt;a href=&quot;https://www.gw-supermarket.com/&quot;&gt;Great Wall supermarket&lt;/a&gt; in Virginia to buy groceries for the household.&lt;/p&gt;
&lt;h2&gt;Eden Center&lt;/h2&gt;
&lt;p&gt;But on the way, we stopped at this place we found about called &lt;a href=&quot;https://edencenter.com/&quot;&gt;Eden Center&lt;/a&gt; that is unique all-Vietnamese shopping/dining center with over a hundred stores. We figured on just exploring a little, then eating lunch, before heading further out to Great Wall.&lt;/p&gt;
&lt;p&gt;We didn&apos;t feel like looking up reviews or anything to get a quick lunch. While we were wandering around, Abby ended up picking a place to eat. It was called &quot;Thanh Tòng&quot; (we don&apos;t know any Vietnamese at all, by the way), and we ordered two items and they quickly arrived and we had a very filling lunch.&lt;/p&gt;
&lt;p&gt;How did Abby choose where to eat, given the bewildering number of choices?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/thanh-tong-salad.jpg&quot; alt=&quot;Salad at Thanh Tòng&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/thanh-tong-soup.jpg&quot; alt=&quot;Soup at Thanh Tòng&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;How we chose&lt;/h2&gt;
&lt;p&gt;There were quite a few restaurants in Eden Center that we saw as we were just walking around. In theory, we could have looked up reviews or looked at menu selections and prices to decide where to eat, but we didn&apos;t.&lt;/p&gt;
&lt;p&gt;Abby basically just saw this one little hole-in-the-wall place, remembered it, and we came back to it after looking for alternatives, and she said, &quot;Let&apos;s eat here.&quot; I asked her why, and she noted that the place was small, there were &lt;em&gt;only&lt;/em&gt; Vietnamese people (as opposed to &quot;foreigners&quot;) in there eating (and a reasonable number of them) and they looked happy.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://edencenter.com/wp-content/uploads/2011/06/thanhtong-150x150.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://edencenter.com/wp-content/uploads/2011/06/thanhtong-150x150.jpg&quot;&amp;gt;[image: Store front]&amp;lt;/span&amp;gt;
(Photo by Corbo E. from Eden Center web site)&lt;/p&gt;
&lt;p&gt;That sounded like reasonable logic to me. I&apos;ve applied similar logic in the past, when in an unfamiliar city looking for Chinese or Indian food. We&apos;re not really interested in fancy furniture or elaborately &lt;a href=&quot;https://en.wikipedia.org/wiki/Purple_prose&quot;&gt;purple-prosed&lt;/a&gt; menu items, just affordable and tasty &quot;authentic&quot; meals.&lt;/p&gt;
&lt;p&gt;Abby&apos;s choice worked out pretty well.&lt;/p&gt;
&lt;h2&gt;Lunch&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://edencenter.com/wp-content/uploads/2011/06/thanhtong2.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://edencenter.com/wp-content/uploads/2011/06/thanhtong2.jpg&quot;&amp;gt;[image: Menu board]&amp;lt;/span&amp;gt;
(Photo by Corbo E. from Eden Center web site)&lt;/p&gt;
&lt;h3&gt;Salad&lt;/h3&gt;
&lt;p&gt;The salad was large and the main novelty for us was all the bamboo shoots that provided crunch and fiber. It was a filling, tasty salad that came topped with shrimp and a sweet, tangy dressing.&lt;/p&gt;
&lt;h3&gt;Soup&lt;/h3&gt;
&lt;p&gt;The soup had thick noodles and broth and was chock full of pork, shrimp, scallions, basil, etc. It was satisfying and I slurped down the rest of the broth after Abby was full already with her share.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The time-honored strategy of finding a decent place to eat by looking inside and seeing who&apos;s eating and how fast the action is served us well when grabbing some Vietnamese lunch in Eden Center.&lt;/p&gt;
</content:encoded></item><item><title>Ordered the new Casey Burns Small-Handed Irish flute</title><link>https://franklinchen.com/blog/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/12/ordered-the-casey-burns-small-handed-irish-flute/</guid><pubDate>Tue, 12 Jun 2012 21:39:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://www.caseyburnsflutes.com/img/FFBWST.jpg&quot; alt=&quot;Casey Burns Folk Flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have finally submitted an order for the &lt;a href=&quot;https://www.caseyburnsflutes.com/ff.php&quot;&gt;Casey Burns Small-Handed Folk Flute&lt;/a&gt;, after having sat on the decision for two weeks and discussing it with Abby.&lt;/p&gt;
&lt;h2&gt;Rationale&lt;/h2&gt;
&lt;p&gt;Basically, I am committed in the long run to exploring Irish music seriously, so this is not just a whimsical purchase. Also, I can obviously use this flute to play other traditional, non-Irish music as well.&lt;/p&gt;
&lt;p&gt;I ordered this flute along with &lt;a href=&quot;https://www.caseyburnsflutes.com/grey_book.php&quot;&gt;Grey Larsen&apos;s highly acclaimed book, &quot;The Essential Guide to Irish Flute and Tin Whistle&quot;&lt;/a&gt;, a book that I expect to serve as a comprehensive tutorial and reference for years&apos; worth of study!&lt;/p&gt;
</content:encoded></item><item><title>Report on the first Pittsburgh TechFest, 2012</title><link>https://franklinchen.com/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/09/report-on-the-first-pittsburgh-techfest-2012/</guid><pubDate>Sat, 09 Jun 2012 20:24:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://sphotos-a.xx.fbcdn.net/hphotos-prn1/532862_293436380745383_58658441_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://sphotos-a.xx.fbcdn.net/hphotos-prn1/532862_293436380745383_58658441_n.jpg&quot;&amp;gt;[image: Pittsburgh TechFest 2012]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I was excited to attend the very first &lt;a href=&quot;https://pghtechfest.com/&quot;&gt;Pittsburgh TechFest&lt;/a&gt;, held at &lt;a href=&quot;https://www.laroche.edu/&quot;&gt;LaRoche College&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was my first local programming conference since some Perl conferences years ago!&lt;/p&gt;
&lt;h2&gt;Why attend?&lt;/h2&gt;
&lt;p&gt;In the past couple of years, I have increasingly explored &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;Pittsburgh&apos;s growing programmer meetup scene&lt;/a&gt;, but I wanted to expand beyond that to start attending some local conferences, so of course I was going to attend this one. (I had to cancel a hiking/camping outing in order to make it!)&lt;/p&gt;
&lt;h2&gt;The venue&lt;/h2&gt;
&lt;p&gt;LaRoche College is in the &lt;a href=&quot;https://en.wikipedia.org/wiki/North_Hills_(Pennsylvania)&quot;&gt;North Hills&lt;/a&gt;, about a twenty-minute drive (in light traffic conditions) from the city of Pittsburgh. This was the first time I&apos;d been in LaRoche. They had a decent amount of space for all the sessions for the conference. I think the venue worked out great, and we were also provided lunch in the cafeteria.&lt;/p&gt;
&lt;h2&gt;Keynote&lt;/h2&gt;
&lt;p&gt;The keynote speech was by &lt;a href=&quot;https://www.docondev.com/&quot;&gt;Michael &quot;Doc&quot; Norton&lt;/a&gt; of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://leandog.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://leandog.com/&quot;&amp;gt;LeanDog&amp;lt;/span&amp;gt;. He talked about our shared goal, as evidenced by attending the conference, of becoming an &quot;excellent software developer&quot;. He emphasized the &lt;em&gt;polyglot&lt;/em&gt; nature of the conference, which was organized by members of various local communities including .NET and Java, among others. &quot;We don&apos;t work alone today,&quot; he emphasized. He urged us to broaden ourselves at the conference, and go to talks about topics outside of our own comfortable experience. He used the concept of the &quot;T&quot; as something to aspire to: having deep knowledge in something but also having broad knowledge of other things.&lt;/p&gt;
&lt;p&gt;I enjoyed the keynote speech and resolved to check out ideas new to me that I might be able to use. The speech actually caused me to spontaneously change some of my original marked-down preferences for which sessions I would attend!&lt;/p&gt;
&lt;h3&gt;(Update of 2013-06-01)&lt;/h3&gt;
&lt;p&gt;&quot;Doc&quot; has in the past year moved to Groupon.&lt;/p&gt;
&lt;h2&gt;Overview of sessions&lt;/h2&gt;
&lt;p&gt;The problem I (well, all of us) faced for this conference was that there was a huge number of concurrent talks on all kinds of topics in any given time slot. There were over 30 speakers and over 40 sessions, all in a single day.&lt;/p&gt;
&lt;p&gt;This meant having to decide what to attend and what to miss. Topics came from areas such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET&lt;/li&gt;
&lt;li&gt;Node&lt;/li&gt;
&lt;li&gt;CoffeeScript&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Selenium&lt;/li&gt;
&lt;li&gt;Kinect&lt;/li&gt;
&lt;li&gt;Scala&lt;/li&gt;
&lt;li&gt;UX&lt;/li&gt;
&lt;li&gt;Agile&lt;/li&gt;
&lt;li&gt;Backbone&lt;/li&gt;
&lt;li&gt;REST&lt;/li&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sessions I attended&lt;/h2&gt;
&lt;h3&gt;User Experience Maps for Agile Modeling (&lt;a href=&quot;https://www.mariaemerson.com/&quot;&gt;Maria Emerson&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;The first session I attended was completely outside of my usual world, involving &lt;a href=&quot;https://en.wikipedia.org/wiki/User_experience_design&quot;&gt;&quot;user experience&quot; (UX)&lt;/a&gt;. I chose it because it was a hands-on workshop. I freely confess that I am usually not very excited by sitting around listening to someone talk and put up code on slides; I feel I could do that at home by myself.&lt;/p&gt;
&lt;p&gt;Maria led us through a simulation of the kind of work she does. We broke up into teams, we were told to design a mobile app for rowers who rent from a boat house, and used sticky notes, a whiteboard, and &quot;butcher paper&quot; as we went through an abbreviated version of the work flow of figuring out what the app should do and what issues it should address. I thought it was a fantastic workshop.&lt;/p&gt;
&lt;h3&gt;Creating Your Own Software Company (Kendall Miller)&lt;/h3&gt;
&lt;p&gt;The second session was, again, about something I&apos;m not currently doing and is new to me.&lt;/p&gt;
&lt;p&gt;It was by a .NET guy from &lt;a href=&quot;https://www.gibraltarsoftware.com/&quot;&gt;Gibraltar Software&lt;/a&gt; who talked about the nuts and bolts of starting, and especially sustaining, a software company. I learned a lot from his presentation and the discussions, about handling such resources as time, funding, pricing, and especially the &lt;em&gt;psychology&lt;/em&gt; of the customer, as well as self-psychology.&lt;/p&gt;
&lt;p&gt;For example, he emphasized looking at the &lt;em&gt;market&lt;/em&gt; first, when coming up with a conscious plan to achieve &quot;deliberate success&quot;, rather than get carried away by idealism or fuzzy hopes. He argued that &lt;em&gt;marketing&lt;/em&gt; is what it&apos;s all about, and that all business is about &lt;em&gt;people&lt;/em&gt; relating to &lt;em&gt;people&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Very informative and fascinating session!&lt;/p&gt;
&lt;h3&gt;Lunch&lt;/h3&gt;
&lt;p&gt;Lunch was surprisingly high quality and filling, in the campus cafeteria.&lt;/p&gt;
&lt;h3&gt;You say Tomato, I say Pomodoro (Joel Cochran)&lt;/h3&gt;
&lt;p&gt;After lunch, I went to a session about the &lt;a href=&quot;https://www.pomodorotechnique.com/&quot;&gt;Pomodoro Technique&lt;/a&gt; of time management. I had heard about the Pomodoro Technique for some time, but it sounded bizarre, and I never experimented with implementing it myself.&lt;/p&gt;
&lt;p&gt;I took some notes, but left not really feeling convinced that I would try the technique.&lt;/p&gt;
&lt;h3&gt;Introduction to Actors using Scala (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt;)&lt;/h3&gt;
&lt;p&gt;I first met Josh almost two years ago, when he gave a talk in October 2010 for &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://java.net/projects/pittjug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://java.net/projects/pittjug/&quot;&amp;gt;PittJUG&amp;lt;/span&amp;gt;, &quot;Why you want to learn Scala&quot;. After that, he has periodically come to more PittJUG meetings, such as a nice &lt;a href=&quot;/blog/2011/10/26/open-spaces-success-at-the-pittsburgh-java-users-group/&quot;&gt;&quot;open spaces&quot; one we had last year&lt;/a&gt;. Josh had this morning given a talk &quot;Introduction to Functional Programming using Scala&quot; that I had skipped, but I attended this one because I had always meant to look into using &lt;a href=&quot;https://en.wikipedia.org/wiki/Actor_model&quot;&gt;actors&lt;/a&gt; for concurrency.&lt;/p&gt;
&lt;p&gt;Josh gave a nice presentation that left me knowing that I definitely wanted to look into actors (and Scala) further.&lt;/p&gt;
&lt;p&gt;Oh, and he was plugging his new book &lt;a href=&quot;https://www.manning.com/suereth/&quot;&gt;Scala in Depth&lt;/a&gt;. I went and bought the ebook when I got home! It&apos;s good.&lt;/p&gt;
&lt;h3&gt;Hypermedia API Design (&lt;a href=&quot;https://steveklabnik.com/&quot;&gt;Steve Klabnik&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;The final session I attended was an unusual one. Steve Klabnik gave a fairly philosophical rather than technical talk about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.designinghypermediaapis.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.designinghypermediaapis.com/&quot;&amp;gt;hypermedia API design&amp;lt;/span&amp;gt;. He spoke about the need to make sure the Web remains open and flexible. His point of view is that &quot;everything is politics&quot;, so when we&apos;re talking about how applications can and should communicate with each other, we have some implicit political vision in mind.&lt;/p&gt;
&lt;p&gt;The presentation was kind of abstract for me, probably because I don&apos;t currently do much with Web application design. He spoke of metadata, interpretation, and dynamic contracts. If I end up in the Web world again sometime, I&apos;ll try to figure out exactly what Steve was trying to say!&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I took a lot of notes that I hope to study and use in my career as a software developer. Also, I&apos;m inspired by seeing so many people I know giving talks. At some point, I should start sharing what I know by giving presentations also.&lt;/p&gt;
&lt;p&gt;Here&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://updyke.com/blog/2012/06/09/pittsburgh-techfest-2012/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://updyke.com/blog/2012/06/09/pittsburgh-techfest-2012/&quot;&amp;gt;another participant&apos;s review of the Pittsburgh TechFest&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;d like to thank the organizers of the very first Pittsburgh TechFest, and the sponsors who made the conference so inexpensive and accessible. And of course, I appreciate everyone who signed on to give a presentation. I learned a lot over the course of the day, and look forward to another Pittsburgh TechFest in 2013!&lt;/p&gt;
&lt;h3&gt;(Update of 2013-06-01)&lt;/h3&gt;
&lt;p&gt;I went to &lt;a href=&quot;/blog/2013/06/01/report-on-the-second-pittsburgh-techfest-2013/&quot;&gt;Pittsburgh TechFest again in 2013&lt;/a&gt;, and had a great time, despite being sick. Also, as I had promised myself a year ago, I gave a presentation there! &lt;a href=&quot;/blog/2013/06/01/pittsburgh-tech-fest-2013-my-talk-stop-overusing-regular-expressions/&quot;&gt;Full report here&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Heinz Hall Memories: at the Pittsburgh Symphony, being shocked out of my mind upon experiencing Prokofiev&apos;s second piano concerto for the first time; also, a note on human memory</title><link>https://franklinchen.com/blog/2012/06/08/heinz-hall-memories-at-the-pittsburgh-symphony-being-shocked-out-of-my-mind-upon-experiencing-prokofievs-second-piano-concerto-for-the-first-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/08/heinz-hall-memories-at-the-pittsburgh-symphony-being-shocked-out-of-my-mind-upon-experiencing-prokofievs-second-piano-concerto-for-the-first-time/</guid><pubDate>Fri, 08 Jun 2012 21:01:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Last month, the Pittsburgh Symphony Orchestra on its blog called for people to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blogs.pittsburghsymphony.org/2012/05/heinz-hall-memories/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blogs.pittsburghsymphony.org/2012/05/heinz-hall-memories/&quot;&amp;gt;share their Heinz Hall memories for the 40th anniversary celebration&amp;lt;/span&amp;gt;. Upon reading that, two memories immediately came to my mind. I describe one of them here.&lt;/p&gt;
&lt;h2&gt;Prokofiev&apos;s second piano concerto&lt;/h2&gt;
&lt;p&gt;I was in Heinz Hall for the Pittsburgh Symphony on January 21, 2000. It was a dreary winter day, with snow and poor driving conditions, but I felt compelled to use my ticket and go downtown for the concert.&lt;/p&gt;
&lt;p&gt;On the program at the concert were &lt;a href=&quot;https://en.wikipedia.org/wiki/Piano_Concerto_No._2_(Prokofiev)&quot;&gt;Prokofiev&apos;s second piano concerto&lt;/a&gt; and Bruckner&apos;s fourth symphony. The Prokofiev was played by Mikhail Rudy.&lt;/p&gt;
&lt;p&gt;What I remember is my jaw dropping while Rudy played the first movement of the Prokofiev concerto. I had never heard this concerto before; I had listened to the first, third, and fifth concertos many times before on cassette tape as well as CD but I had never owned a recording of the second or fourth!&lt;/p&gt;
&lt;p&gt;This concerto was really dark and virtuosic, with violent dissonances and runs, quite unlike the more widely known concertos. When the solo cadenza began, I got restless and astounded as the cadenza kept going and going, as though taking up half of the entire first movement. This seemed outrageously long, and the music just got wilder and I thought the piano was taking a real beating, but I was truly fascinated by the perverseness of Prokofiev&apos;s conception.&lt;/p&gt;
&lt;p&gt;When the whole concert ended, I walked out in a daze (in fact, I was so mentally disrupted that I was lucky to make it home alive driving on the parkway under really bad winter conditions).&lt;/p&gt;
&lt;p&gt;I will always remember that visceral experience with the Prokofiev concerto, and every time I hear it now, I can imagine myself back in Heinz Hall experiencing it for the very first time.&lt;/p&gt;
&lt;h2&gt;An example of the fragility of memory&lt;/h2&gt;
&lt;p&gt;A confession: I had to look up my email archive and my journal to get my story completely correct above, after the first draft that I wrote without consulting them.&lt;/p&gt;
&lt;p&gt;I am always a little suspicious when people tell of their memories from long ago (or even not so long ago), because human memory is not like computer memory. Human memory involves re-creation and simply cannot be trusted without hard evidence.&lt;/p&gt;
&lt;p&gt;For example, my immediate &quot;memory&quot; of the concert I just described, when I was not relying on any external sources, was &lt;em&gt;false&lt;/em&gt; in several ways. I was lucky to be able to locate old email archives and my daily journal from twelve years ago in order to determine what really happened!&lt;/p&gt;
&lt;h3&gt;The friend who wasn&apos;t there (part 1)&lt;/h3&gt;
&lt;p&gt;First of all, I was very confident that I had gone to a concert with a particular friend, and that we had looked at each other in amazement during the cadenza. It turns out that I had not gone to this concert with my friend, and I had driven to it alone! It was easy for me to &lt;a href=&quot;https://en.wikipedia.org/wiki/Confabulation&quot;&gt;confabulate&lt;/a&gt; because back in around 1997-1999, I had in fact gone to many PSO concerts in Heinz Hall on Fridays with him.&lt;/p&gt;
&lt;p&gt;Furthermore, I did correctly remember discussing my experience with him. It turns out that I reported back to him about the Prokofiev concerto, and we talked about it, and in fact, he lent me a CD of it to listen to as a result.&lt;/p&gt;
&lt;p&gt;(Note: please read part 2 of &quot;the friend who wasn&apos;t there&quot; below.)&lt;/p&gt;
&lt;h3&gt;The wrong pianist&lt;/h3&gt;
&lt;p&gt;In my struggle to remember, I had thought that the pianist was probably &lt;a href=&quot;https://web.archive.org/web/20040825013438/http://www.pittsburghsymphony.org:80/pghsymph.nsf/bios/Yefim%20Bronfman&quot;&gt;Yefim Bronfman&lt;/a&gt;. I was not actually confident about this, however. I was right not to be confident, because in fact, it was Mikhail Rudy.&lt;/p&gt;
&lt;p&gt;I have an explanation for this mistake. It turns out that the CD I borrowed from my friend was Bronfman playing the concerto, and according to my journal, I listened to this CD on February 4, 2000!&lt;/p&gt;
&lt;p&gt;Furthermore, I did correctly remember seeing Bronfman playing in Heinz Hall. Again, my journal shows that on May 12, 2000, the final concert of the season, Yefim Bronfman played Beethoven under Mariss Jansons, and I was very impressed with the concert:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I actually stood up to applaud Bronfman and Jansons for the Beethoven and the Stravinsky, something I have never done at a PSO concert.  It was a special concert.  Jansons seemed inspired, possibly because it was the season finale and the place was packed?  I mean, I&apos;m not a Stravinsky fan, but the Stravinsky was just so well played.  The Beethoven was fantastic.  I thought I&apos;d be all jaded from knowing this concerto inside out since first listening to it in 1988, but the performance was amazing.  The whole piece was great, but especially the first movement, in which Bronfman and Jansons and the orchestra were like one mind, the interplay seamless.&lt;/p&gt;
&lt;p&gt;One thing about Bronfman:  he had a lot of energy, but seemed kind of percussive or heavy sometimes.  A minor complaint about a pianist who seemed great from the performance I saw.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;The correctness of memory&lt;/h2&gt;
&lt;h3&gt;My reaction&lt;/h3&gt;
&lt;p&gt;My journal entry for the day of the concert included this comment I jotted down into my &lt;a href=&quot;https://en.wikipedia.org/wiki/Palm_(PDA)&quot;&gt;Palm PDA&lt;/a&gt; at intermission:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Intermission.  There was an encore by Mikhail Rudy.  The Prokofiev piano concerto no. 2 is the most bizarre piano concerto I&apos;ve ever heard.  Quite perverse.  The clashing harmonies are one thing, but the organization is another.  Long, extended solo passages.  Huge cadenza in the first movement.  Just freakish.  I will have to look it up on the Web.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I think I fairly accurately remembered my impression of the music that I wrote at the beginning of this post before I consulted my journal entry.&lt;/p&gt;
&lt;h3&gt;My friend who was there (part 2)&lt;/h3&gt;
&lt;p&gt;After writing a draft of this blog post, I told my friend about my false memory, but he replied that he too remembers the concert!! He just doesn&apos;t remember going to it with me. This is quite possible. By 2000, because of other social circles and logistics, we did not always go to the concerts together, even if we both did end up there, sitting in different places.&lt;/p&gt;
&lt;p&gt;He remembers this concert being eye-opening also, in that although he had listened to the concerto on recordings (as I mentioned, he lent me one shortly after this concert), it had not connected with him deeply until the live concert.&lt;/p&gt;
&lt;p&gt;So it appears that my memory was partially correct: although we had not sat together at the concert, most likely we chatted during intermission and shared our amazement then.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The exercise of trying to get accurate the details of a memorable Heinz Hall experience from twelve years ago turned into a fascinating exploration of the malleability of human memory.&lt;/p&gt;
&lt;p&gt;But even if some details were fuzzy, my falling in love with Prokofiev&apos;s wayward second piano concerto remains an eternal truth.&lt;/p&gt;
&lt;h2&gt;Bonus video&lt;/h2&gt;
&lt;p&gt;So I&apos;ve never seen Yefim Bronfman playing Prokofiev&apos;s second piano concerto, but YouTube comes to the rescue. If you want to check out the wild cadenza I mentioned, it occurs between 5:00 and 9:19 in this video:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;CCeo1vyewEg&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2013-11-08)&lt;/h2&gt;
&lt;p&gt;I happened to see on the PSO blog &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blogs.pittsburghsymphony.org/2013/11/the-most-amazing-rendition-of-prokofievs-second-piano-concerto/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blogs.pittsburghsymphony.org/2013/11/the-most-amazing-rendition-of-prokofievs-second-piano-concerto/&quot;&amp;gt;a post about someone else&apos;s experience with a recent performance of this concerto with the PSO&amp;lt;/span&amp;gt;!&lt;/p&gt;
</content:encoded></item><item><title>Your Day Without Shoes and my very first day out completely without shoes</title><link>https://franklinchen.com/blog/2012/06/07/your-day-without-shoes-and-my-very-first-day-out-completely-without-shoes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/07/your-day-without-shoes-and-my-very-first-day-out-completely-without-shoes/</guid><pubDate>Thu, 07 Jun 2012 21:02:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/your-day-without-shoes-abby-franklin.jpg&quot; alt=&quot;Abby and Franklin without shoes in DC&quot; /&gt;
&lt;img src=&quot;../../assets/images/your-day-without-shoes-musicians.jpg&quot; alt=&quot;Abby and Franklin without shoes in DC&quot; /&gt;
May 26, 2012 was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.primalfootalliance.org/ydws/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.primalfootalliance.org/ydws/&quot;&amp;gt;Your Day Without Shoes&amp;lt;/span&amp;gt;, which Abby and I tried to observe, even though we were in DC at my sister&apos;s at the time, visiting our new &lt;a href=&quot;/categories/nephew/&quot;&gt;nephew&lt;/a&gt;, and therefore we were in an unfamiliar environment.&lt;/p&gt;
&lt;p&gt;It turned out that although Abby did spend the day without shoes, I wore shoes once in the morning and then not again the rest of the day. I&apos;ll explain why, and also describe my actual very first day without shoes (while being out and about), which was today.&lt;/p&gt;
&lt;h2&gt;OK, so why barefoot??&lt;/h2&gt;
&lt;p&gt;Here are some reasons I&apos;ve been experimenting with walking or running barefoot in the past year or two:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my long history of problems with shoes of all kinds, because they mostly don&apos;t fit me well or rub me or cause me knee and other problems&lt;/li&gt;
&lt;li&gt;curiosity, novelty&lt;/li&gt;
&lt;li&gt;a varied and heightened sensory life experience&lt;/li&gt;
&lt;li&gt;working out kinks in my body balance and movement form&lt;/li&gt;
&lt;li&gt;moving well barefoot is good training for moving well in shoes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&apos;t have an ideological reason for going barefoot. I am sympathetic to the idea that our feet work pretty well because of our evolutionary history, but I am not a primitivist. I am typing this at a computer, illuminated by light that is not coming from the sun or moon. I am a pragmatist.&lt;/p&gt;
&lt;h2&gt;Your Day Without Shoes&lt;/h2&gt;
&lt;h3&gt;How I failed&lt;/h3&gt;
&lt;p&gt;On the official &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.primalfootalliance.org/ydws/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.primalfootalliance.org/ydws/&quot;&amp;gt;Your Day Without Shoes&amp;lt;/span&amp;gt;, I had hoped to do entirely without shoes, but in the end, I chickened out and wore my trusty Vibram FiveFingers KSO shoes in a morning errand driving my brother-in-law to a grocery store, Harris Teeter, to buy food for a &lt;a href=&quot;/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/&quot;&gt;barbecue we were going to have&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I have never been barefoot in a grocery store before, and certainly not in some unknown store I&apos;ve never scoped out in advance, I felt it was too risky to cause possible &quot;trouble&quot; on a simple errand that we had to run. If there had been no time pressure and I had been alone (not inconveniencing my brother-in-law and indirectly, our party guests for the afternoon), maybe I would have given it a shot. Or maybe not, given that I have not gone barefoot in a grocery store at home in Pittsburgh yet!&lt;/p&gt;
&lt;p&gt;I have repeatedly gotten in some trouble when attempting to be barefoot in public. I am not the kind of person who likes to deliberately cause confrontations; I realize, of course, that this makes me part of the problem, not speaking up. But I get not only words and looks of disapproval, but &quot;official&quot;-looking people who make up painfully obvious made-up sermons about &quot;laws&quot; and &quot;rules&quot; and &quot;health codes&quot;. In principle, I could go out of my way to contact appropriate authorities in order to defend myself, but right now, not being a barefoot zealot but a novice experimenting, I have settled for experimenting where it is &quot;safe&quot; while building up my barefooting experience.&lt;/p&gt;
&lt;p&gt;&quot;Safe&quot; for me right now is roughly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anywhere outside a public building, such as on the streets, sidewalks, grass, parks&lt;/li&gt;
&lt;li&gt;at home&lt;/li&gt;
&lt;li&gt;at work (while not being in a gym or library or other such place where &quot;official&quot; looking people go around telling people how to behave)&lt;/li&gt;
&lt;li&gt;in my car&lt;/li&gt;
&lt;li&gt;at other people&apos;s homes&lt;/li&gt;
&lt;li&gt;a place I frequent where I basically know the people in charge and have inferred they&apos;re OK with my being barefoot&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Abby and I experimented with going barefoot the rest of the day&lt;/h3&gt;
&lt;h4&gt;Eastern Market&lt;/h4&gt;
&lt;p&gt;Abby and I did go barefoot later in the morning, after my grocery shopping errand, when we went to &lt;a href=&quot;https://www.easternmarket-dc.org/&quot;&gt;Eastern Market&lt;/a&gt;, which was hustling and bustling on a Saturday. We were there to check out the outside action.&lt;/p&gt;
&lt;p&gt;Unfortunately, it was very sunny and hot that day (I think the temperature was up to 90F!), and some of the outside brick and asphalt surfaces were burning hot, too hot to really walk on. We ended up looking for surfaces under shade, or painted white, to step on, but there were not many such surfaces. So we had to basically &quot;run&quot; in order to minimize foot contact with the ground. We didn&apos;t last very long out there and headed back.&lt;/p&gt;
&lt;p&gt;That was a rookie mistake to have made. Well, we learn by failing small. We&apos;re no purists about barefooting, just curious and pragmatic experimenters. No more going barefoot again in such conditions!&lt;/p&gt;
&lt;h4&gt;Evening walk&lt;/h4&gt;
&lt;p&gt;After a long day, cleaning up from the party, it was starting to get dark outside, and cooler, and Abby and I went out for a little walk in the neighborhood. So we went out barefoot, in keeping with the theme for the day. The walk was nice. Without the burning sun, the sidewalks and roads were just fine for walking on barefoot.&lt;/p&gt;
&lt;p&gt;Abby came up with the idea that when we went home, we should start doing some barefoot walking together after dinner.&lt;/p&gt;
&lt;h2&gt;My very first day out without shoes&lt;/h2&gt;
&lt;p&gt;Today was my very first day out without shoes. I hadn&apos;t intended on that, here&apos;s what happened:&lt;/p&gt;
&lt;h3&gt;Yesterday&lt;/h3&gt;
&lt;p&gt;Yesterday I went for a &lt;a href=&quot;/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/&quot;&gt;nice run for National Running Day&lt;/a&gt;. Usually when I run in the trails, I wear my Vibram FiveFingers KSO Trek shoes, because they give me more protection and never blister me. But yesterday I wanted to experiment (yet again) with wearing the more truly minimalist KSO shoes, which, unfortunately, have had a history of blistering me badly because of the design.&lt;/p&gt;
&lt;p&gt;The run was great, and over the months I have adapted (thanks to periodic barefooting) to landing even more subtly and efficiently so that even with the KSO shoes, I do not find the rocks or tree roots out on the trail to be too uncomfortable to deal with. Unfortunately, I still got a blister at my usual rubbing spot at the side of my big toe joint. (You may be able to spot it in the photos below.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/national-running-day-vibram-fivefingers-kso.jpg&quot; alt=&quot;Franklin&quot; /&gt;
&lt;img src=&quot;../../assets/images/national-running-day-barefoot.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It turned out yesterday that because of the blister, I just didn&apos;t want to wear any shoes for the rest of the day, and in fact I didn&apos;t. I went barefoot from the time I finished my run to the time I left work and drove home, and I was barefoot the rest of the day.&lt;/p&gt;
&lt;h3&gt;Today&lt;/h3&gt;
&lt;p&gt;Today my blister had subsided (it will probably be &quot;OK&quot; tomorrow), but I still did not feel like wearing shoes. So I went to work barefoot.&lt;/p&gt;
&lt;p&gt;Unfortunately, it was sunny and the asphalt in the parking lot was very hot. I did what I could to ease my walk out of the parking lot to my office (basically, &quot;run&quot; when on hot surfaces), but frankly, it was not pleasant.&lt;/p&gt;
&lt;p&gt;I went home from work barefoot.&lt;/p&gt;
&lt;p&gt;Then after dinner, I ran barefoot in Squirrel Hill from home to the monthly meeting of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby&amp;lt;/span&amp;gt; group. Afterwards, I ran back home. So that was my day without shoes!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Little by little, I have expanded my barefooting experience, and plan to continue exploring. I find it very enjoyable and surprising that after more than a year, I am no longer very uncomfortable walking on typical city sidewalks and roads (unless there is hot direct sun involved with darker surfaces).&lt;/p&gt;
</content:encoded></item><item><title>I celebrated National Running Day in Schenley Park: remembering how I began to run 13 years ago</title><link>https://franklinchen.com/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/06/i-celebrated-national-running-day-in-schenley-park-remembering-how-i-began-to-run-13-year-ago/</guid><pubDate>Wed, 06 Jun 2012 21:42:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/melissappc/663419600&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/1309/663419600_66449cdcc7_b.jpg&quot; alt=&quot;Schenley Park&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today I celebrated &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runningday.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runningday.org/&quot;&amp;gt;National Running Day&amp;lt;/span&amp;gt; by, uh, going out for a &lt;a href=&quot;/categories/running/&quot;&gt;run&lt;/a&gt;. Here in Pittsburgh, I have come to like most to run in &lt;a href=&quot;https://pittsburghparks.org/frick&quot;&gt;Frick Park&lt;/a&gt;, but today I decided to run in &lt;a href=&quot;https://www.pittsburghparks.org/schenley&quot;&gt;Schenley Park&lt;/a&gt; instead, as I was in a sentimental mood.&lt;/p&gt;
&lt;p&gt;I ran the out and back &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;Pretty Good Race&lt;/a&gt; course on the Panther Hollow Trail in Schenley Park, as I have done at least several dozen times in the past thirteen years. My favorite part is always the long downhill return back to the start, during which I try to really fly down fast, feeling the wind rush past me. It&apos;s the reward for having run uphill in the first half of the course!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.cs.cmu.edu/~kalp/PGR/pg-race.gif&quot; alt=&quot;Pretty Good Race 5K course&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was not always a runner. I only started to run at age 29, during a turning point in my life. And it turned out that Schenley Park played a vital role in getting me out the door and on my feet.&lt;/p&gt;
&lt;p&gt;(The details of my story are distilled from my emails and daily journal I kept in 1999-2004.)&lt;/p&gt;
&lt;h2&gt;Why and when I started to run&lt;/h2&gt;
&lt;p&gt;In early 1999, weighing 30 pounds more than I do now 13 years later (and being probably prediabetic, in retrospect), I decided to change my life by trying to fulfill a childhood dream of becoming a runner. You have to realize that I was completely out of shape at this stage of my life, barely able to run ten seconds without stopping!&lt;/p&gt;
&lt;p&gt;I set a concrete goal to work toward in order to motivate myself to improve little by little. It turns out that Carnegie Mellon University has for decades sponsored a 5K race called the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;Pretty Good Race&lt;/a&gt; (the name inspired by Pittsburgh&apos;s &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;Great Race 10K&lt;/a&gt;), held every year on Friday afternoon of the final week of the incoming computer science graduate student orientation program. A good number of incoming graduate students (as well as faculty, staff, and anyone else who is interested) take part in this race every year. The fast runners are very competitive, of course, but many run the race just for fun; there is a party afterwards for everyone who participates.&lt;/p&gt;
&lt;p&gt;I decided to aim to run in the Pretty Good Race in September 1999. I had many months to prepare for it.&lt;/p&gt;
&lt;h2&gt;My progress in running: recruiting my friend John&lt;/h2&gt;
&lt;p&gt;Progress was quite slow, because I had decades of poor conditioning to overcome. On February 10, 1999, I went for my first run with my friend John (a graduate student classmate of mine) for the first time. John was not much of a distance runner (he could sprint), but at least he had run in the Pretty Good Race in 1998 (and finished at the back of the pack). He was patient with me because I had rest quite frequently. &lt;strong&gt;I owe John for encouraging me and accompanying me.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, I was so out of shape that I could only &quot;run&quot; for ten or fifteen seconds at a time before getting chest and leg pains and having to walk for minutes before starting up again. I had no idea what I was doing. Also, we did this irregularly, not on a daily schedule or anything. So progress was slow.&lt;/p&gt;
&lt;h2&gt;Failure in 1999&lt;/h2&gt;
&lt;p&gt;It turned out that I was dealing with various personal problems in the summer of 1999 and also still not fit enough to run continuously for a mile. So in late August, I decided to give up on my goal, and did not run in the Pretty Good Race in 1999&lt;/p&gt;
&lt;h2&gt;A new motivation in 2000: 30th birthday&lt;/h2&gt;
&lt;p&gt;In May, on my 30th birthday, I decided that I was going to get serious about running. I could not just continue to do my low-yield unsystematic run/walking with John. The very next day, I pushed myself harder than I had ever done before, running with John.&lt;/p&gt;
&lt;p&gt;Then I shook off my &quot;dependency&quot; on John, and decided to run &lt;em&gt;every day&lt;/em&gt;, even if it meant doing it alone. I made extensive use of Frick Park near home.&lt;/p&gt;
&lt;h3&gt;Scientific training&lt;/h3&gt;
&lt;p&gt;I started reading &quot;The Runner&apos;s Handbook&quot;, recommended to me by my sister Linda months ago. Exactly nine days after my birthday, I wrote Linda email telling her that I planned to run the Pretty Good Race in September.&lt;/p&gt;
&lt;p&gt;The book said that a beginner should run at least twenty minutes, preferably thirty minutes, and at least three times a week, preferably five. This was much more than what I&apos;d been doing.&lt;/p&gt;
&lt;p&gt;I wrote in my journal:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I think I will aim to successfully run my Frick Park route for a few weeks, till I can comfortably run 20 minutes.  Then I will invent a new addition in Frick Park in order to make the run 30 minutes.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Progress became more noticeable as I focused on putting in the time and distance, going as slowly as required to avoid going anaerobic (my problem when running with John). Learning the science of distance running definitely helped a lot in making my training scientific.&lt;/p&gt;
&lt;h2&gt;Really committing to running the Pretty Good Race in 2000&lt;/h2&gt;
&lt;p&gt;I managed to get some friends of mine to commit to also running in the Pretty Good Race for the first time, and we did a little bit of running together.&lt;/p&gt;
&lt;h2&gt;Some warmup races&lt;/h2&gt;
&lt;p&gt;I ran the first races of my life right before the Pretty Good Race, in order to get a feel for what it was like racing.&lt;/p&gt;
&lt;h3&gt;Run Around the Square 5K&lt;/h3&gt;
&lt;p&gt;My actual first 5K race was the &lt;a href=&quot;https://www.runaroundthesquare.com/&quot;&gt;Run Around the Square&lt;/a&gt; in August 2000, just some weeks before the Pretty Good Race. It was &quot;disastrous&quot;, because I was completely inexperienced:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
I guess I went too fast, because before I reached the park entrance, I
wasn&apos;t feeling so well, and my right side was beginning to hurt
already.  I didn&apos;t think of myself as going fast, because so many
people were going faster and obviously way ahead.  There was no
crowding problem, because people were getting spread out.&lt;/p&gt;
&lt;p&gt;Worse, when I reached the park entrance, I dashed down the steep,
curving hill, passing a lot of people, and almost fell off the trail.
When the uphill came, people started passing me.&lt;/p&gt;
&lt;p&gt;I knew I was in trouble when it took me 9 minutes to get to the 1 mile
mark.&lt;/p&gt;
&lt;p&gt;As the race progressed, I saw all kinds of people pass me: middle-aged
women, high-schoolers, old men.  It was embarrassing.  I was just
trying to avoid getting sick.  I was moving my feet slowly, and not
pushing off.  The feeling of people passing me was not encouraging.&lt;/p&gt;
&lt;p&gt;I ended up grabbing water three times.&lt;/p&gt;
&lt;p&gt;I took 18 minutes to get to the 2 mile mark.  At this point, I
believed I would probably take 27 minutes total, and I felt bad.&lt;/p&gt;
&lt;p&gt;I didn&apos;t even bother to get in an extra kick when the end was near.  I
just didn&apos;t feel well.  I believe my time was 27:xx.  I took my pulse
right after I ripped off my chip and handed it to someone.  It was
200.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;In fact, my time was a very slow 27:23, and I was overambitious in my first race. But that was OK, because the point was to get experience so that in the race that mattered, the Pretty Good Race, hopefully I would do better. I was afraid of finishing dead last in the Pretty Good Race.&lt;/p&gt;
&lt;p&gt;(For the record, a year later, 2001, I ran 23:19 in this race.)&lt;/p&gt;
&lt;h3&gt;Montour Trail 5K&lt;/h3&gt;
&lt;p&gt;A week before the Pretty Good Race, I ran in my second 5K race of my life, the &lt;a href=&quot;https://web.archive.org/web/20210624203359/http://www.mtchalfmarathon.com/&quot;&gt;Montour Trail 5K&lt;/a&gt;. I did it in 25:30, being much more experienced as a result of the Run Around the Square.&lt;/p&gt;
&lt;p&gt;(For the record, a year later, in 2001, I ran the Montour Trail half marathon instead, in 1:47:23, five days after running a 5K race in 21:39. Do the math: in one year I got my 5K time down from 27:23 to 21:39!!)&lt;/p&gt;
&lt;h2&gt;Moment of truth: &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/2000.html&quot;&gt;Pretty Good Race 2000&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My friends all beat me in the race, some pretty significantly.&lt;/p&gt;
&lt;p&gt;I finished in 26:26, in agony, in 27th place out of 32 (including the guy who ran backwards the whole way). OK, so I didn&apos;t finish in last place after all!&lt;/p&gt;
&lt;p&gt;I silently vowed to beat my friends in &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/2001.html&quot;&gt;2001&lt;/a&gt;. I did. I came in 18th place out of 45, after training really hard for a year to improve my running. My time in 2001 was 22:33, over four minutes faster than in 2000.&lt;/p&gt;
&lt;p&gt;Here I am outsprinting my friend Sungwoo at the finish:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pgr-2001-sungwoo-franklin.jpg&quot; alt=&quot;Pretty Good Race 5K, 2001, closeup of Sungwoo and Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A mutual friend asked me why I was so intent on beating Sungwoo, and asked whether I had something against him. I said no, not at all. It was just a personal challenge, a goal, just like when I first starting running in races, and got beaten by a certain 70-something hunched-over old man repeatedly, I made him a concrete target to surpass in the future, and eventually I did. In this case, I had earlier judged that Sungwoo was closest in speed to me, and therefore I would aim to beat him.&lt;/p&gt;
&lt;h2&gt;Other years of running the Pretty Good Race&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2000: 26:26 (first time, and 3rd lifetime race)&lt;/li&gt;
&lt;li&gt;2001: 22:33 (much better, 23rd race)&lt;/li&gt;
&lt;li&gt;2002: did not run, because of half marathon the next day&lt;/li&gt;
&lt;li&gt;2003: did not run, because of half marathon the next day&lt;/li&gt;
&lt;li&gt;2004: simply chose not to run&lt;/li&gt;
&lt;li&gt;2005: 23:16 (little training)&lt;/li&gt;
&lt;li&gt;2006: 22:57 (recovered some fitness)&lt;/li&gt;
&lt;li&gt;2007: (almost no running this year, health declining)&lt;/li&gt;
&lt;li&gt;2008: (almost no running this year, health declining)&lt;/li&gt;
&lt;li&gt;2009: 25:52 (almost no running this year, in terrible health)&lt;/li&gt;
&lt;li&gt;2010: 26:41 (almost no running this year, in terrible health)&lt;/li&gt;
&lt;li&gt;2011: 24:36 (began running again, recovering my health)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;This year, 2012, I aim to get back under 24:00 in the Pretty Good Race, to return to my fitness level of early 2007 before my life was disrupted for half a decade during which I had trouble staying healthy.&lt;/p&gt;
&lt;p&gt;I have done less running so far this year than I would have liked, unfortunately, but just being on the Pretty Good Race course again and feeling great to be out there reminded me to return to a regular running habit. I have three months before the next Pretty Good Race!&lt;/p&gt;
&lt;h2&gt;But why??&lt;/h2&gt;
&lt;p&gt;In this blog post I haven&apos;t explained why I wanted to run, what my goals were, how they have changed over the years, and why I run now. I will write about those topics in detail later.&lt;/p&gt;
&lt;p&gt;For now, I&apos;ll just say that &lt;strong&gt;I love to run&lt;/strong&gt;. I wouldn&apos;t do it if I didn&apos;t. (I know people who run but do not love it. I think &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jones.wordpress.com/2012/06/04/things-ive-learnt-from-running/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jones.wordpress.com/2012/06/04/things-ive-learnt-from-running/&quot;&amp;gt;that is a mistake&amp;lt;/span&amp;gt;.)&lt;/p&gt;
</content:encoded></item><item><title>A totally exhausting Rachel Carson Trail Challenge goal training hike (18.1 miles</title><link>https://franklinchen.com/blog/2012/06/03/a-totally-exhausting-rachel-carson-trail-challenge-goal-training-hike/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/03/a-totally-exhausting-rachel-carson-trail-challenge-goal-training-hike/</guid><pubDate>Sun, 03 Jun 2012 23:42:00 GMT</pubDate><content:encoded>&lt;p&gt;In April, I reported on a nice &lt;a href=&quot;/blog/2012/04/29/a-pretty-rachel-carson-trail-challenge-goal-training-hike/&quot;&gt;8.9 mile hike on the Rachel Carson Trail&lt;/a&gt; I did with John, the second of &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc12/goaltraining&quot;&gt;eight goal training hikes for the Rachel Carson Trail Challenge&lt;/a&gt;. I looked forward to doing a really long hike on the Rachel Carson Trail with John as my last hike on this trail for the year, and today was the one opportunity I had (during a very busy spring and summer weekend schedule) to get it in.&lt;/p&gt;
&lt;p&gt;The description of today&apos;s hike, the seventh of eight:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sunday, June 3, 2012&lt;/li&gt;
&lt;li&gt;Leader: Craig Fowler 412-491-6643&lt;/li&gt;
&lt;li&gt;18.1 miles&lt;/li&gt;
&lt;li&gt;Elevation change: 6915 ft.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&quot;On this hike we&apos;ll cover the second half of this year&apos;s Challenge course. Starting in Springdale near the Springdale Veterans Association Hall, we&apos;ll hike through Springdale then hit Log Cabin hill, Lefever Hill, and Rich Hill. Then we&apos;ll stick the landing in North Park. Meet at the Harmar Shelter in North Park. Directions: Take I279 north to the McKnight Road exit and travel 6.4 miles north. Take the North Park/Ingomar Rd. exit east and turn right at the third traffic light onto Babcock Blvd., then take the next left onto Hemlock Drive, then left again into the swimming pool lot. Follow the perimeter drive all the way back and bear right. The Harmar Shelter is ahead on the left, behind the guardrail.&quot;&lt;/p&gt;
&lt;p&gt;It turned out that a lot of things went wrong during this hike, but we survived!!&lt;/p&gt;
&lt;h2&gt;Volunteering&lt;/h2&gt;
&lt;p&gt;Earlier in the season, there had been a call for volunteers to lead or assist in the goal training hikes. I felt like giving back to the Rachel Carson Trail community, but didn&apos;t feel ready yet to actually lead a hike. Instead, I accepted the role of helping (with John) by assisting in one of the longer ones, serving as trail sweeps in the back, aiding Miranda.&lt;/p&gt;
&lt;h2&gt;Footwear&lt;/h2&gt;
&lt;p&gt;I also wanted to do a very long hike as a test of whether my feet could hold up in Vibram FiveFingers KSO Trek shoes, on tough terrain as well as a very long distance. I always had problems (toe jamming, blistering, knee and ankle pain) wearing trail running shoes in the past hiking the Rachel Carson Trail in previous years when going about 20 miles or longer. In April&apos;s Rachel Carson Trail hike, my feet got sore but otherwise I felt great. But I didn&apos;t know how things would scale up to a much longer distance. So this was an opportunity to test my limits in FiveFingers shoes.&lt;/p&gt;
&lt;h2&gt;Camera&lt;/h2&gt;
&lt;p&gt;Now that &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;I have a smartphone, finally&lt;/a&gt;, I no longer have to lug around the bulky digital camera that I&apos;ve had to use for the past couple of years for taking photos. So I decided to bring just the phone for this hike. On the April hike, my new phone&apos;s camera had been dead for days (I ended up getting a replacement phone, whew!), so I had used John&apos;s camera.&lt;/p&gt;
&lt;h2&gt;Meeting up at North Park&lt;/h2&gt;
&lt;p&gt;John and I had a weird carpooling arrangement to get to North Park. Only John and I were hiking, but Abby needed to be up in the vicinity to visit her parents and pick up her car that they had, so we all went together. Abby dropped us off, the idea being that her parents were going to stop by North Park later in the morning to give her car back so that she could drive back home.&lt;/p&gt;
&lt;p&gt;Parked at Harmar Shelter:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_08.11.20.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Hike&lt;/h2&gt;
&lt;p&gt;It took quite a while to ride back in a carpool to Springdale for the start. That just made us think of how long it would take to hike back to North Park!&lt;/p&gt;
&lt;p&gt;Here I am, ready to start hiking:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_08.52.05.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Denser and higher greenery in June than a month ago:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_09.00.53.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Years ago, when I did the Rachel Carson Trail Challenge, the trail in Springdale went through a section of land called the &quot;roller coaster&quot;. Sadly, in recent years, because of problems landowners had with misbehaving hikers, they revoked the permission they had given for so long to go through their land. This force some rerouting of the trail through the streets of Springdale. Ironically, the rerouting resulted in the trail finally actually passing by the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://rachel_carson_homestead.myupsite.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://rachel_carson_homestead.myupsite.com/&quot;&amp;gt;Rachel Carson Homestead&amp;lt;/span&amp;gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_09.15.03.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some dirt road hiking:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_09.22.15.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A critter!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_09.26.37.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Butterfly:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_09.32.10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Inevitable road walking, part of the whole Rachel Carson Trail experience:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.14.12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.20.34.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nice view into the distance:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.23.54.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.27.49.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.32.43.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now descending toward the road:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.35.29.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking back toward John:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.37.49.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the woods:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.45.23.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the &quot;Rachel Carson Trail&quot; signs, yellow on brown:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_10.52.30.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Back to road:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.08.39.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dirt road:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.17.59.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Big descent coming up; you can see how there will be a valley:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.19.29.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.23.27.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The thing to remember is that after getting to the bottom, the trail does &lt;em&gt;not&lt;/em&gt; go back up. It actually makes a left.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.23.33.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.26.37.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the woods again:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.43.49.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_11.58.15.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Stream crossing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_12.30.28.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_12.31.41.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It is very convenient that the trail passes through Emmerling Park, because you can get water from the fountain and use the restrooms here before going on.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_12.39.41.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_12.48.05.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;An unpleasant section of high-speed road with no sidewalk:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_13.15.13.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_13.22.33.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_13.28.44.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Animals!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_13.34.43.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.13.51.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.16.44.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.22.55.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.28.48.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.28.52.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.33.12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.36.40.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.43.42.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_14.58.16.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking like it might rain:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_15.14.01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2012-06-03/2012-06-03_15.18.08.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Oops&lt;/h3&gt;
&lt;p&gt;OK, at this point, six and a half hours into a very long hike, my phone&apos;s battery ran out!&lt;/p&gt;
&lt;p&gt;This was a problem because John and I had gotten separated from anyone else for some time already, and I worried about not being able to communicate with the hike leaders, whose responsibility it was to make sure everyone was accounted for at the end of the hike. Craig had my phone number, but I couldn&apos;t call him and he couldn&apos;t call me. Nor could I call Abby to let her know when John and I were done and heading home.&lt;/p&gt;
&lt;h2&gt;Finishing the hike&lt;/h2&gt;
&lt;p&gt;We made it to North Park, but then &lt;em&gt;got lost&lt;/em&gt; in the trails. I had route maps on my phone, but my phone was dead. &lt;em&gt;Luckily&lt;/em&gt;, I had brought some paper printouts of some road maps of North Park (but no trail maps!!). As long as we got out of the woods and onto the roads, I was sure we would find the shelter and my car and be OK. At worst, there would be people around in North Park we could ask for more detailed directions.&lt;/p&gt;
&lt;p&gt;Then it began to rain. Really hard. My paper maps were getting blurry.&lt;/p&gt;
&lt;p&gt;We eventually got to a road, and asked random people where the Harmar Shelter was, but they didn&apos;t know. After some wandering around, we finally figured out where we were on the printed maps I had (the rain had stopped), and backtracked toward the shelter.&lt;/p&gt;
&lt;p&gt;Then all of a sudden, John pointed at a car and said, &quot;That car looks a lot like yours!&quot; I replied that a lot of cars looked like mine, and ignored him. But then he noticed some distinguishing features and said it looked like it actually was mine. We were lucky, because it turned out the car was mine!! (Later I would learn from Abby that she had moved the car from where it had been parked in front of the shelter, to some random place further away, and texted me about the move, but of course, since I had not been checking my phone during the hike, and it died, I had no idea.)&lt;/p&gt;
&lt;p&gt;Anyway, we made a note of where the car was before heading to the shelter. We saw no trace of Craig or Miranda. Oh great. Since Abby had moved the car, Craig must have left without waiting for us to return because he saw our car gone and assumed we had returned faster and had already gone home! (Later it would turn out that he had texted me as well as left voice mail asking me where I was and then after not getting a reply said he was leaving because he assumed we had finished.)&lt;/p&gt;
&lt;p&gt;The shelter had a big, noisy party going on. We asked some random drunk guy if we could borrow his cell phone to make a call. He was kind enough to lend us the phone, and I called Craig (I was so fortunate that I had written in pen Craig&apos;s number on one of the pieces of paper I had on me during the hike), and cleared up the confusion over whether we had finished or gone home. Then I called Abby and let her know John and I were OK, and drove us home.&lt;/p&gt;
&lt;h2&gt;After&lt;/h2&gt;
&lt;p&gt;I was very happy to have made it home, and ate a ton of food. I noticed that my toes were numb, from all the hiking and the cold of stream crossing and rain. Also, my ankles were very stiff. The soles of my feet were quite sore. But I had no other leg soreness. So the experiment with footwear partially succeeded. (The numb toes were OK again after a couple of hours.) But still, I cannot imagine hiking more than 20 miles comfortably with the Vibram FiveFingers KSO Trek. My feet were simply very sore.&lt;/p&gt;
&lt;h2&gt;Lessons learned&lt;/h2&gt;
&lt;p&gt;I learned many lessons during this exhausting hike:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trail sweep can be a lonely, arduous task. I&apos;m used to hiking with a pack of people, or at least having a pack in sight. Not being the fastest hikers on this hike, being the sweep meant actually being left behind!&lt;/li&gt;
&lt;li&gt;I am immediately buying a phone charger for my car. It would have saved a lot of trouble if I had been able to charge my phone upon reaching it, in order to access missed text messages and voice mail.&lt;/li&gt;
&lt;li&gt;I am &lt;em&gt;never&lt;/em&gt; going to completely rely on the phone again for directions or maps. I will always have backup paper printouts of all important information, and in fact, put them in plastic bags in case of rain.&lt;/li&gt;
&lt;li&gt;I will turn off automatic flash in order to save the phone battery when taking photos. Also, turn off unnecessary apps, etc.&lt;/li&gt;
&lt;li&gt;The FiveFingers shoes didn&apos;t work too badly, but for a truly long distance are not cushioned enough.&lt;/li&gt;
&lt;li&gt;In the final hours, John and I simply were no longer enjoying the hike, but just wanted to finish. We don&apos;t really want to do a hike this long or grueling again. We did about 20 miles today (extra distance beyond 18.1 because of getting lost in various places). &lt;em&gt;Never again&lt;/em&gt; do I want to hike this long on the Rachel Carson Trail. In 2005, 2006, and 2007, I did the full 34-mile Challenge just to prove I could, not because I actually enjoyed it as such. I don&apos;t need to kill myself any more. I enjoy doing long, varied, meditative hikes, but there is a limit to how much I actually enjoy. 8 or 9 miles, as in the hike a month ago, is probably optimal for me.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I knew that this Rachel Carson Trail hike was going to be tough, but it got a lot tougher than I expected. I learned a lot as a result of the experience.&lt;/p&gt;
&lt;p&gt;Thanks to Craig for checking up on us and leading the hike and Miranda for being with us on the sweep during the beginning, and thanks to Abby for taking us to the hike!&lt;/p&gt;
</content:encoded></item><item><title>Why I am grateful that my father never let me win a chess game against him</title><link>https://franklinchen.com/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/03/why-i-am-grateful-that-my-father-never-let-me-win-a-chess-game-against-him/</guid><pubDate>Sun, 03 Jun 2012 20:59:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been writing a lot recent about life lessons learned from playing chess as a kid. Here are some life lessons I learned as a result of the fact that &lt;strong&gt;my father never let me win a chess game against him&lt;/strong&gt;. Based on what I have seen adults doing with children, I somewhat suspect this is unusual. I get the impression that parents like to let their children &quot;win&quot; at something, presumably for the purpose of giving them a &quot;self-esteem&quot; boost.&lt;/p&gt;
&lt;p&gt;I think it&apos;s important to demonstrate compassion and judgment in encouraging children in their pursuits, but based on my own experience, I am not sure it is necessary to let a kid &quot;win&quot; when the win is nowhere near deserved objectively.&lt;/p&gt;
&lt;p&gt;My father &lt;em&gt;never&lt;/em&gt; let me win a chess game against him. I played many games with him starting from around age 3, and I did not win a single chess game against him until age eleven, on my own merits alone, when I had overtaken him in my strength. I don&apos;t know what his rationale was, but I do know what his behavior taught me.&lt;/p&gt;
&lt;h2&gt;The life lessons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reason and logic have a force of their own, that lies beyond nepotism and other external factors, and must be respected and cultivated.&lt;/li&gt;
&lt;li&gt;Sometimes one deserves to lose, based on reality, and a child should learn to be a loser and not let losing be correlated with self-esteem or love.&lt;/li&gt;
&lt;li&gt;Children at some point can detect lying, and my father showed me respect by not pretending to lose.&lt;/li&gt;
&lt;li&gt;Children also appreciate compassion, and I knew my father was not always playing at full strength (he magically got better as I got better), but also knew that by not playing at full strength he made the game challenging yet fun for me, rather than demoralizing and impossible to learn level-appropriate lessons from.&lt;/li&gt;
&lt;li&gt;When I actually finally won, it was a big deal, not something that just randomly happened for no reason; I knew that I had reached a true milestone in my life, in which I had through hard work actually surpassed my father at something.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;Unfortunately, it turned out that when I won my first game with my father, that was the last game we ever played again for two decades. We never talked about why we stopped playing. After that game, simultaneously neither of us asked again to play the other. There was some kind of unspoken awkwardness. I was heading toward puberty and had begun acting up and resisting authority by that time, and he had been discouraged in his own quest for chess improvement, so he basically quit playing chess after I beat him for the first time. It was an awkward time.&lt;/p&gt;
&lt;p&gt;We played our first game in decades only when I was into my thirties and I was visiting one Christmas and invited him to play. We played, and I showed no mercy, and I won, but it was an honest game. Like old days. We still play now and then when visiting each other. He knows my level, I know his level, and we know I am basically always going to win, but what can we do other than play some honest games and enjoy the artistry we create together, no matter who wins?&lt;/p&gt;
&lt;p&gt;Outside of official competitions, winning is not the only thing. It wasn&apos;t when I was a child, and it isn&apos;t now.&lt;/p&gt;
&lt;h2&gt;Photo of me playing chess with my father in summer 2010&lt;/h2&gt;
&lt;p&gt;I found a photo of my father and me playing a game of chess at my parents&apos; home when Abby and I were visiting in summer 2010. (My actual first chess game with my father in two decades was when I was visiting over Christmas 2004.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/chess-nelson-franklin-2010.jpg&quot; alt=&quot;Nelson versus Franklin in chess in summer 2010&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2013-02-27)&lt;/h2&gt;
&lt;p&gt;The renowned chess instructor Bruce Pandolfini gave a nuanced, thoughtful answer to a parent&apos;s question about whether to let a child win. (&lt;strong&gt;Update of 2013-12-22&lt;/strong&gt;: Unfortunately, the link I originally provided to his article no longer works, as Chess Cafe has begun removing archives of its content).&lt;/p&gt;
&lt;p&gt;I still think that how my father operated worked out well for me. I learned to value getting better, rather than winning. I trusted that getting better would eventually lead to winning, and it did. Even as an adult who has limited time and ambition, I still value getting better over winning. And &lt;a href=&quot;/blog/2013/02/20/pittsburgh-chess-club-championship-2013-round-6-winning-as-black-like-a-madman/&quot;&gt;I just won the 2013 Pittsburgh Chess Club Championship&lt;/a&gt;. I am in the &lt;a href=&quot;https://www.pscfchess.org/ratings/regtoppa.htm&quot;&gt;top 40 of the active rated chess players in Pennsylvania&lt;/a&gt;. I wouldn&apos;t be here if my father had not instilled in me a love of excellence and an honest self-evaluation. I don&apos;t even feel good when I win. I only feel good when I judge that I &lt;em&gt;deserved&lt;/em&gt; to win.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-12-22)&lt;/h2&gt;
&lt;p&gt;Hugh Patterson at The Chess Improver posted a great article &lt;a href=&quot;https://web.archive.org/web/20170428002141/http://chessimprover.com:80/some-thoughts-for-parents/&quot;&gt;&quot;Some Thoughts for Parents&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, although I am not a parent yet, I am teaching chess now, so I&apos;m personally facing practical decision-making in how I try to simultaneously install love for chess, sheer fun, and a healthy drive for excellence.&lt;/p&gt;
&lt;h2&gt;(Update of 2015-12-21)&lt;/h2&gt;
&lt;p&gt;Two years later, I made a focused push, temporarily putting many
things aside in my life, in the fall of 2015 to &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieve my US Chess
National Master&lt;/a&gt; title, and finally made it, a dream come true.&lt;/p&gt;
&lt;p&gt;But it wasn&apos;t winning that matters to me in this achievement: it is
that I have actually been playing pretty well and feel I finally
deserved the title. When I was not playing well, I did not feel I
deserved.&lt;/p&gt;
</content:encoded></item><item><title>They published my brilliant chess game, hinting it was not so original, but was it?</title><link>https://franklinchen.com/blog/2012/06/02/they-published-my-brilliant-chess-game/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/02/they-published-my-brilliant-chess-game/</guid><pubDate>Sat, 02 Jun 2012 12:19:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;The past couple of days, I have been writing about what I learned through playing chess as a kid. I continue today by discussion a game I played right before retiring from chess at age fifteen. This game came to my mind when I was writing about the &lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/&quot;&gt;chess computer game I played at age seven&lt;/a&gt;, because I played against the &lt;a href=&quot;https://en.wikipedia.org/wiki/Sicilian_Defence,_Accelerated_Dragon&quot;&gt;Accelerated Dragon of the Sicilian Defense&lt;/a&gt; in that game, and in my retirement tournament I also played a game against that opening.&lt;/p&gt;
&lt;p&gt;My final tournament before I started the 11th grade and became fully absorbed in academic study was kind of special because I played reasonably well, achieving an Expert rating just as I retired, jumping from a rating of 1934 to over 2000, and because it was one of those tournaments held in East Lansing, which meant visiting and staying with my &lt;a href=&quot;/blog/2012/03/16/remembering-my-uncle-steve/&quot;&gt;aunt and uncle and cousins&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The game I played in the Michigan Open was the second to last chess game I played in a serious tournament before returning to chess over twenty years later. It ended up being published in the &lt;a href=&quot;https://www.michess.org/interim/magazine/1980s/MC8510.pdf&quot;&gt;following Michigan Chess magazine issue&lt;/a&gt;, warranting a short note that it was reminiscent of a &quot;famous Fischer-Reshevsky debacle&quot;.&lt;/p&gt;
&lt;h2&gt;Pride or shame? Creative or original?&lt;/h2&gt;
&lt;p&gt;When I was playing my game, I was feeling pretty proud of my winning combination, even though I knew it was not completely original; I in fact had been inspired by a theme in the Fischer-Reshevsky game that I had remembered when first encountering it in a book with my father back when I was eight years old. When I read the Michigan Chess magazine column and saw that, of course, the editor saw the resemblance, I felt deflated. As a result, I never showed my father the mention of my game in the magazine, nor did I show the game to him.&lt;/p&gt;
&lt;p&gt;But today, I am going to display this game.&lt;/p&gt;
&lt;h2&gt;My game&lt;/h2&gt;
&lt;p&gt;In my game, I embarked on a double sacrifice combination that, if one had never seen the theme before, looks spectacular. If one had seen the theme before, it might look boring. But actually, it required accurate calculation to make the concrete variation of the theme actually work: playing simply by analogy is disastrous in chess because any small difference in a position can radically change its evaluation. So although I cannot take credit for spotting the theme, I think I can take credit for making sure that it actually applies in context.&lt;/p&gt;
&lt;p&gt;Here is the critical position of my game, with White to play and win:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;1nbqk1nr/2rpppbp/p5p1/1p1B4/3NP3/2N1B3/PPP2PPP/R2QK2R w KQk -&quot; caption=&quot;Chen-Winfield, Michigan Open 1985&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is the critical position of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chessgames.com/perl/chessgame?gid=1008376&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chessgames.com/perl/chessgame?gid=1008376&quot;&amp;gt;Fischer-Reshevsky, US Championship 1958&amp;lt;/span&amp;gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1bqnrk1/pp1pppbp/6p1/n3P3/3N4/1BN1B3/PPP2PPP/R2QK2R w KQ -&quot; caption=&quot;Fischer-Reshevsky, US Championship 1958&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;If you have not seen either game before, do you see the similarities? Can you spot the forced wins?&lt;/p&gt;
&lt;h2&gt;The full annotations&lt;/h2&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/accelerated-dragon-trap.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;My annotations go further into what I was thinking during the game. (The game page pops up defaulting to showing my game; use the upper-right corner selection menu to switch view to Fischer&apos;s game.)&lt;/p&gt;
&lt;h2&gt;A discussion of the theme and variations&lt;/h2&gt;
&lt;p&gt;So if you have looked through the games now, you can see that the basic theme is of trying to trap Black&apos;s Queen and win it, and in order to avoid losing the Queen immediately, Black has to move the King out and risk being checkmated. And the key moves for White are to play Bxf7+ to remove the f Pawn that defends e6, and then Ne6 attacking the Queen. What is critical is evaluating whether Black can just take the Knight on e6 with the King and survive.&lt;/p&gt;
&lt;p&gt;There are some real differences in how the theme plays out in my game and Fischer&apos;s game:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Fischer&apos;s game, the Queen really is trapped; and taking the Knight on e6 with the King leads to a quick forced checkmate&lt;/li&gt;
&lt;li&gt;In my game, the Queen is not actually trapped, because the Queen can always go to e8, but in that case, I win the rook on c7 instead; finally, in my game, Black can in fact take the Knight on e6 with the King, and this does not lead to a forced checkmate, because Black has Bxc3+ freeing up the g7 square for the King to possibly escape to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In retrospect, I should not have been too ashamed by the resemblance to Fischer&apos;s game, because there were real differences that lead to completely different calculations and variations in winning the game. I did have to use my own mind. The calculations are not so hard for a strong player, but I was not even at an Expert rating yet at the time, so my game was pretty good for a Class A rated player.&lt;/p&gt;
&lt;h2&gt;What I have learned&lt;/h2&gt;
&lt;p&gt;Some useful lessons I have learned upon revisiting this game:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having a deep background in already existing knowledge (such as already played games) helps one spot a theme and apply it in a new situation.&lt;/li&gt;
&lt;li&gt;There is no shame in stealing and using someone&apos;s good idea.&lt;/li&gt;
&lt;li&gt;Even when stealing an idea, it requires one&apos;s own ingenuity to make sure it works in a new context.&lt;/li&gt;
&lt;li&gt;Do not let your own honest judgment of your work be swayed too much by what is said about it in a publication.&lt;/li&gt;
&lt;li&gt;I could have been more proud of myself in front of my parents when I was a kid and shared my excitement at my personal accomplishments.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Life lessons I learned from a lunch recess chess game at age seven: the prequel with a classmate</title><link>https://franklinchen.com/blog/2012/06/01/life-lessons-i-learned-from-a-lunch-recess-chess-game-with-a-classmate-at-age-seven/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/06/01/life-lessons-i-learned-from-a-lunch-recess-chess-game-with-a-classmate-at-age-seven/</guid><pubDate>Fri, 01 Jun 2012 13:43:00 GMT</pubDate><content:encoded>&lt;p&gt;Two days ago, I wrote about &lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/&quot;&gt;life lessons I learned from playing a chess game against a computer in the 2nd grade during lunch recess&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, I&apos;m writing about what I learned from the only other chess game I played on site in elementary school. I played this game much earlier than the computer game; I played it with a classmate who had seen me looking at chess books in the classroom library and challenged me to a game. Let&apos;s call him X. Here are our school photos:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-second-grade.jpg&quot; alt=&quot;Franklin Chen 2nd grade school photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/second-grade-chess-opponent.jpg&quot; alt=&quot;Classmate in 2nd grade I played one chess game with&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My game with X&lt;/h2&gt;
&lt;p&gt;I was nervous when we sat down to play, because I had up till this point never played chess with anyone but my father.&lt;/p&gt;
&lt;p&gt;Nobody was watching us. It was just the two of us sitting on the floor in a corner where books and games were stored.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The game lasted no more than two minutes; it lasted four moves before ending!!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;X was playing very quickly, spending no more than a split second per move. Furthermore, he played completely unlike my father and unlike any of the sample instructive games I had seen in chess books. His first move, h4, totally confused and unnerved me. I tried to play according to vague principles I recalled about how one should play, moving my center Pawns, even as he did a strange Rook lift maneuver I had never seen in my entire life. On his third move, he attacked my e Pawn with this rogue Rook and I protected it. On his fourth move, he attacked my Pawn with his d Pawn. We had reached this position:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/second-grade-chess-game.png&quot; alt=&quot;My only chess game with another kid in elementary school&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I got excited because it looked like he had made a mistake. His Pawn on d4 is protected only once, by his Queen, while I was attacking it with both my Knight and my Pawn at e5. Therefore, his Pawn was &quot;free&quot; for me to take!&lt;/p&gt;
&lt;p&gt;Unfortunately, I momentarily overlooked that my e Pawn was pinned and took his d Pawn with my e Pawn. (Note: taking the Pawn with the Knight would have lost it; X was definitely no dummy and may even have been a far better chess player than me at the time.)&lt;/p&gt;
&lt;h3&gt;The argument&lt;/h3&gt;
&lt;p&gt;X, who had something of a stern, morose temperament, suddenly broke out into a big smile of victory, grabbed his Rook and took my King, jumped up from the ground, and said he won the game!!&lt;/p&gt;
&lt;p&gt;I protested that I had overlooked that I had made an illegal move, and asked him to give my King back so that I could put all the pieces back to where they were before I made the illegal move, saying that we can&apos;t make illegal moves, and Kings cannot be captured in chess, so not only could I not take the Pawn, but he also could not take my King. (I was correct, of course; illegal moves cannot be allowed to stand, and the King can never be taken during a chess turn.)&lt;/p&gt;
&lt;p&gt;X refused to listen to me and just gloated. As I had no desire to create a scene and ask for a teacher to adjudicate our dispute, I just walked away. I never played a chess game with him again, and I never told anyone in my life about this incident, until today.&lt;/p&gt;
&lt;h2&gt;Life lessons I learned&lt;/h2&gt;
&lt;p&gt;Some of the things I learned from this incident:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X may have gotten away with claiming to have won against me, but lost a potential playmate.&lt;/li&gt;
&lt;li&gt;Some people are uninformed but very sure they are right, and there is no use arguing with them.&lt;/li&gt;
&lt;li&gt;Even when playing a game by the rules, the ultimate outcome in the real world may depend on whether others are playing by the rules.&lt;/li&gt;
&lt;li&gt;I needed more experience in facing unexpected, strange openings and strategies, in order to avoid getting mentally flustered and inattentive.&lt;/li&gt;
&lt;li&gt;I needed more experience in staying calm against someone who behaved aggressively and intimidated me.&lt;/li&gt;
&lt;li&gt;I needed to look at the larger context when it seemed that something was free for the taking.&lt;/li&gt;
&lt;li&gt;I needed to pay more attention to threats directed toward my King from afar.&lt;/li&gt;
&lt;li&gt;I needed to be &quot;defensive&quot; against illegal game endings by not making illegal moves myself.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What I did with what I learned&lt;/h2&gt;
&lt;p&gt;X did me a little favor by teaching me all these lessons. I went home and actually studied his Rook strategy and came up with ways to deal with it if anyone ever played it against me again. I also never played an illegal move again in my life. (Note: up till this point, I was still having some problems &quot;seeing&quot; that pieces or Pawns of mine were pinned, and would sometimes play illegal moves against my father too.)&lt;/p&gt;
&lt;p&gt;I also decided it was time to go beyond kids&apos; chess books and learn more about strategy, going beyond just the basic rules and counting piece points. Luckily for me, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.gti.net/mocolib1/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.gti.net/mocolib1/&quot;&amp;gt;Morris County Library&amp;lt;/span&amp;gt; had a great chess collection, and I got my father to drive us there regularly, where we took out lots of chess books (as well as books on all the other subjects that interested me). My father never asked me why I was getting so excited about chess, but was happy to get into it more himself. We went over serious game collections and opening books, for the first time in our lives, and in months I felt I was much more informed and stronger as a chess player. That set the stage for my proud accomplishment of obtaining a &lt;a href=&quot;/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/&quot;&gt;winning position against a chess computer later in the 2nd grade&lt;/a&gt;, which also taught me more life lessons already discussed.&lt;/p&gt;
</content:encoded></item><item><title>Some pretty attacking chess at a party last weekend</title><link>https://franklinchen.com/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/</guid><pubDate>Thu, 31 May 2012 07:26:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;&lt;/p&gt;
&lt;p&gt;For almost two weeks, Abby and I were staying with my sister Linda (and her husband André), with whom we were staying for almost two weeks in order to help them with their three-month-old baby, my first nephew, Jack. They happened to hold a Memorial Day weekend party, inviting old friends of theirs as well as new friends with similarly-aged babies.&lt;/p&gt;
&lt;p&gt;As people started arriving in the afternoon, I noticed a boy who was wearing a T-shirt for a chess camp from 2009 or something. I couldn&apos;t help saying to him, &quot;Oh, you play chess? Maybe we should play.&quot; Someone (I think my sister?) started saying I used to be very good, so Benjamin got excited and next thing I knew, André had fetched his chess set and brought it out. We moved the chips and guacamole to make room on the coffee table and immediately started playing a game, while I continued baby duty holding Jack.&lt;/p&gt;
&lt;h2&gt;How to play chess with a stranger at a party&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/chess/giorgio_files/benjamin-benoni.jpg&quot; alt=&quot;Me playing a Benoni against Benjamin while holding Jack&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There are actually some subtle considerations in playing chess at a party with someone I&apos;ve never met before. Here are a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How strong is my opponent? At what level should I play so that I can try to win, but not necessarily too easily?&lt;/li&gt;
&lt;li&gt;Are there interested spectators? What kind of play would entertain or educate them most?&lt;/li&gt;
&lt;li&gt;At a party, time is limited, and I don&apos;t want to spend too much time playing chess (instead of eating or socializing with other people). So there is not enough time for very long thinks as would be the case for a classical tournament situation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a report on how things turned out in the three games I played at the party before I focused on eating the barbecue and socializing with everyone else:&lt;/p&gt;
&lt;h2&gt;How to play against someone wearing a chess camp T-shirt&lt;/h2&gt;
&lt;p&gt;In the first game I played, I was playing an older boy wearing a chess T-shirt, so without asking any questions, there was no telling how strong he could be. So I could not just start out &quot;playing down&quot;. I did take the Black side, however.&lt;/p&gt;
&lt;p&gt;Spectators usually like to see quick excitement and blood, rather than dry, long, technical games. At this party, a surprising number of kids seemed to know chess and enjoy watching it. Therefore, as Black, I chose to play in a risky, aggressive way, challenging White&apos;s d4 with a modified Modern Benoni.&lt;/p&gt;
&lt;p&gt;To save time, I played quickly, not always looking for the best move.&lt;/p&gt;
&lt;p&gt;I ended up winning the game fairly quickly, after pinning a piece and winning it and more material.&lt;/p&gt;
&lt;h2&gt;How to play against a younger boy who is mostly likely a total beginner&lt;/h2&gt;
&lt;p&gt;Then his brother wanted in on the action also and we played a quick game.&lt;/p&gt;
&lt;p&gt;I took Black again and chose to play the inferior Owen&apos;s Defense in order to make it harder for me to win quickly. Sure enough, from his third move and on, it was clear he was much weaker than his older brother. I tried to tone down my play, but soon I had no choice but to finish off the game with checkmate.&lt;/p&gt;
&lt;h2&gt;Playing against the chess kids&apos; father&lt;/h2&gt;
&lt;p&gt;Then the boys called for their father to play me. They said he was really good once. So Giorgio sat down, I took White, and we began to play. I knew this was going to be intense, since the both of us were supposedly &quot;good&quot; once.&lt;/p&gt;
&lt;p&gt;It was definitely intense. I started out in the opening as though I were playing someone of equal or higher strength than me in a serious tournament setting. When Giorgio weakened his King side, I went on an attack, sacrificing a Pawn and throwing all my pieces at his King:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/giorgio_files/giorgio-deep-in-thought.jpg&quot; alt=&quot;Giorgio deep in thought after Ba3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/chess/giorgio_files/giorgio-side-view.jpg&quot; alt=&quot;Giorgio and Franklin thinking&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ended up winning the game with some pretty tactical ideas throughout. I was proud of having taken part in the most interesting chess game I have ever played at a party, and proud of having won through calculating my attack correctly and well.&lt;/p&gt;
&lt;p&gt;After the game, Benjamin had questions about some of the moves we played or chose not to play, and Giorgio started going over the game with him and I joined in the analysis. That was fun.&lt;/p&gt;
&lt;h3&gt;The past&lt;/h3&gt;
&lt;p&gt;Afterwards, his son told me Giorgio had actually been the number two junior chess player in Italy under age 16 back in the day. I didn&apos;t bother replying that I was in the top ten in the United States under age 13 or something like that back in the day myself (Giorgio and I are roughly the same age, I think). Let&apos;s face it, past glories don&apos;t matter. Nobody really cares what we did as kids. We are as we are now. I happen to be less rusty than Giorgio because I did return to serious chess for a couple of years (2005-2009) before quitting again. I tried to come back again in late 2010, but had lost my edge, and I quit for good in 2011. At some point, some of us have better things to do with our time and energy than maintaining or improving our chess strength. I don&apos;t play in tournaments any more, or even go to the local chess club. I don&apos;t play online chess or against computers either. I&apos;ll only play at parties!&lt;/p&gt;
&lt;h4&gt;(Update of 2015-12-21)&lt;/h4&gt;
&lt;p&gt;Three years later, when I took up chess seriously again, temporarily
putting many things aside in my life, I finally &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieved my US Chess
National Master title&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Full game score, annotated&lt;/h3&gt;
&lt;p&gt;I have fully annotated my game. Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/giorgio.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Final party game, against the weakest boy&lt;/h2&gt;
&lt;p&gt;Later on as the party was winding down, a quiet boy who had up till then been watching the other boys play chess wanted to play with me, and so I had a game with him. Unfortunately, although he knew the rules, sometimes he made an illegal move that I had to correct him on, and also he ended up giving away most of his pieces, which I could not help but eventually just plain take.&lt;/p&gt;
&lt;p&gt;This was my final game, and his parents were finally free to leave the party with him being happy to have played!&lt;/p&gt;
</content:encoded></item><item><title>Life lessons I learned from a lunch recess chess game at age seven</title><link>https://franklinchen.com/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/30/life-lessons-i-learned-from-a-lunch-recess-chess-game-at-age-seven/</guid><pubDate>Wed, 30 May 2012 07:38:00 GMT</pubDate><content:encoded>&lt;p&gt;import ChessGame from &apos;@components/embeds/ChessGame.astro&apos;;
import ChessPosition from &apos;@components/embeds/ChessPosition.astro&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-second-grade.jpg&quot; alt=&quot;Franklin Chen 2nd grade school photo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recently, I have had the opportunity to play chess casually with kids at parties. I could not help reflecting on my own childhood memories of playing chess. I feel that there was much I learned about life from the chess activities of my youth, whether casual or serious. This is the first of a planned series of posts about chess.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20250913212455/https://tluif.home.xs4all.nl/chescom/CC3.JPG&quot; alt=&quot;Chess Challenger III from 1977&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This post is about the first time I played with a chess computer and was surprised to find myself winning.&lt;/p&gt;
&lt;h2&gt;A little bit of my chess history&lt;/h2&gt;
&lt;p&gt;Supposedly I first learned chess at some time between the ages of two and three, accidentally picking it up while my father was learning the game along with grad student classmates of his. At the time chess was becoming extremely popular in the United States because of the &quot;Fischer boom&quot; resulting from &lt;a href=&quot;https://en.wikipedia.org/wiki/Bobby_Fischer&quot;&gt;Bobby Fischer&lt;/a&gt;&apos;s world championship match and victory against Boris Spassky. Since I don&apos;t remember anything from before age two and a half (I remember the months leading up to my celebrating my third birthday), I don&apos;t remember a time when I didn&apos;t know at least the basic rules of chess!&lt;/p&gt;
&lt;h2&gt;Kindergarten&lt;/h2&gt;
&lt;p&gt;When I was in Kindergarten, I came across some chess books targeted toward children and filled in some gaps (since my father actually had been confused about some of the rules, involving the details of castling and capturing &lt;em&gt;en passant&lt;/em&gt;). I played casually with my father, but nobody else, getting beaten every time (although in retrospect, I have doubts about whether we were playing completely legal games).&lt;/p&gt;
&lt;h2&gt;Second grade&lt;/h2&gt;
&lt;p&gt;By the second grade in elementary school, I was much improved because I had started going through chess books geared toward adults, checked out from the local public library. I had earlier spent some time in the school library going through all the basic chess books there.&lt;/p&gt;
&lt;h3&gt;Chess Challenger III&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20250913212455/https://tluif.home.xs4all.nl/chescom/CC3.JPG&quot; alt=&quot;Chess Challenger III from 1977&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One day at lunch recess, a lunch proctor who had heard that I played chess brought me her new &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://tluif.home.xs4all.nl/chescom/EngCc3.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://tluif.home.xs4all.nl/chescom/EngCc3.html&quot;&amp;gt;Chess Challenger III&amp;lt;/span&amp;gt; computer. I started playing a game with it (with me as White and the computer as Black). To my surprise, I was winning against this computer, which had fallen into a trap I had set! (Up until this point, I had only ever played chess with my father, and he had always won.)&lt;/p&gt;
&lt;p&gt;White to play and win:&lt;/p&gt;
&lt;p&gt;&amp;lt;ChessPosition fen=&quot;r1b1k2r/pp1pppbp/2n2np1/8/2BNP3/2N1B3/PqP1QPPP/R4RK1 w kq -&quot; caption=&quot;Critical position in game&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, the bell rang shortly after I had trapped Chess Challenger III&apos;s Queen and I excitedly told everyone I was beating the computer. The proctor just sniffed and dismissed my claim, practically calling me a liar. I never talked to her again in my life and never asked to play the computer again for a rematch.&lt;/p&gt;
&lt;p&gt;What I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chess computers are not perfect, and even a child might play better.&lt;/li&gt;
&lt;li&gt;Adults in school often misunderstand or disrespect students who do something unexpected.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;My game against Chess Challenger III&lt;/h3&gt;
&lt;p&gt;&amp;lt;ChessGame pgn=&quot;/chess/games/chess-challenger-iii.pgn&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I am guessing the computer was set at a default &quot;easy&quot; level; I am guessing that at its highest level (which unfortunately would have led to its playing too slowly in a recess setting), I may not have been able to beat it. I had never played with anyone other than my father by this age (I started playing with other people only at age ten, with some exceptions I&apos;ll discuss later), but I&apos;m guessing my ELO rating strength at age seven was probably no higher than 1200.&lt;/p&gt;
</content:encoded></item><item><title>Visiting the House of Musical Traditions: looking at instruments including Irish flutes</title><link>https://franklinchen.com/blog/2012/05/28/visiting-the-house-of-musical-traditions-looking-at-instruments-including-irish-flutes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/28/visiting-the-house-of-musical-traditions-looking-at-instruments-including-irish-flutes/</guid><pubDate>Mon, 28 May 2012 23:34:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/house-of-musical-traditions.jpg&quot; alt=&quot;House of Musical Traditions in Takoma Park, MD&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One thing Abby and I wanted to do before we left Washington DC was to visit the &lt;a href=&quot;https://web.archive.org/web/20260115080204/https://hmtrad.com/&quot;&gt;House of Musical Traditions&lt;/a&gt; in Takoma Park, MD. We wanted to check out all their musical instruments. Abby wanted to look at their mandolin section, while I wanted to look at Irish flutes. I&apos;ve been kind of thinking about getting an Irish flute since February when &lt;a href=&quot;/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/&quot;&gt;seeing again Gregory play his Irish flute at French dancing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We weren&apos;t planning to buy anything, but we had fun looking at a large variety of musical instruments, from mandolins and ukuleles to bongo drums and jaw harps.&lt;/p&gt;
&lt;h2&gt;Irish flutes&lt;/h2&gt;
&lt;p&gt;At the store, I looked at the &lt;a href=&quot;https://web.archive.org/web/20140219043555/http://www.hmtrad.com:80/catalog/winds/dixon.html&quot;&gt;Tony Dixon plastic flutes&lt;/a&gt; that I&apos;d read about before the trip to DC. Unfortunately, as I suspected, they were rather large for my hands. Also, the plastic flutes did not produce a very attractive sound.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.tonydixonmusic.co.uk/grafix/instruments/tb021.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.tonydixonmusic.co.uk/grafix/instruments/tb021.jpg&quot;&amp;gt;[image: Tony Dixon tuneable flute]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h2&gt;Casey Burns Folk Flute&lt;/h2&gt;
&lt;p&gt;I left the store knowing I would have to do more research on affordable keyless Irish flutes that might both fit in my hands and produce a decent sound. After doing some research online, I concluded that no plastic Irish flute was really going to be what I wanted. But there were rave reviews of the &lt;a href=&quot;https://www.caseyburnsflutes.com/ff.php&quot;&gt;Casey Burns Folk Flute&lt;/a&gt; as a starter Irish flute, because of its quality and its unbeatable price.&lt;/p&gt;
&lt;p&gt;Furthermore, I noticed that there was option to order a special &lt;a href=&quot;https://www.caseyburnsflutes.com/ergo.php&quot;&gt;ergonomic version for small hands&lt;/a&gt;, which is precisely what I seem to need, given my &lt;a href=&quot;/blog/2012/05/18/got-my-new-and-more-ergonomic-flute/&quot;&gt;very real need for well-fitting instruments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After we return to Pittsburgh, Abby and I will discuss whether my music goals and plans justify buying yet another musical instrument.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I would like to thank the people at the House of Musical Traditions for letting us look at their large collection of musical instruments and try some out. Meanwhile, I have learned that if I do get an Irish flute, I should start out with the nice wooden Casey Burns Folk Flute.&lt;/p&gt;
</content:encoded></item><item><title>Got my new and more ergonomic flute</title><link>https://franklinchen.com/blog/2012/05/18/got-my-new-and-more-ergonomic-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/18/got-my-new-and-more-ergonomic-flute/</guid><pubDate>Fri, 18 May 2012 00:29:00 GMT</pubDate><content:encoded>&lt;p&gt;Three months ago, I was having &lt;a href=&quot;/blog/2012/02/27/flute-practice-dealing-with-burnout-and-injury/&quot;&gt;problems&lt;/a&gt; with my left hand primarily because of my short fingers not being able to comfortably use my inline G flute. I knew that I had to go to an offset G flute. Well, now I have one!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/azumi-3000-flute/azumi-for-the-growing-flutist.jpg&quot; alt=&quot;Azumi 3000 flute packaging&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I finally got my new &lt;a href=&quot;https://www.azumiflutes.com/&quot;&gt;Azumi flute&lt;/a&gt;, the &lt;a href=&quot;https://www.azumiflutes.com/#/2000-3000-Models&quot;&gt;3000 model&lt;/a&gt; with offset G and split E, as recommended on &lt;a href=&quot;https://www.jennifercluff.com/flutequip.htm&quot;&gt;Jen Cluff&apos;s wonderful flute blog&lt;/a&gt; as a good &quot;intermediate&quot; flute. As a &quot;growing flutist&quot; who has practiced seriously &lt;a href=&quot;/categories/flute/&quot;&gt;for only a few months&lt;/a&gt; in my life, I hope this new flute will serve me well for years to come, as I progress beyond my current &quot;advanced beginner&quot; level (see Postscript below).&lt;/p&gt;
&lt;h2&gt;Comparison with my old Yamaha YFL-381H flute&lt;/h2&gt;
&lt;p&gt;In the images below, the flute on top is my new Azumi flute, and the flute on bottom is my old Yamaha flute.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/azumi-3000-flute/comparison-with-yamaha-YFL-381H.jpg&quot; alt=&quot;Comparing Yamaha YFL-381H with Azumi 3000 flute&quot; /&gt;
&lt;img src=&quot;../../assets/images/azumi-3000-flute/comparison-with-yamaha-YFL-381H-closeup.jpg&quot; alt=&quot;Comparing Yamaha YFL-381H with Azumi 3000 flute, closeup&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The new flute is very different from my old Yamaha flute. It&apos;s clearly of higher quality (judging from my comparisons when playing both low and high notes), and it fits my left hand much better, but I&apos;m adjusting to the different design, especially the headjoint. The longer length of the new flute does not seem to give me trouble.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;While doing some house cleaning, I found a rudimentary flute workbook called the &lt;a href=&quot;https://www.amazon.com/Piccolo-Speller-Elementary-Private-Method/dp/B003DKF662&quot;&gt;&quot;Flute and Piccolo Note Speller&quot; by Fred Weber&lt;/a&gt;. I only worked through eight of the thirty-two pages of this book.&lt;/p&gt;
&lt;p&gt;As I have mentioned before, before I took up flute again last winter, the last time I played the flute was age 10-13, and &lt;a href=&quot;/blog/2012/01/08/finding-and-using-my-childhood-flute-books/&quot;&gt;not at all seriously&lt;/a&gt;. Page eight of the workbook I found says everything there needs to be said about my level of proficiency and seriousness when I quit at age 13. I didn&apos;t even finish part two of the worksheet!&lt;/p&gt;
&lt;p&gt;I did this lesson a few months before turning 13:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/note-speller.jpg&quot; alt=&quot;Lesson 5 of Fred Weber&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m very happy to have started study of flute anew, with an adult&apos;s motivation and discipline. In a few months, I have progressed far, far beyond my aimless piddling around for three years in elementary school and middle school. We&apos;ll see how well I continue to improve after another ten or fifteen years of practice!&lt;/p&gt;
</content:encoded></item><item><title>Playing French music for the first time, and dancing blues for the first time</title><link>https://franklinchen.com/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/</guid><pubDate>Mon, 14 May 2012 23:44:00 GMT</pubDate><content:encoded>&lt;p&gt;Although I have stopped writing about it, Abby and I have continued to do &lt;a href=&quot;/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/&quot;&gt;French dancing here in Pittsburgh&lt;/a&gt;. Tonight, for the first time, we finally attended the regular Monday night French and blues dance hosted by Lisa.&lt;/p&gt;
&lt;p&gt;It was quite an intense evening for me, both playing French music &lt;em&gt;for the first time&lt;/em&gt; and dancing blues &lt;em&gt;for the first time&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;French and blues social dance&lt;/h2&gt;
&lt;p&gt;French &lt;em&gt;and&lt;/em&gt; blues night?! What&apos;s the connection?&lt;/p&gt;
&lt;p&gt;Well, the story is simply that Lisa and Gregory (and some other dancers) enjoy both French music/dance and blues music/dance, so both types of music and dance are combined into one evening of dancing. Of course, there are people who show up who are only interested in the French or only interested in the blues. The iTunes playlists have a mix of both.&lt;/p&gt;
&lt;h2&gt;Why I wanted to go&lt;/h2&gt;
&lt;p&gt;I&apos;d never done blues dancing before, and was curious to see it, and maybe learn some and try it with Abby, who is also completely unfamiliar with it.&lt;/p&gt;
&lt;p&gt;Also: since Gregory is going back back to Europe soon, I wanted to have an opportunity to see him again before he left, and finally play French music with him. I&apos;d never played French music before. When I told him I wanted to come and play with him for the first time, he helpfully sent me a link to his compilation of French tunes, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://drawthedots.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://drawthedots.com/&quot;&amp;gt;&quot;Campanule&quot;&amp;lt;/span&amp;gt;. I feverishly tried to learn some of them before showing up. That was tricky because I wanted to play the music on my Baroque flute, an instrument that I&apos;m &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;still quite a beginner at&lt;/a&gt;. But I didn&apos;t want to use the modern flute for this music; it doesn&apos;t produce the kind of sound I like for traditional music.&lt;/p&gt;
&lt;h2&gt;Playing music with Gregory&lt;/h2&gt;
&lt;p&gt;Gregory and I spent maybe ten minutes playing some of his compiled music sort of together. This was very hard for me for a number of reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;m still pretty bad at Baroque flute, having trouble with fingerings and intonation.&lt;/li&gt;
&lt;li&gt;I don&apos;t know the tunes very well, and was trying to find them in my printouts of his scores.&lt;/li&gt;
&lt;li&gt;He doesn&apos;t even look at the scores, but just plays from memory.&lt;/li&gt;
&lt;li&gt;He doesn&apos;t play exactly what was in the scores anyway, but improvises at will.&lt;/li&gt;
&lt;li&gt;We were not coordinated, because he repeated sections or measures at will, and we didn&apos;t really take turns or something.&lt;/li&gt;
&lt;li&gt;I didn&apos;t know how to come up with a secondary line or accompaniment on the fly to blend in with Gregory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As dancers started arriving and Gregory kept on playing, I stopped my feeble attempts at contributing.&lt;/p&gt;
&lt;p&gt;In a way, my attempt to get into playing French music tonight was a &lt;em&gt;failure&lt;/em&gt;, but on the other hand, I actually learned a lot from observing Gregory, and knew what I had to do to be able to function as an actual musician for dancing. I had to memorize tunes, learn them by ear, get myself off the tyranny of printed scores, watch dancers, etc.&lt;/p&gt;
&lt;h2&gt;Dancing blues&lt;/h2&gt;
&lt;p&gt;At some point, the French dance part of the evening started to end, as the demand for blues rose.&lt;/p&gt;
&lt;p&gt;There wasn&apos;t going to be any blues dance instruction, so Abby and I had a choice. We could just watch, or we could leave. We did do some watching, but I decided I wanted to dance, and so I just started making stuff up. I got the impression that people were basically just leading and following through improvisation similar to what I&apos;ve experienced before when I did some Argentine tango (and a bit of Lindy hop and West Coast swing). I rather enjoy that kind of improvisational dancing, but have had little opportunity to participate in it because Abby is not used to it.&lt;/p&gt;
&lt;p&gt;We did do a bit of blues dancing tonight, but it&apos;s not clear to me whether we will continue. I&apos;m very interested in exploring blues dance further, but Abby seems less interested. People are interested in different activities; that&apos;s just a fact of life.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This evening highlighted the contrast between my lack of ability to function as a practical musician for dancers and my comfort with improvisation as a dancer. I plan to work toward merging these two worlds.&lt;/p&gt;
&lt;p&gt;I feel sad that Gregory is leaving us, because I wanted to start working with him on French music, but his example has inspired me to want to continue playing French music after he is gone.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-07-02)&lt;/h2&gt;
&lt;p&gt;And less than two months later, &lt;a href=&quot;/blog/2012/07/02/my-first-french-music-jam-anxious-but-excited/&quot;&gt;I joined Lisa and others in playing French music together, inspired by Gregory&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>International Barefoot Running Day 2012: my second year of celebration and my first barefoot trail run</title><link>https://franklinchen.com/blog/2012/05/06/international-barefoot-running-day-2012-my-second-year-of-celebration-and-my-first-barefoot-trail-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/05/06/international-barefoot-running-day-2012-my-second-year-of-celebration-and-my-first-barefoot-trail-run/</guid><pubDate>Sun, 06 May 2012 20:11:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/international-barefoot-running-day-2012/ibrdposter_lg.jpg&quot; alt=&quot;Official poster of International Barefoot Running Day 2012&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One year ago (May 1, 2011), I celebrated the first annual &lt;a href=&quot;https://www.thebarefootrunners.org/pages/IBRD/&quot;&gt;International Barefoot Running Day&lt;/a&gt; by running 0.6 mile on the streets of my neighborhood. That was the very first time in my life I was &quot;brave&quot; enough to &lt;a href=&quot;/categories/barefoot-running/&quot;&gt;run barefoot&lt;/a&gt; outside (other than one failed attempt I discuss below).&lt;/p&gt;
&lt;p&gt;Today, I pushed the envelope by running a full 2 miles barefoot, including a 0.5 mile trail loop on Frick Park. &lt;strong&gt;This was my first time ever running barefoot on the trails.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/international-barefoot-running-day-2012/barefoot.jpg&quot; alt=&quot;My two feet&quot; /&gt;
&lt;img src=&quot;../../assets/images/international-barefoot-running-day-2012/barefoot-soles.jpg&quot; alt=&quot;Soles of my two feet after barefoot run&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s the story of why I got into barefoot running, and what progress I&apos;ve made in the past year.&lt;/p&gt;
&lt;h2&gt;My first barefoot run outside&lt;/h2&gt;
&lt;p&gt;I have to start with my first barefoot run outside. This happened in summer 2002, on the track at Carnegie Mellon University. I did only one lap. I did this as an experiment as I was learning from trial and error that running with lighter shoes seemed to feel better for me, and decreased injuries to my knees and shins, in particular.&lt;/p&gt;
&lt;p&gt;You have to understand, this happened a decade ago, well before minimalist and barefoot running became much more widespread, through &lt;a href=&quot;https://www.chrismcdougall.com/&quot;&gt;Chris McDougall&lt;/a&gt;&apos;s bestselling book, &lt;em&gt;Born to Run&lt;/em&gt;, that came out in 2009 (I read the book in May 2009 and highly recommend it to &lt;strong&gt;all&lt;/strong&gt; runners!). At the time, my experiments as a runner had led me in the following progression of shoes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;heavy &quot;motion control&quot; shoes (because I overpronated so much initially as an overweight non-runner)&lt;/li&gt;
&lt;li&gt;lighter &quot;neutral&quot; shoes&lt;/li&gt;
&lt;li&gt;&quot;lightweight trainer&quot; shoes&lt;/li&gt;
&lt;li&gt;racing flats&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea of really running barefoot never occurred to me, but I wanted to experiment with simply doing a bit of controlled training (on the predictable surface of a track) barefoot.&lt;/p&gt;
&lt;p&gt;After a few attempts, I gave up. I suffered from&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;blistered feet&lt;/li&gt;
&lt;li&gt;very sore Achilles tendons and calves&lt;/li&gt;
&lt;li&gt;shin splits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So for almost a decade, I simply never tried running barefoot again, even on a track.&lt;/p&gt;
&lt;h2&gt;Transition to Vibram FiveFingers shoes&lt;/h2&gt;
&lt;p&gt;I have raved repeatedly on this blog about my use of &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers&lt;/a&gt; minimalist shoes. They are my regular shoes now (when not in winter) for running (road and trail), street walking, trail hiking. They came to my attention through a friend in 2009, and in conjunction with my reading McDougall&apos;s book, I bought my first pair of FiveFingers shoes in fall of 2009.&lt;/p&gt;
&lt;p&gt;It took me two years of occasional use to really build up distance with the minimalist shoes and change my form in many ways such that I no longer experience any undue pain on stress on my muscles or joints. By 2011, I was ready to use them as my everyday footwear.&lt;/p&gt;
&lt;h2&gt;The next step: barefoot&lt;/h2&gt;
&lt;p&gt;However, the idea of barefoot running kept on haunting me. The difference between running in even minimalist shoes and barefoot is vast. I experienced a lot of fears:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fear of possible injury to the skin from rocks, glass, other objects&lt;/li&gt;
&lt;li&gt;fear possible hygiene issues (what am I stepping on?)&lt;/li&gt;
&lt;li&gt;fear of sheer skin sensitivity and pain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the past year, since my tiny experiment on May 1, 2011, I have been doing small amounts of outdoors barefoot walking and running, mostly in the context of walking or running home 2 miles from work, and going barefoot at the office (I have always gone barefoot indoors at home, since I grew up under the Asian custom of leaving shoes at the door). Over time, I have addressed my fears to some extent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I have learned to visually scan the surface I am running on, to avoid obvious hazards&lt;/li&gt;
&lt;li&gt;I have learned to accept that heck, will I really get hurt from stepping on a surface that might have some tiny amount (which I can&apos;t even see) of dried spit, insect parts, or dog poo?&lt;/li&gt;
&lt;li&gt;I have become more efficient and less fearful of the sensations of landing on patches of rough concrete, twigs, debris, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have grown to be fairly comfortable walking or running on concrete and asphalt, where the surfaces are mostly predictable.&lt;/p&gt;
&lt;h2&gt;The final frontier: barefoot trail running&lt;/h2&gt;
&lt;p&gt;But my experiments last year of even walking off the road and grass onto the trails of Frick Park had me whimpering after a few seconds, feeling totally unready to seriously walk or run on the trails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Until today.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In honor of the second annual &lt;a href=&quot;https://www.thebarefootrunners.org/pages/IBRD/&quot;&gt;International Barefoot Running Day&lt;/a&gt;, I went for a 2 mile barefoot run today that included a 0.5 mile trail loop. The soles of my feet suffered a bit, but I actually managed to do this run without screaming or giving up. I came home with some hot spots on my soles, but nothing much worse than when I run 2 miles just on concrete and asphalt.&lt;/p&gt;
&lt;p&gt;A year ago, I would not have believed that I would run a full half mile barefoot on the trails. But that was a year ago. A year ago, I would not have believed that I would be doing today many of the things that I have only begun doing last year (such as writing my own blog, playing music, programming in JavaScript). Things change. And all that is required is to take one small step at a time.&lt;/p&gt;
&lt;h2&gt;What next?&lt;/h2&gt;
&lt;p&gt;I still cannot imagine running barefoot for more than half a mile, or on much more difficult terrain than the one trail section in Frick Park. We&apos;ll see what I have to report next year for the third International Barefoot Running Day!&lt;/p&gt;
</content:encoded></item><item><title>Attending my first CMU Baroque Ensemble concert: enjoying Bach&apos;s Brandenburg 2</title><link>https://franklinchen.com/blog/2012/04/29/attending-my-first-cmu-baroque-ensemble-concert/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/29/attending-my-first-cmu-baroque-ensemble-concert/</guid><pubDate>Sun, 29 Apr 2012 23:44:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;I attended a free concert of the CMU Baroque Ensemble for the very first time!&lt;/p&gt;
&lt;p&gt;The CMU Baroque Ensemble under &lt;a href=&quot;https://www.stephenschultz.net/&quot;&gt;Stephen Schultz&lt;/a&gt; has been around for over a decade, &lt;a href=&quot;https://www.stephenschultz.net/teaching.html&quot;&gt;starting in 2002&lt;/a&gt;, but I had never attended one of their concerts, because basically, until I started playing recorder last year, I had very little interest in Baroque music.&lt;/p&gt;
&lt;p&gt;But now I&apos;m really immersing myself in Baroque music, so I decided to check out the student ensemble. Also, I&apos;d never seen Stephen Schultz in action before outside the CMU lecture hall (I took his &quot;Survey of Western Musical History&quot; in 2006) and his CD recordings of Baroque flute music.&lt;/p&gt;
&lt;p&gt;The students played modern instruments, but Schultz clearly aimed to evoke a crisp, Baroque style of play from the ensemble. He is an enthusiastic and clear conductor and it is enjoyable watching him direct this music he clearly loves.&lt;/p&gt;
&lt;h2&gt;Bach&apos;s Brandenburg 2&lt;/h2&gt;
&lt;p&gt;Various pieces were performed in this concert, but the highlight for me was Bach&apos;s Brandenburg concerto no. 2, which I have recently come to love. I had ignored the Brandenburg concertos for much of my life, but when I started playing recorder last year, I found that one of the method books I used, a two-volume method by &lt;a href=&quot;https://www.aswltd.com/adultmet.htm#begin&quot;&gt;Mario Duschenes&lt;/a&gt;, ends with challenging solo recorder parts for the Brandenburg concerto no. 2 and no. 4, and I aspired to be able to play these, and listened to some recordings I found of them, and truly fell in love with the music! (Note: the CMU Baroque Ensemble did not use recorder, but flute, in the Brandenburg 2.)&lt;/p&gt;
&lt;p&gt;It was thrilling for me to watch the Brandenburg 2 performed live, because of the prominent &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://abel.hive.no/trumpet/bach/brandenburg/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://abel.hive.no/trumpet/bach/brandenburg/&quot;&amp;gt;high trumpet part&amp;lt;/span&amp;gt;. I&apos;d never seen this in action before.&lt;/p&gt;
&lt;p&gt;By the way, here&apos;s a performance of the first movement of the Brandenburg 2, on historical instruments (rather than the modern instruments played in the CMU Baroque Ensemble concert). Check out the recorder and trumpet!&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;EC1E4_imS0A&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed the concert and will probably continue to attend more by the CMU Baroque Ensemble, to continue my Baroque &quot;education&quot;. It is, of course, not a professional ensemble, but it is great to see CMU students dedicated to performing Baroque music.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-11-25)&lt;/h3&gt;
&lt;p&gt;The fine trumpet player in this concert was &lt;a href=&quot;/blog/2013/11/25/a-fine-trumpet-recital-by-erin-yanacek&quot;&gt;Erin Yanacek&lt;/a&gt;, whom I&apos;d later coincidentally encounter through her writings and from meeting her by accident.&lt;/p&gt;
</content:encoded></item><item><title>A pretty Rachel Carson Trail Challenge goal training hike (8.9 miles)</title><link>https://franklinchen.com/blog/2012/04/29/a-pretty-rachel-carson-trail-challenge-goal-training-hike/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/29/a-pretty-rachel-carson-trail-challenge-goal-training-hike/</guid><pubDate>Sun, 29 Apr 2012 23:22:00 GMT</pubDate><content:encoded>&lt;p&gt;Every spring, I like to do one or two of the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc12/goaltraining&quot;&gt;Rachel Carson Trail Challenge goal training hikes&lt;/a&gt; for fun even though I no longer do the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; because three times was enough for me. Since this year&apos;s Challenge proceeds east to west, all of the goal training hikes this year also go east to west.&lt;/p&gt;
&lt;p&gt;The description of today&apos;s hike, the second of eight that increase in length till the longest one in June:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sunday, April 29, 2012&lt;/li&gt;
&lt;li&gt;Leader: Brian Droz 412-848-4810&lt;/li&gt;
&lt;li&gt;8.9 miles&lt;/li&gt;
&lt;li&gt;Elevation change: 4925 ft.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&quot;On this hike we start at the Bull Creek Road checkpoint location in Tarentum and quickly encounter a steep uphill climb followed by even steeper ups and downs - including Crawford Run hill and Murray Hill. We pass through Agan Park and end in Springdale. Meet at the Springdale Veterans Association Hall parking lot in Springdale. Directions: Take Route 28 to Exit #11 (Harmarville). After exiting onto Route 910 head towards Harmarville, turn left at the second traffic light onto Freeport Road and travel about 4 miles through 9 more traffic lights. The Springdale Veterans Association Hall entrance will be on your left just past the last light. Park on the far side of the lot.&quot;&lt;/p&gt;
&lt;h2&gt;Meeting up&lt;/h2&gt;
&lt;p&gt;John and I drove up to the meeting place in Springdale. It was a cold morning!&lt;/p&gt;
&lt;p&gt;I&apos;m wearing my Vibram FiveFingers KSO Trek shoes as I have been doing for some time now for all my hiking.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/franklin-cold.jpg&quot; alt=&quot;Franklin ready to hike&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Note: since Abby was elsewhere this morning using our camera, and my brand new smartphone&apos;s camera had died and I was waiting for a replacement phone, John and I used his camera to take photos during the hike.)&lt;/p&gt;
&lt;p&gt;Note the tower that will serve as the landmark when hiking back here:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/landmark.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Hike&lt;/h2&gt;
&lt;p&gt;Then we carpooled to the Bull Creek Road checkpoint in Tarentum further north and east.&lt;/p&gt;
&lt;p&gt;The start of the hike from this checkpoint is by Route 28:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/bull-creek-start.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I let John go ahead so that I could stay back and take photos without holding up anyone behind me:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/john-start.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now John has his camera back and took a photo of me going up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/franklin-going-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Closeup of some garlic mustard:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/garlic-mustard-flowering.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally in the woods:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/in-the-woods.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A horse!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/horse.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A phone tower; these things prove to be useful landmarks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/phone-tower.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A descent along a power line:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/descent.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s the season for May apples:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/may-apple.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going down and up, which is what the Rachel Carson Trail in this section is about:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/go-down-go-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Allegheny River is visible:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/view-of-allegeny-river.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/allegheny-river.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Emerging onto a road section of the this urban trail:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/emerging-to-road.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Stream crossing:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/stream-crossing.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/rachel-carson-trail-sign.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking back after finishing my very steep descent:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/very-steep-descent.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Trillium:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/trillium.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ah, the power line experience:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/following-power-lines.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s two hours since we started hiking, and getting warmer, so my shell and hat and gloves are off. I&apos;m wearing my &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge/rctc06&quot;&gt;2006 Rachel Carson Trail Challenge&lt;/a&gt; T-shirt:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/franklin-in-rachel-carson-trail-challenge-2006-shirt.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Down and up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/big-down-and-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sometimes I get things stuck between my big toe and my second toe:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/stuck-between-toes-of-kso-trek.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the less pleasant aspects of the Rachel Carson Trail is the road sections, where there is no sidewalk and the speed limit is 40 mph or higher!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/scary-road-walking.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now we&apos;re really by the Allegheny River:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/allegheny-river-1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/allegheny-river-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Red flowers (sorry, I don&apos;t know much about flowers and do not know what they are):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/flower.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The home stretch! See the tower that I mentioned as a landmark before the hike?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/home-stretch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Back to the landmark:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-challenge-goal-training-2/back-to-landmark.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The 8.9 hike took about 3:20.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed doing my first Rachel Carson Trail hike of the year. Earlier in the year is better because the hikes are shorter and the weather is cooler.&lt;/p&gt;
&lt;p&gt;Thanks to Brian Droz for leading this hike!&lt;/p&gt;
</content:encoded></item><item><title>Baroque jam session at CMU: first time my parents ever watched me perform music</title><link>https://franklinchen.com/blog/2012/04/27/baroque-jam-session-at-cmu/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/27/baroque-jam-session-at-cmu/</guid><pubDate>Fri, 27 Apr 2012 23:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Three days ago, I suddenly saw this poster on a bulletin board in the hallway at work at CMU:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/baroque-jam-session/poster.jpg&quot; alt=&quot;CMU poster for Baroque jam session&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
A night of music by some of these cool dead dudes.&lt;/p&gt;
&lt;p&gt;A chance to hear CMU School of Music majors do their thing, 18th Century style.&lt;/p&gt;
&lt;p&gt;An opportunity to bring your own instrument &amp;amp; play along.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I thought to myself, I have to go to this event, even at short notice!&lt;/p&gt;
&lt;p&gt;I also experienced terror at the thought.&lt;/p&gt;
&lt;p&gt;But I went, and survived. It was a &lt;em&gt;life-changing&lt;/em&gt; experience for me.&lt;/p&gt;
&lt;h2&gt;Contact&lt;/h2&gt;
&lt;p&gt;I noticed that the contact person on the poster, Maria, was someone I had just recently seen a couple of days ago, at the &lt;a href=&quot;/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/&quot;&gt;Pittsburgh Renaissance and Baroque jam session by Chris Norman and David Greenberg&lt;/a&gt;. She was the Baroque oboist, student at CMU, who had been something of a center of attention during the session, because of her having a Baroque-tuned instrument rather than a modern-tuned one.&lt;/p&gt;
&lt;p&gt;So I wrote Maria asking her if I could come play, and she said OK. She said the format was not a real jam session, but that it would be people bring stuff to play.&lt;/p&gt;
&lt;h2&gt;Logistics&lt;/h2&gt;
&lt;p&gt;There was a complication: my parents were scheduled to drive in to visit me and Abby and stay for tonight. This meant that we had to clean up at home in preparation for their visit, make dinner, etc. If I was going to this Baroque music jam session, then it was going to be a hectic day. I figured that we could all attend together, and then my parents would actually finally see me play music in public, &lt;em&gt;for the first time in my life&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Seriously: back when I was in elementary school and middle school and high school and piddled around without enthusiasm on the flute, they were similarly unenthusiastic and didn&apos;t go around coming to my band concerts and applauding me or whatever. I don&apos;t actually remember their presence at all; maybe my mother dropped me off or something and came back, when I needed any aid at all. I remember thinking the detachment odd because I had classmates whose parents hovered over their kids&apos; music and sports involvement.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;p&gt;I had to figure out what music to play. I couldn&apos;t count necessarily on any accompanists. I quickly decided to work on something for solo recorder, and happened to recently have discovered a book of pieces for solo soprano recorder. I chose one set of theme and variations, &quot;Doen Daphne D&apos;over Schoone Maeght&quot; from Jacob Van Eyck&apos;s &quot;Der Fluyten Lust-Hof&quot;, to work on. This music is earlier than Baroque, strictly, but hey, I thought maybe it would be good to provide contrast.&lt;/p&gt;
&lt;p&gt;I also wanted to play some Baroque music, so my attention immediately turned to Henry Holcombe&apos;s Air in E minor that I had &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;discovered in a volume of &quot;English Airs and Dances&quot; half a year ago&lt;/a&gt; and immediately fallen in love with. I was not prepared at all to play this on a Baroque flute, so I decided to risk embarrassment by playing on a modern flute instead.&lt;/p&gt;
&lt;h2&gt;The event&lt;/h2&gt;
&lt;p&gt;So Abby and I took my parents to the Skibo Coffeehouse at CMU where the event was happening. A lot of familiar faces were there; I&apos;ve been going to CMU student music recitals lately, primarily of flute students, and therefore have been seeing some of the same faces of graduating students and their friends. So I was feeling very intimidated because these students are &lt;em&gt;good&lt;/em&gt;. I had seen and heard them doing their thing. I wondered whether I had made a huge mistake by coming to play. I checked in with Maria, then decided to sit around and watch for a while.&lt;/p&gt;
&lt;p&gt;It turned out that a lot of what happened was random sight reading, and also some people playing an instrument that wasn&apos;t their primary instrument. In any case, it was all pretty casual and in fun, and a lot of mistakes were being made, so I felt much better about the prospect of eventually taking my turn.&lt;/p&gt;
&lt;p&gt;There were also people who had come just watch, either because they had seen the poster earlier or because they happened to be in Skibo for a meal and decided to hang out.&lt;/p&gt;
&lt;p&gt;My parents seemed to be enjoying their evening of entertainment. I explained to them that it wasn&apos;t a concert, that these students were just having fun sight reading. They were impressed with the sight reading skill, and the voices of the young men and women who sang.&lt;/p&gt;
&lt;h3&gt;My turn&lt;/h3&gt;
&lt;p&gt;It started getting late, and Abby was very tired. She left to take a little walk to get some air.&lt;/p&gt;
&lt;p&gt;At some point, Maria asked me whether I wanted to play something. I felt I had to go now, so I couldn&apos;t wait for Abby to come back. I offered to play the Holcombe piece for flute, and asked if someone could play continuo, since I had a score with the figured bass. A cellist stepped up. But as I got on stage and prepared to play, we suddenly realized that I was playing a modern flute at modern pitch, while the cello was at Baroque tuning. I felt so embarrassed. Someone I had seen in recitals playing clarinet volunteered to play continuo on the digital keyboard (which of course could be set for any tuning), so we proceeded. I was so nervous that I somehow botched up some passages, but I tried to play what I felt, even if my technique and mental condition were not entirely up to it. And so we did it, including my on-the-fly ornamentation during the repeats.&lt;/p&gt;
&lt;p&gt;Apparently Abby had returned to see that I was in the middle of performing, and she was upset to have missed me. I told her that it was OK, not a big deal. There would be plenty of future opportunities for her to see me perform.&lt;/p&gt;
&lt;p&gt;We listened to some more student performances, then it really was getting late, and my parents wanted to leave, because they had to drive next morning to my sister in DC. So I announced that I had one more piece to perform and then had to go.&lt;/p&gt;
&lt;p&gt;I played the solo soprano recorder piece. I think the audience liked that, because it was so different from what had gone on all evening. I didn&apos;t play it perfectly, but I felt much more relaxed and capable on recorder than on flute, and I enjoyed hearing my ringing sound in the space of Skibo, with its very high ceilings. I thought I did pretty well.&lt;/p&gt;
&lt;p&gt;Then I packed up and we went home.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This was not only really my first time performing alone (in the recorder piece) in public, but also the first time my parents had seen me perform music, and the first time Abby had seen me do a solo. So it was a very special evening for me. I felt like, if I could accept myself playing among these much better musicians, despite my being nowhere as good (yet), I was going to continue to seek out all opportunities to share the music I love and feel.&lt;/p&gt;
&lt;p&gt;I don&apos;t know how to explain it, but working up the courage to participate in this Baroque jam session, and actually carrying through (despite almost chickening out by waiting until the evening was almost over), meant a lot to me.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-07-28)&lt;/h2&gt;
&lt;p&gt;Three months later, I ended up playing the Van Eyck piece in the &lt;a href=&quot;/blog/2012/07/28/my-first-appearance-on-a-music-recital-program/&quot;&gt;summer recital of the Pittsburgh recorder group&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-09-08)&lt;/h2&gt;
&lt;p&gt;It took me four months from this Baroque jam session before I performed Holcombe&apos;s Air in E minor again anywhere, and &lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;that time I finally played it on a Baroque flute&lt;/a&gt; rather than a modern flute!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-11-01)&lt;/h2&gt;
&lt;p&gt;My parents were visiting me and Abby yesterday for the first time since this Baroque jam six months ago. Yes, they were stopping by for the night to break up the long drive to visit my sister in DC again to see their &lt;a href=&quot;/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/&quot;&gt;baby grandson&lt;/a&gt; again and help out with care again for two weeks.&lt;/p&gt;
&lt;p&gt;I did some flute playing for them last night (on Irish flute, modern flute, and Baroque flute) and they seemed to enjoy the diversion. They still remembered how totally nervous I had been six months ago at the Baroque jam session and have been supportive of my musical activities of the past year. I am very grateful for that.&lt;/p&gt;
</content:encoded></item><item><title>My first time in a public music jam: intense fun with Chris Norman and David Greenberg</title><link>https://franklinchen.com/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/21/my-first-time-in-a-public-music-jam-intense-fun-with-chris-norman-and-david-greenberg/</guid><pubDate>Sat, 21 Apr 2012 13:44:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/544714_10150682065771513_55075526512_9775036_876594193_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/544714_10150682065771513_55075526512_9775036_876594193_n.jpg&quot;&amp;gt;[image: David Greenberg and Chris Norman and the rest of us]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Friday evening, Abby and I packed up various musical instruments of ours, and attended an event that I had been eagerly awaiting for over three weeks since I first found out about it from Annie of the local &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh recorder gang&lt;/a&gt;: a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.rbsp.org/Jam%20Session%20Flyer.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.rbsp.org/Jam%20Session%20Flyer.pdf&quot;&amp;gt;jam session open to the public&amp;lt;/span&amp;gt; being offered by &lt;a href=&quot;https://chrisnorman.com/&quot;&gt;Chris Norman&lt;/a&gt;, flutist, and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.davidgreenberg.ca/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.davidgreenberg.ca/&quot;&amp;gt;David Greenberg&amp;lt;/span&amp;gt;, violinist the day before &lt;a href=&quot;https://web.archive.org/web/20120506134552/http://www.rbsp.org:80/11-12c6.aspx&quot;&gt;their concert&lt;/a&gt; the next evening to close the current season of the &lt;a href=&quot;https://www.rbsp.org/&quot;&gt;Renaissance and Baroque of Pittsburgh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was so excited by this opportunity to jam with such esteemed musicians. Norman and Greenberg specialize in playing Irish, Scottish, Cape Breton and Baroque music. I&apos;ve come to love playing the rhythmic, danceable music of the old days.&lt;/p&gt;
&lt;p&gt;I learned a lot from the experience, and would like to share what I learned.&lt;/p&gt;
&lt;h2&gt;Some photos of the event&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.facebook.com/pages/Pittsburgh-Renaissance-and-Baroque/55075526512&quot;&gt;Facebook page of the Pittsburgh Renaissance and Baroque&lt;/a&gt; has a bunch of &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.10150682065546513.394216.55075526512&amp;amp;type=3&quot;&gt;photos of the event&lt;/a&gt;. I&apos;ve used a couple of these here.&lt;/p&gt;
&lt;h2&gt;Preparation&lt;/h2&gt;
&lt;h3&gt;My instruments&lt;/h3&gt;
&lt;p&gt;I have been spending most of my daily music practice all year working on the modern &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt;; I have not reported on my progress in over a month because I&apos;ve been too busy &lt;em&gt;doing&lt;/em&gt; rather than &lt;em&gt;writing&lt;/em&gt;, but will catch up with the writing sometime.&lt;/p&gt;
&lt;p&gt;But for this jam session, I had decided very quickly that I was &lt;em&gt;not&lt;/em&gt; going to be bringing my modern flute to play, because I do prefer to play older music on other instruments; I planned to bring the following instruments instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my &lt;a href=&quot;/categories/tin-whistle/&quot;&gt;tin whistle&lt;/a&gt;, which I bought the week of St. Patrick&apos;s Day in March (for a party I haven&apos;t written about yet but which radically changed my life)&lt;/li&gt;
&lt;li&gt;an assortment of &lt;a href=&quot;/categories/recorder/&quot;&gt;recorders&lt;/a&gt;: I decided to just bring my soprano and alto&lt;/li&gt;
&lt;li&gt;my &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Therefore, interspersed with my continuing work on the modern flute, I have also done some maintenance practice of tin whistle and recorders. The most difficult challenge was trying to get serious about Baroque flute: the one-keyed flute is &lt;a href=&quot;https://web.archive.org/web/20250816230239/http://www.oldflutes.com/charts/onekey/index.htm&quot;&gt;very, very, very tricky to play in tune&lt;/a&gt;. Sometimes I wonder whether it&apos;s worth the bother. But I tend to be inspired by quirky challenges whose benefit I don&apos;t fully understand immediately.&lt;/p&gt;
&lt;p&gt;Ideally, I would own an &lt;a href=&quot;https://www.caseyburnsflutes.com/cat_d.php&quot;&gt;Irish flute&lt;/a&gt;, preferably with a number of keys to aid with intonation and fingering, but given that I don&apos;t currently intend to specialize in Irish music, and am still working with the tin whistle anyway, I cannot at all justify buying an Irish flute at this time. So I&apos;ve been working on using the related Baroque flute instead, for traditional Irish or Scottish music.&lt;/p&gt;
&lt;h3&gt;Abby&apos;s instruments&lt;/h3&gt;
&lt;p&gt;Abby started learning mandolin just this year, joining the &lt;a href=&quot;https://www.pittsburghmandolinsociety.org/&quot;&gt;Pittsburgh Mandolin Orchestra&lt;/a&gt;, so I was excited that she decided early on to bring it to the jam session. (And I look forward to seeing her play for the first time in the orchestra&apos;s concert on Mother&apos;s Day coming up in three weeks!)&lt;/p&gt;
&lt;p&gt;She also brought a frame drum.&lt;/p&gt;
&lt;h2&gt;The event!&lt;/h2&gt;
&lt;h3&gt;Arrival&lt;/h3&gt;
&lt;p&gt;Abby and I arrived a little late, so I scrambled to get ready while a whole bunch of people were already gathered. Many people were sitting in back just to watch and listen, while maybe twenty of us were armed with instruments of all kinds, ready to have some fun!&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-prn1/541085_10150682067126513_55075526512_9775042_292845062_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-prn1/541085_10150682067126513_55075526512_9775042_292845062_n.jpg&quot;&amp;gt;[image: We played lots of different instruments]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;We ran into half a dozen people we knew from various of our musical circles, including Annie from recorder, a guy Abby knew from mandolin, and some fellow &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;Holiday Ball&lt;/a&gt; musicians.&lt;/p&gt;
&lt;p&gt;I was intrigued by the couple of people who had actual keyed Irish flutes and eager to hear them play (it would turn out, of course, that they were very, very good).&lt;/p&gt;
&lt;h3&gt;Music scores&lt;/h3&gt;
&lt;p&gt;So each of us got a packet of around twenty pages of music. We didn&apos;t play all of it, of course, but it was a good basis for sight reading along with Chris and David leading the way.&lt;/p&gt;
&lt;p&gt;Much of the music went at breakneck pace that I&apos;m still not proficient enough to sight reading perfectly, but my (yet unreported) musical adventures in the past month have made me far less self-conscious about perfection and figure out ways to cope:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it&apos;s not necessary to play all the notes; in fast music, you can contribute just fine playing only one main note per measure or harmony change&lt;/li&gt;
&lt;li&gt;you can also substitute a different, easier melodic line that is compatible with the chords&lt;/li&gt;
&lt;li&gt;since sections are repeated many times, you can add more during repetitions as you feel ready to&lt;/li&gt;
&lt;li&gt;it&apos;s not the end of the world to miscalculate sometimes and squeak out a harsh dissonant error; the music just keeps going, so don&apos;t look back, only forward&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Learning by ear, improvisation&lt;/h3&gt;
&lt;p&gt;As I expected, much of the time we didn&apos;t play music from the handed out scores at all. This was the fun I was anticipating all along (I had not really expected music scores at all, actually).&lt;/p&gt;
&lt;p&gt;Almost half the time, Chris would ask us for music suggestions to offer up &lt;em&gt;by example&lt;/em&gt;, so that the volunteer would play (or sing) the melody, then the rest of us would start &quot;learning&quot; it by ear and join in and continue with repetitions. I had not anticipated the call for volunteers, else I would have come prepared with some favorite tunes to offer!&lt;/p&gt;
&lt;p&gt;Some people were more familiar with various tunes being offered up than I was, since they had a lot more experience with Irish, Scottish and other such music than me, so I felt awkward and lost trying to learn and play on the spot, without written music, but it was part of the whole fun, really stretching what I have usually been doing with music (very oriented toward following a written score).&lt;/p&gt;
&lt;p&gt;I&apos;ve mentioned before my &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;poor memory&lt;/a&gt; having a considerable impact on my life, and I worked around it again, given that I could not quickly learn the details of a melody, by just giving up and improvising around the harmony changes instead. I would like to find ways to improve my memory, but for now, I work around my limitations.&lt;/p&gt;
&lt;h3&gt;A charming tangent involving an oboe&lt;/h3&gt;
&lt;p&gt;So it turned out that a young woman among us had come with a Baroque oboe tuned to A415 instead of the modern A440 tuning. This caused confusion, of course, when she tried to play from written scores. I&apos;m not sure what she ended up doing: the only choices were to mentally transpose from the written scores (when we were playing music from them) or just ignore the scores and learn by ear.&lt;/p&gt;
&lt;p&gt;In any case, Chris and David repeatedly wanted to play with her and asked her what music she had on her, and she had a variety of Baroque music scores with her (she said she was actually giving a recital the next day), and so they tried to play some stuff just with her while doing their own mental transposition so that she would get to play without mental transposition! Check out Chris hovering over the score trying to do the really hard work of transposing on the fly:&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/s720x720/295215_10150682067841513_395463764_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/s720x720/295215_10150682067841513_395463764_n.jpg&quot;&amp;gt;[image: Baroque oboist with Chris and David]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h3&gt;Dancing&lt;/h3&gt;
&lt;p&gt;Periodically, a number of people got up to dance in the space at the side, especially when we played waltzes. It was nice to see people moving.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/529154_10150682066471513_55075526512_9775039_758574985_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash3/529154_10150682066471513_55075526512_9775039_758574985_n.jpg&quot;&amp;gt;[image: A couple dancing]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h3&gt;I&apos;m caught on a photo playing Baroque flute&lt;/h3&gt;
&lt;p&gt;I spent a fair amount of time playing the tin whistle, and some time on my recorders, but in the end gravitated toward the Baroque flute because it was mellower and I could draw less attention to my mistakes by playing it instead!&lt;/p&gt;
&lt;p&gt;It turned out that a photo was taken that included me when I was playing my Baroque flute. In this photo, you can also see a guy playing tin whistle (this guy also at one point volunteered to sing a tune, and did so with quite a powerful voice, a great rendition).&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash2/35507_10150682067581513_55075526512_9775044_1738151368_n.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash2/35507_10150682067581513_55075526512_9775044_1738151368_n.jpg&quot;&amp;gt;[image: A fellow tin whistle player, and me on Baroque flute]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;My posture is really bad here. I need to sit up straight and keep my head over my body rather than straining over my neck. My only excuse is that this photo was probably taken two hours into the jam session when it was almost over, and I was having energy issues.&lt;/p&gt;
&lt;h2&gt;A note on energy requirements&lt;/h2&gt;
&lt;p&gt;I was totally exhausted after the jam session. After Abby and I drove back home, we both had to eat something. We were starving. We should have taken a snack break at the jam session.&lt;/p&gt;
&lt;p&gt;I weighed myself and I had lost weight. The mental demands on me were considerable, and I had really spent myself. Given that I have lost weight before when taking exams in school, or playing in chess tournaments, or doing similar activities that combine both mental demands and personal anxiety, I should have been better prepared with fuel at the event. I get the impression that I burn more energy by thinking hard than by running.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This was my first time ever at a public music jam session, and I quite enjoyed it. I am grateful to Chris Norman and David Greenberg, and the Pittsburgh Renaissance and Baroque, for providing it to the community. I am always very happy for opportunities to play music with Abby, and keep remembering how she got me into this particular early traditional dance music world, through our first musical time together at the Holiday Ball.&lt;/p&gt;
&lt;p&gt;I got self-feedback about musical shortcomings for me to keep working on in order to enjoy future jam sessions, and I learned that I really need food to keep me fueled for optimal musicality!&lt;/p&gt;
</content:encoded></item><item><title>One week of commuting on foot because of CMU Carnival</title><link>https://franklinchen.com/blog/2012/04/16/one-week-of-commuting-on-foot-because-of-cmu-carnival/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/16/one-week-of-commuting-on-foot-because-of-cmu-carnival/</guid><pubDate>Mon, 16 Apr 2012 19:57:00 GMT</pubDate><content:encoded>&lt;p&gt;This week, the Morewood Parking Lot, where I have an annual parking permit for commuting to work at Carnegie Mellon University, is being used for the annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.contrib.andrew.cmu.edu/~sc0v/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.contrib.andrew.cmu.edu/~sc0v/&quot;&amp;gt;CMU Spring Carnival&amp;lt;/span&amp;gt;, so this year I opted for the new possibility opened up by &lt;a href=&quot;https://www.cmu.edu/parking/&quot;&gt;CMU Parking Services&lt;/a&gt; to volunteer to not park in my lot, in order to reduce demand for parking. In return, I get a $50 credit toward my parking fee.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/walk-home-from-cmu/morewood-lot-carnival.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(A photo from the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.contrib.andrew.cmu.edu/~sc0v/webcam.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.contrib.andrew.cmu.edu/~sc0v/webcam.html&quot;&amp;gt;CMU Carnival live webcam&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;So today I walked two miles to work and another two back home, taking about thirty minutes each way at a fairly brisk pace.&lt;/p&gt;
&lt;p&gt;Why was I so eager to volunteer?&lt;/p&gt;
&lt;h2&gt;The pain of parking during Carnival week&lt;/h2&gt;
&lt;p&gt;I have been paying for parking in the Morewood Lot for over a decade (with only one year in which I parked in the East Campus Garage). Every year, parking during Carnival week is a nightmare. Since the lower lot is closed, the result is that the rest of the lot fills quickly and you end up having to park in the East Campus Garage, spending over five minutes (according to my actual measurements) to drive up to the top and be guided to park somewhere, if you&apos;re lucky. I already hate parking in the East Campus Garage, for a variety of reasons, and the added congestion and time only makes the experience worse.&lt;/p&gt;
&lt;h2&gt;Why do I drive to and park at work at all?&lt;/h2&gt;
&lt;p&gt;I have, of course, walked (or run) to work occasionally in the past, but it was not a regular habit, given that I pay for an expensive parking spot. I like to drive to work because of the conveniences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;not as exposed to the elements (cold, hot, snow, rain, etc.)&lt;/li&gt;
&lt;li&gt;saves &quot;a lot of&quot; time: ten minutes to get to work rather than thirty (actually, this is false: the driving time may be ten minutes from home to getting out of parked car, and then it takes another ten minutes to walk from the lot to my office, for a total of twenty minutes)&lt;/li&gt;
&lt;li&gt;much easier to haul stuff around, such as books and printouts and glass Pyrex containers for my lunches&lt;/li&gt;
&lt;li&gt;in a typical week I need to drive somewhere immediately after work, e.g., a Meetup event on the North Shore or some other such place&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Goal: force myself to do more walking&lt;/h2&gt;
&lt;p&gt;I do some running approximately every other day, but I haven&apos;t been doing much plain old walking (sadly, I have not even done long hikes in the woods recently). I decided it would be a good opportunity to see what happens (mentally and physically) if I walk two miles to work, and two miles back home, every day.&lt;/p&gt;
&lt;h2&gt;Why not run instead of walk?&lt;/h2&gt;
&lt;p&gt;I have run to work in the past, but only when I had a way to deal with the following issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;change of clothing&lt;/li&gt;
&lt;li&gt;hauling my stuff (easier to do when walking)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why not take the bus?&lt;/h2&gt;
&lt;p&gt;Since I work at CMU, I get &quot;free&quot; &lt;a href=&quot;https://www.portauthority.org/&quot;&gt;city bus&lt;/a&gt; service. I take the bus quite infrequently; there is a stop a block away from my home, so it is definitely always an option.&lt;/p&gt;
&lt;p&gt;But I have hated buses all my life, since riding them as a kid in New York City, and riding them elsewhere. In high school, I often chose to walk rather than ride a bus. In college, I also chose to walk rather than ride a bus; sometimes I would even walk an entire hour to get from one end of campus to the next.&lt;/p&gt;
&lt;p&gt;Why I don&apos;t like buses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;air pollution: I have a strong belief that there is a lot of carbon monoxide and other noxious gases in and around buses that are why I feel nauseous whenever I am on a bus&lt;/li&gt;
&lt;li&gt;waiting: I have lived in some places such as Pittsburgh where bus service leaves much to be desired, with long waits; I have observed in the past that by running, I can already go a mile before I see any bus going where I want to go, catching up to me!&lt;/li&gt;
&lt;li&gt;overcrowding: it&apos;s not entirely predictable whether you can even get onto a bus that arrives&lt;/li&gt;
&lt;li&gt;passivity: if it&apos;s not going to save me much time, and has down sides, I might as well be active and walk!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why not ride my bike?&lt;/h2&gt;
&lt;p&gt;To be frank, I think of bike riding in Pittsburgh as scary. Things are much, much better now than they used to be, but I just don&apos;t feel comfortable riding my bike around.&lt;/p&gt;
&lt;p&gt;Maybe some day I&apos;ll change my mind, but not right now.&lt;/p&gt;
&lt;h2&gt;Should I try my old Razor kick scooter?&lt;/h2&gt;
&lt;p&gt;I have a &lt;a href=&quot;https://www.razor.com/&quot;&gt;Razor&lt;/a&gt; kick scooter that I bought over a decade ago when it suddenly became a big fad. I had plans to use it for various purposes (including working my leg muscles around a track), but actually never got around to using it.&lt;/p&gt;
&lt;p&gt;I am considering trying it out to supplement walking to work, but have some reservations. We&apos;ll see whether I try it out this week.&lt;/p&gt;
&lt;h2&gt;Some photos of today&apos;s walk home&lt;/h2&gt;
&lt;p&gt;I feared that a thunderstorm might hit this evening (it did not), so I walked pretty quickly home.&lt;/p&gt;
&lt;p&gt;Schenley Drive is the most direct way to get into Squirrel Hill, where I live. Amusingly, my boss passed me on his bike while I was walking along:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/walk-home-from-cmu/walking-home-on-schenley-drive.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Residential Squirrel Hill arrives right after the golf course:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/walk-home-from-cmu/darlington-murdoch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going down Murray Avenue:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/walk-home-from-cmu/south-on-murray-ave.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt great (if sweaty) after my quick walk home tonight. I have tended to feel tired when coming home from work. It may be that all I really need is a nice walk to give me some air and circulation before dinner time. I look forward to doing more walking the rest of this week.&lt;/p&gt;
</content:encoded></item><item><title>Free course review: Software Engineering for Software as a Service (Part I), from Coursera</title><link>https://franklinchen.com/blog/2012/04/13/free-course-review-software-engineering-for-software-as-a-service-part-i-from-coursera/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/13/free-course-review-software-engineering-for-software-as-a-service-part-i-from-coursera/</guid><pubDate>Fri, 13 Apr 2012 21:29:00 GMT</pubDate><content:encoded>&lt;p&gt;So after putting quite a bit of time, from February 20 to March 23, into the free Coursera course &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.saas-class.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.saas-class.org/&quot;&amp;gt;&quot;Software Engineering for Software as a Service (Part I)&quot;&amp;lt;/span&amp;gt;, I just received my &quot;Statement of Accomplishment&quot;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Congratulations! You have successfully completed the free online offering of Software Engineering for Software as a Service (Part I), offered February to April, 2012. To successfully complete this free online class, students were required to watch lectures, complete quizzes, and do weekly assignments.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;My review:&lt;/p&gt;
&lt;h2&gt;MOOC explosion&lt;/h2&gt;
&lt;p&gt;Just half a year ago, in the fall of 2011, my life was &lt;em&gt;radically altered&lt;/em&gt; by the introduction of free massive open online courses (&lt;a href=&quot;https://en.wikipedia.org/wiki/Massive_open_online_course&quot;&gt;MOOCs&lt;/a&gt;). Eager to learn new skills and ideas of all kinds, I jumped into enrolling in a whole bunch of them.&lt;/p&gt;
&lt;p&gt;I went crazy, actually: I took a very heavy load, enrolling in and completing two Stanford MOOCs while doing everything else I was doing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/01/11/experiment-in-learning-completing-stanford-online-course-introduction-to-databases/&quot;&gt;Introduction to Databases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2012/01/12/experiment-in-learning-completing-stanford-online-course-machine-learning/&quot;&gt;Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These two courses each lasted for two months, starting in early October and ending in mid-December of 2011.&lt;/p&gt;
&lt;p&gt;This spring of 2012, I went crazy again and took a very heavy load of two MOOCs, through Coursera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Software Engineering for Software as a Service (Part I) (discussed here)&lt;/li&gt;
&lt;li&gt;Model Thinking&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(Update on Model Thinking)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/06/16/review-of-coursera-course-model-thinking/&quot;&gt;An incomplete review of Model Thinking.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Why did I take this course?&lt;/h2&gt;
&lt;p&gt;I signed up for this course in February because I was curious about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://rubyonrails.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://rubyonrails.org/&quot;&amp;gt;Ruby on Rails&amp;lt;/span&amp;gt;. I have not done much Web development since the old days of Perl, so I decided to update my skills in this area, which is not what I do in my current job. Also, although I have used some Ruby at my job, I felt that the course would help me deepen my understanding of the language.&lt;/p&gt;
&lt;p&gt;Also, this course was advertised as not being about Rails so much as about &quot;software engineering&quot; using the concept of &quot;software as a service&quot; as a concrete domain. So I was interested in getting my hands dirty in adopting the instructors&apos; &quot;opinionated&quot; idea of an &quot;Agile&quot; &quot;software engineering&quot; process for development.&lt;/p&gt;
&lt;h2&gt;Materials&lt;/h2&gt;
&lt;p&gt;Lectures on video were provided. I found them useful but fairly poor in production qualities (sound problems and quite a few in-video quiz glitches). I understand that the instructors may improve these materials, for future offerings of the course, after the scramble of getting everything together for the first trial run of this course!&lt;/p&gt;
&lt;p&gt;Somewhat controversially, the instructors&apos; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://beta.saasbook.info/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://beta.saasbook.info/&quot;&amp;gt;textbook that was still in rough alpha condition&amp;lt;/span&amp;gt; was recommended for the course. Originally I wasn&apos;t going to buy it, but I found references from the course that made it sound like it would be useful, so I bought it. It was rather poorly formatted and repeated a lot that was already in the lecture videos and slides, but did have additional material. The book was inexpensive enough that its flaws did not annoy me excessively. (Eventually the book finally entered beta!)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20170131220637/https://sites.google.com/site/longlastingsoftware/_/rsrc/1366223530547/config/cover.jpg&quot; alt=&quot;Book cover&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Confusingly, we were also to watch the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://screencast.saasbook.info/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://screencast.saasbook.info/&quot;&amp;gt;videos for the book&amp;lt;/span&amp;gt;. Having course material spread out like this was annoying.&lt;/p&gt;
&lt;p&gt;We were told that the course was going to cover about half of the book, and that there might be a second online course offered at some point, to finish the book.&lt;/p&gt;
&lt;h2&gt;Coursework&lt;/h2&gt;
&lt;p&gt;There were quizzes. I experienced glitches in dealing with them. For example, in one of the quizzes, the timer ran down because I started it but then had to attend to something (I was at home in the evening then). When I went back, I couldn&apos;t retake the quiz, so I got no credit for anything! It was upsetting, but then again, my goal was to learn, not to get a perfect score in this class. Also, sometimes when I got an answer wrong on a quiz, there was no feedback about what I did wrong! This was quite annoying. The quiz system needs to be significantly improved.&lt;/p&gt;
&lt;p&gt;The programming assignments were the heart of the course. They sometimes took quite a long time to complete. There were several reasons for this.&lt;/p&gt;
&lt;p&gt;One was just that Rails is big, and in learning to actually write and deploy Rails applications, I had to get familiar with the online documentation to search for Rails methods to use. Another was the use of Cucumber. It took forever to run Cucumber tests. From reading various online Rails tutorials and articles about testing, it appeared to me that the course instructors&apos; testing methodology was suspect, but who was I to complain, since I was just learning all this stuff myself?&lt;/p&gt;
&lt;p&gt;That leads to the main problem, which is that of spaghetti code: the &quot;Rotten Potatoes&quot; app that we modified incrementally had logic spread out all over the place. It was very difficult for me to understand what happened where, and what could happen or could not. There were code paths that involved implicit changes of state and hacking in routes and actions. It all felt wrong. Also, I strongly favor statically typed languages, and using Ruby was rather painful for me: you pull attributes out from thin air, stick them into the controller, and then suddenly you have to know you can use them in the view, etc.&lt;/p&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;p&gt;I learned a huge amount, actually. This was the first time I&apos;d systematically work through developing an application from the ground up using &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test-Driven Development&lt;/a&gt; (TDD) and &lt;a href=&quot;https://en.wikipedia.org/wiki/Behavior-driven_development&quot;&gt;Behavior-Driven Development&lt;/a&gt;, for example. &lt;strong&gt;I am completely sold on TDD and BDD now.&lt;/strong&gt; It was very useful writing down, in code, scenarios to expect to happen or not happen, before implementing the behavior. I have issues with Cucumber, the tool, but the process itself, I am sold on.&lt;/p&gt;
&lt;p&gt;It was also very satisfying incrementally developing a Rails application that actually did something.&lt;/p&gt;
&lt;p&gt;And it was also useful gaining experience using Git and Heroku.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Despite rough patches in the course (that I hope will be remedied in a future offering), I found that I learned a lot. I would definitely recommend this course to anyone interested in gaining experience incrementally developing an application, and certainly if desiring to get started with Ruby and Rails.&lt;/p&gt;
&lt;p&gt;I hope there will be a part two of this course offered, to complete the material from the Berkeley course.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-12-13)&lt;/h3&gt;
&lt;p&gt;It&apos;s been almost two years since I took this course, during which I have not done anything with Rails since, although I have started experimenting with using &lt;a href=&quot;https://web.archive.org/web/20260226070344/https://www.playframework.com/&quot;&gt;Play&lt;/a&gt; for &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;, which is similar in spirit.&lt;/p&gt;
&lt;p&gt;Meanwhile, this course has moved off Coursera to the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.edx.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.edx.org/&quot;&amp;gt;edX&amp;lt;/span&amp;gt; MOOC platform. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs-169-2x-software-service-1005&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs-169-2x-software-service-1005&quot;&amp;gt;Part 2 was offered in August 2013&amp;lt;/span&amp;gt; and a revised version of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-1x-software-service-1136&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-1x-software-service-1136&quot;&amp;gt;part 1 was offered in September 2013&amp;lt;/span&amp;gt;: &quot;The presentation order and amount of time spent on some material is being changed in response to feedback from both on-campus and online students. This run of the class also includes all new videos, two new homeworks and all new exam questions. The new class also includes embedded live chat with Teaching Assistants and other students and opportunities for remote pair programming with other students. Group tutorial Q&amp;amp;A sessions will also be held and broadcast live through Google Hangouts and YouTube.&quot;&lt;/p&gt;
&lt;p&gt;I presume both parts of the course will continue to be offered in the future. I would like to take part 2 at some point, but that depends on what time I can devote to it.&lt;/p&gt;
</content:encoded></item><item><title>Why I Gave Up Coffee Yesterday</title><link>https://franklinchen.com/blog/2012/04/13/why-i-gave-up-coffee-yesterday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/13/why-i-gave-up-coffee-yesterday/</guid><pubDate>Fri, 13 Apr 2012 08:09:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Yesterday, I did not have my usual afternoon coffee.&lt;/p&gt;
&lt;p&gt;Two days ago, I had decided to give up coffee (for at least two or three weeks). My final cup of espresso made at work:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/espresso.jpg&quot; alt=&quot;Cup of espresso at work&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;NFVlDMmp_ho&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I found a surprising variety of reasons to quit coffee.&lt;/p&gt;
&lt;h2&gt;Prelude: my history of coffee drinking&lt;/h2&gt;
&lt;p&gt;I was not always a coffee drinker. I almost never drank coffee in my life until less than a year ago, in July 2011, by accident when someone at work found a discarded cheap espresso machine in the hallway and we managed to get it working. It did not produce anything resembling real espresso, apparently, but it worked to make coffee that was better than the standard drip coffee that I always found disgusting (one reason I was never a coffee drinker).&lt;/p&gt;
&lt;p&gt;The old &quot;espresso&quot; machine leaked water, however, so my boss bought a new machine that was far better, although still low end (about $150). This functioned well enough that I decided to start buying coffee beans and grinding them and making one small cup of espresso for myself each day at work.&lt;/p&gt;
&lt;p&gt;I set a policy of only having this one cup on weekdays and being coffee-free at home on weekends.&lt;/p&gt;
&lt;h2&gt;A general reason: to change my routine&lt;/h2&gt;
&lt;p&gt;Sometimes I like to change my routine for no particular reason other than change. From experience, I have learned that often, changing something &lt;em&gt;for no reason at all&lt;/em&gt; can be beneficial. I then wait to be surprised by what I learn, what I observe, and I always have the option of noting that the change was for the worse and therefore returning to my routine.&lt;/p&gt;
&lt;p&gt;I&apos;ve done these kinds of changes when it comes to my &lt;a href=&quot;/categories/exercise/&quot;&gt;exercise&lt;/a&gt; routines, my &lt;a href=&quot;/categories/programming/&quot;&gt;music&lt;/a&gt; practice, my use of &lt;a href=&quot;/categories/programming/&quot;&gt;computer programming&lt;/a&gt; languages and tools, etc. Through experimentation, I improve my routines and keep my mind and body fresh.&lt;/p&gt;
&lt;h2&gt;Decreased appreciation&lt;/h2&gt;
&lt;p&gt;After months of regularly making espresso at work, I realized suddenly that it had become a mindless habit I &quot;depended&quot; on, rather than a special treat that I savored for itself. I used to take a few minutes away from the computer at work to enjoy my espresso, but apparently at some point I just started sipping it absent-mindedly while continuing to do work.&lt;/p&gt;
&lt;p&gt;It seems a waste to do something mindlessly that I might as well not do at all. Even worse, had I become caffeine-dependent or something?&lt;/p&gt;
&lt;h2&gt;Health concerns&lt;/h2&gt;
&lt;p&gt;It was not clear to me whether my mild coffee habit has real benefits or drawbacks, but I have been worrying about possible drawbacks.&lt;/p&gt;
&lt;p&gt;I do know that when I have too much coffee, I get &quot;wired&quot; and that does not help my mental or physical state. So the question is, have I been getting &quot;wired&quot; and not realizing it all these months?&lt;/p&gt;
&lt;p&gt;Sometimes I get headaches, and wonder whether coffee is increasing my blood pressure.&lt;/p&gt;
&lt;p&gt;Also, there is the matter of coffee being acidic and possibly nutrient-leaching.&lt;/p&gt;
&lt;p&gt;In addition, I&apos;ve been having some problems keeping weight on. Coffee seems to make me lose weight. I already weigh less than I did 24 years ago in college. I don&apos;t need to lose weight. My body goal is to gain strength and flexibility and muscle mass, not lose weight.&lt;/p&gt;
&lt;p&gt;Finally, how does my afternoon coffee affect my sleep quality?&lt;/p&gt;
&lt;h2&gt;Observations after one day&lt;/h2&gt;
&lt;p&gt;Yesterday at my &quot;usual&quot; coffee time, I noticed a feeling of lack as I bypassed my usual cup. Perhaps I really did become dependent on coffee as a way to boost my alertness in the afternoon.&lt;/p&gt;
&lt;p&gt;Also, I got sleepier and earlier last night. Again, was the day simply unusual for me, or has it been the case that coffee has artificially interfered with my &quot;natural&quot; body signals to go to sleep?&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am quitting coffee as an experiment to see what happens as a result. I hope to learn something about how dependent I have become on it (psychologically or physically), and monitor changes in my health. I am by no means arbitrarily giving up coffee forever. I expect that two or three weeks will be enough for me to learn something useful. Then I can choose whether to reintroduce coffee into my life, and at what level. Certainly I cannot imagine any harm from drinking a cup every week, but the 5-day-a-week habit has raised suspicions.&lt;/p&gt;
</content:encoded></item><item><title>Two weeks after getting my first smartphone</title><link>https://franklinchen.com/blog/2012/04/03/two-weeks-after-getting-my-first-smartphone/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/04/03/two-weeks-after-getting-my-first-smartphone/</guid><pubDate>Tue, 03 Apr 2012 17:53:00 GMT</pubDate><content:encoded>&lt;p&gt;I got my first smartphone in my life &lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;just two weeks ago&lt;/a&gt;, a &lt;a href=&quot;https://en.wikipedia.org/wiki/Samsung_Galaxy_S_II&quot;&gt;Samsung Galaxy S II&lt;/a&gt;. I&apos;ve been too busy to actually sit down and read the &lt;a href=&quot;https://www.samsung.com/us/support/owners/product/SGH-T989ZKBTMB&quot;&gt;279-page manual&lt;/a&gt;, but here are some observations on how I&apos;ve used the smartphone so far.&lt;/p&gt;
&lt;h2&gt;I am already plugged in through other devices&lt;/h2&gt;
&lt;p&gt;First of all, in my everyday life I tend to be near a computer and don&apos;t use my smartphone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At work, I use my work computer.&lt;/li&gt;
&lt;li&gt;When I go to scheduled talks or meetings, I bring my laptop or iPad, so that I can take notes and look stuff up.&lt;/li&gt;
&lt;li&gt;At home, I have my laptop and iPad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My preference is for the larger display and keyboard when possible.&lt;/p&gt;
&lt;h2&gt;WiFi in public places&lt;/h2&gt;
&lt;p&gt;I have found myself looking for WiFi in public places in order to check email and the like when otherwise idle (I try to avoid needlessly using my data plan). I suppose that in the past, I would have just sat around waiting, or just left instead of spending more time somewhere unnecessarily. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At the public library, my usual pattern is to just return stuff, check stuff out, and leave. I have caught myself hanging around just to check my email before leaving. Arguably there is no point in this behavior.&lt;/li&gt;
&lt;li&gt;While Abby and I were looking for stuff in a store, I quickly got bored of waiting for her and found it actually productive to connect to free WiFi and read email and blog and Twitter feeds; in the past, I would have just sat down somewhere and closed my eyes or something.&lt;/li&gt;
&lt;li&gt;During the long intermission at a concert I went to alone, not knowing anyone there, I spent time online rather than just sitting around. (Arguably I could have spent some time socializing with strangers, but I have tended not to do that.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Other uses in public in the past two weeks&lt;/h2&gt;
&lt;p&gt;It&apos;s handy having a decent camera on me at all times. I have used it in a couple of situations in which in the past I would have had to consciously bring a bulky camera along (which I don&apos;t like to do):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Taking a photo after a concert.&lt;/li&gt;
&lt;li&gt;Taking a photo of some notes written on a board.&lt;/li&gt;
&lt;li&gt;Taking a photo of a flyer posted up.&lt;/li&gt;
&lt;li&gt;Taking a photo of two dogs at play at the office.&lt;/li&gt;
&lt;li&gt;Capturing some video during a dance party.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A failed experiment at the gym&lt;/h2&gt;
&lt;p&gt;I am not one who has ever plugged into an iPod while exercising. However, I did an experiment today, hoping to watch a lecture video while at the gym. This failed miserably. Any vigorous movement (on a rowing machine, on a treadmill) resulted in my fear that the phone would fall, and definitely the headset with wires was very clumsy: the wires flapping around, and the short length of the wires.&lt;/p&gt;
&lt;p&gt;I suppose using a Bluetooth headset would fix a couple of these problems.&lt;/p&gt;
&lt;p&gt;But the real problem is that I supposedly watched the whole lecture, but I don&apos;t actually remember much of it!! Multitasking in certain contexts doesn&apos;t work for me. The thing is that yesterday I was watching lecture videos while at home, and that worked, but the situation was very different: I was doing strength training, I was using a large display on my computer, and I was alone, with no distracting noises or other people around.&lt;/p&gt;
&lt;h2&gt;On the road&lt;/h2&gt;
&lt;p&gt;I haven&apos;t used the phone out on the road for navigation or the like yet. The next time we do some travel, we&apos;ll see how useful the phone becomes.&lt;/p&gt;
&lt;h2&gt;I was that &lt;em&gt;annoying person&lt;/em&gt; (briefly)&lt;/h2&gt;
&lt;p&gt;Finally, I caught myself being the annoying person distracted in public walking down the street while fumbling with my phone and almost walking into someone. I did that twice, last week. I will not do that again. There was no reason whatsoever for me to be even plugged in during those moments. And if there are reasons, I could easily stop walking and stand somewhere out of the way to do my business.&lt;/p&gt;
&lt;p&gt;The good news is that at the two parties I&apos;ve been to in the past two weeks, I was not the annoying person who pulled out a phone to do stuff. I will admit that during a bathroom break or two I did pull out the phone, but at least that was very brief and in private. In principle, I should avoid feeling bored at parties: the whole point of them, after all, is to bring people together, and so I should be engaging with people who are at the party, rather than looking at my Twitter feed or something.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Not a whole lot has changed since I got my first smartphone, in part because I haven&apos;t learned all the features yet or gotten serious about apps for the phone. I&apos;ll continue being aware of how I use it and report on anything interesting that happens.&lt;/p&gt;
</content:encoded></item><item><title>My first sampling of English country dance and contra dance</title><link>https://franklinchen.com/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/</guid><pubDate>Sat, 31 Mar 2012 23:01:00 GMT</pubDate><content:encoded>&lt;p&gt;By &quot;accident&quot;, today I participated in my first sampling of both &lt;a href=&quot;https://en.wikipedia.org/wiki/English_country_dance&quot;&gt;English country dance&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Contra_dance&quot;&gt;contra dance&lt;/a&gt;. Abby and I went to a large birthday celebration in which many of the guests were musicians and dancers, and hence there was live music performed by friends and someone who taught and called dances.&lt;/p&gt;
&lt;p&gt;I hadn&apos;t intended to participate, despite &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;having the idea of trying contra dance planted in my head three months ago&lt;/a&gt;, but out of a sense of etiquette and opportunity, did participate in a couple of the &quot;easier&quot; dances.&lt;/p&gt;
&lt;h2&gt;Confusion&lt;/h2&gt;
&lt;p&gt;As I expected, I was totally confused. It was hard for me to remember what was what, turning in a circle, moving down the line with a partner, rotating around, switching places, all that stuff. The instruction went by way too fast for me. Afterwards, I could remember very little of anything that I did.&lt;/p&gt;
&lt;h2&gt;Benefits&lt;/h2&gt;
&lt;p&gt;However, I left the party being far less &quot;afraid&quot; of English country dance and contra dance. I muddled through just enough that I &lt;em&gt;knew&lt;/em&gt; that if I applied myself, I could get it, and maybe even enjoy it. It is often hard to know up front whether a new activity will be enjoyable, because I (like most people, I believe) can&apos;t enjoy something when I&apos;m doing it way too badly. I can enjoy something that I&apos;ve grown minimally competent enough to appreciate it. I still don&apos;t know yet whether I could enjoy English country dance or contra dance.&lt;/p&gt;
&lt;h2&gt;Opportunity&lt;/h2&gt;
&lt;p&gt;I&apos;m currently planning to attend in July the annual &lt;a href=&quot;https://web.archive.org/web/20220521024012/http://www.mideastearlymusic.addr.com/&quot;&gt;Mideast early music workshop&lt;/a&gt;. They offer a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mideastearlymusic.addr.com/class.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mideastearlymusic.addr.com/class.html&quot;&amp;gt;class&amp;lt;/span&amp;gt; in English country dance, so it&apos;s possible I may want to take that class, if they start from the very basics. However, given time constraints, I would rather be taking music classes at the camp rather than dance classes.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Sampler lessons like the one at the birthday party today are nice for exposing a total beginner to something new, as an appetizer toward deeper learning, but as I learned in the past, real learning requires sustained and detailed work on basics, with incremental mastery resulting from repetition.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-01-23)&lt;/h3&gt;
&lt;p&gt;It turns out that I did attend the English country dance at the &lt;a href=&quot;/blog/2012/07/21/mideast-early-music-workshop-a-life-changing-experience/&quot;&gt;Mideast early music workshop in July 2012&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, Abby and I went to &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;our first contra dance workshop&lt;/a&gt; in October 2012!&lt;/p&gt;
</content:encoded></item><item><title>A delayed St. Patrick&apos;s Day party: playing tin whistle and alto recorder</title><link>https://franklinchen.com/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/</guid><pubDate>Fri, 30 Mar 2012 22:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Since so many people couldn&apos;t make it to &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;Henry&apos;s St. Patrick&apos;s Day party&lt;/a&gt;, Henry threw another party two weeks later, a second St. Patrick&apos;s Day party! Abby and I attended this one too.&lt;/p&gt;
&lt;p&gt;This was another huge milestone for me, musically.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;Henry has been playing chess very well lately in tournaments. In fact, last weekend in the big-money &lt;a href=&quot;https://www.chesstour.com/pit12.htm&quot;&gt;Pittsburgh Open&lt;/a&gt;, he actually &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://chesstournamentservices.com/cca/tag/pittsburgh-open-2012-standings/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://chesstournamentservices.com/cca/tag/pittsburgh-open-2012-standings/&quot;&amp;gt;tied for first in his section, winning $630&amp;lt;/span&amp;gt;, with a record of four wins and one draw, his best tournament in his life!&lt;/p&gt;
&lt;p&gt;He sent me his games from the Pittsburgh Open, which I carefully analyzed and sent back to him with my annotations, just before the party. This was the first time I&apos;ve analyzed games in well over a year. Doing it again sent the thrill of chess back into me. I thought I was done with chess, but now I&apos;m vicariously living tournament chess through Henry. And I very much enjoying analyzing chess games.&lt;/p&gt;
&lt;h2&gt;Music preparation&lt;/h2&gt;
&lt;p&gt;I have learned by now that &quot;preparation&quot; when it comes to jamming does not amount to figuring out a few pieces. It means bringing a bunch of stuff and then figuring out what people want to hear or play with you, and then basically sight reading on the fly.&lt;/p&gt;
&lt;p&gt;So an important part of my music practice nowadays is &lt;em&gt;sight reading&lt;/em&gt;. I keep a big pile of music that I use simply to sight read.&lt;/p&gt;
&lt;p&gt;Because I felt still unready to play flute at a standard I found sufficiently acceptable to believe that people could take real pleasure in my playing, I decided not to bring my flute this time. I brought my tin whistle and recorders.&lt;/p&gt;
&lt;h3&gt;Tin whistle&lt;/h3&gt;
&lt;p&gt;For tin whistle, I brought some big compilations of Irish music from the Carnegie Library, both fast and slow. I especially like slow Irish airs, not only because they&apos;re slower and therefore &quot;easier&quot; to play, but because they are actually &quot;hard&quot; to play, in that you really have to pour yourself into expression and emotion; it&apos;s actually easier to play fast music because you can cover up by just playing a lot of notes.&lt;/p&gt;
&lt;h3&gt;Alto recorder&lt;/h3&gt;
&lt;p&gt;I also brought a collection of Telemann minuets arranged for alto recorder and keyboard that I got out of the library as well. I have recently been getting a lot &lt;a href=&quot;/blog/2012/03/21/flute-update-celebrating-bachs-birthday/&quot;&gt;into Baroque music&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;h3&gt;Chess&lt;/h3&gt;
&lt;p&gt;It turned out that David, a guy Henry knew from the Pittsburgh Chess Club tournaments, came to the party, so we spent a bit of time going over some recent games of theirs.&lt;/p&gt;
&lt;h3&gt;Music jamming&lt;/h3&gt;
&lt;p&gt;I felt much more comfortable than at the last party, since I was getting to know everyone, and I had not been &quot;punished&quot; in any way for my fumbling performances, but actually encouraged to keep playing.&lt;/p&gt;
&lt;p&gt;I did soloing on tin whistle with slow Irish airs, and also did impromptu fast jigs and reels with Henry and Vassily.&lt;/p&gt;
&lt;p&gt;But what I enjoyed most was going through minuets with Henry at the piano while I played alto recorder. This being Baroque music, there was ample space for ornamentation on both parts. I have been working on the art of Baroque ornamentation, and was excited to let myself free during the repeats of the minuets we read through. At one point, Henry complimented me on my ornamentation, and I silently beamed. It&apos;s a continual process, learning the art of ornamentation, because although there are some rules and guidelines, a lot is, as they say, a matter of having &quot;good taste&quot;. You want to do something interesting, but not too much, and not too distorting of the original. It&apos;s tricky finding the right personal balance.&lt;/p&gt;
&lt;p&gt;Abby brought her various tamburas and mandolin to play and show Vassily.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I had a great time again at another of Henry&apos;s parties. Great food, great company, fun playing music and talking chess.&lt;/p&gt;
</content:encoded></item><item><title>What I did immediately after the National Day of Unplugging</title><link>https://franklinchen.com/blog/2012/03/24/what-i-did-immediately-after-the-national-day-of-unplugging/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/24/what-i-did-immediately-after-the-national-day-of-unplugging/</guid><pubDate>Sat, 24 Mar 2012 19:40:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/&quot;&gt;The past 24 hours&lt;/a&gt;, I observed the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nationaldayofunplugging.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nationaldayofunplugging.org/&quot;&amp;gt;National Day of Unplugging&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;This is not a report on what I learned during that experience. I will be working on that report, which will probably be spread out over multiple posts.&lt;/p&gt;
&lt;p&gt;This is a report of what I did, &quot;plugged in&quot;, right after the event ended.&lt;/p&gt;
&lt;h2&gt;What I immediately did after finishing the National Day of Unplugging&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Made a phone call to Abby, who has been in North Carolina since yesterday.&lt;/li&gt;
&lt;li&gt;Turned on my home computer.&lt;/li&gt;
&lt;li&gt;Announced on Facebook and Twitter that I was back from unplugging! (Funny that this is the first thing I did online.)&lt;/li&gt;
&lt;li&gt;Checked my emails: I have around 30 to deal with. That&apos;s not bad, but I know that usually, I receive the least email on Saturdays.&lt;/li&gt;
&lt;li&gt;Started to &quot;catch up&quot; on my RSS feeds, Facebook, Twitter, Google+.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Emails I missed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Notification about a Meetup event for tomorrow morning. If I had known about it earlier, I might have planned today differently. It is &quot;too late&quot; now to change tomorrow&apos;s plans, so I will not be attending that event. (There is a different Meetup event I&apos;m going to in the afternoon.)&lt;/li&gt;
&lt;li&gt;Notification about multiple Meetup events further in the future I may be interested in attending; need to look at the details and add to my online calendar if I decide to go.&lt;/li&gt;
&lt;li&gt;Party invitation on Facebook. &lt;strong&gt;This is why I can&apos;t quit Facebook; people actually use it.&lt;/strong&gt; Need to look at my online calendar and discuss with Abby.&lt;/li&gt;
&lt;li&gt;Continuing old and new email threads involving various friends; I need to catch up and participate.&lt;/li&gt;
&lt;li&gt;Notifications about new comments in my blog&apos;s threads and other people&apos;s blogs&apos; threads where I&apos;d indicated I want to be notified; sometimes this is useful, but other times less so. I will respond promptly to the comment on my old blog post.&lt;/li&gt;
&lt;li&gt;Never-ending emails about new bills and statements I need to inspect and deal with.&lt;/li&gt;
&lt;li&gt;Notifications about a bunch of new people following me on Twitter. I&apos;ve long since given up on looking up every single new follower (or unfollower). I do like to make note of Pittsburgh locals I may have met in person or should meet, however.&lt;/li&gt;
&lt;li&gt;Various mailing lists and other notifications.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Facebook&lt;/h2&gt;
&lt;p&gt;OK, so it took about 15 minutes to catch up on browsing Facebook. That&apos;s actually longer than I expected. Typically I check Facebook once or twice a day, and I&apos;ve imagined that I don&apos;t spend more than 5 minutes a day on Facebook, but apparently I&apos;m wrong. Interesting.&lt;/p&gt;
&lt;p&gt;I believe I should spend less time on Facebook, because in reality, most of what I see there is not really necessary for me to see; it&apos;s just idle people-watching for me, and the value of that is unclear to me.&lt;/p&gt;
&lt;h2&gt;Google+&lt;/h2&gt;
&lt;p&gt;I&apos;ll be honest: I spend very little time on Google+. It&apos;s just not where most people I know (as in &quot;non-geeks&quot;) are.&lt;/p&gt;
&lt;h2&gt;RSS feeds&lt;/h2&gt;
&lt;p&gt;Lots of articles to sort through. For fun, as I go through them to save those I cannot just skim in 15 seconds, but want to read in depth later, I am listing the topics of the saved ones here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eclipse plugin for automatic Javadoc comments&lt;/li&gt;
&lt;li&gt;Improvised Persian music for Nowruz&lt;/li&gt;
&lt;li&gt;Claims that Twitter Bootstrap is the way to go for web site design&lt;/li&gt;
&lt;li&gt;Privacy and how to pay for it&lt;/li&gt;
&lt;li&gt;Formal mathematical model of film success or failure&lt;/li&gt;
&lt;li&gt;How to fix local issues: government or not?&lt;/li&gt;
&lt;li&gt;The stresses on women in today&apos;s world&lt;/li&gt;
&lt;li&gt;Plight of the introvert&lt;/li&gt;
&lt;li&gt;Calibre and freedom for ebooks&lt;/li&gt;
&lt;li&gt;Guido and callbacks in Python&lt;/li&gt;
&lt;li&gt;A new blogging platform called Svbtle (sic)&lt;/li&gt;
&lt;li&gt;Collection of historical chess footage on YouTube&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Saturday is a slow day. On a weekday I typically find more new stuff to read.&lt;/p&gt;
&lt;h2&gt;Twitter&lt;/h2&gt;
&lt;p&gt;Finally, I hit Twitter, to scroll down and see what I missed. I get tremendous value from Twitter, actually, that I cannot get from other sources. Perhaps that is the subject for a future blog post.&lt;/p&gt;
&lt;h2&gt;My new smartphone&lt;/h2&gt;
&lt;p&gt;I still need to get going on setting up and really using my new smartphone. This task may need to wait until Monday or Tuesday, since I have a lot of stuff I need to get done tonight and tomorrow.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I&apos;ve talked about the first things I&apos;ve done after getting back online. I&apos;ll continue monitoring my online activities as they happen. One thing &quot;unplugging&quot; has done for me is give me (at least temporarily) a more conscious than usual awareness of what I do online. This will be a step toward streamlining my online activities.&lt;/p&gt;
</content:encoded></item><item><title>Paradox? I will observe the National Day of Unplugging but just bought my first smartphone this week!</title><link>https://franklinchen.com/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/22/paradox-i-will-observe-the-national-day-of-unplugging-but-just-bought-my-first-smartphone-this-week/</guid><pubDate>Thu, 22 Mar 2012 21:22:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/unplug.jpg&quot; alt=&quot;National Day of Unplugging 2012&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Just in February, I heard of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nationaldayofunplugging.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nationaldayofunplugging.org/&quot;&amp;gt;National Day of Unplugging&amp;lt;/span&amp;gt; scheduled for March 23-24, 2012, and immediately put it on my calendar, with the hope of observing it.&lt;/p&gt;
&lt;p&gt;For some time, I&apos;ve been &lt;a href=&quot;/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/&quot;&gt;struggling with being increasingly plugged into the Internet&lt;/a&gt;, and Clay Johnson has been advocating an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.informationdiet.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.informationdiet.com/&quot;&amp;gt;information diet&amp;lt;/span&amp;gt;, so I decided to do this day of unplugging as an experiment, to observe what my habits have been and learn something about myself.&lt;/p&gt;
&lt;p&gt;Ironically, on Wednesday I just bought my first smartphone, after years of never having used one. So what&apos;s going on?!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/phones/samsung-galaxy-s-ii.jpg&quot; alt=&quot;Brand new Samsung Galaxy S II&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why an information diet?&lt;/h2&gt;
&lt;p&gt;I spend a lot of time in front of a computer, whether at work, at home on my main computer (a 2008 MacBook connected to an external display), or on my iPad 2. The first thing I have to say up front is that &lt;strong&gt;I am not a Luddite&lt;/strong&gt;. I actively use technology as a tool, as an extension of myself. As a software developer, I actively create tools to help people do their jobs. I use the Web as a source of knowledge, wisdom, and social connection. It is completely unimaginable what my life would be like if not for the past 15 years of Web access. In fact, my life was completely different in every possible way before the Web came along, and I was a completely different person.&lt;/p&gt;
&lt;p&gt;So my goal is not to &quot;unplug&quot; permanently, or &lt;em&gt;arbitrarily&lt;/em&gt; set limits on computer or Internet use. My goal is to take control of the resources in an active, deliberate way, rather than default to passively being overwhelmed both by distractions and by too much of a good thing.&lt;/p&gt;
&lt;p&gt;The diet needs to extend to every aspect of being plugged in. For me, the main problem is too much useful information: given any topic I&apos;m interested in, I could spend forever learning about it online, even if I need to focus my limited time and attention on fewer topics rather than many. For others, the social aspect may be the main problem. Even for me, an introvert, it is hard to keep up with the social networks I&apos;m part of; I always have too many emails to deal with at length.&lt;/p&gt;
&lt;p&gt;Michael Ellsberg just put up a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ellsberg.com/friendlessness&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ellsberg.com/friendlessness&quot;&amp;gt;heartfelt video&amp;lt;/span&amp;gt; in which he talks about the social aspect of overload; I recommend watching it.&lt;/p&gt;
&lt;h2&gt;Observing the National Day of Unplugging&lt;/h2&gt;
&lt;p&gt;For the National Day of Unplugging, I will monitor in detail what I miss when I unplug, and what I gain when I unplug, and then report back on what I learned, what surprised me, and how I might change up my regular routines.&lt;/p&gt;
&lt;p&gt;If you have not already made plans that require being plugged in on Saturday, I suggest joining me in observing the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://nationaldayofunplugging.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://nationaldayofunplugging.org/&quot;&amp;gt;National Day of Unplugging&amp;lt;/span&amp;gt; and sharing what you learned from it also!&lt;/p&gt;
&lt;h2&gt;Why my first smartphone?&lt;/h2&gt;
&lt;h3&gt;Old phone died&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/phones/motorola-razr-v3t.jpg&quot; alt=&quot;Motorola Razr V3t with blank display&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The short story is that on Tuesday, the display of my five-year-old cell phone, a Motorola Razr V3t I bought in January 2007, went blank, and so it was time to finally upgrade my phone. I had been thinking for a year or two now of getting a smartphone, because the display had become flaky and battery life decreasing, but had not because&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I did not really &lt;em&gt;need&lt;/em&gt; a smartphone.&lt;/li&gt;
&lt;li&gt;Smartphones are expensive.&lt;/li&gt;
&lt;li&gt;Data plans are expensive.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why a smartphone, not a new &quot;dumbphone&quot;?&lt;/h3&gt;
&lt;p&gt;One thing I missed about not having a smartphone was having a high-quality camera on me at all times. I believe a camera is a very useful tool in many situations, for photos and videos. I hardly ever used the terrible camera of my old cell phone. I also never put any apps on it, never listened to any music on it. My old cell phone was just for making phone calls; I never texted either.&lt;/p&gt;
&lt;p&gt;There are many other reasons a smartphone could be useful in my life (for example, during travel I could have used a smartphone in the past couple of years!), but instead of listing speculations, I&apos;ll just see what happens and report on the benefits. Meanwhile, I realize that the potential for it becoming a distraction truly exists, because for five years since the iPhone came out, I see, on a daily basis, people being completely, &lt;em&gt;utterly&lt;/em&gt; distracted by their smartphones in a way that I hope I never will be.&lt;/p&gt;
&lt;p&gt;There are much cheaper data plans now than in the past, so it finally seemed reasonable to get a smartphone now.&lt;/p&gt;
&lt;p&gt;It&apos;s been two days since I bought my new phone, and I actually haven&apos;t had any time yet to do much with it. All I&apos;ve done is learn how to make a call and answer the phone, and connect it to WiFi and email.&lt;/p&gt;
&lt;p&gt;I have an interest in possibly getting into developing apps for mobile devices, and maybe actually owning a smartphone will encourage me to give it a shot!&lt;/p&gt;
&lt;h3&gt;Which smartphone?&lt;/h3&gt;
&lt;p&gt;I have an iPad 2 and use Macs, so you might think I would get an iPhone, but I didn&apos;t. Why? First of all, I&apos;m on T-Mobile, and there&apos;s no iPhone support for T-Mobile. Second, developing for Android is more pleasant than developing for iOS.&lt;/p&gt;
&lt;p&gt;I got a &lt;a href=&quot;https://www.samsung.com/global/microsite/galaxys2/html/&quot;&gt;Samsung Galaxy S II&lt;/a&gt;. Yes, it&apos;s expensive, but given my policy of using devices for many years (my first car lasted me 14 years, and I&apos;m still using a 2008 MacBook), I have found from experience that I last longer between upgrades if I get something that isn&apos;t entry level. I don&apos;t want to be buying a new smartphone for another five years.&lt;/p&gt;
&lt;p&gt;Ironically, just after I bought this phone, I saw an article saying that &lt;a href=&quot;https://lifehacker.com/5895699/if-youre-in-the-market-for-an-android-phone-you-might-want-to-wait&quot;&gt;now is the time to wait for the Samsung Galaxy S III and the like&lt;/a&gt;. (I didn&apos;t even bother to skim that article, after following the link to it, because the last thing I need is &lt;a href=&quot;https://en.wikipedia.org/wiki/Buyer&apos;s_remorse&quot;&gt;buyer&apos;s remorse&lt;/a&gt;.) But let&apos;s face it, one could wait forever for everything. I needed a new phone now. And the iPad 3 just came out, but Abby and I have made much use of the iPad 2 during the time we&apos;ve owned it.&lt;/p&gt;
&lt;p&gt;Meanwhile, I&apos;ll keep note of advice such Henrik Edberg&apos;s recent blog post about &lt;a href=&quot;https://web.archive.org/web/20160912234856/http://www.positivityblog.com/index.php/2012/03/22/smartphone-attention/&quot;&gt;how not to let your smartphone take over your attention and life&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I look forward both to observing the National Day of Unplugging and also to exploring how my new smartphone can benefit my life. I don&apos;t think it is necessarily paradoxical to embrace technology while also being careful and reflective about it, just being honest with ourselves and observing ourselves.&lt;/p&gt;
</content:encoded></item><item><title>Flute update: celebrating Bach&apos;s birthday, using a Thumbport, improvising to bossa nova</title><link>https://franklinchen.com/blog/2012/03/21/flute-update-celebrating-bachs-birthday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/21/flute-update-celebrating-bachs-birthday/</guid><pubDate>Wed, 21 Mar 2012 20:57:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s been eleven days since &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;my last blog post on my flute progress&lt;/a&gt;. During this time, there have been various changes in my life, including &lt;em&gt;radical&lt;/em&gt; changes in my musical life. It will take me a couple of additional blog posts to discuss these changes, but for now, I&apos;ll talk only about today&apos;s snapshot of my flute activity.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I had ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;, and then having a &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;wonderful musical experience a birthday party&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Thumbport&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.thumbport.com/images/position.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.thumbport.com/images/position.jpg&quot;&amp;gt;[image: Thumbport]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I received a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thumbport.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thumbport.com/&quot;&amp;gt;Thumbport II&amp;lt;/span&amp;gt; I ordered recently. It&apos;s a snap-on device that helps with holding a flute, by making it easier to balance the flute on the right thumb, thereby decreasing rolling of the flute and pressure on the right pinkie finger. I tried it for the first time today and it seems useful. We&apos;ll see if it helps a bit with my form and &lt;a href=&quot;/blog/2012/03/07/flute-taking-a-break-while-clarifying-my-goals/&quot;&gt;injury issues&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;I celebrated the 327th birthday of Johann Sebastian Bach&lt;/h2&gt;
&lt;p&gt;I don&apos;t follow celebrity birthdays, but I could not avoid hearing about the birthday of &lt;a href=&quot;https://en.wikipedia.org/wiki/Johann_Sebastian_Bach&quot;&gt;Johann Sebastian Bach, born in 1685&lt;/a&gt;, thanks to some music blogs I follow.&lt;/p&gt;
&lt;p&gt;How to celebrate? The last time I celebrated a composer&apos;s birthday, it was last October, for Franz Liszt&apos;s 200th birthday. Then, I listened to a piece of music by the composer and &lt;a href=&quot;/blog/2011/10/22/happy-200th-birthday/&quot;&gt;wrote up my impressions of it&lt;/a&gt;. Today, I again had the option to read about Bach or his music, and but I mostly chose to play his music, in order to celebrate as &lt;em&gt;actively&lt;/em&gt; as possible.&lt;/p&gt;
&lt;h3&gt;Playing the cello suite no. 1 in G major, BWV 1007&lt;/h3&gt;
&lt;p&gt;I sight read a bunch of old Bach&apos;s music that eventually I should practice seriously to play well, including various minuets and bourrées.&lt;/p&gt;
&lt;p&gt;But the main piece I sight read was the full &lt;a href=&quot;https://en.wikipedia.org/wiki/Cello_Suites_(Bach)&quot;&gt;cello suite&lt;/a&gt; no. 1 in G major, using an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pjb.com.au/mus/arr.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pjb.com.au/mus/arr.html&quot;&amp;gt;arrangement for flute by Peter Billam&amp;lt;/span&amp;gt;. (I had actually obtained this a long time ago intending to play it on alto &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;This music is deceptively simple but really quite beautiful. Even visually it is pleasing: check out Bach&apos;s handwritten score:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/9/9c/Bachs1a.gif&quot; alt=&quot;Bach cello suite no. 1, first page&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Visual animation&lt;/h4&gt;
&lt;p&gt;By the way, you must check out the following unconventional visual animated representation of this music (see the creator&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.chenalexander.com/2011/baroque-bach-cello/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.chenalexander.com/2011/baroque-bach-cello/&quot;&amp;gt;blog post about its construction&amp;lt;/span&amp;gt;).&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/31179423?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;400&quot; height=&quot;225&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://vimeo.com/31179423&quot;&amp;gt;Baroque.me: J.S. Bach - Cello Suite No. 1 - Prelude&amp;lt;/a&amp;gt; from &amp;lt;a href=&quot;https://vimeo.com/alexanderchen&quot;&amp;gt;Alexander Chen&amp;lt;/a&amp;gt; on &amp;lt;a href=&quot;https://vimeo.com&quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;Bossa nova&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s3.amazonaws.com/halleonard-closerlook/00843016/00843016FC.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s3.amazonaws.com/halleonard-closerlook/00843016/00843016FC.jpg&quot;&amp;gt;[image: Latin Jazz: 10 Latin Jazz Classics]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I also picked up from the public library another play-along score/CD set, this time a &lt;a href=&quot;https://www.halleonard.com/product/viewproduct.do?itemid=843016&amp;amp;lid=1&amp;amp;keywords=latin&amp;amp;seriesfeature=JZPLYA&amp;amp;&quot;&gt;&quot;Latin jazz&quot; collection&lt;/a&gt;. Apart from the famous mambo &quot;Ran Kan Kan&quot; by Tito Puente, the rest was actually bossa nova, which was what I got it for. Recently I decided to get more into playing jazz and working on improvisation. Since I love the harmonies and tunes of classic bossa nova, I decided this was a good place to get started.&lt;/p&gt;
&lt;p&gt;I had a lot of fun playing around with the accompaniment CD. Actually, I would also like to sing this music, but unlike with salsa and bolero, where I am completely comfortable singing in Spanish, I am not proficient in the Portuguese language and it trips me up.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I just thought I&apos;d provide a short update on some of my current musical activities, until I have time to write about the big changes I&apos;ve made in my musical life.&lt;/p&gt;
&lt;h2&gt;A musical tangent: Bach&apos;s Goldberg Variations&lt;/h2&gt;
&lt;p&gt;In turns out there is a whole series of &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/148455347/goldberg-week&quot;&gt;posts on the NPR music blog about the Goldberg Variations&lt;/a&gt;. I could not resist dipping into this series, because I am a Goldberg geek. I would like someday to get good enough on piano to play much of it.&lt;/p&gt;
</content:encoded></item><item><title>The joy and challenge of making beautiful sounds together</title><link>https://franklinchen.com/blog/2012/03/18/the-joy-and-challenge-of-making-beautiful-sounds-together/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/18/the-joy-and-challenge-of-making-beautiful-sounds-together/</guid><pubDate>Sun, 18 Mar 2012 22:38:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Today I enjoyed yet another monthly meeting of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter of the American Recorder Society&lt;/a&gt;. I haven&apos;t been talking much about playing recorder, because I&apos;ve been focused almost entirely on flute in my own practice, but I&apos;ve been faithfully attending the monthly meetings of the recorder society, because I very much enjoy playing in an ensemble and continuing to learn to be a more aware and sensitive ensemble musician.&lt;/p&gt;
&lt;p&gt;When we were packing up, Fred and Mike spontaneously started sight reading a movement from Telemann&apos;s Sonata No. 6 in G major for two recorders, Op. 2, TWV 40:106.&lt;/p&gt;
&lt;p&gt;I was so struck by the qualities of their playing that I aspire to reach, that I took a short video clip as a reminder to myself:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;1kQ37135PWg&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>St. Patrick&apos;s Day party: playing tin whistle and flute</title><link>https://franklinchen.com/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/</guid><pubDate>Sat, 17 Mar 2012 22:41:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/st-patricks-2012/henry-franklin.jpg&quot; alt=&quot;Henry and Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/st-patricks-2012/henry-franklin-abby.jpg&quot; alt=&quot;Henry and Franklin and Abby&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby and I went to &lt;a href=&quot;/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/&quot;&gt;Henry&apos;s&lt;/a&gt; place for a St. Patrick&apos;s Day party, for which &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;I had promised to play some music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Today was one of the happiest days in my entire life!&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Music preparation&lt;/h2&gt;
&lt;p&gt;All week, of course, I&apos;ve been practicing &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;tin whistle&lt;/a&gt;, and also some flute as well, in preparation for this party.&lt;/p&gt;
&lt;p&gt;Actually, I bought a brand new tin whistle just yesterday at the local music store down the street from home, &lt;a href=&quot;https://www.acousticmusicworks.com/&quot;&gt;Acoustic Music Works&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/clarke-sweetone.jpg&quot; alt=&quot;My new Clarke Sweetone tin whistle&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was a cheap &lt;a href=&quot;https://www.clarketinwhistle.com/&quot;&gt;Clarke&lt;/a&gt; &lt;a href=&quot;https://www.clarketinwhistle.com/products/sweetone-tin-whistle.aspx&quot;&gt;Sweetone&lt;/a&gt;. I got this to replace the Feadóg tin whistle that &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;I used initially to learn&lt;/a&gt; but was badly out of tune.&lt;/p&gt;
&lt;p&gt;I had picked up from the library a &lt;a href=&quot;https://web.archive.org/web/20160701000429/http://www.lemccullough.com:80/Music-WhistleDVD.html&quot;&gt;nice little tutorial&lt;/a&gt; on tin whistle and learned a few tunes and some basics of ornamentation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20150922232219/http://www.lemccullough.com/Music-WhistleDVD_files/DVD%20cover-front-sm-filtered.jpg&quot; alt=&quot;Learn to Play Irish Tinwhistle&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Completely unlike the classical orchestra world, here, the tunes are very easy, but all the interest is in the personal solo expression and ornamentation.&lt;/p&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;p&gt;There were, of course, fewer guests than at Henry&apos;s birthday party. That was good, because it meant it was easier to get to know some people better (whom we had met at the earlier party) and also some new people we hadn&apos;t met before. Actually, since Abby and I arrived very early, we got to know Henry better and vice versa before other guests arrived.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/st-patricks-2012/abby-franklin-st-patricks.jpg&quot; alt=&quot;Abby and Franklin in green&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Chess&lt;/h3&gt;
&lt;p&gt;There&apos;s always chess at Henry&apos;s parties, because the kids like to play, and some adults too. I didn&apos;t play this time; last time I did, but it was very time-consuming (Abby had to drag me away so we could go home), and I wasn&apos;t playing any music then!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/st-patricks-2012/chess.jpg&quot; alt=&quot;Boys playing chess&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Music jamming&lt;/h3&gt;
&lt;p&gt;Yes, there was jamming, before and after dinner. One of the young guys, Vassily, was eager to play accordion, and played waltzes and stuff from memory, and he had also brought a tin whistle and book, having heard I was coming with a tin whistle. (But he didn&apos;t actually end up playing his!)&lt;/p&gt;
&lt;p&gt;It turns out that Vassily is interested in a wide variety of music, including Balkan, so Abby got all excited about meeting someone new who into the music she likes. Abby brought her tambourine and joined in a bunch of the jamming.&lt;/p&gt;
&lt;h4&gt;Dancing&lt;/h4&gt;
&lt;p&gt;Any time I hear someone on accordion playing a waltz or polka, I just have to dance with Abby!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/st-patricks-2012/abby-franklin.jpg&quot; alt=&quot;Abby and Franklin dancing&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Tin whistle&lt;/h4&gt;
&lt;p&gt;I&apos;d only had a couple of days to work on tin whistle playing, so I&apos;d only prepared to play a couple of tunes. But after I quickly ran out, people wanted more. And Henry wanted to accompany me with accordion or piano. I figured, what the heck, I&apos;ll sight read some of the stuff I hadn&apos;t even looked at in the tutor book. So I did, Henry figured out chords quickly, I stumbled around with lots of &quot;wrong notes&quot;, and it was all nevertheless OK.&lt;/p&gt;
&lt;p&gt;In fact, not all of my notes were actually &quot;wrong&quot;: they just weren&apos;t what was printed, but as long as stuff goes with the harmonies, there is no real sense in which the notes are wrong! That&apos;s what&apos;s so liberating about playing Irish music. I&apos;m not following some orchestra score where every dynamic, every flurry of fast notes is carefully notated and is supposed to be followed exactly. And nevertheless, this freedom does not mean pure chaos. You still have to be aware of the stylistic conventions, of the implied shapes of phrases that you want to maintain or transform in some consistent way, etc. I really feel that playing this kind of music makes one much more connected with the role of &quot;composer&quot;, being very actively engaged and making short-term and long-term decisions about where to go.&lt;/p&gt;
&lt;p&gt;Vassily and I did some random jamming where he tried to accompany me as I read through some Irish music.&lt;/p&gt;
&lt;h4&gt;Flute&lt;/h4&gt;
&lt;p&gt;I also played flute for the first time in my life for people outside the context of school band and the CMU All-University orchestra I had just quit.&lt;/p&gt;
&lt;p&gt;I chose to play an arrangement of &quot;Londonderry Air&quot; for flute and piano, from &lt;a href=&quot;/blog/2011/12/20/much-progress-playing-flute/&quot;&gt;&quot;I Used to Play Flute&quot;&lt;/a&gt; so Henry accompanied me. I was standing as I played. I was so &lt;em&gt;nervous&lt;/em&gt; that my leg shook like crazy and I thought I was going to fall. I should have played sitting down. It was a huge deal for me, working up the courage to try to play flute while feeling like I was still a rank beginner (I still have terrible breath support and tone). I knew I didn&apos;t play well, but I&apos;d gone out there and done my best. I was proud of myself for that.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed continuing to get to know Henry and his other guests better, and feeling more and more comfortable about playing music with them and for them. I felt like I was really coming out of my shell, both socially and musically. This is only the beginning.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-03-30)&lt;/h3&gt;
&lt;p&gt;Check out my report on &lt;a href=&quot;/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/&quot;&gt;the next Henry party Abby and I attended&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Remembering my Uncle Steve</title><link>https://franklinchen.com/blog/2012/03/16/remembering-my-uncle-steve/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/16/remembering-my-uncle-steve/</guid><pubDate>Fri, 16 Mar 2012 18:19:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I got a call from my mother informing me that my Uncle Steve, husband of my mother&apos;s sister Aunt Soo-kin, died yesterday. He had been sick for quite some time, and last year, in the hospital for something else, they found cancer in addition, so it was a very tough battle for him, and he was always a fighter.&lt;/p&gt;
&lt;p&gt;I was very grateful for the opportunity in July 2010 to visit Aunt and Uncle in East Lansing when he was still very much active. I had not seen either of them in possibly twenty years; my parents and Abby and I went up to their home, and they got to meet Abby for the very first time (he was not well when we married in 2009).&lt;/p&gt;
&lt;p&gt;Below is the only photo I currently have of him (my parents have the family photo album that must have a lot more photos from the past forty years since we&apos;ve all been in the United States). (From left to right: Abby, my mother, Aunt Soo-kin, my father, and Uncle Steve.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/aunt-uncle/abby-mother-aunt-father-uncle.jpg&quot; alt=&quot;Abby, Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Update: my brother-in-law André just sent me some more photos, from the wedding of my sister Linda and him in 2010 that he did manage to attend.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/aunt-uncle/aunt-uncle.jpg&quot; alt=&quot;Aunt and Uncle at Linda and André&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What do I remember most about Uncle Steve, and how did he impact my life?&lt;/p&gt;
&lt;h2&gt;The visit in July 2010&lt;/h2&gt;
&lt;p&gt;Uncle Steve was full of energy and insisted on taking us around Lansing, giving all of us a tour of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Michigan_State_Capitol&quot;&gt;Michigan State Capitol&lt;/a&gt; as well as the Michigan State University campus, especially the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cpa.msu.edu/beal/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cpa.msu.edu/beal/&quot;&amp;gt;botanical garden&amp;lt;/span&amp;gt;. He also took us to his favorite Chinese buffet.&lt;/p&gt;
&lt;p&gt;Actually, typical of him, he had originally planned to get us on a cruise on the river. We had gone down to the &lt;a href=&quot;https://www.lansingcitymarket.com/&quot;&gt;Lansing City Market&lt;/a&gt;, where he bought tickets, but then it turned out that the timing was bad and nothing was available that day, so we had to cancel on the plan.&lt;/p&gt;
&lt;h2&gt;Uncle Steve&apos;s traits&lt;/h2&gt;
&lt;p&gt;The main thing I will always remember about Uncle Steve is how different he was from other relatives. He was very energetic and aggressive, outspoken, adventurous compared to the rest of us. The way he talked, drove, and ate was quite different from how my father behaved, so in my childhood, the contrast between my two main adult male role models was striking.&lt;/p&gt;
&lt;p&gt;I saw him (and aunt and their two children, my cousins) more often when I was in elementary school, middle school, high school in Michigan. Then when I went off to college, I saw them much less often.&lt;/p&gt;
&lt;h2&gt;My number one memory: how to take risks and win&lt;/h2&gt;
&lt;p&gt;As a child, sometimes I had the opportunity to play ping pong. I didn&apos;t do it often, because we didn&apos;t have the space, but every time we went up to East Lansing to visit Uncle and Aunt and my cousins, I looked forward to using their ping pong table. I got to play with my father, and then Uncle would step in and totally destroy both of us with his ultra-aggressive style. He was pretty serious about anything competitive (he played tennis also), and he had high-quality ping pong bats such that he could create a lot of spin, for example.&lt;/p&gt;
&lt;p&gt;The main thing is that Uncle Steve moved fast and went for hard, fast killer shots whenever possible (while using the backhand spin defensively as appropriate). He didn&apos;t always make it, but he went for it. I really admired his style of play. He used a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://tabletennis.about.com/od/griptypes/a/jkpenholdgrip.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://tabletennis.about.com/od/griptypes/a/jkpenholdgrip.htm&quot;&amp;gt;Japanese-style penhold grip&amp;lt;/span&amp;gt; to maximize his forehand attacking style.&lt;/p&gt;
&lt;p&gt;I used the Chinese-style penhold grip (learned from my father) for a long time whenever I played ping pong. The Japanese-style grip seemed too extreme for me. In any case, from Uncle Steve I learned to &lt;em&gt;stay on the attack&lt;/em&gt; in ping pong. Even though for much of my life I used to be shy and anxious, there were a couple of areas in my life in which I adopted a relentlessly aggressive persona. I have Uncle Steve to thank for showing me how it&apos;s done. To this day, if I play ping pong, I will play in an attacking style, not a defensive style. I will err on the side of hitting the ball out of control and out of play losing points rather than playing &quot;safe&quot; and missing an opportunity to hit a winner. I don&apos;t really know why, but I somehow absorbed this huge &lt;em&gt;life lesson&lt;/em&gt; from Uncle Steve.&lt;/p&gt;
&lt;p&gt;At some point, I did start switching around between the penhold grip and the shake-hand grip, because of comfort. I don&apos;t play ping pong much these days; I think the last time was a year ago when I was back at my parents&apos; home, where they have had a ping pong table for twenty years.&lt;/p&gt;
&lt;p&gt;Here&apos;s a photo of my father and me playing ping pong twenty years ago:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-father-ping-pong-air.jpg&quot; alt=&quot;Franklin playing ping pong with father at home around 1993?&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;In closing&lt;/h2&gt;
&lt;p&gt;Uncle Steve leaves behind his wife, two children, and their children.&lt;/p&gt;
&lt;p&gt;Unfortunately, Uncle Steve never got to see my new nephew Jack, born last month. But the cycle of life continues.&lt;/p&gt;
&lt;p&gt;I will miss Uncle Steve&apos;s energy and fighting spirit.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/andre-linda-jack-mother-father.jpg&quot; alt=&quot;André, Linda, Jack, mother, father&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Photo: brother-in-law André, sister Linda, nephew Jack, mother, father.)&lt;/p&gt;
</content:encoded></item><item><title>For real geeks, today is not Pi Day, but Half-Tau Day</title><link>https://franklinchen.com/blog/2012/03/14/for-real-geeks-today-is-not-pi-day-but-half-tau-day/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/14/for-real-geeks-today-is-not-pi-day-but-half-tau-day/</guid><pubDate>Wed, 14 Mar 2012 18:52:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://s3.amazonaws.com/ksr/projects/39714/photo-full.jpg?1309271700&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://s3.amazonaws.com/ksr/projects/39714/photo-full.jpg?1309271700&quot;&amp;gt;[image: Say no to pi]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today, many of us geeks celebrate &lt;a href=&quot;https://piday.org/&quot;&gt;Pi Day&lt;/a&gt;, because &lt;em&gt;π = 3.1415926535897932384626433...&lt;/em&gt; is such an important number in math and science. I have to confess that I have never celebrated Pi Day, but it was just last year that I found out there was a movement &lt;em&gt;against&lt;/em&gt; celebrating Pi Day, and advocating the celebration of &lt;a href=&quot;https://tauday.com/&quot;&gt;Tau Day&lt;/a&gt; instead, where the special constant (which a community has chosen to be denoted by the Greek letter &quot;tau&quot;, &lt;em&gt;τ&lt;/em&gt;) is &lt;em&gt;2π&lt;/em&gt;, which is &lt;em&gt;6.283...&lt;/em&gt;. Upon examining the evidence briefly, I had immediately agreed that indeed, we should not be celebrating Pi Day, and that therefore, today is simply &lt;a href=&quot;https://halftauday.com/&quot;&gt;Half-Tau Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If this is getting &lt;strong&gt;much&lt;/strong&gt; too geeky for you, feel free to ignore the rest of this blog post. Otherwise, bear with me!&lt;/p&gt;
&lt;h2&gt;My dark days with &lt;em&gt;π&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;I suffered through the use of &lt;em&gt;π&lt;/em&gt; throughout high school, when we learned trigonometry and all the cosines and sines involved radians from 0 to &lt;em&gt;2π&lt;/em&gt;. Why is a complete revolution around the circle 2 times a constant, rather than being its own constant? And then there was calculus, same story.&lt;/p&gt;
&lt;p&gt;I even got sucked into true geekery, memorizing nearly 50 digits of &lt;em&gt;π&lt;/em&gt; in the summer after I graduated from high school. I still remember what happened: I was in a van traveling from Frankfurt to Jena, East Germany (this was 1987 before the fall of the Berlin Wall) as a member of the US team for the &lt;a href=&quot;https://en.wikipedia.org/wiki/International_Physics_Olympiad&quot;&gt;International Physics Olympiad&lt;/a&gt; when I got really bored, and fellow teammate &lt;a href=&quot;https://www.linkedin.com/pub/bryan-beatty/13/497/581&quot;&gt;Bryan Beatty&lt;/a&gt; wrote out in pencil by memory the first 50 digits of &lt;em&gt;π&lt;/em&gt; into the front cover of a book I had on me, and I proceeded to memorize those digits (no, I did not remember them forever).&lt;/p&gt;
&lt;p&gt;Doing math and physics homework in college, I got burned repeatedly by the extra work of carrying around factors of 2 and canceling them out when doing arithmetic, because of the incorrect definition of the &quot;circle constant&quot; as &lt;em&gt;π&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-06)&lt;/h3&gt;
&lt;p&gt;While doing some cleaning, I happened to find in my office the very book that I had on me during the trip and that Bryan wrote into (not the inside front cover, but the inside back cover)!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/book-with-pi.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pi.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-22)&lt;/h3&gt;
&lt;p&gt;I found out that the physicist Hugh Young, the author of the book I have that Bryan wrote &lt;em&gt;π&lt;/em&gt; into, &lt;a href=&quot;https://web.archive.org/web/20250428183924/https://www.cmu.edu/news/stories/archives/2013/august/aug22_hughyoungobit.html&quot;&gt;just died&lt;/a&gt;. RIP.&lt;/p&gt;
&lt;h2&gt;The mystery of &lt;em&gt;2π&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;2π&lt;/em&gt; keeps on popping up in places other than in high school trigonometry and calculus. As Michael Hartl points out in his excellent &lt;a href=&quot;https://tauday.com/tau-manifesto&quot;&gt;Tau Manifesto&lt;/a&gt;, anyone who has used the Gaussian (&quot;bell curve&quot;) distribution, through work in probability, statistics, machine learning, etc., sees the square root of &lt;em&gt;2π&lt;/em&gt; all the time, and engineers and physicists see &lt;em&gt;2π&lt;/em&gt; all the time when doing the Fourier transform. Eventually we just learn to immediately think that &lt;em&gt;π&lt;/em&gt; is just half of something. For example, if you&apos;re doing an integral only on half the &lt;em&gt;x&lt;/em&gt;-axis, you remember to use &lt;em&gt;π&lt;/em&gt;. This is stupid, carrying around that extra 2 everywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conceptually&lt;/strong&gt;, the fundamental constant is clearly &lt;em&gt;2π&lt;/em&gt;, not &lt;em&gt;π&lt;/em&gt;. That is the argument we &lt;strong&gt;τ&lt;/strong&gt;-believers accept: our concepts should be mapped to our notation. I strongly recommend that disbelievers watch Hartl&apos;s hilarious talk on &lt;em&gt;τ&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;H69YH5TnNXI&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;The importance of good notation for concepts, and some more examples&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://terrytao.wordpress.com/advice-on-writing-papers/use-good-notation/&quot;&gt;Good notation&lt;/a&gt; is actually important in communicating ideas, expressing them, thinking them. Good notation reduces mental clutter and pointless work.&lt;/p&gt;
&lt;p&gt;In physics, there is the concept of frequency. It turns out &lt;a href=&quot;https://en.wikipedia.org/wiki/Angular_frequency&quot;&gt;angular frequency&lt;/a&gt; is more convenient to use, hence instead of writing the frequency &lt;em&gt;f&lt;/em&gt;, we prefer to work with &quot;omega&quot;, which is &lt;em&gt;ω = 2πf&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As a related example of the usefulness of choosing a proper numerical constant, consider the original &lt;a href=&quot;https://en.wikipedia.org/wiki/Planck_constant&quot;&gt;Planck&apos;s constant&lt;/a&gt; &lt;em&gt;h&lt;/em&gt;. Physicists quickly realized that it was much more convenient to use the reduced constant &lt;em&gt;ħ&lt;/em&gt;, which is just &lt;em&gt;h&lt;/em&gt; divided by &lt;em&gt;2π&lt;/em&gt;. When writing equations in quantum mechanics, nobody uses &lt;em&gt;h&lt;/em&gt;. We use &lt;em&gt;ħ&lt;/em&gt; (pronounced &quot;h bar&quot;). The annoying factor of &lt;em&gt;2π&lt;/em&gt; is removed from the picture. In fact, in my former life as a physics student, most of the work we did involved using &lt;a href=&quot;https://en.wikipedia.org/wiki/Natural_units&quot;&gt;natural units&lt;/a&gt;, in which equations and calculations are simplified by simply setting &lt;em&gt;c&lt;/em&gt; and &lt;em&gt;ħ&lt;/em&gt; to 1.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;OK, we all know that it is completely hopeless to convert the world to using τ instead of π. Just as it is &quot;completely hopeless&quot; for the United States to become a multi-party political system or abolish the Electoral College.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nevertheless, &lt;a href=&quot;https://www.math.utah.edu/~palais/pi.html&quot;&gt;π is wrong!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oh, and on June 28 this year, you bet I&apos;ll be celebrating Tau Day.&lt;/p&gt;
&lt;p&gt;P.S. Please don&apos;t take any of this too seriously: I don&apos;t!&lt;/p&gt;
</content:encoded></item><item><title>Quitting the CMU All-University Orchestra: one of the hardest decisions in my life</title><link>https://franklinchen.com/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/</guid><pubDate>Mon, 12 Mar 2012 22:45:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s the Monday after what would have been the regular Sunday evening CMU All-University Orchestra rehearsal, except that there was no rehearsal because of Spring Break.&lt;/p&gt;
&lt;p&gt;Surprise (or not)!&lt;/p&gt;
&lt;p&gt;I have decided to immediately &lt;em&gt;quit&lt;/em&gt; the CMU AUO that I had &lt;a href=&quot;/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/&quot;&gt;just joined less than two months ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have already told everyone that I&apos;m quitting.&lt;/p&gt;
&lt;p&gt;I don&apos;t like quitting. I don&apos;t like being a quitter.&lt;/p&gt;
&lt;p&gt;So what&apos;s the story? And what next?&lt;/p&gt;
&lt;h2&gt;Orchestra morale problems&lt;/h2&gt;
&lt;p&gt;Five days ago, I reported on &lt;a href=&quot;/blog/2012/03/07/flute-taking-a-break-while-clarifying-my-goals/&quot;&gt;problems in the orchestra&lt;/a&gt; and deciding that I would probably quit the orchestra after the spring term is over. The memories of that have lingered in my mind. And my relief yesterday at not having rehearsal was a real message to me.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-03-21)&lt;/h3&gt;
&lt;p&gt;Maria just sent the mailing list (which I&apos;m still on despite having quit the orchestra) an email saying, &quot;It seems that over spring break we may have lost much of what we did in the first portion of the semester.&quot;&lt;/p&gt;
&lt;p&gt;No kidding. As I had observed earlier, people clearly just weren&apos;t taking practice seriously. They probably didn&apos;t touch their instruments when they went on spring break. I&apos;m so glad I quit.&lt;/p&gt;
&lt;h2&gt;Personal musical goals&lt;/h2&gt;
&lt;p&gt;In the past couple of days while off the hook on orchestral practice, I had an opportunity to think about &lt;a href=&quot;/blog/2012/03/10/flute-loving-it-again/&quot;&gt;what I actually love about music, and what role I want it to play in my life&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A chance opportunity&lt;/h3&gt;
&lt;p&gt;It turns out that Abby and I have just been invited to a St. Patrick&apos;s Day party by Henry, whose &lt;a href=&quot;/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/&quot;&gt;birthday party less than two months ago&lt;/a&gt; had so moved me musically (and right after I had joined the AUO). I was so eager to attend that I asked Henry whether I should bring a tin whistle and play some Irish music, and he said, sure! I had promised myself after his birthday party that if we were ever invited to a party by him, I would play music.&lt;/p&gt;
&lt;h2&gt;Brute reality&lt;/h2&gt;
&lt;p&gt;Today, I can no longer deny the reality: being in an orchestra is &lt;em&gt;completely contrary&lt;/em&gt; to the kind of musical life I actually enjoy and want. I need to play music of my choice, I want to improvise, I want to play in small groups. The task of mastering some difficult flute parts in a big orchestral work and being a tiny part of a performance, &lt;em&gt;does not appeal to me at all&lt;/em&gt;, even if I could do it well (which I currently cannot at all).&lt;/p&gt;
&lt;p&gt;As a concrete example: I could spend my time this week slogging away at AUO music practice, or I could be learning some tunes on tin whistle so that I can play them on Saturday at Henry&apos;s party and have a blast.&lt;/p&gt;
&lt;p&gt;There&apos;s no comparison, whether in the short term or in the long term.&lt;/p&gt;
&lt;p&gt;But emotionally, it&apos;s just tough to quit.&lt;/p&gt;
&lt;h2&gt;What did I really ever hope to get out of orchestra?&lt;/h2&gt;
&lt;p&gt;I think part of me hoped that somehow, being in an orchestra was a standard rite of passage that a &quot;serious&quot; musician should do. When I was a kid, I was kind of envious that classmates joined the school orchestra, while I remained out of music entirely. My younger sister played violin in various orchestras in middle school and in high school and college.&lt;/p&gt;
&lt;p&gt;But now it occurs to me that not much of what I could get out of orchestra would help me with my real musical goals anyway.&lt;/p&gt;
&lt;h2&gt;The art of quitting&lt;/h2&gt;
&lt;p&gt;I have a policy of never just &lt;em&gt;quitting&lt;/em&gt; something, but &lt;em&gt;replacing&lt;/em&gt; the void instead. &lt;em&gt;Quitting&lt;/em&gt; is negative. &lt;em&gt;Replacing&lt;/em&gt; is positive. In my case, quitting orchestra frees up a considerable amount of time to work toward my real musical goals. Instead of fruitlessly working on difficult flute parts that are currently beyond my capabilities, and beyond my interests, I can focus on gradually improving at the music I do want to play, and building the technique necessary, without arbitrary deadlines like some big concert.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;In the United States, we are constantly bombarded with messages in the media and general culture not to be a &quot;quitter&quot;. And I got that a lot from my parents (who came from Taiwan) when I was a kid.&lt;/p&gt;
&lt;p&gt;My current point of view: &lt;em&gt;not learning to be an effective quitter was the single worst mistake of my first decades in life&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Here are some articles that really resonated with me about the benefits of quitting correctly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20151220113907/http://www.projecthappilyeverafter.com/2009/03/sometimes-its-better-to-be-a-quitter/&quot;&gt;&quot;Sometimes it&apos;s better to be a quitter&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cormackcarr.com/2009/12/05/how-to-be-a-quitter/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cormackcarr.com/2009/12/05/how-to-be-a-quitter/&quot;&amp;gt;&quot;How to be a quitter&quot;&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It&apos;s never easy for me to quit something. Part of me always feels like I failed, wasn&apos;t good enough, wasn&apos;t courageous enough, or something like that. Maybe sometimes that is actually true. But other times, it clearly is not. All signs point to quitting orchestra as the best thing I can do now for my flute playing.&lt;/p&gt;
&lt;h2&gt;What is your own relationship to quitting?&lt;/h2&gt;
&lt;p&gt;What is your gut reaction when hearing about someone quitting (like me just now), or when considering quitting something yourself? Is your &lt;em&gt;gut reaction&lt;/em&gt; one of disdain and shame, or of liberation? Is this a result of your upbringing, or the nature of your relationships with peers? Is it a deliberate rational philosophical position? Or is primarily emotional, based on either moral sentiment or ego?&lt;/p&gt;
&lt;p&gt;When was the last time you quit and felt &lt;em&gt;good&lt;/em&gt; about it? When was the last time you quit and felt &lt;em&gt;bad&lt;/em&gt; about it? When was the last time you quit and &lt;em&gt;at the time&lt;/em&gt; felt one way, but later felt you had made the wrong decision?&lt;/p&gt;
</content:encoded></item><item><title>Fascinating bushwhacking hike at PA State Game Land 51 (Dunbar)</title><link>https://franklinchen.com/blog/2012/03/11/fascinating-bushwhacking-hike-at-pa-state-game-land-51-dunbar/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/11/fascinating-bushwhacking-hike-at-pa-state-game-land-51-dunbar/</guid><pubDate>Sun, 11 Mar 2012 22:34:00 GMT</pubDate><content:encoded>&lt;p&gt;John, Abby, and I went on a strenuous &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/55247792&quot;&gt;Pittsburgh Hiking meetup hike in PA State Game Land 51 (Dunbar)&lt;/a&gt;. It was over 10 miles and quite exploratory. There were large ascents and descents and bushwhacking, rocks, mud, waterfalls, getting &quot;lost&quot;, finding the way back. Fun, but wow, totally exhausted afterwards!&lt;/p&gt;
&lt;p&gt;Starting off on the road:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/road.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Cool rocks&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/weird-rocks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/more-rocks.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/rock-slope-and-view.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is cool: holes in rock:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/holes-in-rock.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some unmelted ice!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/unmelted-ice.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Miscellaneous&lt;/h2&gt;
&lt;p&gt;Bug &quot;hitchhiking&quot; on my Vibram FiveFingers KSO Trek shoes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/hitchhiking-bug.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cool view from where we are up here:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/view-from-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Uh, we seem &quot;lost&quot;, but we do have maps:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/looking-at-map.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Lunch break&lt;/h2&gt;
&lt;p&gt;Abby made these really cute seasoned chicken/veggie lettuce wraps for our lunch!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/chicken-lettuce-wrap.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Our hike leaders Jeff and Terri enjoying lunch:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/jeff-terri-lunch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Everyone is hungry!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/lunch-others.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby also made shrimp and seaweed wraps:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/shrimp-seaweed-wrap.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What happened to this leaf?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/leaf.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going down:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/bushwhacking-down.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s hard going down when it&apos;s also sideways:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/bushwhacking-side-down.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Down to the waterfall&lt;/h2&gt;
&lt;p&gt;It was exciting seeing the waterfall down there. Probably very few people have gone there because there is no direct route, only the hard way as we did:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/down-to-waterfall.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/waterfall.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/waterfall-close.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/SFILv9C8k48&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Going back up:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/bushwhacking-up.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Found a way back!!&lt;/h2&gt;
&lt;p&gt;Rhododenrons, all of a sudden:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/rhododendrons.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going through them:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/I6XiJegg2KQ&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Wow, amazingly, a narrow passageway between rocks!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/passageway.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, a view of our cars!!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pa-state-game-land-51/cars.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;A very tough hike, not the kind Abby and I would normally do every weekend, but it&apos;s really special to have people like Jeff and Terri lead us through this kind of terrain, and for all of us to be surprised by what we find.&lt;/p&gt;
</content:encoded></item><item><title>Flute: loving it again, remembering why I dance, and how I met my wife!</title><link>https://franklinchen.com/blog/2012/03/10/flute-loving-it-again/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/10/flute-loving-it-again/</guid><pubDate>Sat, 10 Mar 2012 21:28:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, after four days of &lt;a href=&quot;/blog/2012/03/07/flute-taking-a-break-while-clarifying-my-goals&quot;&gt;not even touching my (modern) flute&lt;/a&gt; and having spent the time having fun with my Baroque flute instead, I felt the urge to return to the modern flute.&lt;/p&gt;
&lt;p&gt;I still have not regained the inclination to continue working on the orchestra music I still have to improve a lot on in the coming week, but I rediscovered the joy of simply playing my instrument.&lt;/p&gt;
&lt;h2&gt;Sound, intonation&lt;/h2&gt;
&lt;p&gt;The perpetual challenges of getting clean sounds and accurate pitches on the Baroque flute in the past four days have given me an increased appreciation for the modern flute. I picked it up and spent time just trying to make beautiful sounds. Freed from the stress of orchestra practice, I felt much more relaxed on the instrument than I have for a while now.&lt;/p&gt;
&lt;p&gt;To my surprise (but not really), I have improved considerably on the flute after not playing it for four days. I really needed a break, a consolidation of lessons learned. My production of tones is much improved, and high notes are squeaking less.&lt;/p&gt;
&lt;h2&gt;Music for dance&lt;/h2&gt;
&lt;p&gt;One thing I&apos;ve truly come to realize is that I particularly enjoy playing rhythmic music suitable for dancing.&lt;/p&gt;
&lt;p&gt;Indeed, every time I attend a dance, and there is live music, I experience a strange internal conflict: I do like to dance, but sometimes, I&apos;d rather be on the other side of the dance floor, being the musical performer! The &lt;em&gt;only&lt;/em&gt; time I&apos;ve been on the other side has been at last year&apos;s &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt; Holiday Ball.&lt;/p&gt;
&lt;p&gt;The most recent instance of my wishing I could sometimes stop dancing and just join the musicians has been at the local &lt;a href=&quot;https://web.archive.org/web/20220918191458/https://www.coalcountry.org/frenchdance.html&quot;&gt;Pittsburgh French dance workshop and social&lt;/a&gt;, where we&apos;ve had live piano, fiddle, and of course, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/~gdyke/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/~gdyke/&quot;&amp;gt;Gregory&amp;lt;/span&amp;gt; on his Irish flute. I wonder whether at some point I might be qualified to play for the event, using either my modern flute or Baroque flute. (By the way, it was held again today, but unfortunately, Abby and I chose not to go because we had too many things to do this weekend.)&lt;/p&gt;
&lt;h2&gt;Remembering dancing&lt;/h2&gt;
&lt;p&gt;Yesterday I spent time playing along to a score/CD set I&apos;ve mentioned before, &lt;a href=&quot;https://www.amazon.com/World-Music-Cuba-Flute-play-along/dp/3702465804&quot;&gt;World Music Cuba&lt;/a&gt;. While playing the bolero, cha cha, and mambo pieces in particular, I felt I was returning &quot;home&quot; in many ways. This was among the first music I heard and saw people dancing to when I was curious and visited the &lt;a href=&quot;https://cmubdc.org/&quot;&gt;CMU Ballroom Dance Club&lt;/a&gt; in 2000, and fell in love with, and learned to dance to. I also played along to &lt;a href=&quot;https://www.amazon.com/Play-along-Argentina-Flute-World-Music/dp/3702465871&quot;&gt;World Music Argentina&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Some photos of my ballroom dance days&lt;/h3&gt;
&lt;p&gt;Here are some photos of me dancing in 2002 with my last dance partner, Amy, before I quit competitive ballroom dancing.&lt;/p&gt;
&lt;p&gt;Here we are at the &lt;a href=&quot;https://www.dcdancesportinferno.com/&quot;&gt;DC DanceSport Inferno&lt;/a&gt; in 2002 doing a hockey stick in international rumba:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ballroom/dcdi-2002-hockey-stick.jpg&quot; alt=&quot;Amy and Franklin at DCDI 2002 in rumba&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And here were are at the &lt;a href=&quot;https://web.archive.org/web/20230129153935/http://comp.cornelldancesport.org/&quot;&gt;Cornell DanceSport Classic&lt;/a&gt; in 2002 in cha cha, rumba, and tango:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ballroom/cornell-2002-new-yorker.jpg&quot; alt=&quot;Amy and Franklin at Cornell 2002 in cha cha&quot; /&gt;
&lt;img src=&quot;../../assets/images/ballroom/cornell-2002-hockey-stick.jpg&quot; alt=&quot;Amy and Franklin at Cornell 2002 in rumba&quot; /&gt;
&lt;img src=&quot;../../assets/images/ballroom/cornell-2002-tango-promenade.jpg&quot; alt=&quot;Amy and Franklin at Cornell 2002 in tango&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Dancing with Abby&lt;/h2&gt;
&lt;p&gt;But never mind the ballroom dance days. It was through salsa dancing that I met my wife!&lt;/p&gt;
&lt;h3&gt;How I met Abby&lt;/h3&gt;
&lt;p&gt;It was through dancing that I met Abby in the first place. After quitting dancing in 2003, I never danced again until late 2006, when my friend Jon told me he had recently started salsa dancing (because of a girlfriend who got him into it) and invited me to join him at a free outdoors dance, and I went. Then as I re-entered the Pittsburgh salsa dance scene, I kept running into Abby.&lt;/p&gt;
&lt;h3&gt;Some photos of us dancing salsa&lt;/h3&gt;
&lt;p&gt;There are not many photos of Abby dancing with me, because when I&apos;m dancing, I&apos;m not holding my camera, but here are some photos a friend took at a big salsa dance weekend at the Palisades in McKeesport in April 2008, a year after we started dating in 2007.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/palisades-2008/abby-franklin.jpg&quot; alt=&quot;Abby and Franklin dancing salsa at Palisades&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/palisades-2008/abby-franklin-hair.jpg&quot; alt=&quot;Abby and Franklin dancing salsa at Palisades, hair flying&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Expression and improvisation in dance and in music&lt;/h2&gt;
&lt;h3&gt;Dance&lt;/h3&gt;
&lt;p&gt;One reason I gave up ballroom dancing was that I felt there was an overemphasis on &quot;syllabus steps&quot; (I realize this is an oversimplification of the ballroom dance culture; all very good ballroom dancers go beyond the syllabus mindset). After quitting ballroom dancing, I explored Argentine tango, which is all about improvisation, but I left it because (at the time) it seemed that most of the women in the local scene were very tall, which made dancing awkward for me. I got into salsa because freed from the closed embrace, there was clearly a lot of room for personal improvisation. Ironically, I first got into making stuff up as a result of my imperfect memory: I could never memorize long choreography of step patterns, whether I was doing ballroom dancing or anything else. So I would always make a &quot;mistake&quot;, then I would make something out of the mistake. I learned that as long as you get back in time with the music, and keep the lead and follow communication strong, there is no such thing really as a mistake. You just keep going, with whatever is happening at the present moment.&lt;/p&gt;
&lt;p&gt;I now have a long-term goal of developing my technique and releasing my inhibitions so that I can improvise musically at will. Yesterday, I played with improvising when playing bolero, cha cha, and tango. It was a lot of fun and profoundly satisfying.&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;I actually credit my study of the recorder and the Baroque flute for reawakening me to my dream of free expression and improvisation. Baroque music leaves room for a lot of interpretation of trills and ornamentation and articulation (subject, of course, to &quot;good taste&quot;). I want to go beyond that, but it has been a great starting point. For some reason, too much exposure to later music (such as Beethoven) had turned me into a score-reader, since such later music has so much already marked up for the performer to simply &lt;em&gt;obey&lt;/em&gt;. The sparse annotations in Renaissance and Baroque music give one much more freedom.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am enjoying playing the flute again, now that I know what I really want to do with it. And I would like to merge my dance and music lives, just as Abby has always played the Balkan music she also dances to.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-01-26)&lt;/h2&gt;
&lt;p&gt;Almost a year later, I finally played tangos on flute &lt;a href=&quot;/blog/2013/01/26/music-i-just-played-for-the-first-time-recorder-sonata-tangos/&quot;&gt;at a party&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-03-17)&lt;/h2&gt;
&lt;p&gt;Almost exactly a year later, I ended up playing selections from the World Music Cuba book &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;at a party&lt;/a&gt;, and improvising freely with two other guys!&lt;/p&gt;
</content:encoded></item><item><title>Flute: taking a break while clarifying my goals</title><link>https://franklinchen.com/blog/2012/03/07/flute-taking-a-break-while-clarifying-my-goals/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/07/flute-taking-a-break-while-clarifying-my-goals/</guid><pubDate>Wed, 07 Mar 2012 21:41:00 GMT</pubDate><content:encoded>&lt;p&gt;This is my first blog post in over a week. I&apos;ve been very busy, and therefore have had to recently &lt;a href=&quot;/blog/2012/02/23/saying-no-in-order-to-say-yes/&quot;&gt;say &quot;no&quot;&lt;/a&gt; to blogging while saying &quot;yes&quot; to many other activities.&lt;/p&gt;
&lt;p&gt;Another thing I&apos;ve said &quot;no&quot; to in the past three days has been playing the (modern) flute. In my last blog post I was worried about flute &lt;a href=&quot;/blog/2012/02/27/flute-practice-dealing-with-burnout-and-injury&quot;&gt;burnout and injury&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s a flute status update.&lt;/p&gt;
&lt;h2&gt;Injury&lt;/h2&gt;
&lt;p&gt;I fixed some things in how I was handling my flute so that I would experience less stress on my left hand, so I believe I have for now avoided serious injury, although I am still planning to investigate buying a more suitably shaped flute.&lt;/p&gt;
&lt;h2&gt;Last Sunday&apos;s orchestra rehearsal&lt;/h2&gt;
&lt;p&gt;I felt rather demoralized after &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;CMU AUO&lt;/a&gt; rehearsal three days ago. I had had a really packed weekend and therefore was quite drained after rehearsal, which lasted from 7:30 PM to 10:00 PM.&lt;/p&gt;
&lt;p&gt;The orchestra was still struggling to get things in place. We do get better, but very slowly. Our director is visibly impatient, and rightly so. I have wondered whether to describe my own complaints, because I wish no harm and am still committed to doing my best to contribute to the concert on April 15. But I think that what I share here will probably not be very surprising.&lt;/p&gt;
&lt;h3&gt;Immaturity and dishonesty&lt;/h3&gt;
&lt;p&gt;The experience of being in this non-audition orchestra composed primarily of undergraduates reminds me a lot of my negative experiences in band when I was a pre-teen. There is a lot of disruptive chatting during rehearsal that is quite &quot;unprofessional&quot;; I take music seriously and given the huge investment of two and a half hours on a Sunday evening every week, would like to make the most of the time. I realize that these are not music major students, and therefore many treat this activity as a casual hobby.&lt;/p&gt;
&lt;p&gt;It was demoralizing when the director had to confront the orchestra and note that every week, after the break halfway in the rehearsal, suddenly there are more empty seats, meaning that people have been leaving, after having checked in (there is a strict attendance policy). Also, I have noticed people regularly not showing up in the first half, and coming in only for the second half. Yes, it is true that sometimes a student may have some other commitment, but still, the absences affect our rehearsal.&lt;/p&gt;
&lt;p&gt;Furthermore, the girl who is in charge of attendance sternly said after the rehearsal that she had done some counting and noticed that some instrument sections had more check marks than people she actually saw; in other words, people were signing in for friends who weren&apos;t showing up.&lt;/p&gt;
&lt;h3&gt;Lack of passion&lt;/h3&gt;
&lt;p&gt;Another fundamental problem is the lack of passion many of the orchestra members have for the music. This Bernstein and Gershwin music we&apos;re playing is good music: it&apos;s very rhythmic, syncopated, and a lot of us are playing it in some kind of sleepy, tentative way. I find this lack of spirit extremely offensive, frankly. Why waste time playing music if you&apos;re not going to breathe it and be moved by it? It boggles my mind. My attitude, whether running a 5K race or writing a computer program or cooking or playing music or dancing, is that my time and energy are precious, and if I&apos;m going to do it, I want to give it my all, the moment that I&apos;m doing it.&lt;/p&gt;
&lt;h3&gt;Summary of my orchestra experience&lt;/h3&gt;
&lt;p&gt;So as far as the atmosphere in the orchestra is concerned, I find it completely at odds with what I&apos;m looking for in an ensemble. This is not much of a surprise, but it is disappointing anyway. However, I will continue to get and give all I can to our rehearsals and upcoming performance, for the experience, and then I don&apos;t really expect to continue in the orchestra when the fall term arrives. I have many musical goals that I already have lined up for the summer and beyond; more on that in a later post, where I will also discuss why I don&apos;t really fit in an orchestra, even if I played much better and everyone had a professional attitude toward rehearsal.&lt;/p&gt;
&lt;h2&gt;For now: off the modern flute to the Baroque flute&lt;/h2&gt;
&lt;p&gt;Next Sunday there is no orchestra rehearsal because of spring break. So the pressure to keep on trying to improve my play (I still have a lot of work to do, especially in the Gershwin because I have not practiced it much) is lessened.&lt;/p&gt;
&lt;p&gt;Because of all the recent negative associations, I decided to take a short break from the modern flute altogether. For fun, I finally started getting serious about the Baroque flute.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://static.musiciansfriend.com/derivates/18/001/590/857/DV016_Jpg_Large_464489.901_black_matte.jpg&quot; alt=&quot;Aulos Baroque flute A440&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve begun practicing the Baroque flute, starting with D major work and now adding G major also. The technique is rather different from that for the modern flute. I have to admit it is a frustrating instrument, but it has its own odd charm.&lt;/p&gt;
&lt;p&gt;When I feel like it again (probably by next Monday), I&apos;ll return to continuing practicing modern flute, getting prepared for the next orchestra rehearsal.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I&apos;m having some musical rough spots, but I&apos;m still very much in love with music and always find some outlet somehow.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Geek Out Day #5: &quot;Change&quot;</title><link>https://franklinchen.com/blog/2012/03/03/pittsburgh-geek-out-day-number-5-change/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/03/03/pittsburgh-geek-out-day-number-5-change/</guid><pubDate>Sat, 03 Mar 2012 22:50:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://lh6.googleusercontent.com/-CnVxxnybT44/T1ORwo74oOI/AAAAAAAAADk/9pWgPeeCN3k/s912/DSC_2585.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://lh6.googleusercontent.com/-CnVxxnybT44/T1ORwo74oOI/AAAAAAAAADk/9pWgPeeCN3k/s912/DSC_2585.jpg&quot;&amp;gt;[image: Pittsburgh Geek Out Day]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Today was the fifth session held of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt;. We met this time at Vivisimo. The topic was &quot;change&quot;.&lt;/p&gt;
&lt;p&gt;A summary of our topics is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/sessions/2012&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/sessions/2012&quot;&amp;gt;here&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;There are &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/photos&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/photos&quot;&amp;gt;photos&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Leaving early&lt;/h2&gt;
&lt;p&gt;I was said that I had to leave early at 11 AM, the first time that I&apos;ve left a Pittsburgh Geek Out day event early; I had to attend an afternoon birthday party with Abby.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Flute practice: dealing with burnout and injury</title><link>https://franklinchen.com/blog/2012/02/27/flute-practice-dealing-with-burnout-and-injury/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/27/flute-practice-dealing-with-burnout-and-injury/</guid><pubDate>Mon, 27 Feb 2012 11:27:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/left-hand.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, I attended yet another &lt;a href=&quot;/blog/2012/02/22/flute-progress-still-hanging-in-there/&quot;&gt;rehearsal&lt;/a&gt; of the &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;Carnegie Mellon All-University Orchestra&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I did this while feeling burned out and injured.&lt;/p&gt;
&lt;h2&gt;Burnout and injury&lt;/h2&gt;
&lt;p&gt;In the past couple of days, I have experienced decreased desire to practice flute, although by changing up my material, I did manage to get some decent sessions in. Still, I could tell that I was beginning to risk burnout.&lt;/p&gt;
&lt;p&gt;In addition to mental fatigue, my &lt;a href=&quot;/blog/2012/02/14/flute-progress-report-day-of-reckoning-approaches/&quot;&gt;left forefinger soreness&lt;/a&gt; got worse in the past couple of days, such that yesterday, I didn&apos;t practice before rehearsal. I started experiencing &lt;a href=&quot;https://www.jennifercluff.com/lineup.htm#indentation&quot;&gt;tingling and numbness&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://theskooloflife.com/wordpress/sometimes-its-best-to-call-it-a-day/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://theskooloflife.com/wordpress/sometimes-its-best-to-call-it-a-day/&quot;&amp;gt;Sometimes it&apos;s best to call it a day.&amp;lt;/span&amp;gt; So I decided yesterday that today, I would take a day completely off from practicing my flute, the first break I have given myself since January 19.&lt;/p&gt;
&lt;h3&gt;Injury&lt;/h3&gt;
&lt;p&gt;Clearly I need a real strategy to take care of the side of my left finger.&lt;/p&gt;
&lt;p&gt;It is pretty easy to get injured playing music. There are many unnatural positions and movements to work with to make as relaxed as possible. My favorite book for musicians, &lt;a href=&quot;https://musiciansway.com/&quot;&gt;&quot;The Musician&apos;s Way&quot;&lt;/a&gt; has two entire chapters on injury prevention.&lt;/p&gt;
&lt;p&gt;The next time I pick up my flute, I will focus on what I might be doing that causes particular stress on my left finger, and try to adjust. Earlier in my practice, I had problems with my right pinkie finger and solved them, so I have hope of treating my left finger better also. I have read about balance points, using the chin, etc.&lt;/p&gt;
&lt;h2&gt;My instrument&lt;/h2&gt;
&lt;p&gt;One problem that I definitely have is that the instrument I have is not optimal for me, and I know it. My main fundamental problem (and this has been a problem for me with piano, guitar, ukulele) is that I have a small hand and short fingers. There are solutions to this problem for the flute. One very common option that would immediately solve some of my problems is the &lt;a href=&quot;https://www.flutesonline.com/in_offg.htm&quot;&gt;offset G&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.flutesonline.com/shopping/in_offg.jpg&quot; alt=&quot;Offset G flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve always thought that I would like to get an offset G flute when I &quot;upgrade&quot; from my intermediate student flute. &lt;strong&gt;Now I&apos;m thinking I should do this sooner rather than later.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;No excuse&lt;/h3&gt;
&lt;p&gt;Another book on music practice that I enjoy, Madeline Bruser&apos;s &lt;a href=&quot;https://artofpracticing.com/&quot;&gt;&quot;The Art of Practicing&quot;&lt;/a&gt;, has an anecdote (page 107) about a flutist, Janet Weiss, who found that the traditional flute did not fit her hand, and became a pioneer in redesigning it. Weiss was quoted as saying, &quot;The instrument we&apos;re playing is incorrect for many people... it&apos;s like trying to dance in a pair of shoes that don&apos;t fit.&quot;&lt;/p&gt;
&lt;p&gt;Indeed! If we love music enough, we should take the initiative to make sure that we are not hampered by our instruments. Just as, I love running and hiking, and struggled with bad footwear for years, decades, until I solved most of my problems, by moving toward &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers&lt;/a&gt; shoes that do not cramp my very wide feet and do not introduce cushioning that causes me to mess up my knees and shins and ankles.&lt;/p&gt;
&lt;p&gt;We have to do what we have to do. We can&apos;t just complain that other people are lucky and mass-produced clothing and tools work for them.&lt;/p&gt;
&lt;h2&gt;The orchestra rehearsal last night&lt;/h2&gt;
&lt;p&gt;I was still struggling at rehearsal last night. I still cannot play all of the music at full speed. If it were entirely up to me, I would improve at my own pace, rather than feel forced to tackle material that is currently more beyond me than I&apos;d like. But in real life, we often have to cut corners. The question is, which corners?&lt;/p&gt;
&lt;p&gt;One option is to just bumble through everything in an equally mediocre way. I don&apos;t see how that would help the orchestra&apos;s concert performance or my own long-term development. So I have chosen to refine what is easiest, and get that working fully, while &quot;giving up&quot;, at least temporarily, on what is most out of reach. I&apos;ve been closing the gap, and believe that I can close it within another three weeks. That would mean I will feel fully ready probably two weeks before the actual concert.&lt;/p&gt;
&lt;p&gt;Everyone else is also still improving. We don&apos;t sound very good right now, even at slowish speeds. But we are sounding better every week! That&apos;s what matters. It&apos;s exciting to feel us coming together more and more.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m dealing with a temporary setback in motivation and physical condition right now, but hope to bounce back tomorrow. &lt;strong&gt;The show must go on.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Snowing means sambar at Coriander India Grill</title><link>https://franklinchen.com/blog/2012/02/26/snowing-means-sambar-at-coriander-india-grill/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/26/snowing-means-sambar-at-coriander-india-grill/</guid><pubDate>Sun, 26 Feb 2012 12:10:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/store-front.jpg&quot; alt=&quot;Coriander Grill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Yesterday, there was snow in Pittsburgh (almost all melted today, of course).&lt;/p&gt;
&lt;p&gt;Abby and I had originally planned to be going on a &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/50162262/&quot;&gt;Meetup hike at Ohiopyle&lt;/a&gt;, carpooling with John, but on Friday we bailed out because of the weather forecast. We&apos;ve done that hike a couple of times before, and will certainly do it again when it&apos;s repeated in warmer weather anyway.&lt;/p&gt;
&lt;p&gt;Snow, however little there is of it, always makes me want to eat &lt;a href=&quot;https://en.wikipedia.org/wiki/Sambar_(dish)&quot;&gt;sambar&lt;/a&gt;. I love Indian food, and for some reason, I especially like sambar. Once every month or two, I crave going to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.coriandergrill.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.coriandergrill.com/&quot;&amp;gt;Coriander India Grill&amp;lt;/span&amp;gt; in Squirrel Hill, just a couple of blocks from where we live, to eat sambar and other good stuff. We&apos;ve been to Coriander Grill several times, on different days and for lunch and dinner. There has been inconsistency, but I have reason to believe that lunch buffet on Saturday is a good time to go to Coriander.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/sambar.jpg&quot; alt=&quot;Sambar&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So the three of us went to Coriander for lunch.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-13)&lt;/h2&gt;
&lt;p&gt;Abby and I went to Coriander Grill for a Sunday dinner buffet yesterday, because we were hungry after a long hike, and I thought it would be a good idea.&lt;/p&gt;
&lt;p&gt;We hadn&apos;t been to Coriander for a while. They restricted their buffet days and increased the price. What we didn&apos;t realize was that they also restricted the selection severely. Also, they kept on running out of food and not refilling frequently enough. Finally, we didn&apos;t feel too well afterwards. I had a sleepless night.&lt;/p&gt;
&lt;p&gt;I was very, very disappointed, and can no longer recommend Coriander Grill for their buffet. It is, of course, possible that their regular menu is still fine.&lt;/p&gt;
&lt;h2&gt;More on Coriander Grill&lt;/h2&gt;
&lt;p&gt;The non-buffet menu at Coriander Grill is substantial. Abby and I have been there for dinner and sampled their &lt;a href=&quot;https://en.wikipedia.org/wiki/Goa&quot;&gt;Goa&lt;/a&gt; Portuguese meat-based selections, for example. They also have Indian-Chinese dishes.&lt;/p&gt;
&lt;p&gt;The lunch buffet is varied enough, and rotates, such that there is always something different there when we go.&lt;/p&gt;
&lt;h2&gt;Preparation for lunch&lt;/h2&gt;
&lt;p&gt;You might be thinking, &quot;Preparation for eating at a lunch buffet?&quot;&lt;/p&gt;
&lt;p&gt;You bet. Eating at a buffet is &lt;em&gt;serious business&lt;/em&gt;, not to be undertaken lightly. It requires preparation of &lt;em&gt;mind, body, and spirit&lt;/em&gt;. (For amusement, check out this blog post on the &lt;a href=&quot;https://web.archive.org/web/20241101205731/https://milkmiracle.net/2010/09/25/buffet/&quot;&gt;proper way to eat an an Indian buffet&lt;/a&gt;; please note that I am nowhere as &quot;serious&quot; as this guy, however.)&lt;/p&gt;
&lt;h3&gt;Fasting&lt;/h3&gt;
&lt;p&gt;The number one rule of eating at a buffet is, I plan to eat &lt;em&gt;a lot&lt;/em&gt;. A lot of &lt;em&gt;variety&lt;/em&gt;, and also a lot of volume. To do this effectively, fasting is necessary.&lt;/p&gt;
&lt;p&gt;I believe that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.marksdailyapple.com/fasting/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.marksdailyapple.com/fasting/&quot;&amp;gt;intermittent fasting&amp;lt;/span&amp;gt; is a good thing. I even believe that intermittent bingeing is a good thing. We are evolved to adapt to changes in food availability. Our bodies and minds are not designed to do the same thing over and over again, because then adaptation kicks in and we lose our physical and mental sharpness.&lt;/p&gt;
&lt;p&gt;It turns out that I didn&apos;t eat very much on Friday (and had lost some weight during the week that I needed to make up), so on Saturday morning, when we decided to eat at Coriander, I was already partially prepared. Skipping breakfast was of course mandatory.&lt;/p&gt;
&lt;h3&gt;Exercise&lt;/h3&gt;
&lt;p&gt;I did half an hour of intense exercise before lunch. I have learned from experience that exercise right before eating (whether for a buffet or just an ordinary meal) is effective in reducing gain of fat, redirecting toward muscle gain.&lt;/p&gt;
&lt;p&gt;In addition, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://ezinearticles.com/?Fasted-Cardio---Exercise-on-an-Empty-Stomach&amp;amp;id=4979785&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://ezinearticles.com/?Fasted-Cardio---Exercise-on-an-Empty-Stomach&amp;amp;id=4979785&quot;&amp;gt;exercising on an empty stomach&amp;lt;/span&amp;gt; has additional benefits. Again, think about evolution. Our hunter-gatherer ancestors did not have 24/7 access to junk food at all times.&lt;/p&gt;
&lt;p&gt;Note: usually, I do &lt;em&gt;not&lt;/em&gt; exercise on a fully empty stomach, because there are drawbacks as well, as I learned from experience. Generally, I have found that eating a handful of nuts and possibly some dried fruit before exercising is optimal for me, in giving me some energy flow while keeping my head clear.&lt;/p&gt;
&lt;h3&gt;Knowing what not to eat&lt;/h3&gt;
&lt;p&gt;There is no avoiding fatty, salty, starchy, sugary foods at a buffet. That&apos;s part of the full experience. And that&apos;s why I don&apos;t eat at a buffet often, even a nice one like Coriander&apos;s just blocks away from home.&lt;/p&gt;
&lt;p&gt;But there are some guidelines that are very useful. The main thing is, I &lt;em&gt;never&lt;/em&gt; eat rice or bread at a buffet. You don&apos;t have to be &lt;a href=&quot;/categories/paleo/&quot;&gt;paleo&lt;/a&gt; or on some official low-carb diet to know that this is not worth the money, the bloat in your stomach, the wrecked blood sugar, and the fat gain.&lt;/p&gt;
&lt;p&gt;At an Indian buffet, I&apos;m not really going to eat paleo-style. However, I&apos;ll try to take it easy on breaded foods and especially the potatoes.&lt;/p&gt;
&lt;h2&gt;Lunch buffet&lt;/h2&gt;
&lt;p&gt;The lunch buffet offers two soups, a good selection of hot foods (including both meat/poultry/fish and vegetarian selections), and a cold section of salad, fruit, dessert.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/two-soups.jpg&quot; alt=&quot;Two soups provided&quot; /&gt;
&lt;img src=&quot;../../assets/images/coriander-grill/buffet-left.jpg&quot; alt=&quot;Left side of warm buffet&quot; /&gt;
&lt;img src=&quot;../../assets/images/coriander-grill/buffet-right.jpg&quot; alt=&quot;Right side of warm buffet&quot; /&gt;
&lt;img src=&quot;../../assets/images/coriander-grill/buffet-cold.jpg&quot; alt=&quot;Cold buffet&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;What I ate&lt;/h2&gt;
&lt;p&gt;I ate five rounds of food for lunch. (Yes, this was basically my meal for the entire day. In the evening yesterday, I did eat an apple and a snack, but no more than that.)&lt;/p&gt;
&lt;p&gt;The first round (which I forgot to take a photo of), I ate a plate of hot food (Indian-Chinese chicken, fried veggie fritters, spinach, cauliflower/potatoes) and a full cup of sambar. I know the fried, breaded veggie fritters are not the healthiest food or buffet-optimal, but I enjoy having some.&lt;/p&gt;
&lt;p&gt;For round 2, I had a bit of creamy chicken, vegetable korma, chickpeas, lentil dal, and more of the cauliflower/potatoes (I love that stuff). I am not a fan of creamy chicken or korma, but I always try a little bit of it because it&apos;s there. I do very much like chickpeas and dal.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/round-2.jpg&quot; alt=&quot;Round 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For round 3, I got more chickpeas, more dal, more spinach, more cauliflower/potatoes, my last veggie fritter, and a Tandoori-style chicken leg.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/round-3.jpg&quot; alt=&quot;Round 3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For round 4, I got more Indian-Chinese chicken, more spinach, more chickpeas, more cauliflower/potatoes, and another cup of sambar! Halfway through this plate, I knew I was basically done eating.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/round-4.jpg&quot; alt=&quot;Round 4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For my final round, I got a bit of salad (tomato, cucumber, lettuce, pickle, with some chutney), and a bit of cantaloupe and honeydew, and a wedge of lime. I like sucking lemon or lime at the end of a meal.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/coriander-grill/round-5.jpg&quot; alt=&quot;Round 5&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That was a lot of food! That was even more food than I normally eat at a buffet.&lt;/p&gt;
&lt;p&gt;Abby and John ate some sugary desserts, but I had no room and no desire to have some myself. As I &lt;a href=&quot;/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/&quot;&gt;remembered recently&lt;/a&gt; at Gullifty&apos;s, eating sugary desserts does not work well for me. I&apos;ve resolved to do it only if something seems like it will be particularly tasty.&lt;/p&gt;
&lt;h2&gt;Consequences&lt;/h2&gt;
&lt;p&gt;I weighed myself when I got home. I had gained four pounds from the moment I left home to the point of return.&lt;/p&gt;
&lt;p&gt;I did end up getting sleepy in the afternoon and took a nap. I needed it anyway though, and I felt great the rest of the day, like I&apos;d rebooted my body and satisfied some cravings.&lt;/p&gt;
&lt;p&gt;I did gain quite a bit of extra weight, and pushed my fat percentage by one percent, but I know from experience this is temporary. My appetite today has been low, so I have naturally been eating less, and in a day or two I will have returned to my &quot;normal&quot; weight and fat percentage.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I like eating at buffets once every month or two. Having variety and knowing that I am giving my permission to eat all I want, rather than my usual policy of being much more moderate, adds a bit of excitement to my life, while probably also giving physical health benefits.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-11-08)&lt;/h3&gt;
&lt;p&gt;This year a new Indian restaurant opened in Pittsburgh, &lt;a href=&quot;https://www.allindiapgh.com/&quot;&gt;All India&lt;/a&gt;. It is by far my favorite Indian restaurant in town now.&lt;/p&gt;
</content:encoded></item><item><title>When can you call yourself an expert at something?</title><link>https://franklinchen.com/blog/2012/02/24/when-can-you-call-yourself-an-expert-at-something/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/24/when-can-you-call-yourself-an-expert-at-something/</guid><pubDate>Fri, 24 Feb 2012 20:47:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I encountered on a blog that I follow, &lt;a href=&quot;https://expertenough.com&quot;&gt;Expert Enough&lt;/a&gt;, the question, &lt;a href=&quot;https://web.archive.org/web/20191020015055/https://expertenough.com/1594/call-yourself-an-expert&quot;&gt;&quot;When Can You Call Yourself An Expert?&quot;&lt;/a&gt; There have been some interesting comments on the blog. Here is my own thinking on the subject.&lt;/p&gt;
&lt;p&gt;The short answer: &lt;strong&gt;I try not to call myself an expert at anything&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A short elaboration of the short answer: &lt;strong&gt;I try to approach everything as a beginner&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;The arrogance of &quot;expertise&quot;&lt;/h2&gt;
&lt;p&gt;When I was younger (and that even includes myself from a year or two ago), I sometimes liked to think of myself as an &quot;expert&quot; at something or other. Sometimes I just held this thought in my mind privately. Sometimes I would say things that reflected my arrogance. I regret all that now. It did not serve any useful purpose for me to either &lt;em&gt;believe&lt;/em&gt; that I was an &quot;expert&quot; or to try to display or boast of my expertise.&lt;/p&gt;
&lt;p&gt;I know I sometimes still slip into this mindset, but the difference now is that I actually actively believe that this mindset is harmful and not helpful (so if you catch me displaying this mindset, please gently admonish me). Real &quot;expertise&quot; is not an attitude or a property of a human being, some kind of moral virtue. It is something that someone else believes, as a result of some kind of skillful or helpful action, whether in something created or advice given with an open heart, and received with recognition and gratitude.&lt;/p&gt;
&lt;p&gt;I try to get better at stuff, but without aiming for some label of &quot;expertise&quot;. I just want to get better. Adding the ego into the picture only wastes energy that could be spent on getting better.&lt;/p&gt;
&lt;h2&gt;Beginner&apos;s mind&lt;/h2&gt;
&lt;p&gt;On a related note: privately, even during my arrogant moments, I have always cultivated &lt;a href=&quot;https://en.wikipedia.org/wiki/Shoshin&quot;&gt;&quot;beginner&apos;s mind&quot;&lt;/a&gt;. There&apos;s always something deeper to appreciate or integrate from the basics of one&apos;s activities. Amusingly, in the past I used to return to the basics out of fear of having missed something, having not really mastered something. But then I realized that one never &quot;masters&quot; anything that is worthwhile. All worthwhile pursuits are endless, never to be &quot;mastered&quot; as such. I lost my fear and simply enjoyed exploring things anew.&lt;/p&gt;
&lt;p&gt;For example, when I learn a new &lt;a href=&quot;/categories/dancing/&quot;&gt;dance&lt;/a&gt;, I don&apos;t go around thinking, &quot;Oh, I&apos;ve done other dancing, so this is going to be easy.&quot; The fact is, if you&apos;ve done enough different styles of dance, you realize that they are all different, and no, everything is not just some kind of variant of a unified superior dance technique. Furthermore, even in a particular dance that seems &quot;simple&quot;, there are &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.newyorklifecoaching.com/2011/08/10/once-a-beginner-always-a-beginner-why-its-okay-to-be-a-novice&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.newyorklifecoaching.com/2011/08/10/once-a-beginner-always-a-beginner-why-its-okay-to-be-a-novice&quot;&amp;gt;endless subtleties&amp;lt;/span&amp;gt;. Take the waltz, where the basic turning step seems simple enough. You could do the waltz a couple of times and think to yourself, &quot;OK, I know this step, so I want to learn some more steps&quot;. But no, that one step is enough to last a lifetime of practice. The amount of swing, the preparation by the upper body, the lilt, the timing of the 1-2-3 (not as a metronome), the exact acceleration of a turning step, all these things are a matter of lifetime refinement and experimentation and delight. I never think, &quot;Oh, waltz has only one or two steps, so I&apos;ve learned it, and it&apos;s a boring dance, and now I want to learn some other dance with five new steps I&apos;ve never seen before&quot;.&lt;/p&gt;
&lt;p&gt;Or when I play the &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt; (which I very much want to say I&apos;m still pretty &quot;bad&quot; at, but the corollary of not claiming expertise is that I&apos;m also not supposed to denigrate myself either; false humility is just a passive-aggressive form of arrogance), I&apos;m still learning how to play a long tone well. And I know I&apos;m going to be doing this the rest of my life. There&apos;s never going to be a time when I feel that I have &quot;mastered&quot; playing the most beautiful single long note, and then never have to go back to practicing that again. This isn&apos;t &quot;perfectionism&quot;, just the beautiful reality that if we appreciate everything in life, we always have more to learn, more to explore, and will never be bored.&lt;/p&gt;
&lt;p&gt;Or as I continue improving my &lt;a href=&quot;/categories/programming/&quot;&gt;computer programming&lt;/a&gt; skills, I keep in mind how incredibly complex and difficult the task of programming actually is, and how great it is that there are all these &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;local groups&lt;/a&gt; that I attend, with all of us knowing that we have much to learn about our craft.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am grateful to have the opportunities to always find things to learn, to correct my mistakes and misunderstandings, and to learn from others (the Web has been an amazing source and amplifier of all these opportunities).&lt;/p&gt;
&lt;p&gt;Every day I wake up, I&apos;m a beginner, and I love that. I&apos;m a beginner at running, at writing, at eating, at dancing, at programming, at sitting, at loving, at hearing. It&apos;s an amazing world, an amazing life.&lt;/p&gt;
&lt;p&gt;Help me stay a beginner!&lt;/p&gt;
</content:encoded></item><item><title>Saying No in order to say Yes</title><link>https://franklinchen.com/blog/2012/02/23/saying-no-in-order-to-say-yes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/23/saying-no-in-order-to-say-yes/</guid><pubDate>Thu, 23 Feb 2012 20:23:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve been having to say &quot;No&quot; a lot to events and activities that appeal to me, in order to make room for &quot;Yes&quot;. Time and energy are finite for us every day and every week, and our &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://buddhism.about.com/b/2011/12/12/desires-are-inexhaustible.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://buddhism.about.com/b/2011/12/12/desires-are-inexhaustible.htm&quot;&amp;gt;desires are inexhaustible&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Last year, I wrote a post about &lt;a href=&quot;/blog/2011/10/18/disagreement-on-the-use-of-time/&quot;&gt;how I use my time&lt;/a&gt;. A lot has changed since then, with various rebalancings.&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;h3&gt;Listening to music&lt;/h3&gt;
&lt;p&gt;I still &lt;a href=&quot;/blog/2011/10/02/i-love-music-but-rarely-listen-to-it-now/&quot;&gt;do not listen to music much&lt;/a&gt;, but I do more of it now than I did last year. I still minimize listening to recorded music (lately I listen to specific music that I am playing myself or attempting to), preferring to listen to live music where I don&apos;t even know the program in advance. In particular, I&apos;ve found it very stimulating to attend more &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://music.cmu.edu/index.php?sub_page=events&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://music.cmu.edu/index.php?sub_page=events&quot;&amp;gt;Carnegie Mellon School of Music Convocations&amp;lt;/span&amp;gt;, which are targeted toward music students. One of my earliest blog posts was about going to a special convocation featuring &lt;a href=&quot;/blog/2011/09/22/byron-janis-on-overcoming-adversity&quot;&gt;Byron Janis&lt;/a&gt;. I&apos;ve been to some others since then.&lt;/p&gt;
&lt;p&gt;The group &lt;a href=&quot;https://www.fluteforce.org/&quot;&gt;Flute Force&lt;/a&gt; was here about a month ago for a convocation and of course I had to go, given how I&apos;d gotten serious about playing flute. They gave a nice concert of a variety of music, all of which was unfamiliar to me and stimulating.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/flute-force/flute-force-1.jpg&quot; alt=&quot;Flute Force&quot; /&gt;
&lt;img src=&quot;../../assets/images/flute-force/flute-force-2.jpg&quot; alt=&quot;Flute Force&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today I went to a rather moving and thought-provoking presentation and performance by the violinist &lt;a href=&quot;https://www.myspace.com/sangeetosho&quot;&gt;Sangeet-Richard Downs&lt;/a&gt;, who was a CMU graduate. (I will write a blog post later about &lt;a href=&quot;https://www.facebook.com/RichardDownsmusic&quot;&gt;him&lt;/a&gt; and his message that completely resonates with me.)&lt;/p&gt;
&lt;p&gt;There was a &quot;conventional&quot; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.shadysideacademy.org/page.cfm?p=8593&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.shadysideacademy.org/page.cfm?p=8593&quot;&amp;gt;concert last Saturday&amp;lt;/span&amp;gt; by the Carnegie Mellon Chamber Orchestra that I was planning to take Abby to, and had already obtained tickets for, but this was an example of my saying &quot;No&quot; in order to say &quot;Yes&quot;: we decided instead to do &lt;a href=&quot;/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh&quot;&gt;French dancing&lt;/a&gt;. And there is no doubt we made the right decision.&lt;/p&gt;
&lt;h3&gt;Playing instruments&lt;/h3&gt;
&lt;p&gt;Lately, I&apos;ve said &quot;No&quot; to practicing any musical instrument other than the &lt;a href=&quot;/blog/2012/02/22/flute-progress-still-hanging-in-there&quot;&gt;modern flute&lt;/a&gt;. I no longer practice the recorder, and have had to say &quot;No&quot; to the Friday evening gatherings that last year I was rather enjoying, and had led to my &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;performing at Phipps Conservatory&lt;/a&gt;. I told the recorder gang that I was going to return to recorder after my April 15 orchestra concert. This is an example of &quot;No&quot; meaning not &quot;never again&quot; but simply &quot;not now&quot;.&lt;/p&gt;
&lt;p&gt;Also, just today, Abby said the woman who &lt;a href=&quot;/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/&quot;&gt;lent us an accordion&lt;/a&gt; for me to try out in case I wanted to buy it and take accordion needed to know whether we were buying it. Since I have barely touched accordion all these months, and will not be doing so for probably another half year at least, I said &quot;No&quot;, I am not prepared to buy it now. In the past I have bought stuff to use &quot;sometime&quot;, and this has only caused &lt;a href=&quot;/blog/2011/10/19/really-taking-up-the-challenge-of-minimalism/&quot;&gt;clutter&lt;/a&gt;. (Yes, we are still incrementally decluttering, getting rid of stuff we don&apos;t use. Just yesterday, I decided to throw away the remainder of my trophy and medal collections that no longer mean anything, except that I am still saving one trophy, from my winning the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; Championship some years ago; I&apos;m thinking of giving it back to the club so that they can remove my name plate and reuse it.)&lt;/p&gt;
&lt;h2&gt;Dancing&lt;/h2&gt;
&lt;p&gt;One big change since last year is that Abby and I have gotten back into dancing again. Saying &quot;Yes&quot; to dancing has, of course, meant saying &quot;No&quot; to other things. For example, this year I have approximately halved my former blog output. I also reduced my Web reading.&lt;/p&gt;
&lt;h2&gt;Meditation&lt;/h2&gt;
&lt;p&gt;Last year, I didn&apos;t have a daily meditation practice. &lt;a href=&quot;/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/&quot;&gt;Now I do&lt;/a&gt;. Just ten minutes a day in the morning, but it makes a difference. Saying &quot;Yes&quot; to meditation meant saying &quot;No&quot; to obsessively checking email and the like upon getting out of bed.&lt;/p&gt;
&lt;h2&gt;Computer usage and reading books&lt;/h2&gt;
&lt;p&gt;A final tradeoff to mention is that my new habit of getting off the computer earlier in the evening, well before sleeping, has led me to do more paper book reading. Saying &quot;Yes&quot; to reading more books has been a good thing. I plan to start writing up reviews of the books I&apos;ve been reading.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&quot;No&quot; doesn&apos;t just mean deprivation. It means making room for &quot;Yes&quot; too.&lt;/p&gt;
&lt;p&gt;What have you happily said &quot;No&quot; to that you wanted to do this year but decided not to do?&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;Ironically, I was just getting going with saying too much Yes even just as I was saying No, as I ended up taking two Coursera courses starting in late February: &lt;a href=&quot;/blog/2012/04/13/free-course-review-software-engineering-for-software-as-a-service-part-i-from-coursera/&quot;&gt;&quot;Software Engineering for Software as a Service (Part I)&quot;&lt;/a&gt; and &lt;a href=&quot;/blog/2012/06/16/review-of-coursera-course-model-thinking/&quot;&gt;&quot;Model Thinking&quot;&lt;/a&gt;. As a result, I was really swamped from late February to June. I didn&apos;t even have time to finish up reviews of the courses once I completed them, and only tried to fill in the gaps almost two years later!!&lt;/p&gt;
&lt;p&gt;The temptation after saying No is to take on new Yes. In retrospect, I should have been more careful.&lt;/p&gt;
</content:encoded></item><item><title>Flute progress after one month in orchestra: still hanging in there</title><link>https://franklinchen.com/blog/2012/02/22/flute-progress-still-hanging-in-there/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/22/flute-progress-still-hanging-in-there/</guid><pubDate>Wed, 22 Feb 2012 20:19:00 GMT</pubDate><content:encoded>&lt;p&gt;It was exactly one month ago, January 22, when &lt;a href=&quot;/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/&quot;&gt;I joined&lt;/a&gt; the &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;Carnegie Mellon All-University Orchestra&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another week has gone by, and what I thought might be a &lt;a href=&quot;/blog/2012/02/14/flute-progress-report-day-of-reckoning-approaches/&quot;&gt;day of reckoning&lt;/a&gt; has come and gone, and I am still playing the flute in the CMU AUO and have not dropped out!&lt;/p&gt;
&lt;p&gt;Here is a sample of the hardest music from Bernstein&apos;s &quot;Symphonic Dances from West Side Story&quot; that I&apos;m still struggling to play correctly, cleanly, and in tempo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/flute-music/west-side-story-fugue.jpg&quot; alt=&quot;West Side Story: Fugue&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/flute-music/west-side-story-rumble.jpg&quot; alt=&quot;West Side Story: Rumble&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It is not very visible from my photos, but I have a huge number of pencil markings on my copy of the score.&lt;/p&gt;
&lt;p&gt;The story as of now:&lt;/p&gt;
&lt;h2&gt;Practice in the past week&lt;/h2&gt;
&lt;h3&gt;Getting down the basics&lt;/h3&gt;
&lt;p&gt;Last Wednesday, I continued with focusing purely on improving technique with the Rubank method book. I did not even look at the Gershwin or Bernstein music for orchestra. I simply recognize that I have to focus on making fundamental progress in technique and trust that this will enable me to actually play the hard music at hand.&lt;/p&gt;
&lt;p&gt;I have not written much about this strategy, but I feel that it is effective and that many &lt;em&gt;amateurs&lt;/em&gt; do not practice or pursue their various life activities with this discipline, and therefore fall short of reaching their potential. And then typically, we amateurs make excuses, blaming lack of talent or lack of time for our slow progress or quick plateau at a mediocre level.&lt;/p&gt;
&lt;p&gt;There is something in the general culture that encourages immediate gratification at the expense of true &lt;em&gt;craft&lt;/em&gt;. Yes, it is true that we cannot give our all toward our hobbies, the way we might for what we consider our jobs, but at the same time, if you add up the number of hours we spend at our hobbies, they actually do add up, and we might as well have made them count efficiently.&lt;/p&gt;
&lt;p&gt;For me to attack the hard passages of music prematurely without building up technique would be analogous to the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;never running before but aiming to run a marathon in four months, and jumping straight into trying to run 15 miles&lt;/li&gt;
&lt;li&gt;being a non-programmer and wanting to create a cool Web site in a month, but trying to read a book like &quot;Learn Web Programming in 7 Days&quot; and not really mastering concepts such as variables and functions&lt;/li&gt;
&lt;li&gt;never having cooked but deciding to make a really fancy and subtle French dish without mastering the basics of knife usage or the properties of butter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;People like shortcuts. But they usually do not succeed, and even if they do, don&apos;t provide a sustainable path of growth.&lt;/p&gt;
&lt;p&gt;My real goal isn&apos;t just to survive playing in an orchestra concert. That&apos;s actually just an incentive for my real goal, which is to improve my overall technique, so that I can continue to play music in any genre, any ensemble, as I wish.&lt;/p&gt;
&lt;h3&gt;An off day&lt;/h3&gt;
&lt;p&gt;That said, the next day, Thursday, I was feeling tired and unmotivated for practice. This happens sometimes. In fact, typically it happens once a week. I&apos;m human. I can&apos;t magically improve a huge amount every single day. Sometimes I&apos;m tired. Sometimes I backslide, and notes come out jumbled, slow, etc.&lt;/p&gt;
&lt;p&gt;This, too, is a part of life. I&apos;ve found the hard way that it&apos;s &lt;em&gt;never&lt;/em&gt; best to just push through and waste time and emotional energy. &lt;em&gt;Overtraining&lt;/em&gt; doesn&apos;t help. Sometimes it is best to just take a break. I generally prefer to take an &lt;em&gt;active&lt;/em&gt; break.&lt;/p&gt;
&lt;p&gt;For example, on Thursday I decided to put away the technique practice, which was not going well, and instead have fun sight-reading a bunch of music I had gotten out of the library earlier. I played around sight-reading &lt;a href=&quot;https://www.amazon.com/Play-Puccini-Arias-Transcribed-Flute/dp/0634046209/&quot;&gt;transcribed opera arias from Puccini&lt;/a&gt; (I secretly love singing them in Italian even though I&apos;m not a soprano or female!), &lt;a href=&quot;https://www.amazon.com/Debussy-Album-Flute-Piano/dp/9043129712/&quot;&gt;transcriptions from Debussy&apos;s piano music&lt;/a&gt; (I want to play the original piano pieces some day), and a &lt;a href=&quot;https://www.amazon.com/World-Music-Cuba-Flute-play-along/dp/3702465804&quot;&gt;World Music Cuba&lt;/a&gt; album. It was a lot of fun playing real, lyrical music. I especially liked playing the Cuban music, since I always dreamed about doing that back when I was dancing salsa, rumba, cha cha, and bolero (I also have a goal of seriously singing this genre of music).&lt;/p&gt;
&lt;p&gt;Note: eventually I would like to actually practice some of these music arrangements seriously.&lt;/p&gt;
&lt;h4&gt;(Update of 2012-11-17)&lt;/h4&gt;
&lt;p&gt;Nine months after this blog post, I &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;sang bolero for the first time in my life, to Abby&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-03-17)&lt;/h4&gt;
&lt;p&gt;Over a year later, I ended up playing selections from the World Music Cuba book &lt;a href=&quot;/blog/2013/03/17/finally-doing-some-latin-music-jamming-on-flute/&quot;&gt;at a party&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Continued practice&lt;/h3&gt;
&lt;p&gt;Friday and Saturday I was back doing technique, and Saturday I finally hit the CMU AUO music again. I noticed that I was playing the high notes on the flute better. Also, of course, I improved my speed and facility at many scales, but I won&apos;t bore with listing metronome numbers to indicate my progress.&lt;/p&gt;
&lt;h2&gt;Sunday&apos;s orchestra rehearsal&lt;/h2&gt;
&lt;h3&gt;Sectional for woodwinds&lt;/h3&gt;
&lt;p&gt;I arrived at 6:30 PM on Sunday for the woodwind sectional, but only one other person was there! People were running late, apparently. I was concerned when only three flutes (plus piccolo) showed up: did we lose another flute? (Later in the full rehearsal, two others joined us.)&lt;/p&gt;
&lt;p&gt;It turned out that in the woodwind sectional, collectively we were still struggling, and therefore I was not as out of place as I had feared I might be. It was a very useful rehearsal, in which many different instruments&apos; parts started falling in place. It was at this point that I realized that I was having trouble not only because of my own problems but also because other peoples&apos; problems were affecting me. I was having trouble coming in at the right time in many places not only because I was counting badly (although I&apos;ve been working steadily at improving my counting) but also because so many other lines were not coming in at the right place either, so I could not rely on listening to others as a way of finding my place. Anyway, we made huge progress in some very difficult music. I actually believe, for the first time, that we might be able to get this stuff working for the concert.&lt;/p&gt;
&lt;h3&gt;Full rehearsal&lt;/h3&gt;
&lt;p&gt;Maria kept on being disappointed in the full rehearsal, asking if we had actually listened to the music, because we were still having so much trouble. (Actually, I have the music and listen to the whole thing at least once every other day.) Perhaps it was a blessing in disguise that so many of us were still unprepared, because it enabled me to not be completely left behind, as we kept the tempos still on the slow side.&lt;/p&gt;
&lt;p&gt;Even so, there were sections in which I simply was unable to keep up. I feel that I really need to master most of them by next rehearsal.&lt;/p&gt;
&lt;h2&gt;This week&apos;s practice&lt;/h2&gt;
&lt;p&gt;My practice this week so far since the rehearsal has been good. I&apos;m still focusing on building technique.&lt;/p&gt;
&lt;p&gt;On Monday, I made significant improvements in my high notes with scales. I worked some with the Bernstein.&lt;/p&gt;
&lt;p&gt;On Tuesday, I continued Rubank, and went back to some real basics, playing long tones, working on control of dynamics, and relaxation. I did not touch orchestra music at all.&lt;/p&gt;
&lt;p&gt;Today, I did an abbreviated Rubank practice, then launched into much work on the Bernstein, to make things faster. As I do once or twice a week, I included a &quot;test&quot; for myself in which I played through all the problematic sections of the piece along with an actual recording. I&apos;m doing much, much better now. There is still hope that I might be able to play most of the piece at full speed by Sunday.&lt;/p&gt;
&lt;h2&gt;A look back to three months ago&lt;/h2&gt;
&lt;p&gt;It is amusing to look back to what I was still having trouble playing, as a flute beginner, three months ago. I was just starting to work through a collection of &quot;easy flute classics&quot;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/flute-music/moyse-easy-classics.jpg&quot; alt=&quot;Moyse Collection of Easy Flute Classics&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Compare these simple, slow scores with the Bernstein excerpts in the photos at the beginning of this blog post!&lt;/p&gt;
&lt;h2&gt;Recorder&lt;/h2&gt;
&lt;p&gt;Needless to say, I&apos;ve completely put away my recorders. I did go to the monthly meeting of the Pittsburgh chapter of the American Recorder Society on Sunday to play, but that is all I will do with recorder until after the April orchestra concert. I would like to get serious about recorder again for late spring and summer.&lt;/p&gt;
&lt;p&gt;Interestingly, I felt I was automatically slightly better at playing recorder even without touching it for a month. It&apos;s the cross-training effect. Music is music, whichever instrument you&apos;re playing: breath control, tone awareness, flexibility of fingers, etc. Even if I did sometimes forget my fingerings.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m still enjoying improving at flute and slowly getting closer to being able to play the second flute part of the Bernstein in its entirety. I get less and less panicky about being in the orchestra as I &quot;catch up&quot; according to plan.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Java User Group: Get Going with Git on Java Projects</title><link>https://franklinchen.com/blog/2012/02/21/pittsburgh-java-users-group-get-going-with-git-on-java-projects/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/21/pittsburgh-java-users-group-get-going-with-git-on-java-projects/</guid><pubDate>Tue, 21 Feb 2012 20:34:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://java.net/projects/pittjug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://java.net/projects/pittjug/&quot;&amp;gt;Pittsburgh Java User Group&amp;lt;/span&amp;gt; (&lt;a href=&quot;/categories/pittjug/&quot;&gt;PittJUG&lt;/a&gt;) had another meeting at the &lt;a href=&quot;https://www.pghtech.org/&quot;&gt;Pittsburgh Technology Council&lt;/a&gt;. &lt;a href=&quot;https://twitter.com/matthewmccull&quot;&gt;Matthew McCullough&lt;/a&gt; of &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; gave a talk &quot;Get Going with &lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt; on Java Projects&quot;.&lt;/p&gt;
&lt;p&gt;I arrived early and couldn&apos;t help admiring the view outside before entering the building as there was still daylight. Here are the Birmingham Bridge and the &lt;a href=&quot;https://en.wikipedia.org/wiki/Monongahela_River&quot;&gt;Monongahela River&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittjug-2012-02-21/birmingham-bridge.jpg&quot; alt=&quot;View of Birmingham Bridge from Pittsburgh Technology Council&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittjug-2012-02-21/monongahela.jpg&quot; alt=&quot;View across Monongahela River from Pittsburgh Technology Council&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I had a good time tonight.&lt;/p&gt;
&lt;h2&gt;Social time&lt;/h2&gt;
&lt;p&gt;PittJUG meetings are advertised as starting at 5:30 PM, although the talk starts at 6:00. These days I always try to get there by 5:30 in order to get a good seat, settle in, and eat pizza and socialize, and that&apos;s what I did today.&lt;/p&gt;
&lt;h2&gt;The talk&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittjug-2012-02-21/matthew-mccullough-git.jpg&quot; alt=&quot;Matthew McCullough of GitHub speaking on Git at PittJUG&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Matthew McCullough gave an energetic and clear presentation on some fundamentals of Git. There were good questions from the audience throughout, and he answered them well.&lt;/p&gt;
&lt;p&gt;The title of the talk was, I suppose, inaccurate, because there was not much that was Java-specific. It was more of a general introduction to Git. He is going to be doing &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghtech.org/networks/PittJug/events.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghtech.org/networks/PittJug/events.aspx&quot;&amp;gt;GitHub&apos;s Git Foundations Workshop tomorrow&amp;lt;/span&amp;gt;, covering much more of Git and details of Java environments. I am not attending this workshop, but based on his introductory presentation today, I&apos;m sure it will be great.&lt;/p&gt;
&lt;p&gt;I&apos;m not sure how to summarize his talk, since I came to it already having spent quite a bit of time learning and understanding Git from various sources, including working through many &lt;a href=&quot;https://gitimmersion.com/&quot;&gt;tutorials&lt;/a&gt;, reading excellent &lt;a href=&quot;https://progit.org/&quot;&gt;Web references&lt;/a&gt; and other books, and actually using it on a daily basis for some time now.&lt;/p&gt;
&lt;h3&gt;My learning style&lt;/h3&gt;
&lt;p&gt;I am definitely not yet an &quot;expert&quot; at Git (I have done some interactive rebasing, but nothing more complicated than that), so I felt it would be very useful to get an integrated personal view of what is important about Git and why, and Matthew was great at telling a story with his own words and emphases and personal anecdotes, such as moving &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://groovy.codehaus.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://groovy.codehaus.org/&quot;&amp;gt;Groovy&amp;lt;/span&amp;gt; over from &lt;a href=&quot;https://subversion.apache.org/&quot;&gt;Subversion&lt;/a&gt; to Git. I did end up taking quite a few notes even though I already &quot;knew&quot; most of what he talked about, because I liked various tips or analogies that he made. I find it highly valuable to get different narratives whenever deepening my understanding of something; in school and outside of school, I have always read multiple books in parallel, finding myself some book other than the &quot;official&quot; one, in order to broaden my perspective and as a robustness/redundancy measure, in case (as always happens), one source is flawed or confusing in some section.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoyed this PittJUG meeting and am motivated to continue to improve my understanding and use of Git. Actually, at work I am about to transition a legacy Subversion repository to Git. I expect we will get a lot of benefits from this transition, and I will report on the results after I effect the transition and observe how everyone operates under the new system.&lt;/p&gt;
</content:encoded></item><item><title>Enjoying more French dancing in Pittsburgh</title><link>https://franklinchen.com/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/</guid><pubDate>Mon, 20 Feb 2012 01:03:00 GMT</pubDate><content:encoded>&lt;p&gt;A month ago I reported on how Abby and I had our &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh&quot;&gt;first experience of French traditional dance&lt;/a&gt;. On Saturday, we went again to Skibo Gym at Carnegie Mellon University for another fun session of French dancing from 4:00 to 7:00 PM.&lt;/p&gt;
&lt;p&gt;We had a great time again, and afterwards joined the instructors and some other people in having dinner at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://gulliftys.us/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://gulliftys.us/&quot;&amp;gt;Gullifty&apos;s&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;In addition to some familiar faces, there were many new people we hadn&apos;t met before, and I got my office mate John to go too. Abby and I learned some dances that were not taught the last time, and we got to do more of the dances we had learned the last time.&lt;/p&gt;
&lt;p&gt;The male-female ratio was not so great this time: it would be nice to have more men attend these workshops and dances! If you are male and interested in learning French dance, come next month!&lt;/p&gt;
&lt;h2&gt;3-count bourrée&lt;/h2&gt;
&lt;p&gt;Last month, we had learned the 2-count bourrée, but this month we also added the 3-count. That&apos;s really fast and was a real workout!&lt;/p&gt;
&lt;h2&gt;Dances from last time&lt;/h2&gt;
&lt;p&gt;We went over the dances from last time also. Since they were no longer new to me, I felt freer to feel the music more and make the most of enjoying the dances.&lt;/p&gt;
&lt;p&gt;For example, in a very simple circle dance, I felt like lifting my body up when we swung our arms upward, and letting my body bend naturally to the &quot;1-2-3, down&quot; movement. Otherwise, just stepping endlessly like a rigid robot was getting quite boring.&lt;/p&gt;
&lt;p&gt;Last time, I was rather stiff and clumsy at the Schottische, waltz, and mazurka, because I was out of practice in these turning dances. This time I got more into the swing of things and remembered the fun I had doing ballroom dancing over ten years ago.&lt;/p&gt;
&lt;p&gt;There were two other circle dances from last time that we did again. I really enjoy these partner switching dances. Again, since I knew the moves already, I felt freer to improve my technique and personal expression.&lt;/p&gt;
&lt;h2&gt;Social dancing&lt;/h2&gt;
&lt;p&gt;A familiar musician, &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;Donna Isaac&lt;/a&gt;, played fiddle for us, with Gregory on his Irish flute again. I liked the different texture from last month&apos;s piano and flute, but I have to confess that missing a bass line made the music harder to dance to. In fact, I ended up starting to hum my own bass line to fill in the harmonies to feel less of a musical omission and help my rhythm while dancing!&lt;/p&gt;
&lt;p&gt;Again I thank everyone who was at the workshop and dance. It was a great group. I am so happy to be dancing again. I had put it aside for a couple of years after Abby and I got married, but now I envision our making it a regular part of our lives again!&lt;/p&gt;
&lt;p&gt;(Sorry, &lt;a href=&quot;/blog/2012/02/19/why-i-have-not-posted-many-photos-or-videos-recently-exploitation/&quot;&gt;I took no photos or videos this time&lt;/a&gt;. I spent the whole time immersed in dancing!)&lt;/p&gt;
&lt;h2&gt;Dinner at Gullifty&apos;s&lt;/h2&gt;
&lt;p&gt;Since people were talking about going to dinner afterwards, and this time Abby and I did not leave the dance early before it ended, we ended up joining six others for dinner. We helped pack stuff up and drove home and walked to Gullifty&apos;s. I hadn&apos;t been there in at least ten years. It&apos;s not my favorite idea of food, but I made the most of it.&lt;/p&gt;
&lt;p&gt;I ordered a &quot;pierogie burger&quot; for dinner. Only in Pittsburgh, ha! It was actually pretty good. It was a burger that had pierogies on top, all encased in a bun. It came with a pickle and fries. Not the kind of food I usually eat, but &quot;cheating&quot; once in a while is fun.&lt;/p&gt;
&lt;p&gt;Of course, we &quot;had&quot; to have dessert. Gullifty&apos;s is &quot;famous&quot; for desserts. Abby and I had reservations about continuing our &quot;cheating&quot; to desserts, but what the heck, we shared a triple chocolate cake. Unfortunately, we got a huge chunk of cake, as the waitress explained that it was the end of the cake so we got probably twice as much as we would ordinarily have received. We ate the whole thing, but I ended up feeling quite sugared out and bloated. That&apos;s the punishment for &quot;cheating&quot; way too much.&lt;/p&gt;
&lt;h2&gt;Blues and other dancing&lt;/h2&gt;
&lt;p&gt;People at dinner were talking about needing to take a nap afterwards and then going to a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghdancecenter.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghdancecenter.com/&quot;&amp;gt;blues dance&amp;lt;/span&amp;gt; at midnight. That&apos;s very late for Abby and me to be dancing! We&apos;ve never done blues dancing before but are interested in trying it out sometime (but not if it&apos;s too late at night).&lt;/p&gt;
&lt;p&gt;The dinner gang was also into Lindy hop. I did a little bit of Lindy and swing a decade ago, but never got much into it. Maybe Abby and I should check that out too. I know there&apos;s a lot of it here in Pittsburgh. In the past, I&apos;ve gone to &lt;a href=&quot;https://www.swingpgh.com&quot;&gt;Swing City&lt;/a&gt;. There&apos;s the &lt;a href=&quot;https://web.archive.org/web/20210928140017/http://coalcountry.org/swingdances.html&quot;&gt;Edgewood Club&lt;/a&gt; also.&lt;/p&gt;
&lt;p&gt;I&apos;m kind of interested in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chickenswing.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chickenswing.com/&quot;&amp;gt;Chicken Swing&amp;lt;/span&amp;gt; because it meets right at Carnegie Mellon.&lt;/p&gt;
&lt;p&gt;And there&apos;s West Coast swing in town too, at &lt;a href=&quot;https://www.pghwcs.com/&quot;&gt;Absolute Ballroom&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was a lot of fun dancing with Abby more again, and also with other people, and hanging out at dinner. I am not a dance maniac any more, and time is limited, but I am excited about continuing with Abby to further explore dances we haven&apos;t done much of before. It&apos;s great exercise and great socializing!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-05-14)&lt;/h2&gt;
&lt;p&gt;Three months later, I ended up beginning to &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;play French music on flutes&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Why I have not posted many photos or videos recently: exploitation?</title><link>https://franklinchen.com/blog/2012/02/19/why-i-have-not-posted-many-photos-or-videos-recently-exploitation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/19/why-i-have-not-posted-many-photos-or-videos-recently-exploitation/</guid><pubDate>Sun, 19 Feb 2012 23:03:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started blogging, I did so with the idea that I should probably include a relevant photo or video with each blog post. I never really adhered to that idea, but it was put into my head because I had read that readers really like photos. And indeed, I personally like to see relevant and original photos accompanying other people&apos;s blog posts. (I do get annoyed by photos that are stock photos, or sensationalist irrelevant photos (of celebrities or such) that seem designed to draw traffic.)&lt;/p&gt;
&lt;p&gt;I have not taken many photos or videos recently. Why? I am faced with a kind of moral dilemma I have not quite resolved.&lt;/p&gt;
&lt;h2&gt;Being present or distracted?&lt;/h2&gt;
&lt;p&gt;A while ago, a friend of mine (who is into photography) and I were discussing the nature of social media, and said he once had a blog on which he had put up cool photos (in fact, I remembered reading it years ago and enjoying his photos). But he observed that the desire to capture and post cool photos led to the phenomenon of no longer being fully present in his life experiences. And he didn&apos;t like that. He would be in a restaurant or in nature and focus on getting a good photo rather than on enjoying the food or the view.&lt;/p&gt;
&lt;h2&gt;Social gamesmanship?&lt;/h2&gt;
&lt;p&gt;Even worse, he would think about how people reading his blog might praise his photos.&lt;/p&gt;
&lt;p&gt;I suppose that all of us who deliberately choose have a public presence, through music, writing, or other means, sometimes face the question of why we do what we do. &lt;a href=&quot;https://web.archive.org/web/20120323053234/http://www.mintquotes.com:80/quote/19740-poets-treat-their-experiences-shamelessly-they-exploit-them/&quot;&gt;Friedrich Nietzsche famously said&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Poets treat their experiences shamelessly; they exploit them.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;We all know that we &quot;exploit&quot; our experiences; we learn from them, we share them. There is nothing wrong with that, and in fact, it is a virtue to share our experiences.&lt;/p&gt;
&lt;p&gt;But what if we deliberately have or report an experience just to show off? I don&apos;t like that. I think I do this rarely, but the availability of technology seems to make it much easier to disrupt our &quot;natural&quot; lives, in which we simply have experiences, rather than deliberately capture them at the very moment in high fidelity (through cameras or smartphones or the like).&lt;/p&gt;
&lt;h2&gt;Go by feel&lt;/h2&gt;
&lt;p&gt;I can&apos;t codify when I feel &quot;comfortable&quot; about taking a photo or not, but I&apos;ve been going by feel and defaulting to not taking a photo if I have the slightest twinge of uncertainty.&lt;/p&gt;
&lt;p&gt;Overall, I think the more I am an unseen observer, the more likely I am to feel OK about taking a photo. The more I am a participant (as in small social gatherings), the less I want to break the flow of my experience and possibly violate the spirit of the moment. So I just don&apos;t take photos any more when going out to eat with other people, for example.&lt;/p&gt;
&lt;h2&gt;Pinterest&lt;/h2&gt;
&lt;p&gt;Recently I tried to put my finger on why &lt;a href=&quot;/blog/2012/02/15/pinterest-confuses-me/&quot;&gt;I feel weird about Pinterest&lt;/a&gt;. I think I only realized today, while thinking about photography, that Pinterest represents in its purest form what I want to avoid. Maybe I will change my mind, but for now, I still have not put anything up on Pinterest, nor do I have an interest in doing so.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m not sure what the repercussions are, for my blog, of my relative reluctance to take a lot more photos and videos that I could. I suppose I have implicitly effected a compromise between the quality of my personal life and the entertainment value of my blog.&lt;/p&gt;
&lt;p&gt;Do you think there is anything to my rambling thoughts? What are your own personal rules or intuitions about when it is appropriate and enjoyable to take photos and upload them to share a story?&lt;/p&gt;
</content:encoded></item><item><title>Pinterest confuses me</title><link>https://franklinchen.com/blog/2012/02/15/pinterest-confuses-me/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/15/pinterest-confuses-me/</guid><pubDate>Wed, 15 Feb 2012 21:09:00 GMT</pubDate><content:encoded>&lt;p&gt;At some point some months ago I signed up for &lt;a href=&quot;https://pinterest.com/&quot;&gt;Pinterest&lt;/a&gt;, just because. I never used my account, but have been receiving notifications that people are following me. I presume this is happening through Facebook or Twitter contact lists. I have still never used my account. I have not yet looked at a single item on Pinterest, nor have I posted anything. So I am baffled by the Pinterest phenomenon.&lt;/p&gt;
&lt;p&gt;I suppose this reflects my general disinterest in visual objects. I&apos;m not particularly interested in art, for example, or photography. I do not customize my computer Desktop, and I do not put up posters or paintings or any other decorations at home or at work. I accept all the default colors of every computer program I use. I wear only a few basic colors of clothing, and am completely uninterested in clothing style. I don&apos;t really care what color my car is or what its shape is; to me a car is just an abstract data type that has properties such as efficiency, safety, and methods such as &quot;drive&quot; and &quot;park&quot;.&lt;/p&gt;
&lt;p&gt;When I&apos;m outside, I like best to look at what are not discrete objects. I love looking at the sky, at clouds, at an entire line of forest. I like to see sand on a beach, and the waves, the curvature of the horizon. I like even more to close my eyes and hear the wind, hear the water, hear the birds. I like to close my eyes when listening to music intently at a concert.&lt;/p&gt;
&lt;p&gt;I wonder how many people are like me and don&apos;t take to Pinterest at all. Just curious.&lt;/p&gt;
</content:encoded></item><item><title>Flute progress report: day of reckoning approaches</title><link>https://franklinchen.com/blog/2012/02/14/flute-progress-report-day-of-reckoning-approaches/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/14/flute-progress-report-day-of-reckoning-approaches/</guid><pubDate>Tue, 14 Feb 2012 20:47:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/&quot;&gt;Two weeks ago, I wrote&lt;/a&gt; about joining the &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;Carnegie Mellon All-University Orchestra&lt;/a&gt;, the first orchestra I have ever been in. I wrote of my terror as I realized that as a total beginner at flute, I was basically unable to play &lt;em&gt;any&lt;/em&gt; of the music handed out.&lt;/p&gt;
&lt;p&gt;I decided to work very hard at improving my flute skills to see whether I could get good enough in time to make it to the April 15 concert in respectable shape. &lt;strong&gt;I believe this is the most ambitious goal I have ever set for myself in my entire life.&lt;/strong&gt; Not because it is the &lt;em&gt;hardest&lt;/em&gt; goal to achieve, but because of the &lt;em&gt;time&lt;/em&gt; pressure involved. If I were given eight months, I would say, yes, I can do it; it took me eight months to start playing the recorder and then be sufficiently skilled (at merely an intermediate level) to play easy music in a concert. But &lt;em&gt;two&lt;/em&gt; months is another story.&lt;/p&gt;
&lt;p&gt;Furthermore, the day of reckoning is not April 15. I feel it is next Sunday.&lt;/p&gt;
&lt;h2&gt;A day of reckoning&lt;/h2&gt;
&lt;p&gt;More precisely, next Sunday is the first day on which I might be in a lot of trouble if I can&apos;t reach a certain level. The woodwind section will have a sectional before the main rehearsal to iron out our special problems. All of us flutes will be pretty naked at the sectional. I know where I&apos;m still falling short.&lt;/p&gt;
&lt;h2&gt;Good news&lt;/h2&gt;
&lt;p&gt;The good news is that I have made &lt;em&gt;huge&lt;/em&gt; progress in the past two weeks. Whereas two weeks ago I classified myself as a &quot;beginner&quot;, now I would classify myself as an &quot;advanced beginner&quot;.&lt;/p&gt;
&lt;p&gt;There have been exciting days during which I made a lot of progress and bad days during which I felt that I made little progress or backslid, but I kept the faith and kept going. I&apos;ve put aside various other personal projects in order to work as much on flute as possible: some days I have practiced two hours instead of one, and sometimes even three or four hours (on weekends). My left forefinger is permanently sore!&lt;/p&gt;
&lt;p&gt;Also good news is that we were down to four flutes and one piccolo as of two weeks ago, but this week were have not lost more flutes! I expect the rest of us are in it for the long haul: two of us on first flute, two of us on second flute, and one of us on piccolo. I&apos;m not sure if I should, but I would feel very uncertain if I were the only second flute remaining now. It&apos;s nice to know someone else may be sharing my pain, and maybe we can help each other in the sectionals.&lt;/p&gt;
&lt;h2&gt;Practice details&lt;/h2&gt;
&lt;p&gt;The bulk of my practice has been continuing to get down basic technique by working through the Rubank intermediate method. I keep on filling in gaps, adding new exercises while continuing to improve on exercises I have begun.&lt;/p&gt;
&lt;h3&gt;High notes&lt;/h3&gt;
&lt;p&gt;Given the music that we are playing for the concert, it has been of very high priority that I manage to play the very high notes (of the third register) effectively. This has been quite, quite difficult. It takes time to learn to form the embouchure and use it; what has been helpful has been looking at Web resources and reminding myself to &lt;em&gt;relax&lt;/em&gt;. Undirected powering through, like powering through in any other activity, from running to rowing to programming, doesn&apos;t work. I still have difficulty producing the kinds of notes in the third register I would like (our director Maria has repeatedly told us flutes collectively to work on our intonation, and you bet that in Sunday&apos;s sectional I will be doing what I can to get it where it needs to be), but at least I now know the fingerings for A-flat, A, B-flat, and B, and am still hard at work practicing scales and arpeggios way up there. It is only this week, actually, that I managed to be able to get B-flat and B out of my instrument at all. A-flat remains weird, but A is clean. Also, F, F-sharp, and G were shaky for me at last report, but I&apos;m more or less getting them now. E does not speak so well, unfortunately; I think this is partially an inherent flute matter.&lt;/p&gt;
&lt;h3&gt;Dynamics&lt;/h3&gt;
&lt;p&gt;Maria also repeatedly reminded the whole orchestra that we were not very good with dynamics, and generally played at some kind of nondescript mezzo-forte. We need to be able to play pianissimo and crescendo to fortissimo, etc., for expression and effect as indicated in the score.&lt;/p&gt;
&lt;p&gt;I&apos;ve improved on dynamics, but it is still very hard for me to play high notes softly, for example. I know the theory, but making my mouth and breath do this is taking time.&lt;/p&gt;
&lt;h3&gt;Rhythm&lt;/h3&gt;
&lt;p&gt;Maria works with the entire group large on rhythm. The music we have to play is jazzy and swings and has all kinds of syncopations, accents that have to be felt and interpreted. It is indeed more effective to listen and copy these rhythms rather than try to play the notations in the score. She tells us not to play so square, ha!&lt;/p&gt;
&lt;p&gt;Needless to say, I still have anxiety about coming in at the wrong times, and blasting a note where there is supposed to be a rest. So you bet I am working on getting the tricky rhythms down.&lt;/p&gt;
&lt;h3&gt;Speed&lt;/h3&gt;
&lt;p&gt;Maria has been ramping up the speeds in the rehearsals. Unfortunately, last Sunday an important section of the Bernstein was run through at a speed exceeding what I could handle at the time. So I have been working on that. I feel I am always playing catch-up.&lt;/p&gt;
&lt;p&gt;For development of speed, there is no substitute for just plain foundational technique work with the metronome. The metronome does not lie.&lt;/p&gt;
&lt;h4&gt;Progress on old exercises&lt;/h4&gt;
&lt;p&gt;Some examples of progress:&lt;/p&gt;
&lt;p&gt;Last week I gave a record of speed progress on an exercise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 24: 100&lt;/li&gt;
&lt;li&gt;January 25: 106&lt;/li&gt;
&lt;li&gt;January 26: 109&lt;/li&gt;
&lt;li&gt;January 27: 130&lt;/li&gt;
&lt;li&gt;January 28: 131&lt;/li&gt;
&lt;li&gt;January 29: 133&lt;/li&gt;
&lt;li&gt;January 31: 141&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add to that the following improvements, which get me to roughly where I feel I need to be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;February 2: 143&lt;/li&gt;
&lt;li&gt;February 6: 145&lt;/li&gt;
&lt;li&gt;February 7: 146&lt;/li&gt;
&lt;li&gt;February 8: 147&lt;/li&gt;
&lt;li&gt;February 11: 148&lt;/li&gt;
&lt;li&gt;February 14: 149&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By the Pareto rule, I will not seek further improvement on this exercise.&lt;/p&gt;
&lt;p&gt;Another:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 25: 95&lt;/li&gt;
&lt;li&gt;January 26: 96&lt;/li&gt;
&lt;li&gt;January 27: 102&lt;/li&gt;
&lt;li&gt;January 28: 106&lt;/li&gt;
&lt;li&gt;January 29: 107&lt;/li&gt;
&lt;li&gt;February 1: 115&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve improved on this one to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;February 2: 118&lt;/li&gt;
&lt;li&gt;February 3: 119&lt;/li&gt;
&lt;li&gt;February 6: 120&lt;/li&gt;
&lt;li&gt;February 7: 122&lt;/li&gt;
&lt;li&gt;February 8: 123&lt;/li&gt;
&lt;li&gt;February 10: 124&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve topped out there too for now.&lt;/p&gt;
&lt;p&gt;Here&apos;s an interesting exercise from last time that I had found rather difficult:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 25: 100&lt;/li&gt;
&lt;li&gt;January 26: 102&lt;/li&gt;
&lt;li&gt;January 27: 105&lt;/li&gt;
&lt;li&gt;January 29: 106&lt;/li&gt;
&lt;li&gt;January 30: 107&lt;/li&gt;
&lt;li&gt;January 31: 108&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have made radical improvements as a result of noticing the need for relaxation and for adjusting my holding of the instrument and the alignment of my right wrist (and many other things I still keep on refining):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;February 2: 110&lt;/li&gt;
&lt;li&gt;February 3: 114&lt;/li&gt;
&lt;li&gt;February 6: 120&lt;/li&gt;
&lt;li&gt;February 7: 136&lt;/li&gt;
&lt;li&gt;February 8: 138&lt;/li&gt;
&lt;li&gt;February 11: 139&lt;/li&gt;
&lt;li&gt;February 14: 140&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will stop trying to improve on this also.&lt;/p&gt;
&lt;p&gt;Here&apos;s a difficult arpeggio study at which I have made a big leap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 27: 70&lt;/li&gt;
&lt;li&gt;January 31: 71&lt;/li&gt;
&lt;li&gt;February 1: 72&lt;/li&gt;
&lt;li&gt;February 2: 73&lt;/li&gt;
&lt;li&gt;February 3: 74&lt;/li&gt;
&lt;li&gt;February 6: 78&lt;/li&gt;
&lt;li&gt;February 7: 94&lt;/li&gt;
&lt;li&gt;February 10: 95&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that in a single day, something clicked and I was able to go much faster.&lt;/p&gt;
&lt;p&gt;Here&apos;s an exercise that is wicked and works the right ring finger and other stuff:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 31: 86&lt;/li&gt;
&lt;li&gt;February 1: 87&lt;/li&gt;
&lt;li&gt;February 2: 110&lt;/li&gt;
&lt;li&gt;February 3: 112&lt;/li&gt;
&lt;li&gt;February 6: 114&lt;/li&gt;
&lt;li&gt;February 7: 116&lt;/li&gt;
&lt;li&gt;February 8: 118&lt;/li&gt;
&lt;li&gt;February 10: 122&lt;/li&gt;
&lt;li&gt;February 11: 123&lt;/li&gt;
&lt;li&gt;February 12: 124&lt;/li&gt;
&lt;li&gt;February 14: 126&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;New exercises&lt;/h4&gt;
&lt;p&gt;Obviously, I have also attacked brand new exercises since my last post.&lt;/p&gt;
&lt;p&gt;Here&apos;s one on thirds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;February 7: 110&lt;/li&gt;
&lt;li&gt;February 11: 130&lt;/li&gt;
&lt;li&gt;February 12: 132&lt;/li&gt;
&lt;li&gt;February 14: 136&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another on thirds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;February 8: 92&lt;/li&gt;
&lt;li&gt;February 10: 120&lt;/li&gt;
&lt;li&gt;February 11: 130&lt;/li&gt;
&lt;li&gt;February 12: 132&lt;/li&gt;
&lt;li&gt;February 14: 136&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rapid improvement on these new exercises comes because, as I have admitted, I have been a total beginner with almost no technique at all, never having practiced scales or arpeggios in any key, so when I&apos;m learning a new key, I start off all confused but then make progress quickly.&lt;/p&gt;
&lt;p&gt;Unfortunately, the Bernstein and Gershwin music have all kinds of keys, changes of key, accidentals, the works, so there is no escaping mastering everything. I&apos;m working particularly on A major and A-flat major now, with their four sharps and four flats, respectively. The scariest, fastest section of the Bernstein actually has a key signature with six sharps (although I have to wonder why, because the music is full of accidentals and almost atonal).&lt;/p&gt;
&lt;h2&gt;Motivation&lt;/h2&gt;
&lt;p&gt;There are times when I do not feel motivated to practice the concert music at all. I have a confession to make: playing flute in an orchestra is not my favorite musical activity by a long shot. It&apos;s something I&apos;m doing because it is novel to me and because I hope to enjoy being a part of a group effort in which we somehow manage to sound on April 15 a lot better than we sound now. Also, having a goal, and having the threat of social shame, has proved sometimes to be an effective motivator for me to achieve my &quot;real&quot; goals as a side effect.&lt;/p&gt;
&lt;p&gt;What I really like doing, and aim to do more of, is playing music in very small groups. I like playing recorder with one or two or three or four others. So sometimes when I&apos;m practicing I feel frustrated that I&apos;m working on a second flute part of a large orchestral piece, rather than on a duet or something like that. Amusingly, the fact that there are only two of us second flutes left helps me feel like I am &quot;making a difference&quot;, however.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m still hanging in there with my crazy attempt to just jump into a new level of flute playing, with a hard deadline. It would be less stressful if I were just trying to improve at my own pace, but I have to admit that from November through December, when I was working on the flute, the fact that I did not have a concrete level of mastery as a goal definitely made my practice less effective.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Meditation is hard</title><link>https://franklinchen.com/blog/2012/02/10/meditation-is-hard/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/10/meditation-is-hard/</guid><pubDate>Fri, 10 Feb 2012 21:18:00 GMT</pubDate><content:encoded>&lt;p&gt;About two weeks ago Abby and I started a &lt;a href=&quot;/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/&quot;&gt;daily meditation practice&lt;/a&gt; in the morning. We&apos;re still at it.&lt;/p&gt;
&lt;p&gt;Recently I&apos;ve seen some articles about meditation &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.susanpiver.com/wordpress/2012/02/08/habit-2/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.susanpiver.com/wordpress/2012/02/08/habit-2/&quot;&amp;gt;habits&amp;lt;/span&amp;gt; and &lt;a href=&quot;https://www.wildmind.org/blogs/on-practice/how-we-use-effort-to-get-to-a-state-of-effortless-meditation&quot;&gt;difficulty&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The plain fact is that meditation is hard. There might be some kind of stereotype of meditation as &quot;relaxing&quot; or as blissing out or some such thing, but actually, meditation is quite hard.&lt;/p&gt;
&lt;p&gt;Why is it so hard, and does putting effort into it somehow violate the point of it?&lt;/p&gt;
&lt;h2&gt;Difficulty of meditation&lt;/h2&gt;
&lt;h3&gt;Physical&lt;/h3&gt;
&lt;p&gt;For me, there is always some &lt;a href=&quot;/blog/2011/09/28/staring-at-the-wall-with-nowhere-to-go/&quot;&gt;physical difficulty&lt;/a&gt; in doing sitting meditation. Sitting &quot;perfectly upright&quot; is not easy for me when my legs are crossed and on the floor, because I&apos;m not all that flexible where it matters (I&apos;ve been working on that for years, with real incremental progress).&lt;/p&gt;
&lt;p&gt;And because of asymmetry, I use a different &quot;dominant&quot; leg alternating
days. Trying to relax is difficult because the default result is
slumping.&lt;/p&gt;
&lt;h3&gt;Mental&lt;/h3&gt;
&lt;p&gt;I slip into daydreams and weird thoughts very easily during meditation. I&apos;ll have thoughts about things I need to do for the day, things I needed to do yesterday, or events coming up in weeks, or events in the past. In a single ten-minute session of meditation I might experience sadness over something, anxiety, anger, disgust, relief, excitement, you name it! My mind will go all over the place. If there are people who are blissing out doing meditation, I don&apos;t know if I&apos;m the same species as them.&lt;/p&gt;
&lt;p&gt;Way back when I first started meditation, my main problem was actually that I would get disappointed and disgusted about my thoughts during meditation, and this of course created a cycle of more unrest during meditation. I got one important insight out of this: that I had a lifelong habit of hating myself, of perfectionism that I needed to let go of. When I realized this, I was able to break the cycle, both in meditation and in my &quot;regular&quot; life. I still have silly thoughts during meditation, but the difference now is that I don&apos;t let them take over. They are what they are, and I return to the breath, return to posture.&lt;/p&gt;
&lt;p&gt;Also, a year ago when I first started sitting with people, I got very self-conscious and worried about what they thought about my posture or breathing or whatever. After a couple of months, that anxiety completely disappeared. I&apos;m doing what I&apos;m doing; what is the point of adding extraneous thoughts and worries?&lt;/p&gt;
&lt;h2&gt;Effort&lt;/h2&gt;
&lt;p&gt;What level of effort do I apply when meditating? I think I go by feel. Basically, if I believe that putting a certain amount of effort in will disrupt me worse than the chaos that already exists, then I pull back. If I&apos;m perpetually adjusting my shoulders or legs, then that will dominate the whole experience and I will be unsettled. If I try too hard to control my mind and make sure it doesn&apos;t wander too far, then that can backfire too.&lt;/p&gt;
&lt;p&gt;So I currently do more modest things that I believe from experience will not backfire. I&apos;ll straighten my back enough to reboot my breath and awareness, but then let go of focusing on my back, and move to something else instead.&lt;/p&gt;
&lt;p&gt;Also helpful to me has been returning to an awareness of external noises (such as humming of appliances or traffic outside). This is because in the past, sometimes I would zone out and not be aware of external noises, and when the ending bell sounded, I would be startled and know instantly that I had zoned out instead of being present. Paying attention to physical sensations in my body as well as external noises outside my control has been helpful.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Meditation is hard work. There is no shortage of instruction on how to do it, but like everything else, I don&apos;t really know any way to do it other than honest personal trial and error and experience.&lt;/p&gt;
</content:encoded></item><item><title>Public shame: a great way to maintain a habit</title><link>https://franklinchen.com/blog/2012/02/08/public-shame-a-great-way-to-maintain-a-habit/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/08/public-shame-a-great-way-to-maintain-a-habit/</guid><pubDate>Wed, 08 Feb 2012 21:59:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve always had trouble keeping up an optimal exercise routine in the winter months, because it&apos;s colder and less pleasant to be outside. Historically, unless I was very disciplined, I have had some bad winters in which I didn&apos;t get much exercise, ate and slept poorly, and gained over five pounds of pure fat.&lt;/p&gt;
&lt;p&gt;So I have been very happy that at Carnegie Mellon University, a &quot;fitness challenge&quot; has been in place in the winter since January 2011. The fitness challenge was very helpful last winter in getting me to stay active, and it is being helpful right now as well: I am starting the second of six weeks now:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/cmu-fitness-challenge-2012-02.jpg&quot; alt=&quot;CMU fitness challenge for winter 2012, week 2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Welcome to the fitness-challenge for 2012 &quot;Strive to Thrive&quot; - you have
taken the first step by signing up to make a commitment to yourself and
your health by working out 4 times a week for 20 min.  The challenge
starts Monday Jan 30th.  There is a fitness challenge bulletin board in
the UC.  If your name is not on the board yet please add your name the
next time you are in the UC.  Once you work out for 20 min please put up
your sticker.  We are going to have different colored stars and each color
of the stars represent a different type of exercise.  A RED star is for
Group X-ercise class, a SILVER star is for Walking, Jogging, Treadmill,
Exercise Bike, Octane, Rower, Elliptical or AMT, a BLUE star is for
Swimming or a Water Activity, a GREEN star is for Weightlifting or other
Machines and a YELLOW star is for playing a sport.  You can get your star
stickers @ the UC equipment desk.  Everyday you will be receiving an email
from our interns from Pitt that will be motivating you to continue your
&quot;Strive to Thrive&quot; - have fun, good luck and we&apos;ll all be thriving by
Spring break! It takes 6 weeks to develop a habit and you have just
started yours.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;Why it works&lt;/h2&gt;
&lt;p&gt;Why does the fitness challenge work (for some of us; note how many people signed up and never even put up a single sticker during the first week)?&lt;/p&gt;
&lt;p&gt;First, they offered a &quot;free gift&quot; for signing up. Some people get tricked into signing up as a result. Fact is, the free gift is really crappy and I didn&apos;t want it (a hand sanitizer dispenser full of nasty chemicals that I know I don&apos;t need and give me an allergic reaction).&lt;/p&gt;
&lt;p&gt;Second, they offer a special awards lunch after the fitness challenge. Judging by how many people show up for this, it&apos;s clearly something people look forward to. For many, it&apos;s a social experience, and we get certificates also. Not such a big deal to me, but when it comes to motivation, every little trick counts. Like, if I&apos;ve only marked three days and only need to do a fourth, I might think, I just need to exercise one more day in order to stay &quot;in the running&quot; for that free lunch and certificate of completion. Silly tricks like this work.&lt;/p&gt;
&lt;p&gt;Third, there is the element of public shame. &lt;em&gt;This is the biggest factor for me.&lt;/em&gt; Even though I am quite sure nobody I know is scanning the bulletin board every week to see whether I am exercising, it doesn&apos;t matter: I don&apos;t like the idea of seeing empty spaces on the board in my row, or anyone, even random strangers, seeing them. It is not strictly rational, I admit, but the first thing I think, when I&apos;m not all excited on a given day about exercising is, I want my stars to fill up those spaces on the board.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I expect to do whatever it takes to get to attend the awards lunch for the CMU fitness challenge. And it doesn&apos;t take that much. Typically, once I go through the trouble of actually putting on my running shoes or going to the gym locker room, I have no problem putting in an intense half hour workout and getting into it.&lt;/p&gt;
&lt;p&gt;I am grateful to Pattye Stragar of CMU and all the interns who got the CMU fitness challenge program started and send us inspiring email reminders every day to keep up interested and motivated.&lt;/p&gt;
</content:encoded></item><item><title>On playing my first games of chess in a year</title><link>https://franklinchen.com/blog/2012/02/07/on-playing-my-first-games-of-chess-in-a-year/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/07/on-playing-my-first-games-of-chess-in-a-year/</guid><pubDate>Tue, 07 Feb 2012 22:46:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately there has been a lot of attention paid to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://expertenough.com/1423/deliberate-practice&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://expertenough.com/1423/deliberate-practice&quot;&amp;gt;deliberate practice&amp;lt;/span&amp;gt;. I thought I&apos;d give one example of my practice habits.&lt;/p&gt;
&lt;p&gt;Over a week ago, &lt;a href=&quot;/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/&quot;&gt;at a birthday party&lt;/a&gt;, I ended up playing two casual games of &lt;a href=&quot;/categories/chess/&quot;&gt;chess&lt;/a&gt;, my first games of chess in an entire year since I completely quit playing the game (either in tournaments or casually) in order to focus on rebooting my passion for playing &lt;a href=&quot;/categories/music/&quot;&gt;music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first game was against someone who opened with 1 h4, immediately marking himself as a beginner, and I won quickly.&lt;/p&gt;
&lt;p&gt;The second game was much harder, because while my opponent was clearly not a strong player, and as White started off with an inferior opening, I had a hard time coming up with a crushing advantage. In fact, I found myself embarking on a slow, misguided plan that led to an equal middle game. It was only after a terrible blunder on his part that I immediately had a won position.&lt;/p&gt;
&lt;p&gt;So overall, these casual games were quite one-sided.&lt;/p&gt;
&lt;p&gt;But the next morning, the first thing I did was enter the moves of both games into my computer and briefly analyze the games with &lt;a href=&quot;https://www.cruxis.com/chess/houdini.htm&quot;&gt;Houdini&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why did I do this?&lt;/p&gt;
&lt;h2&gt;Self-analysis for improvement&lt;/h2&gt;
&lt;p&gt;One thing I learned when considerably improving my game of chess was that the only true way to improve is to learn from your own mistakes. These could be classified in many different ways. I was not as rigorous as I could have been (should have been) in analyzing mistakes and making sure not to repeat them, else I would have made &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_master&quot;&gt;National Master&lt;/a&gt; long ago.&lt;/p&gt;
&lt;p&gt;I don&apos;t play in chess tournaments any more, but I could not help myself when i decided to remember my casual games from the party and enter them into the computer the next morning. It&apos;s a &lt;em&gt;habit&lt;/em&gt;. When I was playing chess seriously, I was going to the &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; every week and playing blitz. Some people play blitz as throwaway fun. Not me. These blitz were actually excellent material for me to learn from. I would go home after playing a dozen or so games of blitz and enter all the interesting games into my computer in order to analyze them.&lt;/p&gt;
&lt;h3&gt;(Update of 2015-12-21)&lt;/h3&gt;
&lt;p&gt;Three years later, I made a focused push, temporarily putting many
things aside in my life, in the fall of 2015 to &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieve my US Chess
National Master title&lt;/a&gt;, and finally made it, a dream come true.&lt;/p&gt;
&lt;p&gt;Also, I have been teaching private lessons since 2013.&lt;/p&gt;
&lt;h2&gt;What I look for when analyzing a game I played&lt;/h2&gt;
&lt;p&gt;It doesn&apos;t matter whether I win or lose a game. I thirst to find out where &lt;em&gt;I could have done better&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Losing&lt;/h3&gt;
&lt;p&gt;Obviously, when I lose a game, I try to figure out why. Sometimes it&apos;s just one bad move. Sometimes it&apos;s a series of bad moves that reveal a completely flawed conception of what was going on. Sometimes the errors reveal physical fatigue, psychological barriers, raw technical knowledge, or simple calculational carelessness. The causes differ, so it is important to find out what the specific causes are. Without knowing the specific cause, applying effort toward a remedy may be a futile waste of time.&lt;/p&gt;
&lt;h3&gt;Winning&lt;/h3&gt;
&lt;p&gt;I don&apos;t get much pleasure from just winning a game, or winning a tournament. In itself, &lt;em&gt;winning means nothing to me&lt;/em&gt;. I need to know that &lt;em&gt;I deserved to win&lt;/em&gt; (for some definition of &quot;deserve&quot;). I analyze games that I won, to see whether I actually made an error during an attack that &lt;em&gt;should&lt;/em&gt; have left me lost (if I had been playing against someone who saw through my error). Also, it is important to see whether, during a winning game, I missed a much quicker and decisive win, and instead took a long route unnecessarily.&lt;/p&gt;
&lt;p&gt;To be sure, sometimes for practical reasons it is wise to win in a clear and easy way rather than the most brilliant, quick way. But other times, I have won the long way in which my opponent could have come back fighting (but just happened not to), and therefore I really should have looked for the killer knockout that existed.&lt;/p&gt;
&lt;h3&gt;Uncertainty&lt;/h3&gt;
&lt;p&gt;In the case of the second casual game I played at the party, I was plagued during the middle game with the thought that I knew I could have made more of my opening advantage, but squandered it. There was no loss or win straight out of the opening, but I had to go and determine how my entire opening plan was ineffective.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Even in a casual game of chess, I take it pretty seriously, and treat it as a learning opportunity. I feel slightly odd admitting this in public, and hope that it doesn&apos;t result in people no longer wanting to play casual games with me, but is it wrong to want to know the truth of the situation in the game? Is it any sillier than when I know I got every answer on a final exam in a class right except for one, and therefore I have my A+ locked up, but I want to know how to solve the problem that confused me?&lt;/p&gt;
</content:encoded></item><item><title>A strange winter hike in Frick Park</title><link>https://franklinchen.com/blog/2012/02/06/a-strange-winter-hike-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/06/a-strange-winter-hike-in-frick-park/</guid><pubDate>Mon, 06 Feb 2012 22:29:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday morning, on a sunny day, with temperatures ranging from around 35-40F, Abby and I went on a &lt;a href=&quot;https://www.meetup.com/pittsburghhikers/events/50164712/&quot;&gt;Meetup hike at Frick Park&lt;/a&gt;. This was actually our first Meetup hike in &lt;a href=&quot;/categories/frick-park/&quot;&gt;Frick Park&lt;/a&gt;, because normally we just go to our local park alone and go to Meetup hikes that are further away, but we hadn&apos;t been hiking at all for months and so it was convenient to go to this one.&lt;/p&gt;
&lt;p&gt;Since we live only two miles away from the meeting place in the parking lot down in &lt;a href=&quot;/blog/2011/10/15/snapshots-of-pittsburgh-from-a-12-mile-run/&quot;&gt;Fern Hollow&lt;/a&gt;, we hiked straight from home there, meeting up with John, who joined us at the park entrance.&lt;/p&gt;
&lt;p&gt;We ended up hiking probably around nine miles (including being on the road from and to home).&lt;/p&gt;
&lt;p&gt;It was very strange doing this hike in early February, when Pittsburgh should be suffering from snow and ice and bitter cold. Normally I don&apos;t do any running or hiking in Frick Park again till March, but I&apos;ve been running in Frick for some time now this &quot;winter&quot;!&lt;/p&gt;
&lt;p&gt;We started off following the Nine Mile Run Trail. As you can see, there was no snow to be found!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2012-02-05/nine-mile-run-trail.jpg&quot; alt=&quot;Nine Mile Run Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then we meandered around, taking a bunch of other familiar trails, going uphill and downhill, and eventually ended back down in Fern Hollow. We took a pretty fast pace.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2012-02-05/up.jpg&quot; alt=&quot;Going uphill&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&quot;Officially&quot;, the hike was done, but some of us wanted to do more, so we ended up going up the steep Fire Lane Trail Extension. Abby, John, and I said goodbye to the group when we reached the Lower Riverview Trail, since that was the way to start heading home rather than going back down to Fern Hollow again. We&apos;d already gone down to Fern Hollow twice and I figured that we didn&apos;t need to go down it yet again.&lt;/p&gt;
&lt;h2&gt;Shoes and mud&lt;/h2&gt;
&lt;p&gt;This hike was the first time I&apos;d worn my Vibram FiveFingers KSO Trek shoes out in sub-40 temperatures, and with the expectation of getting my feet wet. I wore Injinji toe socks to try to keep my feet warm.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2012-02-05/kso-trek-with-injinji.jpg&quot; alt=&quot;Franklin wearing KSO Trek shoes with Injinji socks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby wore her FiveFingers Trek Sport shoes along with her modified tights.&lt;/p&gt;
&lt;p&gt;There were not a lot of very wet spots on the trails, but there were sections that were more muddy than others, and my feet got wet going through each such section. If the temperature had been below freezing, I would have thought twice about wearing the FiveFingers, I have to confess.&lt;/p&gt;
&lt;p&gt;Because of the shade, parts of the Riverview Trail actually still had residual snow from whenever.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-hike-2012-02-05/snow-mud.jpg&quot; alt=&quot;Snow and mud on trail&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was nice to get in a local hike, and I was happy that my experiment of wearing FiveFingers shoes with Injinji socks in cooler conditions on the trails worked fairly well, although when I took my shoes off, I saw that the socks were quite muddy and needed to be washed!&lt;/p&gt;
</content:encoded></item><item><title>My favorite running workout: the Billat workout</title><link>https://franklinchen.com/blog/2012/02/03/my-favorite-running-workout/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/03/my-favorite-running-workout/</guid><pubDate>Fri, 03 Feb 2012 21:14:00 GMT</pubDate><content:encoded>&lt;p&gt;Over a decade ago, when I got very serious about &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt; in races, and decided to get as competitive as I possibly could (knowing that my genetic potential was very limited), I settled on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Jack_Daniels_(coach)&quot;&gt;Jack Daniels&lt;/a&gt; &quot;running formula&quot; training program as something that worked quite well for me. It was scientifically based and involves training in different phases of an entire months-long process at different intensities, incorporating easy running, tempo runs, intervals, repeats, hill workouts, etc.&lt;/p&gt;
&lt;p&gt;The beauty of &lt;a href=&quot;https://www.amazon.com/Daniels-Running-Formula-2nd-Jack/dp/0736054928&quot;&gt;Jack Daniels&apos; Running Formula&lt;/a&gt; (I had used the first edition, not the second) was that it gave pace tables to use. I would do my runs with a watch, and spent a good amount of time at the Carnegie Mellon University track on certain workouts (although I always preferred running on the trails to running on the roads or the track).&lt;/p&gt;
&lt;p&gt;After reaching my peak racing years, I devoted less and less time to training. As I began running four days a week, or three, I had to look for more efficient ways to maintain my fitness.&lt;/p&gt;
&lt;h2&gt;Intensity&lt;/h2&gt;
&lt;p&gt;What I found, for my circumstance and for my body, was that higher-intensity training with rest days actually worked pretty way, compared to running more days and more mileage. There is, of course, perpetual controversy in the elite circles over whether high mileage or high intensity is the way to go for optimal results (including, of course, avoidance of injury). But I was never an elite runner, so in a sense, the controversy is not very important to me.&lt;/p&gt;
&lt;p&gt;Nevertheless, eventually I came to believe that more is not better. In addition, I came to believe that changing things up is more important than following a fixed, supposedly &quot;scientific&quot; plan. This is not only because of the practical fact that often plans need to be changed anyway (because of illness, injury, work and travel commitments, etc.), but also because the body adapts to routine. I have to shake things up periodically in order to progress, whether it&apos;s changing how I eat or how I write a computer program.&lt;/p&gt;
&lt;p&gt;It turns out that the past decade has seen the focus on intermittent intensity become mainstream, for everyone, not just would-be competitive athletes. I think this has been a very good development. Along with this change has been, of course, the focus on proper warmups, dynamic stretching, &lt;a href=&quot;https://web.archive.org/web/20180929025922/http://www.coreperformance.com/prehab/&quot;&gt;pre-hab&lt;/a&gt;. It is folly to do intense work without having the stability to withstand forces that could cause injury.&lt;/p&gt;
&lt;h2&gt;Billat workouts&lt;/h2&gt;
&lt;p&gt;One intense running workout I like to do is based on research by &lt;a href=&quot;https://web.archive.org/web/20161227220911/http://www.pponline.co.uk/encyc/veronique-billat-exercise-research-377&quot;&gt;Véronique Billat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you read that article, and aren&apos;t familiar with VO2max and similar measures of fitness, don&apos;t worry. Here&apos;s a &lt;a href=&quot;https://www.brianmac.co.uk/vvo2max.htm&quot;&gt;more accessible exposition and recommendations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Personally, as I begin running again early in the season, I enjoy doing the 30-30 workout. I don&apos;t know my exact vVO2max (and don&apos;t care what it is), but years of experience have led me to know from my body what is approximately mile pace, and use that as an approximation of vVO2max.&lt;/p&gt;
&lt;p&gt;So I&apos;ll go and warm up jogging slowly for a mile, then beginning the cycle of running hard for 30 seconds and a recovery jog for 30 seconds, and repeat the cycle for about two miles (or however long before I can no longer keep up the pace reasonably) and cool down and be done for the day.&lt;/p&gt;
&lt;p&gt;I don&apos;t actually wear a watch to tick down 30 seconds. Instead, I count steps. Assuming a stride rate of approximately 180 per minute (I realize this varies for me depending on my pace), that&apos;s 3 steps per second, and therefore 30 seconds is 90 steps, or 45 steps for each leg.&lt;/p&gt;
&lt;p&gt;I like to do this about once a week.&lt;/p&gt;
</content:encoded></item><item><title>2 new daily habits of mine in a distracting world</title><link>https://franklinchen.com/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/02/2-new-daily-habits-of-mine-in-a-distracting-world/</guid><pubDate>Thu, 02 Feb 2012 09:02:00 GMT</pubDate><content:encoded>&lt;p&gt;As of a week ago, I have developed two daily habits to reclaim my life from a distracting digital world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/categories/meditation/&quot;&gt;meditation&lt;/a&gt; in the morning, before breakfast&lt;/li&gt;
&lt;li&gt;shutting down my computer at home in the evening two hours before going to bed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Meditation&lt;/h2&gt;
&lt;p&gt;The meditation habit is one I have wanted to develop for years now, but had not. Before around 2007, I was meditating every day for a year or two, but then I fell off the practice, and eventually stopped for long periods of time, and then just a year ago, thanks to a weekly meditation practice set up at Carnegie Mellon University, I began attending that (and Abby started meditating for the first time then).&lt;/p&gt;
&lt;p&gt;I always felt guilty during the entire past year when noting that I wasn&apos;t regularly meditating at home. I knew that &quot;I&apos;m too tired&quot; or &quot;I don&apos;t have time&quot; are never valid excuses to avoid doing something one feels one &quot;should&quot; do. Those excuses almost always mean that something has gone wrong with priorities.&lt;/p&gt;
&lt;p&gt;The fact is, I was caught up with a huge number of projects, and became more and more unbalanced, especially when I lost the CMU practice for two months since it was no longer happening (thanks to the CMU academic calendar).&lt;/p&gt;
&lt;p&gt;Last week, Abby and I decided that we would meditate in the morning before breakfast, and keep it at ten minutes. Who doesn&apos;t have ten minutes in a day, especially for something that, for me, gives me benefits that last the entire day? So we&apos;ve established this new routine.&lt;/p&gt;
&lt;h3&gt;More on the morning routine&lt;/h3&gt;
&lt;p&gt;In conjunction with the new meditation routine, I also decided that I would not check email or the Web generally until after meditation, and unless there was an emergency, I would not deal with email until after breakfast.&lt;/p&gt;
&lt;p&gt;Also, I have decided to significantly reduce reading the Web (through my blog subscriptions or Twitter feed) in the morning, so that I keep my morning focused. Now I&apos;ll check the Web mostly at lunch time.&lt;/p&gt;
&lt;h2&gt;Evening information diet&lt;/h2&gt;
&lt;p&gt;Furthermore, I have cut out a good bit of computer time from my evening also, in order to promote better sleep as well as doing other things, such as reading paper (gasp!) books.&lt;/p&gt;
&lt;p&gt;This has been a difficult cut, but I have managed so far, and yes, there have been repercussions. I have been doing less blog writing (because that happens on the computer), less Web reading, less tweeting. I have a large backlog of interesting Web articles that I&apos;ve simply bookmarked without reading, and I have to confess that I&apos;m not happy about this situation.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I have yet to figure out the best balance to achieve in this digital age given my thirst for fresh ideas and information that are so easy to come by online, but I know for sure that I do not want to sacrifice essential calmness, exercise, sleep, and social time for the sake of addictive information overload that in the long run is not as beneficial as one might hope. What do I really need to know about? And how much of it can I apply? And even given that I have received much of value online, what is the opportunity cost of not using the time spent online on pursuits off-line? These are very hard questions for me to answer, so I&apos;m taking my information diet one step at a time.&lt;/p&gt;
</content:encoded></item><item><title>Joining an orchestra: learning in the face of terror</title><link>https://franklinchen.com/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/</guid><pubDate>Wed, 01 Feb 2012 19:29:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;I have not written about my &lt;a href=&quot;/categories/flute/&quot;&gt;flute activities&lt;/a&gt; since &lt;a href=&quot;/blog/2012/01/08/finding-and-using-my-childhood-flute-books/&quot;&gt;a month ago&lt;/a&gt;, but that&apos;s not for lack of action: in fact, I&apos;ve been spending a lot of time on the flute, at the expense of other personal projects, including writing.&lt;/p&gt;
&lt;p&gt;Two months ago, I mentioned that I was &lt;a href=&quot;/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/&quot;&gt;considering joining&lt;/a&gt; the &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;Carnegie Mellon All-University Orchestra&lt;/a&gt;, which I claimed was &quot;not very good&quot; and that &quot;I don&apos;t have to be super good to be a part of it.&quot; &lt;em&gt;I take back those comments&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I joined the CMU AUO two Sundays ago, attending the first rehearsal then, and &lt;strong&gt;it was one of the most frightening experiences in my entire life&lt;/strong&gt;. I almost left before even entering the rehearsal room. But I went in, stayed for the two and a half hours, and last Sunday, I went to the second rehearsal.&lt;/p&gt;
&lt;p&gt;Let me put it this way: at the first rehearsal, there were about ten flutes and one piccolo in the flute section. At the second rehearsal, we are down to four flutes and one piccolo. I hope that we don&apos;t lose any more flutes at the next rehearsal. OK, maybe some students happened to be busy and will be returning. Or maybe some of them had the same reaction that I had: &lt;em&gt;absolute terror&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Let me explain.&lt;/p&gt;
&lt;h2&gt;The music we are to play for the April 15 concert&lt;/h2&gt;
&lt;p&gt;At the door of the rehearsal room, we got to pick up the music for the concert scheduled for April 15. There are four works, but one is for brass and percussion only, and the other for strings only, so there are only two I would play in on flute:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;George Gershwin, &lt;a href=&quot;https://en.wikipedia.org/wiki/Rhapsody_in_Blue&quot;&gt;Rhapsody in Blue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Leonard Bernstein, &lt;a href=&quot;https://en.wikipedia.org/wiki/West_Side_Story#Symphonic_Dances_from_West_Side_Story&quot;&gt;Symphonic Dances from West Side Story&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On inspection at the door, I immediately realized that I could not play &lt;em&gt;any&lt;/em&gt; of this music. Both the Gershwin and Bernstein were totally out of my current abilities. Worse, the Bernstein piece looked particularly insanely hard to me, even though I picked up the &quot;flute 2&quot; part, not the &quot;flute 1&quot; part. There were a lot syncopations, accents, extreme dynamics, very high notes (some of which I had not yet even learned the fingerings for yet), and the music was very fast.&lt;/p&gt;
&lt;p&gt;I was filled with terror. I almost left without entering the room and signing in.&lt;/p&gt;
&lt;h2&gt;Why I stayed&lt;/h2&gt;
&lt;p&gt;I went in anyway. I decided that I needed to see what this orchestra was about, since I have never been in an orchestra in my life (I stopped my feeble playing of the flute at age 13 and never played again after that).&lt;/p&gt;
&lt;p&gt;I had a &quot;fail fast&quot; plan: if I really felt I couldn&apos;t make a decent contribution in this orchestra, I would walk out as soon as I felt I was a hopeless burden to the team. &lt;em&gt;Forget ego&lt;/em&gt;: what I do or do not do must be based entirely on objective considerations. I wasn&apos;t going to walk away already just because I believed (and still believe!) that I must be the worst musician in the entire orchestra, nor would I be afraid to walk away in the future if I found that I was harming the team.&lt;/p&gt;
&lt;h2&gt;The first rehearsal&lt;/h2&gt;
&lt;p&gt;I ended up surviving the first rehearsal, in that we did a sight-reading session in which although I could barely play any of the music, I sat there trying to learn and did what I could, playing a few notes here and there when I could, and sitting out when there was just no way I could get anything right at all.&lt;/p&gt;
&lt;p&gt;Also, I sat next to a guy who was playing piccolo, and he seemed to nail everything, although I had asked him earlier how long he&apos;d been playing flute and he said twelve years. Note: I have been playing flute seriously for only three months, and on the membership form for the orchestra, it asked for a self-rating of experience level, ranging from Beginner to Advanced Beginner to Intermediate to Advanced, and with all honesty I checked off &lt;strong&gt;Beginner&lt;/strong&gt; (not even Advanced Beginner).&lt;/p&gt;
&lt;p&gt;However, it gave me some hope when I realized that everyone was having a hard time with the music. I&apos;m sure nobody was having as hard a time as me, but we were struggling while sight reading at a very slow tempo. It also gave me hope that the director, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sellner.org/maria/Home.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sellner.org/maria/Home.html&quot;&amp;gt;Maria Sensi Sellner&amp;lt;/span&amp;gt;, happened to mention that we were tackling probably the hardest work the orchestra had attempted in its history, because she is leaving after this season and wanted to do something ambitious. OK, so it wasn&apos;t just me thinking this music was hard.&lt;/p&gt;
&lt;p&gt;Also, she seemed to me very effective in helping us get started with the music. She worked out the tricky rhythms with us, and the music began to make more sense to me during the rehearsal. She told us that we should listen to recordings and check out the West Side Story musical so that we would understand the music in the context of the action.&lt;/p&gt;
&lt;p&gt;I left the rehearsal still shell-shocked, but I reasoned to myself that it would be stupid to quit this early on, before having had a chance to study the score more, continue to improve my technique, etc. I had grave doubts that I would return for the second rehearsal, but I had &lt;em&gt;one week&lt;/em&gt; to decide whether I should even come back. (Note that the orchestra has an attendance policy, so that anyone missing too many rehearsals may not play in the concert.)&lt;/p&gt;
&lt;h2&gt;A sample AUO performance&lt;/h2&gt;
&lt;p&gt;For fun, here is the CMU AUO performing last fall Bernstein&apos;s Overture to Candide. They weren&apos;t bad. That gives me hope, because we sounded pretty bad sight reading the Symphonic Dances from West Side Story, so I actually have faith that Sellner can get us into reasonable shape in two months.&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;ZelG_nJ-QvE&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;My practice strategy for a week after the first rehearsal&lt;/h2&gt;
&lt;p&gt;All January I had been working really hard for three weeks on flute practice, in anticipation of the first CMU AUO rehearsal that occurred on January 22. I was making a &lt;em&gt;huge&lt;/em&gt; amount of progress working through &quot;easy&quot; stuff. Flute is much, much harder to play than &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After the first rehearsal, I decided that there was no way I could ever play the Gershwin or Bernstein without focusing really hard on pure technique. So the bulk of my practice was beginning to systematically work through the &lt;a href=&quot;https://www.amazon.com/Rubank-Intermediate-Method-Piccolo-Educational/dp/1423444221&quot;&gt;Rubank Intermediate Method: Flute or Piccolo&lt;/a&gt; that I mentioned &lt;a href=&quot;/blog/2012/01/08/finding-and-using-my-childhood-flute-books/&quot;&gt;finding in early January&lt;/a&gt; and never having used.&lt;/p&gt;
&lt;p&gt;I spent a little bit of time trying to play excerpts from the Gershwin and Bernstein at a very slow tempo, but frankly, these attempts were very frustrating because I was still having problems just playing the high notes at all, for example. &lt;strong&gt;I had to learn the fingerings for some notes I had never played in my life.&lt;/strong&gt; I also had to improve my embouchure in order to produce those notes.&lt;/p&gt;
&lt;p&gt;(By the way, I have almost completely stopped playing recorder for a month. I am still attending the monthly meetings of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local recorder group&lt;/a&gt;, and practicing a little before attending, but I cannot devote any more time to improving on recorder while trying to get successfully to the April 15 CMU AUO concert.)&lt;/p&gt;
&lt;h2&gt;The second rehearsal&lt;/h2&gt;
&lt;p&gt;As the second rehearsal approached, I wondered what we were supposed to be preparing for it. I sent email to the guy I had contacted last year about joining the orchestra, asking him if I had been put on the announcement mailing list yet, and he apologized, saying that he hadn&apos;t, and he put me on. So it was only hours before the second rehearsal that I learned we were supposed to have been for days watching some YouTube videos and working on the two very hardest sections of the Bernstein!!!&lt;/p&gt;
&lt;p&gt;I almost didn&apos;t go to the second rehearsal, as a result. I had not even looked at the hardest sections of the Bernstein yet: during the entire week, I had worked on the sections just up till those hardest sections!! I spent half an hour before the Sunday evening rehearsal trying to do a little work on the hardest sections, but failing pretty miserably. Oh well.&lt;/p&gt;
&lt;p&gt;I went to the second rehearsal anyway. I half expected that I would be asked to leave after being found out to be completely incompetent (as well as not doing my homework).&lt;/p&gt;
&lt;p&gt;It turned out that many of us had not done our homework, or had done it but were still having a lot of problems. The director was patient and slowed things down a lot and again focused on our getting the rhythms and syncopation right, and all the instruments just staying together at all. Because we were so unprepared, we ran out of time to work on the Gershwin, which she had originally planned to cover as well as the Bernstein.&lt;/p&gt;
&lt;p&gt;Also, we lost most of our flutists!! In fact, with only four flutes and a piccolo left, during a flute-dominated passage of the Bernstein, we found out that only one of us was playing &quot;flute 1&quot;. The director asked for someone else to join her, and so I guess now we have two on &quot;flute 1&quot;, and me and the other person on &quot;flute 2&quot;.&lt;/p&gt;
&lt;h2&gt;My practice strategy for this week after the second rehearsal&lt;/h2&gt;
&lt;p&gt;If we were having a rehearsal again next Sunday, I would be seriously worried and contemplate probably having to drop out of the orchestra then. Luckily, we are skipping Super Bowl Sunday. &lt;strong&gt;This gives me two weeks, rather than one, to improve drastically.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The director had said it was up to us individually and in the upcoming sections to get our act together on the Bernstein sections in question. So I have at least one concrete goal for the next rehearsal: being prepared to play reasonably accurately the difficult Bernstein sections, and at tempo.&lt;/p&gt;
&lt;p&gt;For three days now so far this week, I have continued with working through the Rubank intermediate method. I have made so much progress that I think that in another couple of days I may consider myself an Advanced Beginner at flute rather than just a Beginner, ha!&lt;/p&gt;
&lt;h3&gt;Deliberate practice&lt;/h3&gt;
&lt;p&gt;I am putting in the focused, &lt;a href=&quot;https://en.wikipedia.org/wiki/Practice_%28learning_method%29#Deliberate_practice&quot;&gt;deliberate practice&lt;/a&gt; to improve as rapidly and efficiently as I can.&lt;/p&gt;
&lt;p&gt;By the way, I have to put in a plug for Gerald Klickstein, author of the wonderful book &lt;a href=&quot;https://musiciansway.com/&quot;&gt;&quot;The Musician&apos;s Way&quot;&lt;/a&gt;, and his &lt;a href=&quot;https://musiciansway.com/blog/&quot;&gt;blog&lt;/a&gt; as well as his &lt;a href=&quot;https://twitter.com/klickstein&quot;&gt;Twitter feed @klickstein&lt;/a&gt;, which have been profoundly inspirational and useful in not only my music practice but also all of my other serious pursuits. He even replies to questions and comments promptly.&lt;/p&gt;
&lt;p&gt;Regarding learning, I will be writing blog posts in the future about my various strategies for learning that I find effective. A recent article talks about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wired.com/geekdad/2012/01/everything-about-learning/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wired.com/geekdad/2012/01/everything-about-learning/&quot;&amp;gt;interleaving&amp;lt;/span&amp;gt;, which I have used to great effect to &quot;parallelize&quot; my learning, and I definitely use it in my music practice. I work on many things in one session, not just one thing, because there is no way to just get massively better at one thing during one session, and then do the same for something else at the next session. I have to parallelize, to make small bits of progress every day on something. For example, every day I work on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;breath&lt;/li&gt;
&lt;li&gt;intonation&lt;/li&gt;
&lt;li&gt;tone&lt;/li&gt;
&lt;li&gt;high notes&lt;/li&gt;
&lt;li&gt;dynamics&lt;/li&gt;
&lt;li&gt;articulation&lt;/li&gt;
&lt;li&gt;rhythm: meters, syncopation&lt;/li&gt;
&lt;li&gt;tonguing&lt;/li&gt;
&lt;li&gt;speed&lt;/li&gt;
&lt;li&gt;passage work in keys (scales, arpeggios, thirds)&lt;/li&gt;
&lt;li&gt;tricky fingerings&lt;/li&gt;
&lt;li&gt;style, expression&lt;/li&gt;
&lt;li&gt;actual music&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I squeeze as much as I can out of an hour of practice at home. I&apos;ve found that there are diminishing returns of all kinds after an hour. Obviously, if I were a music student or professional, I&apos;d use multiple sessions to get more hours, but for much of my life these days I use the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pareto_principle&quot;&gt;80/20 rule&lt;/a&gt; to maximize the returns on my practice.&lt;/p&gt;
&lt;h3&gt;Speed&lt;/h3&gt;
&lt;p&gt;I use the &lt;a href=&quot;/blog/2011/09/29/a-musicians-best-friend/&quot;&gt;metronome&lt;/a&gt; extensively in my practice to gauge my progress, by making note each day of the fastest speed at which I can execute an exercise with the best musical qualities I am capable of currently, and then trying to do it faster the next day. This method worked very well for me when I was learning the recorder from scratch, and it is working for me well now.&lt;/p&gt;
&lt;p&gt;For example, here is the record for one of the twenty or so exercises I have worked on in the Rubank book for the past week and a half:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 24: 100&lt;/li&gt;
&lt;li&gt;January 25: 106&lt;/li&gt;
&lt;li&gt;January 26: 109&lt;/li&gt;
&lt;li&gt;January 27: 130&lt;/li&gt;
&lt;li&gt;January 28: 131&lt;/li&gt;
&lt;li&gt;January 29: 133&lt;/li&gt;
&lt;li&gt;January 31: 141&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 24: 120&lt;/li&gt;
&lt;li&gt;January 25: 135&lt;/li&gt;
&lt;li&gt;January 26: 137&lt;/li&gt;
&lt;li&gt;January 27: 139&lt;/li&gt;
&lt;li&gt;January 28: 144&lt;/li&gt;
&lt;li&gt;January 29: 146&lt;/li&gt;
&lt;li&gt;January 30: 148&lt;/li&gt;
&lt;li&gt;January 31: 152&lt;/li&gt;
&lt;li&gt;February 1: 154&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 25: 95&lt;/li&gt;
&lt;li&gt;January 26: 96&lt;/li&gt;
&lt;li&gt;January 27: 102&lt;/li&gt;
&lt;li&gt;January 28: 106&lt;/li&gt;
&lt;li&gt;January 29: 107&lt;/li&gt;
&lt;li&gt;February 1: 115&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another (in which I have been finding the series of arpeggios rather difficult):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;January 25: 100&lt;/li&gt;
&lt;li&gt;January 26: 102&lt;/li&gt;
&lt;li&gt;January 27: 105&lt;/li&gt;
&lt;li&gt;January 29: 106&lt;/li&gt;
&lt;li&gt;January 30: 107&lt;/li&gt;
&lt;li&gt;January 31: 108&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(Where there is a gap in the record, I either did not play that exercise that day, because I chose to work on another, or I did but could not go faster without error.)&lt;/p&gt;
&lt;p&gt;Note that the progress is not always linear. Sometimes there are &quot;trouble spots&quot; that hold me back for a while before I overcome them. Sometimes I am stagnant for a day or even a couple of days before I suddenly get better.&lt;/p&gt;
&lt;p&gt;Keeping detailed records is vital to an objective assessment of where one is in one&apos;s practice. I kept detailed records when losing thirty pounds over a decade ago, and when transforming myself from a non-runner into a marathoner.&lt;/p&gt;
&lt;h2&gt;Progress on the Bernstein&lt;/h2&gt;
&lt;p&gt;As mentioned, I have not practiced the Bernstein music that much, because I devote around 80 or 90 percent of my time to just improving my technique. The &lt;em&gt;fundamentals&lt;/em&gt; matter (I will talk about this in future blog posts) when trying to get good at something. One cannot just rush in without mastering fundamentals.&lt;/p&gt;
&lt;p&gt;Here are some metronome improvement numbers for sections of the Bernstein music:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;January 28: 40&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;January 29: 70&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;January 30: 128 (full speed)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;January 28: 100&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;January 31: 110 (I still need to get up to 128)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;January 30: 100 (I still need to get up to 160!!)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obviously, my goal for the next rehearsal is to get as much up to full speed as possible in the sections that I need the most work on. If I fail miserably to measure up, I will feel justified in quitting the orchestra. But given my improvement in the Rubank method, I think I have a fighting chance in the next ten days to get much better in the Bernstein music.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;By deciding to take on the challenge of joining the CMU All-University Orchestra while being pathetically incompetent at flute, I am trying to push the limits of my learning and practice abilities. I will drop out if I only manage to hold back rehearsals or feel that I will play badly at the scheduled concert. But so far, I am still hanging in there.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-03-12)&lt;/h2&gt;
&lt;p&gt;I ended up &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quitting the CMU AUO&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Liebster Blog Award: 5 blogs you should check out</title><link>https://franklinchen.com/blog/2012/01/29/liebster-blog-award-5-blogs-you-should-check-out/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/29/liebster-blog-award-5-blogs-you-should-check-out/</guid><pubDate>Sun, 29 Jan 2012 13:04:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/liebster-award.png&quot; alt=&quot;Liebster Blog Award&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Recently, my neighbor gave me a Liebster Blog Award. This is actually my second one, but I had not yet claimed the first one, under the rules of acceptance of the award. I&apos;ve had difficulty finding the origin of this award and the official documentation of the award, but from what I can tell, the rules are that I must give the award to five other bloggers who have fewer than 200 followers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thank the giver and link back to the blogger who gave it to you.&lt;/li&gt;
&lt;li&gt;Reveal your top five picks and let them know by leaving a comment on their blog.&lt;/li&gt;
&lt;li&gt;Copy and paste the award on your blog.&lt;/li&gt;
&lt;li&gt;Have faith that your followers will spread the love too!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So here goes, starting with identifying the two people who gave me the award:&lt;/p&gt;
&lt;h2&gt;The two who gave me an award&lt;/h2&gt;
&lt;h3&gt;Dana: &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://danaisageek.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://danaisageek.com/&quot;&amp;gt;Dana is a Geek&amp;lt;/span&amp;gt;&lt;/h3&gt;
&lt;p&gt;The first person to give me the Liebster award is a Pittsburgh local, Dana, who is actually inadvertently responsible for my getting into social networks such as Facebook and Twitter, through her talk on &lt;a href=&quot;https://hootsuite.com/&quot;&gt;HootSuite&lt;/a&gt; at &lt;a href=&quot;https://podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt; 5, in 2010. I still use HootSuite to this day. I also stopped by her talk yet again last year at PodCamp Pittsburgh 6 for a refresher, and it was actually after that when I finally decided to get serious about Twitter:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/DIuG4G8hOzY?list=PL6F136EEC5F65EBDA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Dana gave me the award back &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://danaisageek.com/2011/11/23/liebster-blog-awar/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://danaisageek.com/2011/11/23/liebster-blog-awar/&quot;&amp;gt;in November&amp;lt;/span&amp;gt;, but I was crazy busy then and decided to put off the hard work of properly accepting the award; that task went deep into my stack of to-do items, but has finally been taken out of the stack!&lt;/p&gt;
&lt;p&gt;Dana, like me, started blogging in earnest after PodCamp Pittsburgh 6. She writes on a variety of topics, including the cool activities she does with her kids, comments on current events she feels strongly about, and reflections on learning and living.&lt;/p&gt;
&lt;h3&gt;Becca: &lt;a href=&quot;https://articles.earthlingshandbook.org/&quot;&gt;&lt;strong&gt;The Earthling&apos;s Handbook&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Becca is my next-door neighbor. She gave me the award just over &lt;a href=&quot;https://articles.earthlingshandbook.org/2012/01/20/liebster-blog-award/&quot;&gt;a week ago&lt;/a&gt;, not knowing that I already had been given the award (but not yet accepted it!). After that, there was no way I could postpone indefinitely my acceptance of the award.&lt;/p&gt;
&lt;p&gt;Becca writes about all kinds of things she cares about, including her journey as she raises her son, her family&apos;s experiments in healthy and tasty cooking, and her commitment to an environmentally sound way of living.&lt;/p&gt;
&lt;h2&gt;Criteria for choosing five blogs to give the Liebster award to&lt;/h2&gt;
&lt;p&gt;I&apos;ve postponed choosing five blogs to give the Liebster award to because of the constraints. I follow a good number of blogs, but most of them are quite popular and probably have a lot more than 200 followers. Nobody knows exactly how many followers a blog has, but I understand that the spirit of the award is to give it to people whose blogs are not so widely followed. I don&apos;t necessarily know whether a particular blog is widely followed, but I&apos;ll go by my gut feel of how popular a blog might be (based on number of comments, whether the site also has mailing lists, etc.).&lt;/p&gt;
&lt;p&gt;I also have in mind that ideally I should pick blogs that my readers are likely to find useful and read. However, my readers have diverse interests, so I should pick blogs that give at least some representation of the different interests, e.g., I shouldn&apos;t pick blogs just dedicated to Pittsburgh or software development.&lt;/p&gt;
&lt;p&gt;Also I&apos;ve chosen blogs that are pretty active or hope to encourage to become more active.&lt;/p&gt;
&lt;h2&gt;Five blogs for you to check out&lt;/h2&gt;
&lt;h3&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wqed.org/birdblog/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wqed.org/birdblog/&quot;&amp;gt;Outside My Window&amp;lt;/span&amp;gt;&lt;/h3&gt;
&lt;p&gt;This local blog is very active, and written by Kate St. John, who apparently works at &lt;a href=&quot;https://www.wqed.org/&quot;&gt;WQED&lt;/a&gt; in Pittsburgh. I have never met her, but enjoy her blog because she posts photos all the time of nature, especially birds and trees, along with interesting information and musings of hers. Following her blog is like following the local seasons. If you live in our part of the country, you should definitely subscribe to her blog and get a daily treat!&lt;/p&gt;
&lt;h3&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://andrewcox.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://andrewcox.org/&quot;&amp;gt;Andrew Cox&amp;lt;/span&amp;gt;&lt;/h3&gt;
&lt;p&gt;This is a local personal blog by Andrew Cox, a software developer whom I must have first encountered probably no more than a year or so ago, at a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby&amp;lt;/span&amp;gt; meeting. Amusingly, I got to know him better largely through his blog and Twitter, although nowadays I run into him often in the Pittsburgh software developer user group scene.&lt;/p&gt;
&lt;p&gt;It turns out we have various interests in common beyond being practicing software developers. Andrew is passionate about both learning and teaching in the most general sense. We also pursue health and fitness experiments to improve ourselves. He writes about all these subjects.&lt;/p&gt;
&lt;p&gt;Andrew tends not to post on his blog very often, but usually when he does, he writes long, substantial articles that deserve close reading. So subscribe to his blog, and when he isn&apos;t posting, check out his archives too.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://robert.ocallahan.org/&quot;&gt;Well, I&apos;m Back&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This personal blog is written by Rob O&apos;Callahan, an old &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.cmu.edu/afs/cs/user/roc/public/www/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.cmu.edu/afs/cs/user/roc/public/www/index.html&quot;&amp;gt;computer science&amp;lt;/span&amp;gt; classmate of mine. He is from New Zealand and loves it so much that he moved back sometime after coming to the United States for grad school and work. He has strong opinions about everything and writes about many things, including his &lt;a href=&quot;https://computerworld.co.nz/news.nsf/news/mozillas-nz-boss-works-to-keep-the-web-wide-open&quot;&gt;working for Mozilla&lt;/a&gt; as a practicing advocate of open Web standards and browsers, technical tidbits, comments on culture, and his outings at home, complete with the breathtaking photos that are why I enjoy following his blog.&lt;/p&gt;
&lt;p&gt;Even before meeting Rob long ago, I&apos;d always wanted to visit New Zealand, but seeing his photos regularly keeps reminding me that Abby and I must go some day.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://web.archive.org/web/20241015071127/https://software-carpentry.org/blog/&quot;&gt;Software Carpentry&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This blog is very active, and written by Greg Wilson (whom I do not know), the project lead for the Software Carpentry project, whose goal is to help scientists (and others who are not professional software developers) learn and improve their software development skills.&lt;/p&gt;
&lt;p&gt;What makes Software Carpentry special is the strong emphasis on actually making use of empirical educational research, trying out ideas to see if they work, and maintaining an open source philosophy of sharing and building community.&lt;/p&gt;
&lt;p&gt;I follow this blog because I have a long-term interest in helping non-specialists learn computer science and programming. Especially given the very recent craze over &lt;a href=&quot;https://codecademy.com/&quot;&gt;Codecademy&lt;/a&gt; and other &quot;learn to code&quot; initiatives, I think it is very important to be informed on what insights people who have been teaching programming for many years now have to offer.&lt;/p&gt;
&lt;p&gt;I don&apos;t know how many followers this blog has, and therefore whether it qualifies under the terms of the Liebster Award, but I&apos;m going to assume that it should be read more than it is, by anyone who cares about the hard task of bringing computational fluency to everyone who can benefit from it, not just those studying for a computer science degree.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://mathbabe.org/&quot;&gt;mathbabe&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is a very active blog by Cathy O&apos;Neil, who is a mathematician (formerly in academia and formerly in a hedge fund), a mother, an activist. She writes about whatever is on her mind. She has strong opinions and sometimes uses strong language. Much of what she writes about has a quantitative bent, e.g., her explorations of economics, finance (including her involvement with Occupy Wall Street), programming with Python and R; but she has also written about being a female geek and math education.&lt;/p&gt;
&lt;p&gt;If you like real-time exploration of serious issues, and don&apos;t mind seeing strong opinions (especially political) you may or may not agree with, check out her blog!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Upon deciding on five blogs to bestow the Liebster award on, I hereby finally accept the Liebster award for myself, and I thank all of you who read my blog and hope you check out the blogs I have recommended! (I also hope the recipients come up with their own lists for us all to check out.)&lt;/p&gt;
</content:encoded></item><item><title>A new friend&apos;s very musical birthday party changed my life</title><link>https://franklinchen.com/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/27/a-new-friends-very-musical-birthday-party-changed-my-life/</guid><pubDate>Fri, 27 Jan 2012 23:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight Abby and I went to a birthday party at the home of Henry, someone we both coincidentally know, but not very well, a professional musician who is &lt;a href=&quot;https://henrydoktorski.com/&quot;&gt;quite an accomplished accordionist&lt;/a&gt;. The interesting thing is that I know him from having played two &lt;a href=&quot;https://web.archive.org/web/20221003115931/http://pittsburghcc.org/&quot;&gt;Pittsburgh Chess Club&lt;/a&gt; tournament games of chess with him seven years ago, back in February and March 2005, while Abby knows him from &lt;a href=&quot;https://www.henrydoktorski.com/misc/Accordion_Pool_Party.html&quot;&gt;his involvement&lt;/a&gt; in the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/stories/local/neighborhoods-city/accordion-pool-partys-another-use-for-empty-lawrenceville-pool-357459/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/stories/local/neighborhoods-city/accordion-pool-partys-another-use-for-empty-lawrenceville-pool-357459/&quot;&amp;gt;Accordion Pool Party&amp;lt;/span&amp;gt; in September of 2009.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/16409797?badge=0&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://vimeo.com/16409797&quot;&amp;gt;Accordion pool party&amp;lt;/a&amp;gt; from &amp;lt;a href=&quot;https://vimeo.com/dhenuka&quot;&amp;gt;Dhenuka Ganesh&amp;lt;/a&amp;gt; on &amp;lt;a href=&quot;https://vimeo.com&quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;Abby was invited to his birthday party as a fellow member of the Accordion Pool Party event (which she played in). She asked me whether I was interested in going. I said, sure! I was intrigued because Henry had created a program for his birthday party including a mini-concert he was going to give after dinner, followed by a &quot;jam session with musician friends&quot;.&lt;/p&gt;
&lt;p&gt;So we went. &lt;strong&gt;And my life changed, forever.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Bringing instruments&lt;/h2&gt;
&lt;p&gt;Abby brought her tambura to the party, while I brought my flute. I had no idea whether I was actually going to play anything, since I am still such a &lt;a href=&quot;/blog/2012/01/08/finding-and-using-my-childhood-flute-books/&quot;&gt;total, utter beginner&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-02-01)&lt;/h3&gt;
&lt;p&gt;What I didn&apos;t say in my original blog post was that I had just &lt;a href=&quot;/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/&quot;&gt;tentatively joined a non-audition orchestra&lt;/a&gt;, five days before Henry&apos;s birthday party, but was feeling very depressed about how bad I was and how I could barely play any of the music at all on my flute.&lt;/p&gt;
&lt;h2&gt;At the party&lt;/h2&gt;
&lt;p&gt;It was a pretty big party, with lots of family members, neighbors, friends, musicians, kids.&lt;/p&gt;
&lt;p&gt;Some people were already playing music when we arrived. They were on accordion, violin, piano, flute, taking turns playing music they had brought (or knew in their heads). I felt very intimidated and silly, because I had not even brought any music to play. And I knew what a beginner I still was on flute, when I heard one young woman playing flute herself. So I observed, listened, and tried to absorb what was going on.&lt;/p&gt;
&lt;p&gt;Henry joined in periodically, accompanying people while on the piano, doing a lot of on-the-spot sight reading of what people had brought over to play. It was fascinating to see the sight reading at work.&lt;/p&gt;
&lt;p&gt;Abby and I met a lot of people and chatted with them. Eventually dinner was ready and we ate.&lt;/p&gt;
&lt;h2&gt;Chess&lt;/h2&gt;
&lt;p&gt;Henry had a nice wooden chess set out, and it was perpetually occupied by some kids as well as adults. Henry told them that I was good, encouraging us to play together, so despite my having quit chess a year ago, I actually ended up playing two games!&lt;/p&gt;
&lt;h2&gt;Mini-recital&lt;/h2&gt;
&lt;p&gt;Henry gave his mini-recital, playing waltzes, tangos, and other music, with true verve and virtuosity. He also played duets with a pianist friend. I somehow got called into being a page turner for Henry for these duets. That was a fascinating experience, watching how he dealt with the sight-reading issues, ornamented, and did a whole lot of other things that enabled me to observe a musician&apos;s working mind in real-time action.&lt;/p&gt;
&lt;h2&gt;Jam session&lt;/h2&gt;
&lt;p&gt;Henry kept on encouraging people to play something. Abby got called into playing some Balkan music on her tambura. Henry really enjoyed that. He seemed upset that I didn&apos;t want to play the flute I had brought; why had I brought it then? But I just didn&apos;t feel up to it at all.&lt;/p&gt;
&lt;h2&gt;Departure&lt;/h2&gt;
&lt;p&gt;When everyone finally started to leave the party, I silently made a resolution to myself: this whole atmosphere of casual musical jamming and fun was something I wanted to get in on, so I promised myself that the next similar musical party I went to, &lt;em&gt;I would play&lt;/em&gt;. I would be prepared with at least something I&apos;d worked on that I could try to play.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am very excited that Abby and I have made some new friends coming to this birthday party and hope that we will have opportunities to see them again in the future. And the warm feeling I had all evening made me realize, this is what I want my life to be like: being among musicians, playing together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I am going to do whatever it takes in order to join this musical world.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2012-03-17)&lt;/h3&gt;
&lt;p&gt;I played tin whistle and flute at the &lt;a href=&quot;/blog/2012/03/17/st-patricks-day-party-playing-tin-whistle-and-flute/&quot;&gt;next party of Henry&apos;s we went to&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-03-30)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/03/30/a-delayed-st-patricks-day-party-playing-tin-whistle-and-alto-recorder/&quot;&gt;Another party&lt;/a&gt;: I played tin whistle again; and recorder with keyboard accompaniment for the first time in my life.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-09-08)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/09/08/finally-performing-some-sonatas-for-baroque-flute/&quot;&gt;Another party&lt;/a&gt;: I played Baroque flute sonatas for the first time in my life.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-09-21)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/09/21/my-first-time-singing-bossa-nova-also-a-temporary-farewell-to-baroque-flute/&quot;&gt;Another party&lt;/a&gt;: I played more Baroque flute sonatas, and sang as solo vocalist with accompaniment for the first time in my life.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-11-17)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;Another party&lt;/a&gt;: I sang a whole bunch, and also began playing Romantic music on modern flute.&lt;/p&gt;
</content:encoded></item><item><title>Learning about gardening from Grow Pittsburgh</title><link>https://franklinchen.com/blog/2012/01/27/learning-about-gardening-from-grow-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/27/learning-about-gardening-from-grow-pittsburgh/</guid><pubDate>Fri, 27 Jan 2012 06:57:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://lh4.googleusercontent.com/-8fnzFicG66o/Ts0QOtxEeUI/AAAAAAAABvU/aZOUP36NlJo/s576/GardenPrimerSOCIAL.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://lh4.googleusercontent.com/-8fnzFicG66o/Ts0QOtxEeUI/AAAAAAAABvU/aZOUP36NlJo/s576/GardenPrimerSOCIAL.jpg&quot;&amp;gt;[image: A Garden Primer]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Yesterday, Abby and I finished the third and final session of &lt;a href=&quot;https://www.showclix.com/search/A%20Garden%20Primer&quot;&gt;&quot;A Garden Primer&quot;&lt;/a&gt;, a basic course on organic gardening offered by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.growpittsburgh.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.growpittsburgh.org/&quot;&amp;gt;Grow Pittsburgh&amp;lt;/span&amp;gt;. We took this course because we would like to start our own little urban garden.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/a-garden-primer.jpg&quot; alt=&quot;Third meeting of A Garden Primer&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As an utter beginner with no experience, I thought the course was a very useful and friendly introduction to organic gardening.&lt;/p&gt;
&lt;h2&gt;Our goal&lt;/h2&gt;
&lt;p&gt;Abby and I have a small front yard which we would like to use to grow vegetables to eat. Although we are subscribers to a CSA, &lt;a href=&quot;https://www.kretschmannfarm.com/&quot;&gt;Kretschmann Farm&lt;/a&gt;, we could always use more vegetables to eat, especially since we have increased their proportion in our diet relative to the proportion of grains we formerly consumed.&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;There were about 25-30 of us in this three-week course, which met for two hours each Thursday evening at the East Liberty Presbyterian Church. There was a mix of people who participated: mostly young people in their twenties, but also older folks as well; most of us are from the city, but there were also those from further out with more space. Some already had serious gardening experience, while some were total novices.&lt;/p&gt;
&lt;p&gt;Dinner was included, a nice touch given everyone&apos;s busy schedules: burritos provided by Chipotle.&lt;/p&gt;
&lt;h2&gt;Format&lt;/h2&gt;
&lt;p&gt;The format of the course was that there were lectures with slide presentations, during which we were free to ask questions, and we received a 90-page reference manual at the beginning of the course that goes into much more detail about topics and is designed for reference when we actually start getting our hands dirty (I took some notes in my copy during lectures).&lt;/p&gt;
&lt;p&gt;For the second two weeks, we had homework in which we each came up with a preliminary design for our garden and discussed it in class, and homework in which we decided what to grow and discussed that.&lt;/p&gt;
&lt;p&gt;We also received a seed catalog so that we could learn what criteria to look for when selecting seeds.&lt;/p&gt;
&lt;h2&gt;Syllabus&lt;/h2&gt;
&lt;p&gt;A fundamental goal of the course, emphasized repeatedly, was to learn to grow in a way that is constructive to the land in the long run, rather than stripping resources from it in a short-term way.&lt;/p&gt;
&lt;p&gt;Therefore, the first thing we learned about was how to compost, and use compost as the basis of a healthy soil.&lt;/p&gt;
&lt;p&gt;Then we learned about how to choose a location for a garden, and discussed different ways of constructing one. Many useful suggestions were provided for materials.&lt;/p&gt;
&lt;p&gt;We learned about the seasons and life cycles of seeding, transplanting, harvesting.&lt;/p&gt;
&lt;p&gt;Finally, we learned about thinking of the whole ecosystem: how to deal with the real issues of pests, disease, and weeds without just getting out the machine gun and using nasty chemicals. We discussed mulching, crop rotation, taking advantage of beneficial insects (which will eat up the pests that actually harm leaves and fruit and roots).&lt;/p&gt;
&lt;p&gt;Advice on garden maintenance and winding down the season ended the course.&lt;/p&gt;
&lt;h2&gt;Our plan&lt;/h2&gt;
&lt;p&gt;Abby and I have yet to test the soil in the front yard, but in any case, we may go for a raised bed instead of an in-ground garden. We are thinking of a 12-by-3 foot area to use in the front yard. We will do more study and preparation before the spring comes.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Doing some serious gardening will be a new adventure for Abby and me. I am grateful that Grow Pittsburgh has promoted urban gardening for local food production, and spread the word so that more of us in the city can comfortably start getting involved ourselves. I highly recommend the &quot;Garden Primer&quot; course to anyone who is a novice at organic gardening (whether urban or suburban or rural).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: the course is being offered again this winter two more times, so there is still time to jump in for this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tuesdays: February 7, 14, 21&lt;/li&gt;
&lt;li&gt;Mondays: March 12, 19, 26&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Improving my breakfast and other meals: a paleo progress report</title><link>https://franklinchen.com/blog/2012/01/26/improving-my-breakfast-and-other-meals/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/26/improving-my-breakfast-and-other-meals/</guid><pubDate>Thu, 26 Jan 2012 09:40:00 GMT</pubDate><content:encoded>&lt;p&gt;In the past couple of months, I&apos;ve made some large changes in my diet. Fundamentally, I&apos;ve moved in a &lt;a href=&quot;/categories/paleo/&quot;&gt;paleo&lt;/a&gt; direction. The largest change was breakfast, where I completely gave up my old breakfast and &lt;a href=&quot;/blog/2011/11/03/one-of-these-breakfasts-is-not-paleo/&quot;&gt;replaced it&lt;/a&gt;. After some experimentation, I&apos;ve finally arrived at a breakfast template that seems optimal for me (as gauged by my morning energy level and other criteria I discuss below).&lt;/p&gt;
&lt;p&gt;As an example, here is what I ate this morning:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/breakfast-with-prune.jpg&quot; alt=&quot;Breakfast with flax seeds and prune&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The ingredients, and what has changed, and why:&lt;/p&gt;
&lt;h2&gt;Recipe&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;1/2 tsp &lt;a href=&quot;https://www.organicfacts.net/organic-oils/organic-coconut-oil/health-benefits-of-coconut-oil.html&quot;&gt;coconut oil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2 &lt;a href=&quot;/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs/&quot;&gt;eggs&lt;/a&gt;, fried&lt;/li&gt;
&lt;li&gt;1/2 clove of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.garlic-central.com/garlic-health.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.garlic-central.com/garlic-health.html&quot;&amp;gt;garlic&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;some shakes of seasoning mix (salt, pepper, etc.)&lt;/li&gt;
&lt;li&gt;a dash of turmeric&lt;/li&gt;
&lt;li&gt;some red pepper flakes&lt;/li&gt;
&lt;li&gt;butternut squash&lt;/li&gt;
&lt;li&gt;spinach&lt;/li&gt;
&lt;li&gt;uncooked &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.traderjoes.com/how-to/olive-oil.asp&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.traderjoes.com/how-to/olive-oil.asp&quot;&amp;gt;extra virgin olive oil&amp;lt;/span&amp;gt; on top of the veggies&lt;/li&gt;
&lt;li&gt;about 7 walnuts&lt;/li&gt;
&lt;li&gt;1 tsp &lt;a href=&quot;https://web.archive.org/web/20160322235430/http://lowcarbdiets.about.com/od/whattoeat/a/flaxinfo.htm&quot;&gt;flax seeds&lt;/a&gt;, sprinkled on top of everything at the end&lt;/li&gt;
&lt;li&gt;1 prune on the side&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Changes and rationale&lt;/h2&gt;
&lt;h3&gt;Carbs&lt;/h3&gt;
&lt;p&gt;I stopped my short experiment of eating potatoes or rice with breakfast because I found that my morning energy level was simply better without those high-glycemic carbs. I think there is a legitimate place for such carbs, but not in my current schedule, which does not (yet) include intensive exercise before breakfast.&lt;/p&gt;
&lt;h3&gt;Additions&lt;/h3&gt;
&lt;p&gt;I now always eat two eggs, instead of one. One wasn&apos;t really enough to make me feel satisfied.&lt;/p&gt;
&lt;p&gt;I recently added coconut oil, which I had not been using because some past experiments did not work out well. I think that was because of using too much. So I&apos;m not using much now. Amusingly, my main use of coconut oil up till now has been to rub onto my skin during this dry winter season.&lt;/p&gt;
&lt;p&gt;I&apos;ve added more spices such as turmeric and hot red pepper to my breakfast because I like them and because they seem to give me a little wake-up boost and stimulate alertness.&lt;/p&gt;
&lt;p&gt;The flax seeds are new, as well as the prune. The prune is probably not &quot;paleo&quot;, according to someone or other, but as I&apos;ve mentioned before, I get confused by the different paleo schools of thought, and I don&apos;t follow any of them, but just use them as practical sources of ideas for self-experimentation. I have a very specific rationale for the use of flax seeds and prunes: I have to confess that I dealt with constipation issues when initially moving away from my big oatmeal breakfast to my paleo-style breakfast. I tried various solutions, but one that seems to have worked is the addition of flax seeds (which I typically only add for breakfast, but sometimes will also do for another meal too) and the prune. I have had no constipation issues since adding these to my breakfast.&lt;/p&gt;
&lt;h2&gt;Other meals&lt;/h2&gt;
&lt;p&gt;I have been trying to kick my &quot;addiction&quot; to rice. I have gradually decreased my consumption of rice (white or brown). Almost imperceptibly, my craving for it has decreased continually. It&apos;s now been a couple of days since I have been doing without rice for lunch, but I am still eating it for dinner.&lt;/p&gt;
&lt;p&gt;I still love pizza, and have not yet eliminated it. It&apos;s very hard to avoid both convenience and temptation when it&apos;s provided at talks and meetings. However, on days when I plan to eat pizza, I have tried to get my metabolism up before eating it. That seems to help. I&apos;ll still keep in my mind the idea of giving up pizza.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My experimentation with diet have continued over the months, and will continue.&lt;/p&gt;
&lt;p&gt;I hope my report may be of use to you if you are considering changing up your breakfast patterns away from the &quot;standard&quot; American sugary breakfasts.&lt;/p&gt;
&lt;p&gt;What do you eat for breakfast that works for you? What do you similarly or differently from me?&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Java User Group: Developing Languages Using JRuby</title><link>https://franklinchen.com/blog/2012/01/24/pittsburgh-java-user-group-developing-languages-using-jruby/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/24/pittsburgh-java-user-group-developing-languages-using-jruby/</guid><pubDate>Tue, 24 Jan 2012 22:23:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight at PittJUG, Chris Umbel gave a version of the talk he did for the Pittsburgh Ruby group a couple of months ago. You can read my report on that &lt;a href=&quot;/blog/2011/10/06/pittsburgh-ruby-building-a-compiler-in-jruby/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You might wonder why I attended the PittJUG meeting then, if I already heard the talk. The fact is, I&apos;ve learned that the most value I get from attending these user group meetings is not so much the presentations (although I get considerable value, actually, from learning about good or not so good presentation techniques), but just hanging out to chat before and after a presentation, whether about the topic of the presentation or not.&lt;/p&gt;
&lt;h2&gt;Presentation materials&lt;/h2&gt;
&lt;p&gt;Greg has uploaded Chris&apos;s slides as well as a video of the PittJUG talk:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/11327294&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&amp;gt; &amp;lt;/iframe&amp;gt; &amp;lt;div style=&quot;margin-bottom:5px&quot;&amp;gt; &amp;lt;strong&amp;gt; &amp;lt;a href=&quot;https://www.slideshare.net/akinsgre/building-a-compiler-in-jruby&quot; title=&quot;Building a compiler in JRuby&quot; target=&quot;_blank&quot;&amp;gt;Building a compiler in JRuby&amp;lt;/a&amp;gt; &amp;lt;/strong&amp;gt; from &amp;lt;strong&amp;gt;&amp;lt;a href=&quot;https://www.slideshare.net/akinsgre&quot; target=&quot;_blank&quot;&amp;gt;akinsgre&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/wvg1m-lyKsU&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Discovering French traditional social dance in Pittsburgh</title><link>https://franklinchen.com/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/</guid><pubDate>Mon, 23 Jan 2012 21:53:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/bourree.jpg&quot; alt=&quot;Dancing to bourree&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;LwyH1viCibo&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;On Saturday, Abby and I went for the first time to the &lt;a href=&quot;https://www.facebook.com/events/344055168957638/&quot;&gt;latest meeting&lt;/a&gt; of a &lt;a href=&quot;https://web.archive.org/web/20220918191458/https://www.coalcountry.org/frenchdance.html&quot;&gt;local French traditional social dance&lt;/a&gt; workshop and dance here in Pittsburgh.&lt;/p&gt;
&lt;p&gt;It was a lot of fun!&lt;/p&gt;
&lt;h2&gt;Attendance&lt;/h2&gt;
&lt;p&gt;Despite the recently fallen snow at the time (now all but melted!), around twelve of us eventually showed up, and the male-female ratio happened to be very good. For most of us, it was our first time trying out French dancing, but some of us just happened to have had prior some experience with other dancing, such as ballroom and swing and Cajun. The workshop was very friendly to beginners.&lt;/p&gt;
&lt;h2&gt;Dances we learned&lt;/h2&gt;
&lt;p&gt;We spent an hour or so learning various dances, taught by Gregory Dyke and Lisa Tamres.&lt;/p&gt;
&lt;p&gt;We warmed up by learning a simple &lt;a href=&quot;https://en.wikipedia.org/wiki/Circle_dance&quot;&gt;&lt;em&gt;circle dance&lt;/em&gt;&lt;/a&gt; to a waltz rhythm, and Gregory made it more challenging by having us sing along in French (which not all of us knew, but that was OK; I know some French but half the time I just hummed rather than try to sing French while doing dance steps).&lt;/p&gt;
&lt;p&gt;Then we went to the partnered &lt;em&gt;waltz&lt;/em&gt;, which we did at various tempos, but all pretty fast. There was discussion of toning down the long gliding and lifting actions that some of us reflexively use from having experience with the slow waltz from ballroom dancing, because there is not enough time to use those actions for every step. (I immediately remembered being constantly reminded not to perform these actions when I was dancing &lt;a href=&quot;https://en.wikipedia.org/wiki/Viennese_Waltz&quot;&gt;Viennese waltz&lt;/a&gt; in my ballroom dance days. The tempo range for French waltz seems basically the same.)&lt;/p&gt;
&lt;p&gt;Then we learned the &lt;a href=&quot;https://en.wikipedia.org/wiki/Schottische&quot;&gt;&lt;em&gt;Schottische&lt;/em&gt;&lt;/a&gt;, in a variant that had a triple step, followed by a triple step, and then four single steps.&lt;/p&gt;
&lt;p&gt;Then we changed things up to a variant of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Bourr%C3%A9e&quot;&gt;&lt;em&gt;bourrée&lt;/em&gt;&lt;/a&gt;, in double time, in which there are two lines formed, and the partners facing each other alternate dancing toward each other and past each other, leaving room for personal expression as they do so.&lt;/p&gt;
&lt;p&gt;We returned to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mazurka&quot;&gt;&lt;em&gt;mazurka&lt;/em&gt;&lt;/a&gt;, which was very tricky for many of us because of the asymmetric step pattern: 1-2-hold, 1-2-3, followed by the same starting with the other foot. I still don&apos;t completely have the hang of it, but I could feel how it could be pretty exciting because of the holding and building momentum for the second half of the pattern, on which I like to turn.&lt;/p&gt;
&lt;p&gt;Finally, we learned a really fun circle dance, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mts.net/~jinks/fd/circassi.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mts.net/~jinks/fd/circassi.htm&quot;&amp;gt;Circassian Circle&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Social dancing&lt;/h2&gt;
&lt;p&gt;After the workshop instruction, the pianist, Ellen Gozian, had arrived, and the social dance began to live music performed by her and also by Gregory on his wooden flute.&lt;/p&gt;
&lt;p&gt;About another hour of dancing followed, till it was time for Ellen to leave. Abby and I decided to leave shortly afterwards, but social dancing was going to continue with recorded music.&lt;/p&gt;
&lt;p&gt;I had a lot of fun exploring new dances, and would like to attend future workshops and social dances. It&apos;s great that so many different dance and music groups exist here in Pittsburgh!&lt;/p&gt;
&lt;p&gt;I am grateful to Gregory and Lisa for the instruction, Ellen for the piano playing, and every person who was on the dance floor. I think I can safely claim that everyone was smiling and laughing and having a great time at this event!&lt;/p&gt;
&lt;h2&gt;Invitation&lt;/h2&gt;
&lt;p&gt;If you&apos;re in the Pittsburgh area and interested in French traditional social dance, check out the &lt;a href=&quot;https://www.facebook.com/groups/182324948478861/&quot;&gt;Facebook group&lt;/a&gt; for announcements.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-02-20)&lt;/h2&gt;
&lt;p&gt;Abby and I have &lt;a href=&quot;/blog/2012/02/20/enjoying-more-french-dancing-in-pittsburgh/&quot;&gt;continued enjoying French dancing&lt;/a&gt; over the year.&lt;/p&gt;
</content:encoded></item><item><title>CMU Fitness Challenge keynote lecture by Vonda Wright: Stay strong at any age</title><link>https://franklinchen.com/blog/2012/01/20/cmu-fitness-challenge-keynote-lecture-by-vonda-wright-stay-strong-at-any-age/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/20/cmu-fitness-challenge-keynote-lecture-by-vonda-wright-stay-strong-at-any-age/</guid><pubDate>Fri, 20 Jan 2012 22:32:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://athletics.cmu.edu/athletics/directory/headshots/vonda_wright_hs.jpg?max_height=200&amp;amp;max_width=150&quot; alt=&quot;Dr. Vonda Wright&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I attended a &lt;a href=&quot;https://athletics.cmu.edu/generalnews/2011-2012/vondawright&quot;&gt;much-anticipated talk at CMU&lt;/a&gt; by &lt;a href=&quot;https://www.drvondawright.com/&quot;&gt;Dr. Vonda Wright&lt;/a&gt; of UPMC in McConomy Auditorium, given to the CMU community as a keynote lecture for the CMU Fitness Challenge I participate in.&lt;/p&gt;
&lt;p&gt;&quot;Dr. Wright is an orthopedic surgeon at UPMC and an author and researcher. She focuses on the master athlete and living a healthy lifestyle, having conducted extensive research on the benefits of remaining active throughout one&apos;s lifetime.&quot;&lt;/p&gt;
&lt;p&gt;It was a fascinating and inspiring talk! Dr. Wright was a high-energy speaker, very passionate and direct. She spoke on many topics, actually, not just about physical exercise. And she spoke frankly about personal experiences in her life.&lt;/p&gt;
&lt;h2&gt;Focus on over 40&lt;/h2&gt;
&lt;p&gt;Dr. Wright was particularly speaking to the older staff members in attendance. She argued that there was no reason one should not remain strong and vital well into what some might consider old age. She indicated that research showed that significant decline does not need to kick in until the &quot;cutoff&quot; point of age 70, which is when it seems that even very health people start a significant downward slope.&lt;/p&gt;
&lt;p&gt;She said that as someone going on age 45 (she certainly looked a lot more fit than most people that age!), she learned that there is not enough research on active people over age 40, because of a bias in favor of studying young athletes. The result is that people have made wrong assumptions about what it is like to grow older.&lt;/p&gt;
&lt;p&gt;Her favorite phrase seems to be &quot;bash your bones&quot;: she emphasized that weight-bearing exercise is particularly important and stimulating for older people. She showed photos of how inactivity can result in &quot;fat in muscle&quot; (yuck).&lt;/p&gt;
&lt;h2&gt;Business principles&lt;/h2&gt;
&lt;p&gt;One interesting perspective she wanted to share was that she urged us to apply &quot;business principles&quot; to our personal health: after all, if we pay a lot of attention to our careers and jobs, how come we don&apos;t treat our own health as a serious job too? Furthermore, it&apos;s not just our physical health, narrowly construed: she asked, &quot;What do we really want?&quot;&lt;/p&gt;
&lt;p&gt;Without plans, she said, we are just laying bricks, not building a movement. Whatever we take seriously, we must think ahead five to ten years, and do nothing that is not part of the goal. We must learn to say &quot;No&quot; to what is unimportant. If we focus on what is most important to us, &quot;everything else falls into place&quot;.&lt;/p&gt;
&lt;p&gt;She told a personal story illustrating what she meant. She had an opportunity at one point in her career to just continue working hard and become chair of the department. But she realized she didn&apos;t want to be chair and followed her own path instead, choosing what interested her.&lt;/p&gt;
&lt;h2&gt;Books&lt;/h2&gt;
&lt;p&gt;Dr. Wright openly promoted &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.drvondawright.com/fitness-author/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.drvondawright.com/fitness-author/&quot;&amp;gt;her books&amp;lt;/span&amp;gt; throughout the talk. I made a note to look them up at the library.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I thought it was great that CMU had Dr. Vonda Wright come give a talk for the CMU Fitness Challenge this year. Many ideas she shared, I found inspirational. And as a master athlete herself, she is a great role model.&lt;/p&gt;
</content:encoded></item><item><title>How to respond if a child asks you a science question you don&apos;t know the answer to</title><link>https://franklinchen.com/blog/2012/01/19/how-to-respond-if-a-child-asks-you-a-science-question-you-dont-know-the-answer-to/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/19/how-to-respond-if-a-child-asks-you-a-science-question-you-dont-know-the-answer-to/</guid><pubDate>Thu, 19 Jan 2012 22:28:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I was very sad to see a news article &lt;a href=&quot;https://web.archive.org/web/20240518213908/https://www.bbc.co.uk/news/education-16612100&quot;&gt;&lt;strong&gt;Children&apos;s science questions &quot;stump many parents&quot;&lt;/strong&gt;&lt;/a&gt;. I was &lt;em&gt;not&lt;/em&gt; sad for any of the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oh no, kids these days are receiving a poor science education!&lt;/li&gt;
&lt;li&gt;Oh no, the parents received a poor science education when they were young!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was sad because of many of the parents&apos; reactions to their children&apos;s questions:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
...16% told their children to ask their partner and a fifth made up a response or pretended that no one knew the answer.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;What are some better alternative responses?&lt;/p&gt;
&lt;h2&gt;The first step to acting like a scientist: not knowing&lt;/h2&gt;
&lt;p&gt;One obvious response that is already by itself profoundly adequate would be to say &lt;strong&gt;&quot;I don&apos;t know&quot;&lt;/strong&gt;. So easy, so honest, yet many parents refused to use this response. But a parent who replied even in only this minimalist way would be teaching some very important lessons about science:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Science begins with &lt;em&gt;not knowing&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Science is about being &lt;em&gt;honest&lt;/em&gt; about reality and about oneself; it is about deliberately restricting one&apos;s ego, recognizing one&apos;s limitations, and acknowledging ignorance.&lt;/li&gt;
&lt;li&gt;Science proceeds with &lt;em&gt;asking&lt;/em&gt;. The child by asking should be commended for asking, rather than implicitly punished or evaded for possibly embarrassing the parent.&lt;/li&gt;
&lt;li&gt;Science proceeds with &lt;em&gt;trying&lt;/em&gt; to find out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The second step to acting like a scientist: looking for an answer&lt;/h2&gt;
&lt;p&gt;Regarding trying to find out, here is another quote from the article:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
About a third of parents said they actively researched answers to their children&apos;s inquiries.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;It would be possible to stop here and praise these parents.&lt;/p&gt;
&lt;p&gt;But as phrased, this response is not satisfactory either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Science is not about looking up an &lt;em&gt;answer&lt;/em&gt; somewhere, as one might look up a baseball statistic.&lt;/li&gt;
&lt;li&gt;How involved were the children in obtaining the &quot;answer&quot;? Did the parents fetch the &quot;answer&quot; and hand it over? Or did the children get actively involved in looking for the answer?&lt;/li&gt;
&lt;li&gt;Science is not about sitting back and getting an answer from someone.&lt;/li&gt;
&lt;li&gt;Science is not really about answers at all. It is a &lt;em&gt;mindset&lt;/em&gt;, a &lt;em&gt;process&lt;/em&gt; of looking for an answer, and looking for ways to evaluate possible answers for adequacy and some measure of confidence. It is above all a &lt;em&gt;way of life&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The third step to acting like a scientist: being wrong&lt;/h2&gt;
&lt;p&gt;Sometimes one settles on an answer, and then later decides it is unsatisfactory. What then?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Science is not about being right.&lt;/li&gt;
&lt;li&gt;Science is often about saying &lt;strong&gt;&quot;I was wrong&quot;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The third step to acting like a scientist: uncertainty&lt;/h2&gt;
&lt;p&gt;Eventually even the notion of &quot;answer&quot; must be considered flawed. We are never &lt;em&gt;certain&lt;/em&gt; about our theories. Our theories are based on &lt;em&gt;models&lt;/em&gt; that we invent. The models can have explanatory or predictive power or practical applications, but they themselves are transient. The scientific models from two centuries ago are very different from the scientific models of thirty years ago, and the scientific models of today are very different from the scientific models of thirty years ago. What we believed to be the &quot;answer&quot; thirty years ago looks today to have been an error.&lt;/p&gt;
&lt;p&gt;And unless we believe that we are near the &quot;end of science&quot; (I do not believe this for a moment), we must also take into consideration the plausibility that thirty years from now, we will laugh at the currently favored scientific models of today the way we laugh at the hair and clothing styles of the 1980s.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Science is about saying &lt;strong&gt;&quot;I am not sure&quot;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The best thing that everyone could learn about science, whether one is young or old, child or parent, is what its true nature is: a way of thinking, a way of acting, a way of living. It is not about &quot;facts&quot; to accumulate, or jargon to memorize.&lt;/p&gt;
</content:encoded></item><item><title>How school made me hate computer science and programming</title><link>https://franklinchen.com/blog/2012/01/16/how-school-made-me-hate-computer-science-and-programming/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/16/how-school-made-me-hate-computer-science-and-programming/</guid><pubDate>Mon, 16 Jan 2012 19:57:00 GMT</pubDate><content:encoded>&lt;p&gt;Some months ago, when the legendary computer scientist &lt;a href=&quot;https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)&quot;&gt;John McCarthy&lt;/a&gt; died, I wrote a blog post in which I briefly reminisced about the way &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;I hated computer programming before I came to love it&lt;/a&gt;. Today I am filling in some more details about how school (elementary school through college) made me fear, misunderstand, and hate computer science and programming. I am inspired to do this because&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Just a few weeks ago, I came across an old article from 1992 by someone who had a similar experience, and I wanted to complete my story. Although my story also goes back more than two decades, I feel that the same fundamental stumbling blocks exist to &lt;a href=&quot;/blog/2011/12/09/why-everyone-should-learn-computer-science/&quot;&gt;the universal computational competence that I now advocate&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The topic of learning &quot;coding&quot; has exploded into the popular media, with hundreds of thousands of people having signed up for &lt;a href=&quot;https://web.archive.org/web/20250827160738/http://codeyear.com/&quot;&gt;Code Year&lt;/a&gt; and even New York Mayor Bloomberg stating that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.businessinsider.com/mike-bloomberg-pledges-to-learn-to-code-on-codecademy-this-year-2012-1&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.businessinsider.com/mike-bloomberg-pledges-to-learn-to-code-on-codecademy-this-year-2012-1&quot;&amp;gt;he has signed up&amp;lt;/span&amp;gt; for the free &lt;a href=&quot;https://codecademy.com/&quot;&gt;Codecademy&lt;/a&gt; online tutorial courses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My goals in telling my story:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I want to raise awareness among those who might this year be jumping into &quot;coding&quot; that they might encounter the same kinds of stumbling blocks that discouraged me at first, so that they don&apos;t prematurely jump to such conclusions as &quot;programming is boring and confusing&quot; or &quot;programming requires special talent I don&apos;t have&quot;.&lt;/li&gt;
&lt;li&gt;I want for educators to take note of the barriers facing students who may not be &quot;naturals&quot; to understanding computation or writing computer programs in the context of currently common programming environments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a forthcoming article, I will engage in a severe critique of the &lt;a href=&quot;https://codecademy.com/&quot;&gt;Codeacademy&lt;/a&gt; lessons I have so far examined and gone through, while helping my wife learn programming from scratch.&lt;/p&gt;
&lt;h2&gt;6th grade and BASIC in the early 1980s&lt;/h2&gt;
&lt;p&gt;When I was in middle school in the 6th grade, my math teacher was crazy about computers. He was convinced that his best math students, including me, should learn computer programming. I was basically coerced into staying after school for sessions in which he taught us to program in BASIC for the &lt;a href=&quot;https://en.wikipedia.org/wiki/TRS-80&quot;&gt;TRS-80 microcomputer&lt;/a&gt;. The BASIC language was very primitive. We used line numbers and &lt;code&gt;GOTO&lt;/code&gt;. Some boys got totally into programming, and tried writing video games. I was not one of them. I was not a natural at programming. I will admit it: I never really understood &lt;code&gt;GOSUB&lt;/code&gt; or &lt;code&gt;PEEK&lt;/code&gt; or &lt;code&gt;POKE&lt;/code&gt; at the time. In fact, one beautiful spring day, since it was nice outside, I decided to simply walk home from school instead of staying around for his class. After missing a couple of sessions, I was shocked that he contacted my parents and basically made me continue on. I finished out the year, then never wrote a BASIC program again (until college).&lt;/p&gt;
&lt;p&gt;I did like playing computer games, however. I just had no interest in making them.&lt;/p&gt;
&lt;h2&gt;7th grade and Pac-Man&lt;/h2&gt;
&lt;p&gt;In the 7th grade, I was crazy about video games and my sister and I managed to save enough allowance money to buy an &lt;a href=&quot;https://en.wikipedia.org/wiki/Atari_2600&quot;&gt;Atari 2600&lt;/a&gt; video game console. I had encountered an IBM PC by then, but had no interest in it.&lt;/p&gt;
&lt;h2&gt;9th grade and my first programming class&lt;/h2&gt;
&lt;p&gt;When I started high school in the 9th grade, there was a requirement that all students take a semester of &quot;computer literacy&quot;. After several meetings of that class, I wanted out. We were shown slides of tape drives, told about bits and bytes, and I had no interest whatsoever in any of that. I heard that there was a way out of the requirement, which was to take an actual computer programming class. Since my father was working as a mainframe programmer (his degree in information sciences being from the 1970s), he suggested I take &lt;a href=&quot;https://en.wikipedia.org/wiki/COBOL&quot;&gt;COBOL&lt;/a&gt;, which were offered by my high school (in addition to &lt;a href=&quot;https://en.wikipedia.org/wiki/Fortran&quot;&gt;Fortran&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_RPG&quot;&gt;RPG&lt;/a&gt; and probably others I don&apos;t remember).&lt;/p&gt;
&lt;p&gt;I switched to the COBOL class. Here we learned about pseudocode, used &lt;a href=&quot;https://web.archive.org/web/20190821040844/https://www.retroist.com/2009/01/11/ibm-flowcharting-template/&quot;&gt;flowchart templates&lt;/a&gt; to draw symbols on paper, wrote our programs out in pencil, and used the big keypunch machine to punch out our programs. Every day we had the opportunity to submit a punch card deck to the teacher (with the appropriate job control and compiler cards) to drop off for overnight processing at some mainframe somewhere.&lt;/p&gt;
&lt;p&gt;I hated the class. The whole rigid process we were supposed to go through, the verbosity of the COBOL language, and the nature of the programs we wrote, made computing seem very boring. I started not doing any homework, and after several weeks, I was failing the class, and the teacher called my parents.&lt;/p&gt;
&lt;p&gt;I dutifully caught up on all the missing programming projects, got my A in the class, and then never touched COBOL again, and forgot any COBOL I &lt;em&gt;pretended&lt;/em&gt; to learn while basically copying and pasting from example programs in the textbook and modifying stuff until it &quot;worked&quot;. I have a confession to make: despite my A in the class, I never really understood COBOL or programming. I was just going through the motions. It was truly &lt;a href=&quot;https://en.wikipedia.org/wiki/Cargo_cult_programming&quot;&gt;&lt;em&gt;cargo-cult programming&lt;/em&gt;&lt;/a&gt;. &lt;strong&gt;This is a warning to all educators to actually verify whether someone has learned something, as opposed to cleverly faked it!&lt;/strong&gt; (I will come to this subject again.)&lt;/p&gt;
&lt;h2&gt;10th grade and Pascal&lt;/h2&gt;
&lt;p&gt;In the 10th grade (in a new high school), my math teacher made it mandatory to write some rudimentary programs in Pascal to illustrate the trigonometry and other stuff we were learning. We used the MacPascal interpreter on the Macintosh for this purpose: there was a computer lab where we did our work and printed out our programs and results. I have almost no memory of any of this except that I was intrigued by the automatic formatting and the proportional fonts in MacPascal.&lt;/p&gt;
&lt;p&gt;I should note that at this time in my life, I had no interest in computers. We still did not have one at home, and I had long since outgrown the Atari video game console.&lt;/p&gt;
&lt;h2&gt;11th grade and Advanced Placement computer science&lt;/h2&gt;
&lt;p&gt;In the 11th grade, I had the opportunity to take an Advanced Placement course in computer science, taught using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pascal_(programming_language)&quot;&gt;Pascal&lt;/a&gt; programming language. (I mentioned this in &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;my previous article&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;I signed up for the class. You might wonder why, given that I had no interest in computers or programming (in Pascal or any other language). I had a perverse incentive. Advanced Placement courses were advertised as a way to get out of equivalent courses in college. I figured that if I ended up in college with a computing course requirement, I wanted to place out of it! So I signed up for Advanced Placement computer science because I &lt;em&gt;hated&lt;/em&gt; computers and wanted to get the pain over with earlier rather than later.&lt;/p&gt;
&lt;p&gt;The course was taught by a math teacher who made us use as a textbook a book that I found totally over my head, &lt;a href=&quot;https://www.amazon.com/Solve-Computer-Prentice-Hall-International-Science/dp/0134340019&quot;&gt;&quot;How to Solve It by Computer&quot;&lt;/a&gt;. I&apos;m betting that if I had a copy of this book now to look at, I might actually enjoy it, but at the time, it was forbidding. It was all about &lt;a href=&quot;https://en.wikipedia.org/wiki/Loop_invariant&quot;&gt;loop invariants&lt;/a&gt;, proving your algorithms to be correct, etc.&lt;/p&gt;
&lt;p&gt;One side effect of the course was that pretty soon it became clear that it was the most time-consuming course. I simply did not have enough time in the computer lab to get my programs running correctly. I had my father buy me an Apple IIe computer so that I could do my coding and debugging at home into the wee hours of the night as necessary.&lt;/p&gt;
&lt;p&gt;I found it annoyingly difficult to get out of the BASIC and COBOL mindset into the &quot;structured programming&quot; enforced by Pascal. As a result, I am sensitive to the idea that &quot;learning&quot; inferior programming languages can genuinely get in the way of further progress as a programmer.&lt;/p&gt;
&lt;p&gt;I did not enjoy the class at all, but did enjoy the side effect of having a computer at home, which I used for playing some games as well as for word processing, so that I no longer needed to use a typewriter and scissors to work on drafts of papers.&lt;/p&gt;
&lt;p&gt;Again, I will admit that for much of the class, I was proceeding with no real understanding of what I was doing. I was copying and pasting and cargo-culting my way through the class, and through my receiving a 5 on the Advanced Placement exam. After this class, I thought I was done with programming for the rest of my life.&lt;/p&gt;
&lt;p&gt;The problem was that we never wrote any programs to do anything I found interesting, and was never exposed to the general possibilities of what we could do through programming. Writing a recursive program to generate fractals was not very interesting to me. My biggest project in the class was writing a program to maintain a library of books and be able to sort and search it and write it out to floppy disk and read it back in. That was also not very interesting to me.&lt;/p&gt;
&lt;h3&gt;Motivations&lt;/h3&gt;
&lt;p&gt;My hobbies at the time included playing chess, learning languages (I was enthusiastic about French and had taught myself Latin), reading lots of books. If the world had been different then, and someone had told me what I could do by knowing how to program, I could have been very interested. For example, suppose that the Web existed then. Suppose someone told me that by knowing how to program, I could write code to create my own flashcard system for learning languages. Then there would be a question of whether an application already exists for purchase that can do that. (It turns out that I have never been satisfied with any flashcard program I have used.)&lt;/p&gt;
&lt;p&gt;I think that to attract interest in computer programming, it is vital to give people reasons that they can relate to. And it is not helpful to &lt;em&gt;discourage&lt;/em&gt; potential programmers by telling them that they should be doing something else, like, just focusing on being a doctor or salesman, giving the argument that the &quot;good&quot; programmers are already doing their job creating applications ready to use, and that therefore &lt;a href=&quot;https://en.wikipedia.org/wiki/Comparative_advantage&quot;&gt;comparative advantage&lt;/a&gt; says that only professional programmers should learn how to program. This is like telling someone centuries ago that it is no use learning to read or write because others can already do it and probably do it much better. I think the proliferation of information means that more and more people need to be able to analyze it. Whether you call it &quot;scripting&quot; or &quot;macros&quot; or &quot;customization&quot;, the truth is that at some point, real programming is necessary in order to truly understand and control one&apos;s data.&lt;/p&gt;
&lt;h2&gt;After 11th grade&lt;/h2&gt;
&lt;p&gt;The rest of the story, &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;I already told earlier&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My K-12 schooling did nothing to encourage me to actually understand and apply computer science and programming. I wonder to what extent the kind of experience I had still applies today in K-12.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;Upcoming topics I will write about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My eye-opening experience as a teaching assistant for an undergraduate computer science course.&lt;/li&gt;
&lt;li&gt;My current monitoring of Codecademy&apos;s offerings and my ongoing efforts to teach my wife computer programming.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Experiment in learning: completing Stanford online course: Machine Learning</title><link>https://franklinchen.com/blog/2012/01/12/experiment-in-learning-completing-stanford-online-course-machine-learning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/12/experiment-in-learning-completing-stanford-online-course-machine-learning/</guid><pubDate>Thu, 12 Jan 2012 23:54:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday I wrote about my experience with completing, in fall 2011, the free online Stanford course &lt;a href=&quot;/blog/2012/01/11/experiment-in-learning-completing-stanford-online-course-introduction-to-databases/&quot;&gt;Introduction to Databases&lt;/a&gt;. Today I am writing about my experience with completing &lt;a href=&quot;https://web.archive.org/web/20110923173848/http://www.ml-class.org:80/&quot;&gt;Machine Learning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This course was different in many important ways from the databases course.&lt;/p&gt;
&lt;h2&gt;Why did I take this online course?&lt;/h2&gt;
&lt;p&gt;I have been quite interested in machine learning for a long time now. Years ago, I started taking a course in machine learning at Carnegie Mellon but had to drop it because I was overbooked with too many other things to do. The closest I have ever come to machine learning was completing a course years ago in [&quot;language technologies&quot;] at Carnegie Mellon. That was a survey course running through the topics of information retrieval, parsing, machine translation, etc.&lt;/p&gt;
&lt;p&gt;For the same reasons that I mentioned in my post yesterday, I did not expect to try to take a traditional formal-classroom machine learning course again: I don&apos;t find that to be an efficient route to learning given my time constraints involving work and personal projects outside of work.&lt;/p&gt;
&lt;p&gt;Self-study has always been an option, and I have several machine learning textbooks, some of which are clearer than others, and elegantly explain the theoretical basis, but at this stage of my life I&apos;m more interested in &lt;em&gt;application&lt;/em&gt; than in getting deep into theory.&lt;/p&gt;
&lt;h2&gt;Completion of the course&lt;/h2&gt;
&lt;p&gt;In December 2011, I did complete the machine learning course, having done all the in-lecture quizzes, the review questions, and the programming exercises. There were no exams.&lt;/p&gt;
&lt;p&gt;Although we were not required to, I did all the optional sections of the programming exercises.&lt;/p&gt;
&lt;p&gt;I received my &quot;statement of accomplishment&quot; recently, and had a perfect score in the course. (That is not say much, and I&apos;ll explain why.)&lt;/p&gt;
&lt;h2&gt;My strategy&lt;/h2&gt;
&lt;p&gt;As with the databases class, I tried to be efficient. In the end, I think I spent about five hours a week on the course.&lt;/p&gt;
&lt;h3&gt;Textbooks&lt;/h3&gt;
&lt;p&gt;I did not use any textbooks during the course. The course was self-contained, with the lectures covering all the concepts and explanations and equations and algorithms necessary to complete the programming assignments.&lt;/p&gt;
&lt;p&gt;Once I did try to look up an algorithm to get more theoretical insight about it, but immediately encountered an annoying problem: everyone seems to use slightly different mathematical notation.&lt;/p&gt;
&lt;h3&gt;Lectures and demos&lt;/h3&gt;
&lt;p&gt;The lectures were the core of the course. I watched them, taking notes for myself as I felt the need, and made sure to get the in-lecture quizzes right before moving on to the next lecture segment or lecture.&lt;/p&gt;
&lt;p&gt;Professor Andrew Ng obviously put a great deal of care into the video lectures. These were some of the most lucid and attention-maintaining lectures I have ever seen in my entire life, either live or in person. His calm and upbeat tone and pacing, along with useful demos and annotations on the slides, and humility while offering practical advice on the work flow of solving problems using machine learning, were what made this course really enjoyable and memorable!&lt;/p&gt;
&lt;p&gt;In &quot;real life&quot; lectures, there are a lot of opportunities for wasted time. I think video lectures solve many of the problems because demo setup, false starts, administrative reminders can be omitted or edited out. On the other hand, student questions in real life can also potentially not be useful to every student in attendance, but can also potentially be very useful. I think that in a video lecture, the instructor must be more aware of potential confusions and questions, in order to anticipate them rather then relegate them to online forum discussions. The in-lecture quizzes go a bit of the way toward filling in gaps, I think.&lt;/p&gt;
&lt;h3&gt;Review exercises&lt;/h3&gt;
&lt;p&gt;I did the review exercises after watching the relevant lectures and completing their embedded quizzes.&lt;/p&gt;
&lt;h3&gt;Online discussion forum&lt;/h3&gt;
&lt;p&gt;I did not really use the online discussion forum, except when I was encountering bugs in Octave on Mac OS, and looked to see if other people had problems, and yes, they did.&lt;/p&gt;
&lt;h3&gt;Programming exercises&lt;/h3&gt;
&lt;p&gt;I started the programming exercise for the week only after completing all the other material. We used the Octave programming language and environment in the course.&lt;/p&gt;
&lt;h2&gt;Difficulty of the course&lt;/h2&gt;
&lt;p&gt;Overall, the course was not very difficult. And that was fine, given my goal of efficient mastery of practical basics, such that I could continue deeper learning and use in the future.&lt;/p&gt;
&lt;p&gt;That said, the hungry theorist within me felt a little left out by the relentlessly practical nature of the course.&lt;/p&gt;
&lt;p&gt;Also, the programming exercises could have been more involved.&lt;/p&gt;
&lt;h2&gt;Benefits of the course format&lt;/h2&gt;
&lt;h3&gt;Time flexibility and efficiency&lt;/h3&gt;
&lt;p&gt;As mentioned in my post about databases, I appreciated that I could work through lectures at any time, and without having to go to a classroom somewhere. There was also the option of speeding up the video, but I have to confess that just made things eerie, and I only tried that once before returning to normal speed.&lt;/p&gt;
&lt;h3&gt;In-lecture quizzes&lt;/h3&gt;
&lt;p&gt;In-lecture quizzes are a vital part of this whole learning experience. (In fact, I wish there had been more!)&lt;/p&gt;
&lt;h2&gt;Flaws in the online course format&lt;/h2&gt;
&lt;h3&gt;Lecture slides were late&lt;/h3&gt;
&lt;p&gt;The lecture slides tended to arrive late in a week, well after I had already watched the lectures. If lecture slides had been provided as soon as the videos were posted, that would have made note-taking much more efficient. I ended up basically taking my own notes during the lectures before the slides appeared.&lt;/p&gt;
&lt;h3&gt;Less depth&lt;/h3&gt;
&lt;p&gt;I enjoyed that there was a focus on practical application at the expense of theory, but I would have liked to see optional lectures and/or handouts covering theoretical proofs as relevant to what we were applying.&lt;/p&gt;
&lt;p&gt;There was no opportunity to work on an open-ended project for assessment and feedback.&lt;/p&gt;
&lt;h3&gt;Programming exercises were too easy&lt;/h3&gt;
&lt;p&gt;The biggest flaw in the course was that the programming exercises were too easy.&lt;/p&gt;
&lt;p&gt;The level of hand-holding in the exercise descriptions was really extreme, with equations and algorithms given and even a lot of Octave code hints that sometimes practically gave away what needed to be done (which often was just a few lines of code). I would not have minded not having any of those hints. It is not so hard to consult the slides for the algorithms discussed, and some of the specific Octave hints could have been extracted into a more general machine-learning-independent discussion of common Octave computational techniques (such as tricks to express vectorization in the face of bias units).&lt;/p&gt;
&lt;p&gt;The hand-holding extended to the use of a pre-written monolithic driver program for each exercise. Obviously, the student would have done best to study the entire driver program&apos;s code, but it was easy to get by without doing so. There should have been at least one assignment in which the student wrote an entire Octave program, including the driver (given sufficient hints). I don&apos;t like the idea that many of us who completed this course might be going out in the world just copying and pasting from driver programs to get stuff done. And that brings me to another matter of concern.&lt;/p&gt;
&lt;p&gt;The code given to us was monolithic, not modular. Out of laziness, I did little to remedy the situation, although in a real project rather than a programming exercise to complete quickly and get over with. When I was writing code for the exercises, and testing and running my code, I would just comment code out of the driver programs that I wasn&apos;t using at the time. It would have been better if we had been given a modular driver so that we could test different parts of the exercise more independently. The code we were given simply did not adhere to the good programming practices I would expect if were programming in Java or C++ or something like that. Just because it&apos;s Octave doesn&apos;t mean we should be programming sloppily.&lt;/p&gt;
&lt;p&gt;So I would advise providing more modular and test-encouraging starter code for the programming exercises.&lt;/p&gt;
&lt;h3&gt;Octave glitches&lt;/h3&gt;
&lt;p&gt;There was a bug in the Mac OS version of Octave we were told to download. This wasted a good amount of my time when doing one of the programming exercises, until I discovered on the online forum that other people had encountered the same bug. I think that in an online course, making sure up front that everything works on the all the platforms should be of high priority.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt it was worthwhile completing the Stanford online machine learning course. The broad practical survey gives me sufficient confidence that I could immediately use machine learning to solve some real problems today, as well as confidence that I could deepen my understanding by continuing more theoretical study.&lt;/p&gt;
&lt;p&gt;I am grateful to Professor Andrew Ng and his team for making this course run as smoothly as it did.&lt;/p&gt;
</content:encoded></item><item><title>Experiment in learning: completing Stanford online course: Introduction to Databases</title><link>https://franklinchen.com/blog/2012/01/11/experiment-in-learning-completing-stanford-online-course-introduction-to-databases/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/11/experiment-in-learning-completing-stanford-online-course-introduction-to-databases/</guid><pubDate>Wed, 11 Jan 2012 21:31:00 GMT</pubDate><content:encoded>&lt;p&gt;In October 2011, Stanford University broke new ground by offering three free online computer science courses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20130723032929/https://www.ai-class.com/&quot;&gt;Introduction to Artificial Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.db-class.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.db-class.org/&quot;&amp;gt;Introduction to Databases&amp;lt;/span&amp;gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20110923173848/http://www.ml-class.org:80/&quot;&gt;Machine Learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Curious, I signed up for all three of the courses, since I had never taken a course in any of these three subjects.&lt;/p&gt;
&lt;p&gt;Because I was not enjoying the AI course and did not expect to find it so useful, I dropped it after completing all the assignments in the first week or two.&lt;/p&gt;
&lt;p&gt;Here I report on the databases course. I will follow up with a report on the machine learning course.&lt;/p&gt;
&lt;h2&gt;Why did I take this online course?&lt;/h2&gt;
&lt;p&gt;For the record, the subject of databases is not inherently all that interesting to me.&lt;/p&gt;
&lt;p&gt;I took the databases course with the aim of efficiently filling in a gap in my formal education: I was not a computer science major and never took a single computer science course in college, and did not take a databases course in graduate school. I have always had the option, of course, of taking a databases course here at Carnegie Mellon University, or just reading and studying material on my own, but there have been two obvious reasons not to.&lt;/p&gt;
&lt;p&gt;I did not take a databases course at Carnegie Mellon because I have taken courses here before and they are very time-consuming for someone who is working. Not only are there lectures and recitations at fixed times, but also a good amount of homework. I have never liked this format of learning, even when I was a full-time student. It always seemed inefficient, and cramming in a lot of detailed material into each course always left me feeling that I was not mastering everything anyway and was not going to retain it, if the subject was not something of primary interest or use to me. Therefore, I am pretty much done with taking traditional courses for learning. They are not an efficient use of my time or energy. What is efficient is intense learning and mastery of fundamentals and retaining them.&lt;/p&gt;
&lt;p&gt;I did try some self-study years ago, but that was problematic, because I couldn&apos;t easily determine what fundamentals to focus on and how to assess myself with relatively little effort. I bought a &lt;a href=&quot;https://www.mhhe.com/engcs/compsci/silberschatz_bridge/index.mhtml&quot;&gt;standard textbook&lt;/a&gt; a long time ago, but was unable to force myself to read it because it was so dry and thick. I just got confused and bored out of my mind.&lt;/p&gt;
&lt;p&gt;Taking an online course with no grade hanging over my head seemed a good way to experiment and learn whatever I felt I was up to learning, based on such factors as difficulty and time commitment.&lt;/p&gt;
&lt;h2&gt;Completion of the course&lt;/h2&gt;
&lt;p&gt;In December 2011, I did complete the databases course, having done all the in-lecture quizzes, the review exercises, the midterm, and the final exam. I did not get a perfect score, but missed a few points.&lt;/p&gt;
&lt;h2&gt;My strategy&lt;/h2&gt;
&lt;p&gt;Given how little time I had to devote to the Stanford classes (sadly, much of my weekend time was spent trying to get stuff done by the end of Sunday), I tried to be efficient. In the end, I spent about four hours a week on the databases course, most of which was devoted simply to working through the lecture and demo videos. I can easily imagine an in-depth traditional course taking up to ten hours a week (lectures and recitations, homework, context switching in the middle of the work day).&lt;/p&gt;
&lt;h3&gt;Textbooks&lt;/h3&gt;
&lt;p&gt;I had no time to read any of the suggested textbooks. And any time I tried to browse the old edition of the textbook I have, I just got impatient and confused anyway.&lt;/p&gt;
&lt;h3&gt;Lectures and demos&lt;/h3&gt;
&lt;p&gt;What I did do was faithfully watch the lectures, and make notes on the slides which I printed out beforehand, master all the in-lecture quizzes (with some exceptions, to be discussed below), and then complete the review exercises, using the &quot;testing workbench&quot; until I got every one of my answers &quot;correct&quot;.&lt;/p&gt;
&lt;p&gt;For the demos of relational algebra and XSLT and XQuery and SQL engines, we were urged to experiment ourselves with creating queries and the like, but because of time constraints, I chose not to do that. I did carefully follow along with the commented code transcripts of the demos, however, and pause the demos (which often went at breakneck speed!) to go over the transcript and write some notes to myself before moving on.&lt;/p&gt;
&lt;p&gt;The instructor, Professor Jennifer Widom, was very enthusiastic and clear in her lectures and demos. Her &quot;screenside chats&quot; were useful in &quot;humanizing&quot; the course experience.&lt;/p&gt;
&lt;h3&gt;Online discussion forum&lt;/h3&gt;
&lt;p&gt;I did not really use the online discussion forum.&lt;/p&gt;
&lt;h3&gt;Other study&lt;/h3&gt;
&lt;p&gt;I did not much use the optional exercises. I looked at them but did not find them very useful.&lt;/p&gt;
&lt;p&gt;I did not &quot;study&quot; for the midterm or final exams; I just went and took them with no review of anything.&lt;/p&gt;
&lt;h2&gt;Difficulty of the course&lt;/h2&gt;
&lt;p&gt;Overall, the course was not very difficult. And that was fine. When I&apos;m trying to learn the fundamentals of a subject that is not my primary interest or usefulness, I&apos;m not interested in being forced to run the gauntlet as though I were training to become an instant expert by completion of a course.&lt;/p&gt;
&lt;p&gt;That said, there were some topics in the course that we were rightly warned were difficult. The material on multivalued dependencies, relational design theory were quite abstract and dry. I will confess that I never fully mastered this material. But I did not feel it worth the effort to master it all.&lt;/p&gt;
&lt;h2&gt;Benefits of the course format&lt;/h2&gt;
&lt;h3&gt;Time flexibility and efficiency&lt;/h3&gt;
&lt;p&gt;Very nice in comparison with traditional courses was that I could watch the lectures at any time. Typically I worked through lectures before bedtime on some weekdays, on Friday (which I was taking off every week from work from October till December to ease my burden, using up vacation time that had accumulated and needed to be used anyway), and on Saturday. Sometimes I was too occupied during the work week to watch any lectures until Thursday or Friday. That was not optimal, because catching up was unpleasant (as with real life lectures, I really do not like watching one for more than twenty minutes at a time), but at least it was actually possible to load up on lectures and catch up.&lt;/p&gt;
&lt;h3&gt;In-lecture quizzes&lt;/h3&gt;
&lt;p&gt;The in-lecture quizzes were &lt;em&gt;very&lt;/em&gt; helpful, and one of the highlights of this learning format. They enabled me to get quick assessment of whether I totally understood the material I just watched or needed to review a bit more.&lt;/p&gt;
&lt;p&gt;Sometimes I was tired or distracted when watching a lecture segment and found myself at a loss at a quiz. It was very useful to catch myself at frequent quiz checkpoints. In a traditional lecture, I have certainly experienced getting lost and basically wasting a whole half hour or more as a result of not having demonstrated to myself mastery before moving on. With the ungraded quizzes that one can take again and again, I found it mostly easy to go back to review a lecture and then master the topic being quizzed. The process was quite efficient, for the most part.&lt;/p&gt;
&lt;h3&gt;Testing workbench&lt;/h3&gt;
&lt;p&gt;The testing workbench was also useful, in that it gave immediate feedback on whether an answer (typically a query I had to write) was correct on a test case. Most of the time I was correct at first try, but sometimes I made a mistake and had to correct it.&lt;/p&gt;
&lt;p&gt;That you could keep on making submissions was, I think, a good feature, because the real goal is to master something, after all. I never liked it when I was in school and sometimes I would take a class and got penalized for making mistakes in homework, even though I quickly mastered the material after the feedback of the homework errors. Should students be graded on what they know at the end of a course, or on what they know at some transient snapshot in time when they were in the process of learning?&lt;/p&gt;
&lt;h3&gt;Software tools&lt;/h3&gt;
&lt;p&gt;I assume some people just typed their queries into the testing workbench and messed with them until they passed. I did not do that. I downloaded the data and tools (such as SQLite), and developed my answers totally outside the testing workbench, then copied and pasted to the testing workbench. I found this a much more useful way to learn and write code.&lt;/p&gt;
&lt;h2&gt;Flaws in the online course format&lt;/h2&gt;
&lt;h3&gt;Less depth&lt;/h3&gt;
&lt;p&gt;Without more detailed homework and projects that would require supplemental reading, there was less depth than there would be in a traditional course.&lt;/p&gt;
&lt;p&gt;The midterm and final exams were somewhat simplistic, being just multiple-choice questions. Perhaps they should be extended with questions asking for SQL and XML queries to be submitted.&lt;/p&gt;
&lt;p&gt;Obviously, the format of the course did not allow for interesting independent projects to be done and assessed.&lt;/p&gt;
&lt;h3&gt;Assignment due dates&lt;/h3&gt;
&lt;p&gt;Unfortunately, assignment due dates were chosen far beyond the actual schedule of the lectures, which meant a lot of people, including me, &quot;procrastinated&quot;. This made for a very stressful December as I was spending all my time outside of work struggling to catch up before the final exam. Psychologically, this lax assignment due date policy was a mistake.&lt;/p&gt;
&lt;h3&gt;SQL itself&lt;/h3&gt;
&lt;p&gt;This may not be a drawback of the course, as such, but of the state of the SQL world: practically every lecture talked about standards and how the implementations of SQL don&apos;t implement everything in the SQL standard and differ from each other. We learned constructs that were not supported by any of the SQL implementations recommended to us! I presume that in a traditional course, we would have had access to some proprietary database that did support the full SQL standard?&lt;/p&gt;
&lt;h3&gt;Lack of worked-out examples&lt;/h3&gt;
&lt;p&gt;As long as the material wasn&apos;t very difficult, I found the process of verifying mastery to be very efficient. The trouble came when I didn&apos;t understand something. In particular, multivalued dependencies and relational design theory turned out to cause me problems. I chose not to work too hard to resolve them, but was surprised by the lack of suitable material provided to help out.&lt;/p&gt;
&lt;p&gt;What I would have found very useful would have been more supplementary material, in the form of worked-out examples. And I was surprised that the optional exercises only came with an answer key, not &lt;em&gt;explanations&lt;/em&gt;. It&apos;s not sufficiently useful to know whether one&apos;s answer is correct, or to be told which answer (of a multiple-choice question) is correct.&lt;/p&gt;
&lt;p&gt;Theoretically, I could have asked for help on the discussion forum, and I would have if the material happened to be more interesting and important. But I happened to make the decision to not fully master every corner of multivalued dependencies and normalization, because I judged that if I ever needed to get this stuff straight, I could run an algorithm rather than compute things by hand.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I felt it was worthwhile completing the Stanford online databases course. For me, it was as much a personal experiment with online learning as it was a matter of learning more about databases in particular.&lt;/p&gt;
&lt;p&gt;I am grateful to Professor Jennifer Widom and her team for making this course possible.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;I will also write a report on the machine learning course, which was very different in various ways from the databases course.&lt;/p&gt;
</content:encoded></item><item><title>Starting the 100 Up (exercise for running) 30-day challenge</title><link>https://franklinchen.com/blog/2012/01/09/starting-the-100-up-exercise-for-running-30-day-challenge/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/09/starting-the-100-up-exercise-for-running-30-day-challenge/</guid><pubDate>Mon, 09 Jan 2012 23:32:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;A while back I heard about a &quot;100 Up&quot; workout for runners to improve their form and performance but filed it away without checking it out. I assumed it was gimmicky. But I finally looked it up, and it is actually utterly simple, yet challenging.&lt;/p&gt;
&lt;p&gt;Well, I&apos;m going to take up the challenge of doing it for 30 days in a row. I&apos;ll fire off a single tweet each day after I complete the &quot;100 Up&quot; for the day.&lt;/p&gt;
&lt;p&gt;How about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.naturalrunningstore.com/100UpChallenge&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.naturalrunningstore.com/100UpChallenge&quot;&amp;gt;joining me&amp;lt;/span&amp;gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;by-rbM101XE&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Finding and using my childhood flute books</title><link>https://franklinchen.com/blog/2012/01/08/finding-and-using-my-childhood-flute-books/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/08/finding-and-using-my-childhood-flute-books/</guid><pubDate>Sun, 08 Jan 2012 11:40:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/belwin-home-practice-record.jpg&quot; alt=&quot;My 5th grade flute book practice record&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was in my basement looking for stuff and happened to find three of my childhood &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt; books:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Belwin-Band-Builder-Part-Flute/dp/B000M0CLSW&quot;&gt;Belwin Band Builder part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Rubank-Intermediate-Method-Piccolo-Educational/dp/1423444221&quot;&gt;Rubank Intermediate Method: Flute or Piccolo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Marcel-Franks-Classical-Tunes-Flute/dp/B002JVQCWI&quot;&gt;Marcel Frank&apos;s 95 Classical Tunes For The Flute&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are my memories of my usage of these books and how I might use them now, three decades later.&lt;/p&gt;
&lt;h2&gt;Belwin Band Builder&lt;/h2&gt;
&lt;p&gt;The Belwin Band Builder is a completely trivial and boring beginning band method that I used when learning flute in the 5th grade under Mr. Peters. The amusing thing is the &quot;home practice record&quot; at the back of the book, which still has my father&apos;s signatures, as you can see from the photo.&lt;/p&gt;
&lt;p&gt;As you can see, my memory in my &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;blog post about starting flute up again&lt;/a&gt; of being delinquent with practice has been completely validated! There are a lot of &quot;0 minutes&quot; written down, on days when I didn&apos;t even touch the flute and couldn&apos;t even get myself to write down an exaggerated number of minutes of practice.&lt;/p&gt;
&lt;p&gt;Notice that only the first six weeks were graded by Mr. Peters, and in the first week, I had gotten a B- that I had tried to erase. At some point, Mr. Peters&apos; health problems got bad, I think, and he stopped paying attention to our practice record. My father did keep on signing, for sixteen weeks, and I put down three final weeks that I didn&apos;t even have him sign, because Mr. Peters wasn&apos;t checking anything any more anyway.&lt;/p&gt;
&lt;h2&gt;Rubank Intermediate Method&lt;/h2&gt;
&lt;p&gt;If I recall correctly, Mr. Peters started teaching 6th grade band when he suddenly got so ill he had to retire, and our subsitute Mr. McLaughlin became permanent band director (I had him for the rest of 6th grade band and in intermediate band after that).&lt;/p&gt;
&lt;p&gt;Before Mr. Peters left, he gave me a list of two flute method books he recommended, and I dutifully gave the list to my father, who ordered them.&lt;/p&gt;
&lt;p&gt;It turned out that I never used them. I may have glanced at them, and fooled around a few minutes with them, but I never used them!&lt;/p&gt;
&lt;p&gt;The Rubank Intermediate Method was one of these books. Despite the physical age of my copy, the only evidence that I ever touched it is my name crudely written in marker on the front cover. I just started using the method and had to bend back on stapled binding so that the book would open flat for my music stand! The method looks useful to me now, with lots of technical exercises for all keys, interspersed with some musical excerpts such as gavottes and minuets, but back when I was eleven years old and not a classical music fan, this book must have seemed to me&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;foreign&lt;/li&gt;
&lt;li&gt;boring&lt;/li&gt;
&lt;li&gt;hard&lt;/li&gt;
&lt;li&gt;pointless&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At that age, I was mostly interested in playing&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;marches&lt;/li&gt;
&lt;li&gt;syncopated rock&lt;/li&gt;
&lt;li&gt;big band swing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Marcel Frank&apos;s 95 Classical Tunes For The Flute&lt;/h2&gt;
&lt;p&gt;This is all classical stuff. Enough said: my eleven-year-old self did not find much of this music interesting. There are exceptions, however! Flipping through this book, I recognize some excerpts as music I definitely tried playing at the time. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Song of India&lt;/li&gt;
&lt;li&gt;Sleeping Beauty&lt;/li&gt;
&lt;li&gt;Roses from the South&lt;/li&gt;
&lt;li&gt;Radetzky March&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My explanation is quite simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I loved &lt;em&gt;marches&lt;/em&gt; of any kind (hence my later joining marching band).&lt;/li&gt;
&lt;li&gt;I loved fast &lt;em&gt;waltzes&lt;/em&gt;, through exposure to them from TV cartoons such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Tom_and_Jerry&quot;&gt;&quot;Tom and Jerry&quot;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;There were pieces I &lt;em&gt;recognized&lt;/em&gt; as having heard (such as &quot;A Song of India&quot;) because of random &quot;Greatest Classical Masterpieces&quot; types of LP records (and there were many varieties of this kind of material) that my mother sometimes bought at garage sales and flea markets and brought home. Being familiar with a tune (and liking it) definitely was a motivation to at least try playing it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unfortunately, I do not particularly like the selections or length (each just a single page) in this compilation. So I don&apos;t expect to use this book much. I have other flute music already I have been enjoying practicing, especially the music that comes with a good accompaniment CD (this makes such a big difference).&lt;/p&gt;
&lt;h2&gt;My reflections&lt;/h2&gt;
&lt;p&gt;It&apos;s funny to me that even now, thirty years later, my mind still operates in a similar way. I still like marches. I still like fast waltzes (and even originally took up &lt;a href=&quot;/categories/ballroom-dance/&quot;&gt;ballroom dance&lt;/a&gt; specifically because I wanted to eventually dance the Viennese waltz. I still am more motivated to play something new if I&apos;ve heard it before and like it.&lt;/p&gt;
&lt;p&gt;But I&apos;m also more mature now, more open. I&apos;ve listened to a whole lot more and whole lot more variety of music since I was a child. And I&apos;m willing to try listening to or playing any kind of music now. In fact, just last year, most of the music I&apos;ve played on any instrument has been completely new to me, as a listener or performer. And that&apos;s great. It&apos;s part of the whole fun of living, experiencing more and different music.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was amusing rediscovering my old flute books. The intermediate method looks like a good one to use for practice. It&apos;s never too late to continue where I left off as a child, with a different mindset and more mature self-discipline!&lt;/p&gt;
</content:encoded></item><item><title>Injuries from yoga are common: some tips on staying safe</title><link>https://franklinchen.com/blog/2012/01/06/injuries-from-yoga-are-common-some-tips-on-staying-safe/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/06/injuries-from-yoga-are-common-some-tips-on-staying-safe/</guid><pubDate>Fri, 06 Jan 2012 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For years now, I&apos;ve noticed that when people find out that I do yoga, they often say something like
&amp;lt;blockquote&amp;gt;
I tried yoga once and I got hurt. I thought it was supposed to be relaxing.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Today I read an article, &lt;a href=&quot;https://web.archive.org/web/20250817143648/https://www.nytimes.com/2012/01/08/magazine/how-yoga-can-wreck-your-body.html?pagewanted=all&quot;&gt;&quot;How Yoga Can Wreck Your Body&quot;&lt;/a&gt;. I urge anyone who currently does yoga, or is thinking about starting it, to read this article. It discusses cases of quite serious injury in yoga practitioners, including instructors, and reveals a world of danger that many may not be aware of, given how popular and hip yoga has become in the past decade or two.&lt;/p&gt;
&lt;p&gt;I&apos;m not a yoga instructor, and I&apos;m also not a fanatic yoga devotee, but since I once did yoga every other day for a couple of years, and found it extremely, astoundingly beneficial, I&apos;d like to share some ideas on how I have managed to avoid being injured by yoga. I&apos;ll also discuss related issues with Pilates and sitting meditation.&lt;/p&gt;
&lt;h2&gt;My discovery of yoga&lt;/h2&gt;
&lt;p&gt;My first exposure to yoga at all was an infamous episode of the TV show &lt;a href=&quot;https://en.wikipedia.org/wiki/That&apos;s_Incredible!&quot;&gt;&quot;That&apos;s Incredible!&lt;/a&gt; in which some guy named &quot;Yogi Kudu&quot; folded himself up into a box.&lt;/p&gt;
&lt;p&gt;At some point, yoga became mainstream and offered as a &quot;fitness&quot; class. I got the impression that women and dancers took it up, and I had no interest in yoga until I got into ballroom dance in 2000, became very serious about it, and got my first exposure, from competition-oriented ballroom dancers, to such favorite dancer-oriented activities as yoga, Pilates, and Alexander technique. But any time I did even a basic yoga pose, I found myself embarrassingly inflexible and the whole idea seemed boring to me anyway, so I did not seriously pursue yoga for some time.&lt;/p&gt;
&lt;p&gt;However, as I had also begun to run, and then continued to be very serious about it, I heard from various sources that yoga could be beneficial to runners also. It was not until 2002, when I started training for my first marathon, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pittsburghmarathon.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pittsburghmarathon.com/&quot;&amp;gt;Pittsburgh Marathon&amp;lt;/span&amp;gt;, that I felt that maybe I should check out yoga.&lt;/p&gt;
&lt;p&gt;I went to some free sampler classes, but found them unsatisfactory. Ironically, I probably prevented early injury as a result. Here&apos;s why: I &lt;strong&gt;think about what pain and discomfort mean&lt;/strong&gt;! I felt physically and mentally uncomfortable and did not continue going to group classes, but decided on some self-study.&lt;/p&gt;
&lt;h2&gt;The drawbacks of group classes&lt;/h2&gt;
&lt;p&gt;In a standard group class, there are many drawbacks to learning &lt;em&gt;any&lt;/em&gt; subject. Yoga is no exception. Without individual instruction and detailed feedback, it is easy to do all kinds of horrible things to your body. Some people are &quot;wimps&quot;, and they are actually the smart ones, because they quit thinking (incorrectly, I would add), &quot;I&apos;m not cut out for yoga.&quot; Others push through the pain thinking, &quot;no pain, no gain&quot;. Having incorrectly adopted this attitude earlier, when overdoing my running, I knew from experience that I never wanted again to go too far.&lt;/p&gt;
&lt;p&gt;Worse, it&apos;s discouraging when you can&apos;t keep up some standard sequence the instructor leads everyone as a group through, while some people around you are doing just fine. Yes, we should check our &lt;em&gt;ego&lt;/em&gt; at the door, but sometimes that is hard, and trying to learn something difficult while ego interferes is not optimal. A good instructor will give detailed instructions on modifying poses or movements, or substituting them entirely with rest that does not break the flow, but given the sampler classes I have experienced, I can safely say that not every instructor pays this much attention.&lt;/p&gt;
&lt;p&gt;Also, the subtleties of each pose and its intention are hardly explained, in a typical drop-in yoga class. If yoga classes were structured within real progressing sequences with prerequisites, rather than existing as free-floating interchangeable drop-in commodities, maybe there would be better explanations. The typical yoga class I have gone to has instructors trying to scope out or ask aloud, &quot;Who here is new?&quot;&lt;/p&gt;
&lt;h2&gt;How I started a regular private practice of yoga&lt;/h2&gt;
&lt;p&gt;As my curiosity was whetted from the sampler classes, I decided to try out some books and videos on yoga. I am a big fan of self-learning, through books, videos, and the vast resource that is the entire Web. I can learn more detail about technique, I can read about comparisons, I can go at my own pace, and in privacy (eliminating the fear of embarrassment). I can choose which subsets to explore and use, rather than be subjected to someone else&apos;s rigid ideas or instruction.&lt;/p&gt;
&lt;p&gt;I quickly found that the books and videos of &lt;a href=&quot;https://en.wikipedia.org/wiki/Rodney_Yee&quot;&gt;Rodney Yee&lt;/a&gt; worked very well for me. For a couple of years, I ended up using a several of his &quot;Power Yoga&quot; DVDs as my primary half-hour-or-so yoga sessions every other day. I would definitely recommend them. Here&apos;s what I like about Yee&apos;s videos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As a male, I happen to enjoy having a male instructor and role model to emulate; although I have used videos by female instructors also, I find it jarring to follow a female instructor who is far more flexible in various ways than a typical male instructor.&lt;/li&gt;
&lt;li&gt;Yee has a soothing, encouraging voice and delivery of instructions.&lt;/li&gt;
&lt;li&gt;Yee&apos;s &lt;em&gt;pace&lt;/em&gt; is usually pretty good for me, not too fast, not too slow.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Relatively few poses&lt;/em&gt; are used in most of his videos I have used. It is better to try to master a few important &lt;em&gt;simpler&lt;/em&gt; poses than to squander attention on a whole lot of poses. Also, I will claim that the more complex the pose, the greater the potential for injury.&lt;/li&gt;
&lt;li&gt;There are different workouts with different intensities: &quot;stamina&quot;, &quot;strength&quot;, &quot;flexibility&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Benefits I have experienced from yoga&lt;/h2&gt;
&lt;p&gt;As a result of yoga, every single year in the past decade, I have become more flexible. &lt;strong&gt;I am now more flexible than I was in high school.&lt;/strong&gt; That&apos;s really something, and it&apos;s great being more flexible. When your body is looser, it is less stressed and burdened.&lt;/p&gt;
&lt;p&gt;I have improved my posture. Stretching out the spine through persistent practice of yoga really works.&lt;/p&gt;
&lt;p&gt;Increased awareness of breath is something I learned both from running and from yoga. A good yoga instructor reminds you to pay attention to inhaling and exhaling in harmony with your movements. The circulation helps clear up one&apos;s mind and both awaken and relax the body.&lt;/p&gt;
&lt;p&gt;Balance. Many of the poses challenge one&apos;s balance. I have spent much of my life slumping in chairs and other furniture. Yoga helped reverse the bad habits and imbalance coming from a sedentary lifestyle.&lt;/p&gt;
&lt;h2&gt;Some yoga poses I am currently careful about or avoid&lt;/h2&gt;
&lt;p&gt;I don&apos;t do all the poses Yee demonstrates, and the ones I do, I don&apos;t necessarily do in the full extension given. Here are some issues I discovered apply to myself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reclined leg stretch. Personally, I have tight hamstrings I&apos;m still working on. I can&apos;t do a full leg stretch. As recommended, I use a strap. I make sure not to compromise my &lt;em&gt;back&lt;/em&gt; when doing stuff like this. I have seen a lot of people straining.&lt;/li&gt;
&lt;li&gt;Various deep back bends. I simply do not trust these. I have had back injuries in the past, and although I am fine now, I don&apos;t ever want to injure my back again.&lt;/li&gt;
&lt;li&gt;Downward-facing dog. I make sure to use the modified bent-knee variation if I feel too tight in my hamstrings or Achilles tendons or elsewhere. I have seen people with legs straight but &lt;em&gt;backs&lt;/em&gt; curved: this is not good.&lt;/li&gt;
&lt;li&gt;Various forward bends. Again, I protect my &lt;em&gt;back&lt;/em&gt;, by bending my knees if I feel the need.&lt;/li&gt;
&lt;li&gt;Lunge. This is easy for me now, but at the very beginning, I had trouble doing this. A &lt;em&gt;block&lt;/em&gt; is a great prop for modification of poses by decreasing the distance to the ground. I used blocks extensively when first getting into yoga, and I still use them today as I feel the need. There are no bonus points for going without a block out of ego.&lt;/li&gt;
&lt;li&gt;Triangle pose. I like this pose, but don&apos;t ever expect to perform it without modification. To put the palm of my hand on the ground just twists and hurts my &lt;em&gt;back&lt;/em&gt; and &lt;em&gt;hip&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Anything that puts pressure on my &lt;em&gt;neck&lt;/em&gt;, I avoid or modify. Why do I really need to pull my head back far for cobra, or for upward-facing dog? It doesn&apos;t feel right.&lt;/li&gt;
&lt;li&gt;More elaborate poses involving lifting off the ground can put pressure on the &lt;em&gt;neck&lt;/em&gt; or &lt;em&gt;wrists&lt;/em&gt;. I avoid them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Current group class&lt;/h2&gt;
&lt;p&gt;Abby and I sometimes attend a local free &lt;a href=&quot;/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/&quot;&gt;drop-in class at the Squirrel Hill Library&lt;/a&gt;. We don&apos;t go often, but it is nice in small doses. Some of the reasons we don&apos;t go often:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The session is very long, and we prefer shorter sessions. Some people do leave early, but breaking the flow of a complete workout (that includes a nice relaxation segment at the end) just seems inappropriate.&lt;/li&gt;
&lt;li&gt;We don&apos;t get detailed technical instruction on how to do things right. This is a very large group class.&lt;/li&gt;
&lt;li&gt;We are encouraged or guided to go into difficult poses that we are not comfortable with. Yes, the instructor does tell us we don&apos;t have to do them, and yes, we know to listen to our bodies, but still, it is somewhat disorienting to decide not to do something when other people are doing it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, the important thing when doing yoga is &lt;a href=&quot;/blog/2011/11/04/against-just-putting-in-the-time/&quot;&gt;not to do it mechanically, but with awareness and no ego&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;My current practice&lt;/h2&gt;
&lt;p&gt;I actually have not done full yoga sessions in two or three years. I do go into some yoga poses spontaneously as part of a stretch and then cool down for other activities, including running, dancing, and strength training. For this new year of 2012, I intend to get back into extended yoga practice. I will continue to write about deepening my yoga experience.&lt;/p&gt;
&lt;h2&gt;Pilates&lt;/h2&gt;
&lt;p&gt;I have to confess that I do not like Pilates. Many of the positions involved in Pilates cause me great stress. I have given Pilates a serious try. I don&apos;t know if it&apos;s just me, or if other people have a similar experience, but lifting my head up from the ground, for example, causes me great stress. It definitely increases my blood pressure and gives me a headache and strain on my neck and back. This is just my personal experience.&lt;/p&gt;
&lt;p&gt;Pilates confuses me. I avoid it. I like to try many different physical disciplines, but Pilates is one that I have abandoned.&lt;/p&gt;
&lt;h2&gt;Sitting meditation&lt;/h2&gt;
&lt;p&gt;Sitting meditation in a classic lotus position is incredibly difficult. Let me put it this way: after a few years of some periods of regular sitting, it is only in the past two or three months that I am able to sit in something resembling a full lotus position. And I don&apos;t like to do this continuously for more than around twenty minutes. That&apos;s my limitation. People have wrecked their knees or ankles doing meditation, so as with yoga, it&apos;s extremely important not to force yourself into a position that you can&apos;t handle. And take note of your motivations. Don&apos;t reward yourself with bonus points for doing an &quot;advanced&quot; position. That&apos;s not the point of meditation. I try for lotus purely because it really is more stable than some other more asymmetrical positions, such as Burmese and half Burmese. And I have tried kneeling with or without a bench, but that causes me various problems, for my knees and ankles. And sitting on a chair is definitely suboptimal for the meditation experience, because of the lack of a truly stable base.&lt;/p&gt;
&lt;p&gt;Even in simpler positions, I can get numb or feel pressure on my ligaments or something. There is always controversy, among different meditation leaders, over how much discomfort to tolerate as an essential part of the practice, and how much is harmful and justifies shifting position or changing position entirely, but I am happy that in the group practice I attend, we are allowed to err on the side of looking out for ourselves. If you meditate in a group, be sure to understand what your leader&apos;s expectations are, and make sure they are in line with what you are prepared to do.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Yoga can be very dangerous if you don&apos;t have experience paying attention to your body and being really in touch with what is painful and harmful and what is merely challenging and beneficial. I advise that beginners progress very slowly when taking up yoga, ideally with feedback from an instructor who is aware of the dangers. I advise that experienced practitioners do a full review of what they do and what might be causing undue discomfort or pain.&lt;/p&gt;
&lt;p&gt;Caveats aside, I have found yoga to be a transformative part of my life, refreshing and rejuvenating, and recommend it as a practice to those wishing to deepen their understanding and experience of their mind, body, spirit.&lt;/p&gt;
</content:encoded></item><item><title>How to enjoy treadmill running: treat it as a meditative practice</title><link>https://franklinchen.com/blog/2012/01/05/how-to-enjoy-treadmill-running-treat-it-as-a-meditative-practice/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/05/how-to-enjoy-treadmill-running-treat-it-as-a-meditative-practice/</guid><pubDate>Thu, 05 Jan 2012 22:42:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I decided to do some treadmill &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt;, since I was going to the gym to do some strength training anyway, so I did just two miles of running as a &quot;warmup&quot; there, using my &lt;a href=&quot;/blog/2012/01/02/new-experiment-for-a-new-year-winter-running-in-vibram-fivefingers-shoes/&quot;&gt;Bikila LS shoes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&apos;t much like treadmills, so why did I deliberately plan to run on one?&lt;/p&gt;
&lt;p&gt;In a blog post two months ago, I was critical of the idea of &lt;a href=&quot;/blog/2011/11/04/against-just-putting-in-the-time/&quot;&gt;slogging through a treadmill workout as an unpleasant, mindless chore&lt;/a&gt; and mentioned some ways that I have tried in the past to make the most of treadmill running. I think the last time I ran on a treadmill may well have been two years ago (unfortunately, for the past decade I have kept a paper notebook exercise log, and still have not converted to a searchable digital one, which I perhaps should). So I wanted to try it again, as a &lt;a href=&quot;/categories/meditation/&quot;&gt;meditative practice&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The treadmill&lt;/h2&gt;
&lt;p&gt;I was &quot;surprised&quot; to find that the treadmills in the gym are now equipped with what seems to be a TV screen attached just above the usual display (of pace, calories, incline, etc.) and a headphone jack so that you can watch and listen to TV by bringing in your own headphones.&lt;/p&gt;
&lt;p&gt;I was at first rather annoyed that the addition of the display on top meant that it was no longer the case that I could look out the window that the treadmill was placed in front of. In past years when I used treadmills more often, I liked to pick the one in this particular spot precisely because it had the best view out the window. Depending on the time and season, you can see people walking outside, and running around the track, or some sports game happening. Not that I ever paid much attention, but it was &lt;em&gt;something&lt;/em&gt; going on to look at.&lt;/p&gt;
&lt;p&gt;Then I realized that in fact, how is that much different from watching TV? It is different because TV programs have some kind of constructed narrative for you to attend to, while observing action outside the window is looser and not as distracting. But in a way, occasionally having my mind wander by checking out what people are doing outside goes against the &quot;mindfulness&quot; I have advocated.&lt;/p&gt;
&lt;p&gt;Therefore, I decided to consider the blank TV screen blocking my view a fortuitous &lt;em&gt;opportunity&lt;/em&gt; to make my treadmill running more meditative. I chuckled to myself as I thought of how I do &lt;a href=&quot;/blog/2011/09/28/staring-at-the-wall-with-nowhere-to-go/&quot;&gt;meditation facing a blank wall&lt;/a&gt; anyway.&lt;/p&gt;
&lt;h3&gt;Suggestion&lt;/h3&gt;
&lt;p&gt;If you run on a treadmill and usually distract yourself by looking at other people in the gym, or listen to music, or watch TV, or read a newspaper or book, you might want to try, for the sake of curiosity, a short meditative workout, similar to the one I describe. You only need 15-20 minutes.&lt;/p&gt;
&lt;h2&gt;Thoughts&lt;/h2&gt;
&lt;p&gt;To me, running on a treadmill is not much like &lt;a href=&quot;https://en.wikipedia.org/wiki/Zazen&quot;&gt;sitting meditation&lt;/a&gt;, but it is similar to &lt;a href=&quot;https://en.wikipedia.org/wiki/Kinhin&quot;&gt;walking meditation&lt;/a&gt;, which I was introduced to only less than a year ago. Because I am in a dynamic state of movement when either walking or running, my thoughts revolve around my body, my balance, my form.&lt;/p&gt;
&lt;p&gt;My goal is to maintain good form, stay relaxed, and just experience my body in a deep way. And one thing nice about the treadmill, I have to say, is that the monotony enables me to pick up on sensations gradually, as they repeat themselves with every pair of strides. In running outside on uneven surfaces and paths, we don&apos;t always notice what we are doing at a given moment, and then the moment passes. It is easier to notice yourself deeply when in a controlled environment such as a treadmill.&lt;/p&gt;
&lt;h3&gt;Running form&lt;/h3&gt;
&lt;p&gt;The absolute flatness of the landing surface means that I better notice asymmetries in my stride. I know my left side is weaker and tighter than my right side (and I have been gradually correcting this asymmetry over the years in various ways). So I focus on whether I&apos;m letting my left hip release equally to my right, and where on my left foot I&apos;m landing and where the weight transfer happens. Landing well is quite important because it is improper landing that causes knee pain, ankle pain, shin splints, the works. (From personal experience in over a decade of running, and overcoming injury, I strongly advocate a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.chirunning.com/chi-library/article/running-with-a-midfoot-strike-vs-running-on-the-balls-of-your-feet/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.chirunning.com/chi-library/article/running-with-a-midfoot-strike-vs-running-on-the-balls-of-your-feet/&quot;&amp;gt;midfoot strike&amp;lt;/span&amp;gt; and avoiding a heel strike.)&lt;/p&gt;
&lt;p&gt;The monotony and consistency of running on a treadmill makes it easy and even pleasant to spend some time paying attention to some particular aspect of the body movement, then moving on to another, and then maybe attempting to gain an integrated awareness. Here are some areas I focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;foot strike&lt;/li&gt;
&lt;li&gt;foot placement relative to hips&lt;/li&gt;
&lt;li&gt;foot distance from center line bisecting left and right&lt;/li&gt;
&lt;li&gt;hip tightness and release&lt;/li&gt;
&lt;li&gt;rolling of ankles&lt;/li&gt;
&lt;li&gt;feeling of impact: knees bad, glutes good&lt;/li&gt;
&lt;li&gt;calves, hamstrings, quads: what&apos;s being worked when?&lt;/li&gt;
&lt;li&gt;core trunk engaged and flexible&lt;/li&gt;
&lt;li&gt;chest open and free&lt;/li&gt;
&lt;li&gt;shoulders down&lt;/li&gt;
&lt;li&gt;arm swings symmetric&lt;/li&gt;
&lt;li&gt;breathing in regular pattern&lt;/li&gt;
&lt;li&gt;feel of breath at nostrils, lips&lt;/li&gt;
&lt;li&gt;head up, balanced&lt;/li&gt;
&lt;li&gt;efficient stride rate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&apos;t beat yourself up with some visualization of what the &quot;perfect&quot; form is (whether something you learned from a book). I find it more useful and meditative to observe, and then slowly &quot;correct&quot; if desired, basically experimenting with adjustments and really feeling what the results are. Our bodies are all different, and frankly, we all have some fundamental asymmetries that we need to work around and accept rather than try to eradicate by force.&lt;/p&gt;
&lt;p&gt;Attending to all these body areas and motions briefly, bit by bit, the time does not pass quite as slowly for me as when just letting my thoughts roam about.&lt;/p&gt;
&lt;h3&gt;Speed&lt;/h3&gt;
&lt;p&gt;I like to start out on a treadmill by walking slowly, to warm up, and gradually increasing the pace until I am jogging. Then I continue gradually increasing the pace until I get into an easy aerobic zone. Depending on my goals and length of the workout, I may just stay there or crank things up more and more.&lt;/p&gt;
&lt;p&gt;I happen not to like going very fast (say, mile race pace or faster) on a treadmill. The unnaturalness of the environment seems to cause me to feel awkward and in danger of injury. I don&apos;t have these problems when running comparably fast on the track outside. I think the forces generated are very different.&lt;/p&gt;
&lt;p&gt;I feel mostly OK going steadily at my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://runningtimes.com/Article.aspx?ArticleID=7479&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://runningtimes.com/Article.aspx?ArticleID=7479&quot;&amp;gt;lactate threshold pace&amp;lt;/span&amp;gt; on a treadmill.&lt;/p&gt;
&lt;p&gt;Aside from the body mechanics of going faster, I find that my thoughts get more frantic, as I start worrying about things that never occur to me when I&apos;m running somewhere rather than going nowhere. For example, I happen to worry about slipping further back on the belt and maybe tripping off the end. This has happened to me in the past on longer treadmill runs where I have zoned out; zoning out is definitely not &quot;mindful&quot;.&lt;/p&gt;
&lt;p&gt;I don&apos;t enjoy the coercive sensation of being forced physically to keep exactly a certain pace &quot;or else&quot;. That plus the fragmentation of my attention toward my body results in a challenge to my meditative state. Obviously, the challenge can be considered an &lt;em&gt;opportunity&lt;/em&gt; as well, but it&apos;s not one I&apos;m taking up right now anyway while I&apos;m just doing some easy running.&lt;/p&gt;
&lt;h2&gt;Distractions&lt;/h2&gt;
&lt;p&gt;In the gym, people are always coming and going. Sometimes they grunt or drop weights. Sometimes there are lines for the treadmills. There are often people on neighboring treadmills. It is easy to be self-conscious in a gym and think silly thoughts such as, do I look like a loser with my bad form or slow speed setting or wimpy set of weights. These distractions are also an &lt;em&gt;opportunity&lt;/em&gt;, to find acceptance of self and others, and realize that we&apos;re all here together, with our own shapes and sizes, taking a break from the computer and the couch, using our bodies.&lt;/p&gt;
&lt;p&gt;The muzak is constant. Luckily, it&apos;s not too loud. Still, it&apos;s distracting when the muzak at some point is going at a steady beat that is different from my stride rate. Should I match it? Sometimes I do for a while, if I feel I&apos;m plodding and the muzak is faster. But that&apos;s a kind of distraction. Generally I do not let the muzak get to me.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My brief treadmill run today, facing a blank TV screen, went OK. I will probably be doing more and perhaps longer treadmill runs once every couple of days this winter, although I plan to try an extended outdoors run this weekend. And I will continue to stare at the blank screen and try to make the most of my runs as meditative experiences.&lt;/p&gt;
</content:encoded></item><item><title>Ignoring branding: the double-blind test</title><link>https://franklinchen.com/blog/2012/01/03/ignoring-branding-the-double-blind-test/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/03/ignoring-branding-the-double-blind-test/</guid><pubDate>Tue, 03 Jan 2012 06:49:00 GMT</pubDate><content:encoded>&lt;p&gt;What is &quot;really&quot; the difference in quality between cheap and expensive wines, restaurants, hotels, medications, jeans, stereo equipment, computer software, etc? I&apos;ve always been fascinated by this question, because I enjoy quality but do not enjoy paying top dollar needlessly, and am aware that price does not necessarily correlate with quality. In particular, brand names and other marketing tricks easily imbue a product or service with an artificial aura specifically for the purpose of luring consumers toward it, away from a practically similar competitors&apos;.&lt;/p&gt;
&lt;p&gt;Do the differences exist, do they matter, and what can we learn from the results of double-blind tests?&lt;/p&gt;
&lt;h2&gt;How to act when there are differences&lt;/h2&gt;
&lt;p&gt;I am not denying that there exist differences, or that sometimes it takes a real connoisseur to notice or appreciate the differences between, say, something of &quot;high&quot; quality (at 90th percentile, say) rather than of &quot;extremely high&quot; quality (at 99th percentile, say). But even if I notice a difference, I may not want to pay the price to get the higher quality. Suppose I could buy audio speakers for $50 that to me sounded 90th percentile, and I could get another set for $5000 that to me sounded 99th percentile. I would buy the $50 speakers. On the other hand, suppose I could buy running shoes for $50 that are 90th percentile, or shoes for $200 for 99th percentile. I would not hesitate to get the $200 shoes, because of the importance in my everyday quality of life in maximizing my running experience.&lt;/p&gt;
&lt;h2&gt;Coca-Cola and Pepsi and experts&lt;/h2&gt;
&lt;p&gt;Lately there has been a lot of interest in objective &lt;a href=&quot;https://en.wikipedia.org/wiki/Blind_experiment&quot;&gt;tests&lt;/a&gt; to determine whether people can actually tell the difference between wines, soft drinks, medication, musical performers, etc. Probably the most famous in the past decade has been the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pepsi_Challenge&quot;&gt;Coca-Cola versus Pepsi&lt;/a&gt; soft drink wars. We all know the results: when taste tests were blind, people had different preferences than when not blind. This shows the power of advertising to influence our perceptions and preferences. And most recently, we&apos;ve all been hearing about how people cannot tell the &lt;a href=&quot;https://en.wikipedia.org/wiki/Wine_tasting#Blind_tasting&quot;&gt;difference between cheap wines and expensive wines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When first hearing about these results, a lot of people get very angry and defensive, because of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Cognitive_dissonance&quot;&gt;cognitive dissonance&lt;/a&gt;. One objection they sometimes raise (without even reading the details of the tests) is that yes, some undiscerning individuals might have been fooled, but real &quot;experts&quot; would not be (and by implication, they view themselves as real experts, in accordance with the &lt;a href=&quot;https://en.wikipedia.org/wiki/Lake_Wobegon#The_Lake_Wobegon_effect&quot;&gt;Lake Wobegon effect&lt;/a&gt;). But in fact, these tests are done with experts as well as novices, and sometimes the experts even do worse than novices (this effect calls for its own blog post entirely).&lt;/p&gt;
&lt;h2&gt;The placebo effect&lt;/h2&gt;
&lt;p&gt;These matters are not just trivia for amusement. For example, it is an industry secret that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Placebo&quot;&gt;placebo effect&lt;/a&gt; when it comes to medication is extremely strong, and even &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wired.com/medtech/drugs/magazine/17-09/ff_placebo_effect?currentPage=all&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wired.com/medtech/drugs/magazine/17-09/ff_placebo_effect?currentPage=all&quot;&amp;gt;getting stronger&amp;lt;/span&amp;gt;. There is controversy over the use or non-use of placebos in medical care. Let&apos;s face it, medical patients are often very overbearing and demand medication from their physicians, who often give them some placebo to satisfy them. Since this actually &quot;works&quot;, is it wrong for doctors to lie to their patients (who seem to inadvertently create the incentive for such lies)?&lt;/p&gt;
&lt;p&gt;In the area of music, some years ago there was a big flap over a fraud of a classical pianist that went undetected for a long time: an aging &lt;a href=&quot;https://en.wikipedia.org/wiki/Joyce_Hatto&quot;&gt;Joyce Hatto&lt;/a&gt; passed off recorded performances of obscure pianists as her own, and became lauded for the revival of her recording career. Let&apos;s face it: people like a heartwarming &quot;human interest&quot; story. We love stories about old pianists or athletes making a comeback.&lt;/p&gt;
&lt;h2&gt;Can you identify the Stradivarius?&lt;/h2&gt;
&lt;p&gt;Today I saw an article about a &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2012/01/02/144482863/double-blind-violin-test-can-you-pick-the-strad?sc=fb&amp;amp;cc=fp&quot;&gt;double-blind violin test&lt;/a&gt; in which listeners heard a segment of music performed on two different violins and were asked to identify the Stradivarius. Apparently people did poorly, including expert violinists.&lt;/p&gt;
&lt;p&gt;This article has already attracted over a hundred comments since yesterday, testifying to the interest people have in questions of branding and quality.&lt;/p&gt;
&lt;h3&gt;My experience with the test&lt;/h3&gt;
&lt;p&gt;I am not a violinist. Although I would like to learn the violin sometime, I have never handled one. Furthermore, although I have listened to quite a lot of violin playing, I have never been interested in the Stradivarius story or mystique (or that of competing vintage violins). To put it bluntly: I don&apos;t actually know what a Stradivarius sounds like. When I listen to a CD or go to a concert and hear a violin concerto or something, &lt;a href=&quot;/blog/2011/11/11/on-not-reading-concert-program-notes/&quot;&gt;I don&apos;t read the program notes&lt;/a&gt;, and therefore I have no idea what kind of violin someone is playing.&lt;/p&gt;
&lt;p&gt;I got the correct answer in the listening test.&lt;/p&gt;
&lt;p&gt;What does that even mean, though, given that I don&apos;t know what a Stradivarius sounds like and don&apos;t really care?&lt;/p&gt;
&lt;p&gt;The two violin tracks sounded quite different to me. The best I could do was choose which one I liked better. If it wasn&apos;t the Stradivarius, no big deal; if it was, no big deal.&lt;/p&gt;
&lt;p&gt;One violin sounded rough and raspy, and the other one was smooth. That&apos;s all I could go on. I don&apos;t know if a rough or smooth sound is actually considered desirable by aficionados. I don&apos;t know what the Stradivarius is supposed to sound like. And who knows whether the violinist just happened to be doing very different things physically on the two tracks presented? It would have been better if there had been more samples.&lt;/p&gt;
&lt;h2&gt;Deliberate ignorance?&lt;/h2&gt;
&lt;p&gt;In order to shield myself from what I consider extraneous noise, sometimes I enjoy deliberately being ignorant. Much of the music I like, I originally encountered without knowing its composer, performer, or title. I don&apos;t really care if something was written by Mozart or whether he plagiarized it from someone else. If it is interesting, that&apos;s fine, and if not, that&apos;s also fine.&lt;/p&gt;
&lt;p&gt;I recognize the virtues of tradition, of authority, but the branding effect privileges the old over the new in ways that the old probably would not have enjoyed. There is no way Mozart would have enjoyed having his early childhood music all collected and recorded as though it were as valuable as his later masterpieces. Unpublished drafts by dead novelists get more attention than published work by new writers. Nostalgia for the old, in the name of &quot;authenticity&quot;, always sells well. Older religions get more respect than newer ones, which get called cults for a while just because they are newer. Older political parties attract a following because of their branding.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We are not as clever or discerning as we tend to think we are, and are influenced in our perceptions and decision making by branding, sentimentality, framing, contexts.&lt;/p&gt;
&lt;p&gt;Still, we can&apos;t live without shortcuts for quality and consistency. It&apos;s not possible to spend vast amounts of time doing one&apos;s own blind tests on everything, and it&apos;s not worth it either. We are human and should respect our limitations and imperfections. Humility and respect is the best we can do. Therefore, I don&apos;t make fun of those who are &quot;tricked&quot; in double-blind tests. That&apos;s us, that&apos;s me, in some context or other.&lt;/p&gt;
</content:encoded></item><item><title>New experiment for a new year: winter running in Vibram FiveFingers shoes</title><link>https://franklinchen.com/blog/2012/01/02/new-experiment-for-a-new-year-winter-running-in-vibram-fivefingers-shoes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2012/01/02/new-experiment-for-a-new-year-winter-running-in-vibram-fivefingers-shoes/</guid><pubDate>Mon, 02 Jan 2012 21:37:00 GMT</pubDate><content:encoded>&lt;p&gt;I first started wearing &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers&lt;/a&gt; minimalist shoes in October of 2009, but every year, I have not worn them in the winter months when the temperature drops below freezing and there is snow or ice on the ground (January, February).&lt;/p&gt;
&lt;p&gt;Somehow, today as I saw a bit of snow fall outside (with very little accumulation), I decided to do a short run (less than two miles) in my Bikila LS shoes while returning some items to the local library, to get a taste of whether it is practical to try regular winter running in these shoes, as the temperature drops and more snow falls.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/vibram-fivefingers-winter-new-year-2012.jpg&quot; alt=&quot;Franklin wearing Vibram FiveFingers Bikila LS with snow on the ground&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last year, sometime in early spring, I ran in regular mono-toed running shoes for the last time in my life. Every &quot;normal&quot; running shoe I have ever used (and I have worn probably two dozen different models in the past decade) had caused me some kind of disappointment. Switching completely to Vibram FiveFingers shoes had solved all my problems.&lt;/p&gt;
&lt;p&gt;I have been fearful, however, of winter running in FiveFingers. Would my feet freeze? How would I handle cold water? Snow? Ice?&lt;/p&gt;
&lt;p&gt;Today I decided that the only way to answer the questions would be to go out there and start experimenting.&lt;/p&gt;
&lt;p&gt;I chose the Bikila LS because of the three models of FiveFingers I have (Bikila LS, KSO, KSO Trek), it is the most padded, least minimalist shoe. In fact, I wish it were more minimalist, because in the summer, my feet get so hot and sweaty (the ventilation is poor) that I get blisters if I run very fast or long. I speculated that these limitations might be virtues in colder conditions.&lt;/p&gt;
&lt;p&gt;On my run today, I had to watch my footing because there were invisible icy spots on the roads. I am unsure of the traction of the Bikila LS shoes in case of ice, I must admit. However, my feet did not feel particularly uncomfortable. To be sure, it was a very short run, and the temperature of 29F was not very low.&lt;/p&gt;
&lt;p&gt;When I returned home and took off my shoes, I noticed that my feet were very cold. I&apos;m not sure whether to worry about that. I suspect that on longer runs with lower temperatures, I might have something to worry about, but I have to do more experiments. One option I have is to wear &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.injinji.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.injinji.com/&quot;&amp;gt;Injinji&amp;lt;/span&amp;gt; toe socks, of which I have a couple pairs. I don&apos;t ordinarily wear these socks because they somewhat get in the way and bunch up when I wear them with FiveFingers shoes, but for winter they might be a lesser evil.&lt;/p&gt;
&lt;p&gt;Also, for traction, I might want to try running in my KSO Trek, although I have tried to save those just for trail running and hiking.&lt;/p&gt;
&lt;h2&gt;How about mono-toed shoes?&lt;/h2&gt;
&lt;p&gt;Even so, it is possible that I will end up investigating a mono-toed minimalist shoe to keep my toes warm. I still don&apos;t own a pair, although I have tried on some New Balance Minimus and Merrell Glove models. I did not like the feel of any of them, although I have not yet encountered the newer &lt;a href=&quot;https://web.archive.org/web/20210421121620/http://barefootrunninguniversity.com/2011/12/06/new-balance-minimus-zero-road-review/&quot;&gt;New Balance Minimus Zero&lt;/a&gt; &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.irunfar.com/2011/12/new-balance-minimus-trail-zero-and-road-zero-review.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.irunfar.com/2011/12/new-balance-minimus-trail-zero-and-road-zero-review.html&quot;&amp;gt;shoes&amp;lt;/span&amp;gt; (to come out in February 2012) that might work better for me than the original Minimus line.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-01-17)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/01/17/winter-running-in-vibram-fivefingers-shoes-revisited/&quot;&gt;A year later&lt;/a&gt;, I reported on restarting winter running in FiveFingers under milder conditions (so far).&lt;/p&gt;
</content:encoded></item><item><title>Reflections on 2011</title><link>https://franklinchen.com/blog/2011/12/31/reflections-on-2011/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/31/reflections-on-2011/</guid><pubDate>Sat, 31 Dec 2011 18:52:00 GMT</pubDate><content:encoded>&lt;p&gt;I reflect on my year of 2011 as it ends. Since I did not start blogging until September, I go into more detail of what happened before then.&lt;/p&gt;
&lt;h2&gt;January&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Abby and I continued our project of massively reorganizing our home, a project that began when she moved in during summer 2010. We were very grateful that Abby&apos;s father helped out a lot.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I continued getting rid of a lot of stuff, including another eighteen boxes of my books, as I became an initially reluctant &lt;a href=&quot;/categories/minimalism/&quot;&gt;minimalist&lt;/a&gt;. We sold or gave away a &lt;em&gt;huge&lt;/em&gt; number of various of belongings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby started cooking much more than in the past, and we enjoyed trying new dishes of her making.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I enjoyed some light cross-country skiing in the winter, using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Schenley_Park_Golf_Course&quot;&gt;Bob O&apos;Connor Golf Course at Schenley Park&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I began a weekly Zen &lt;a href=&quot;/categories/meditation/&quot;&gt;meditation&lt;/a&gt; session offered at Carnegie Mellon University.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started moving very gradually toward a &lt;a href=&quot;/categories/paleo/&quot;&gt;paleo&lt;/a&gt; diet and exercise routine, and immediately experienced benefits. &quot;The Paleo Solution&quot; by &lt;a href=&quot;https://robbwolf.com/&quot;&gt;Robb Wolf&lt;/a&gt; was very useful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started learning modern &lt;a href=&quot;/categories/javascript/&quot;&gt;JavaScript&lt;/a&gt; for a new project at work, getting into client-side Web development. As part of that, I learned &lt;a href=&quot;/categories/jquery/&quot;&gt;jQuery&lt;/a&gt; through a free &lt;a href=&quot;https://p2pu.org/&quot;&gt;P2PU&lt;/a&gt; course and used it in the project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started using &lt;a href=&quot;https://en.wikipedia.org/wiki/XQuery&quot;&gt;XQuery&lt;/a&gt; at work to process XML in a clear and concise way. I had used XSLT in the past, but it was very unpleasant.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I decided, for various reasons, to stop writing new &lt;a href=&quot;/categories/perl/&quot;&gt;Perl&lt;/a&gt; scripts and move to &lt;a href=&quot;/categories/python/&quot;&gt;Python&lt;/a&gt; instead.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started playing in my final (and disastrous) &lt;a href=&quot;/categories/chess/&quot;&gt;chess&lt;/a&gt; tournament, the Pittsburgh Chess Club Championship (which I had won in 2006 and 2007).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;February&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pittsburgh was all about the Steelers, and I went to a &lt;a href=&quot;https://en.wikipedia.org/wiki/Super_Bowl_XLV&quot;&gt;Super Bowl&lt;/a&gt; party for the first time, but we lost!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I read &quot;The Art of Non-Conformity&quot; by &lt;a href=&quot;https://chrisguillebeau.com/&quot;&gt;Chris Guillebeau&lt;/a&gt; and found it so inspiring that I decided to take action and start making big changes to my life, in my own way.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One big change: I quit playing chess, cold turkey, after having been unenthusiastic about it for months already (and playing correspondingly poorly). When the passion and enjoyment are gone, there is no point in hanging onto something just because it has been such an important part of my life for years.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After years of not playing any music at all, I started playing &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;, and vowed to play every single day if possible. Ten months later, I am still playing recorder.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I began attending a lot of &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;local software developer group meetings&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started learning the &lt;a href=&quot;/categories/scala/&quot;&gt;Scala&lt;/a&gt; programming language and decided to use it on a small project.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;March&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Abby and I continued our meditation practice at CMU, and went to our first mini-&lt;a href=&quot;https://en.wikipedia.org/wiki/Sesshin&quot;&gt;sesshin&lt;/a&gt; on a Saturday.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I continued practicing recorder every single day, and joined the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local chapter of the American Recorder Society&lt;/a&gt;. It was very exciting to meet new people and to get into a wide range of music I had never really listened to or played.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I saw a video of &lt;a href=&quot;https://jakeshimabukuro.com/&quot;&gt;Jake Shimabukuro&lt;/a&gt; playing &lt;a href=&quot;/categories/ukulele/&quot;&gt;ukulele&lt;/a&gt; so beautifully that I was inspired to buy a ukulele and start learning to play it. (Unfortunately, it would turn out that time constraints caused me not to pursue ukulele far. This will change in 2012.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I got pulled into the Ruby programming language because it is well-supported on Mac OS and it is easy to install libraries and tools, of which there are many that are quite useful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I went to &lt;a href=&quot;https://farmtotablepa.com/&quot;&gt;Farm to Table&lt;/a&gt; in Pittsburgh, and after that, Abby started moving toward paleo eating, with even better results than my smaller experiments earlier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I started our &lt;a href=&quot;/categories/hiking/&quot;&gt;hiking&lt;/a&gt; season in the spring. Hiking is special to us; it was one of our first shared activities (after initially meeting during salsa dancing), and one we return to again and again. When there is no calendar conflict and the weather is acceptable, we like hiking almost every weekend from spring through fall.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/steves-soup-hike-2011-03-26.jpg&quot; alt=&quot;Abby in front of me at Steve&apos;s Soup Hike&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;April&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started wearing &lt;a href=&quot;/categories/fivefingers/&quot;&gt;Vibram FiveFingers shoes&lt;/a&gt; almost all the time, whether walking or running (but not yet for hiking).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I went to &lt;a href=&quot;/categories/yoga/&quot;&gt;yoga&lt;/a&gt; at the &lt;a href=&quot;https://web.archive.org/web/20191111230019/http://www.clpgh.org/locations/squirrelhill/&quot;&gt;Squirrel Hill Library&lt;/a&gt; for the first time.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;May&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I began my experiment with barefoot running, in observation of &lt;a href=&quot;https://barefootrunners.org/ibrd&quot;&gt;International Barefoot Running Day&lt;/a&gt;. I started walking around barefoot at work, ignoring the confused looks or comments of colleagues. (I still go barefoot at work.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I bought a &lt;a href=&quot;/categories/melodica/&quot;&gt;melodica&lt;/a&gt;, inspired by the amazing performances of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jnote.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jnote.org/&quot;&amp;gt;James Howard Young&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I took a little vacation, spending some days in New York visiting Nathaniel and Yael and their baby. I finally fulfilled my dream (from before marriage) of taking Abby to Coney Island to walk on the boardwalk and at the beach, eating pizza, and riding the Wonder Wheel, just as I once did when I was six years old.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I started doing research into major home renovations for the summer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I visited my parents, and my sister Linda and her husband Andre also visited, with my mother throwing a delayed reception at home for the both of us who had gotten married in the past two years. Abby got to meet my parents&apos; friends, finally. And I went running with my brother-in-law for the first time! Also, I took Abby to the little park in Ann Arbor where as a too-shy teenager I used to go and sit on a particular bench and wish I were sitting with my dream girl. Mission accomplished!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;June&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;John and I did a tough 19-mile training hike on the &lt;a href=&quot;https://www.rachelcarsontrails.org/rct&quot;&gt;Rachel Carson Trail&lt;/a&gt; and decided we&apos;d had enough of that trail, and I decided I was probably not going to do the 35-mile &lt;a href=&quot;https://www.rachelcarsontrails.org/rct/challenge&quot;&gt;Rachel Carson Trail Challenge&lt;/a&gt; again (having completed it three times in the past).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/rachel-carson-trail-2011-06-05.jpg&quot; alt=&quot;John on Rachel Carson Trail&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby started wearing Vibram FiveFingers more and more for walking and running, and even walking barefoot on the streets (something I had not yet seriously done myself at the time).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I stupidly threw out my back during exercise, and my back took weeks to fully recover (I could still run and hike, but not lift weights). Never again, I hope. I felt like a 90-year-old when my back was hurting constantly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We started some home improvement projects.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;July&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started gravitating to almost exclusively body weight &lt;a href=&quot;/categories/strength-training/&quot;&gt;strength training&lt;/a&gt;, as a reaction to my having injured my back earlier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I went kayaking on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Kiskiminetas_River&quot;&gt;Kiski River&lt;/a&gt; with &quot;Fireman Steve&quot; and the kayaking gang.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On a longish hike, Abby surprised me by wearing Vibram FiveFingers shoes and they worked great for her, making her much faster and less sore, and I made a note to ditch my trail running shoes (which I had been using for years for hiking) in favor of FiveFingers for my next hike (which I did, and I have not gone back to regular shoes for hiking!).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I finally took Abby to &lt;a href=&quot;https://www.sandhillberries.com/&quot;&gt;Sand Hill Berries&lt;/a&gt; for tasty pie for the first time, always having intended to take her there when dating, but never having been in the vicinity with her then.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Major home renovation finally began, after much research, and we got electrical upgrade, insulation, and bathroom demolition and rebuilding. Very disruptive to our lives for weeks!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I did another mini-&lt;a href=&quot;https://en.wikipedia.org/wiki/Sesshin&quot;&gt;sesshin&lt;/a&gt; at CMU.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After a lifetime of almost never drinking coffee (average of maybe three or four cups a year), I became an avid espresso fan (one small cup a day) as a result of my boss getting a machine at work.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started doing more barefoot running.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;August&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Bathroom renovation done at last.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I were regularly hiking in Vibram FiveFingers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/abby-franklin-soup-hike-vibram.jpg&quot; alt=&quot;Abby and Franklin on Steve&apos;s Soup Hike part 3 wearing Vibram FiveFingers&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby joined me to run in her first ever 5K race, &lt;a href=&quot;https://www.runaroundthesquare.com/&quot;&gt;Run Around the Square&lt;/a&gt; in Regent Square (mostly on the trails of Frick Park). What a special day! This race was my first ever 5K race when I started running in races in 2000.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started to learn &lt;a href=&quot;/categories/accordion/&quot;&gt;accordion&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;September&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started running to work two or three times a week.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I ran in the &lt;a href=&quot;https://www.cs.cmu.edu/~kalp/PGR/&quot;&gt;CMU SCS Pretty Good Race 5K&lt;/a&gt; together, her second 5K race.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I went to &lt;a href=&quot;https://podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt;, and after that, &lt;a href=&quot;/blog/2011/09/22/starting-a-new-web-site/&quot;&gt;I started this blog&lt;/a&gt; and proceeded to maintain a habit of posting every day (a routine that has been modified since then).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;October&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started expanding beyond just writing for my blog, and began contributing to the Web through &lt;a href=&quot;https://twitter.com/franklinchen&quot;&gt;my Twitter account&lt;/a&gt; as well as writing comments on other people&apos;s blog posts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started taking Stanford online classes: &lt;a href=&quot;https://web.archive.org/web/20110923173848/http://www.ml-class.org:80/&quot;&gt;Machine Learning&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.db-class.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.db-class.org/&quot;&amp;gt;Introduction to Databases&amp;lt;/span&amp;gt;. (Blog posts on my experiences to appear soon.) Unfortunately, as a result of the extra time commitment, October through December were quite hectic for me.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abby and I continued to move more toward a paleo diet.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;November&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started playing &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt; again.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probably because of fatigue and a compromised immune system, I came down with a skin ailment that I got serious treatment for, but it took almost two months to completely clear up and I spent over a month truly miserable 24/7!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;December&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I started playing Baroque flute.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I started playing tin whistle.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I prepared for and made it through two music performances, playing recorder and flute (and almost tin whistle).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I ended the year completely exhausted, on the verge of getting sick, and took a long break from blogging.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The final week, Abby and I were on a hectic travel schedule that involved meeting up with her parents, my parents, her sister Carrie, Carrie&apos;s boyfriend Alain, Alain&apos;s parents, Alain&apos;s extended family, my sister Linda, and her husband Andre. I am grateful that we got to meet up with so many people (and arranged for various of the individuals to meet up with various of the others!), but the trip was quite stressful to me, because I was not physically or emotionally prepared for it at all. (I will report later on what I learned from the experience.)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;2011 was quite a year for me and Abby. We had many changes and adventures in our lives: our home, our diet, our exercise, our outdoors activities, travel. For me, the biggest changes were quitting chess, starting music practice and performance, throwing myself into blogging and tweeting, getting more and more active in local software developer groups, applying new (to me) development tools at work, and in the fall, taking Stanford online courses in computer science.&lt;/p&gt;
&lt;p&gt;Although I ended the year in poor shape, because of being overbooked, I am very excited by how many positive changes took place. I have an entirely new set of plans and priorities to formulate soon for 2012 in collaboration with Abby, in hope of learning from the lessons of my failures and omissions of 2011, and restoring balance.&lt;/p&gt;
</content:encoded></item><item><title>Much progress playing flute</title><link>https://franklinchen.com/blog/2011/12/20/much-progress-playing-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/20/much-progress-playing-flute/</guid><pubDate>Tue, 20 Dec 2011 21:35:00 GMT</pubDate><content:encoded>&lt;p&gt;Starting yesterday, I finally returned to practicing &lt;a href=&quot;/categories/flute/&quot;&gt;flute&lt;/a&gt;. I had played very little flute in ten days, as a result of focusing my musical practice almost entirely on soprano &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; for the performance at the &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;Pittsburgh Contras and Squares Holiday Ball on Friday&lt;/a&gt;. I did play flute just a little bit at the Holiday Ball, but nothing I needed practice on.&lt;/p&gt;
&lt;p&gt;I was surprised how much better I was at flute yesterday (and today) despite no practice in ten days. How did this happen?&lt;/p&gt;
&lt;p&gt;My path in improving at flute has been much different from my path in improving at recorder (which I continue to do, practicing alto on Saturday and then playing mostly tenor at the monthly local recorder group meeting on Sunday). I think there are a lot of reasons for the differences.&lt;/p&gt;
&lt;h2&gt;Physical demands&lt;/h2&gt;
&lt;p&gt;I feel that the physical demands of the flute have been considerable, such that I have simply required time for my body to adjust. I was limited in what I could do while I was adjusting.&lt;/p&gt;
&lt;p&gt;The flute is bigger and heavier than the very light recorders I have focused on (soprano and alto) and holding it is more awkward. My left finger joint and right pinkie take the hit, in particular. Also, when playing the recorder, one does not curl the fingers, but that is correct and necessary for the flute.&lt;/p&gt;
&lt;p&gt;The embouchure really needs to be developed. I still feel awkward about playing higher notes with a decent tone and in tune, but that is precisely what has become much better in the past ten days. It&apos;s taken over a month to reach this point of what I consider &quot;acceptability&quot;! &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Patience_Is_A_Virtue&quot;&gt;Patience is a virtue.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am still working on improving my breathing capacity and control sufficiently to play as legato as I would like for pieces that want it.  Definite improvements there.&lt;/p&gt;
&lt;p&gt;Creating a nice tone is of course what the flute is all about. On the recorder, there is relatively little one can do with its sound, other than to make it clean. I&apos;ve been working hard on improving my tone and developing a natural, tasteful vibrato.&lt;/p&gt;
&lt;h2&gt;Methods and accompaniment CDs&lt;/h2&gt;
&lt;p&gt;I did not and do not use any music accompaniment CDs when practicing recorder. I know they exist, but I had not believed it necessary to order them from a specialty shop online. At best, I have listened to recorded music featuring musicians playing recorder, and played along to some tracks.&lt;/p&gt;
&lt;p&gt;On the other hand, I have found many flute method books with accompaniment CDs at the &lt;a href=&quot;/blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;library&lt;/a&gt; and have been making great use of them!&lt;/p&gt;
&lt;p&gt;I had started out with &lt;em&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot;&amp;gt;I Used to Play Flute&amp;lt;/span&amp;gt;&lt;/em&gt;, which I&apos;m still using now. Then I got hold of the &lt;em&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boosey.com/shop/prod/Morgan-Chris-Boosey-Woodwind-Method-Flute-Book-1/702022&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boosey.com/shop/prod/Morgan-Chris-Boosey-Woodwind-Method-Flute-Book-1/702022&quot;&amp;gt;Boosey Woodwind Method: Flute Book 1&amp;lt;/span&amp;gt;&lt;/em&gt; and &lt;em&gt;&lt;a href=&quot;https://web.archive.org/web/20240806111954/https://www.boosey.com/shop/prod/Morgan-Chris-Boosey-Woodwind-Method-Flute-Book-2/706166&quot;&gt;Boosey Woodwind Method: Flute Book 2&lt;/a&gt;&lt;/em&gt;, and also the &lt;em&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.halleonard.com/product/viewproduct.do?itemid=50489868&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.halleonard.com/product/viewproduct.do?itemid=50489868&quot;&amp;gt;Moyse Collection of Easy Flute Classics&amp;lt;/span&amp;gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I have made my way through most of this material. I had expected to make slower progress, but then again, I benefit from having played flute some as a child and also &quot;cross-trained&quot; by all my recorder playing that has developed my general, non-flute musical skills.&lt;/p&gt;
&lt;h2&gt;Varied repertoire&lt;/h2&gt;
&lt;p&gt;I an enjoying the varied repertoire in the books I mentioned above. There is classical stuff, marches, ballads, swinging jazz, Bosnian and Israeli traditional songs, the works. That&apos;s why I took up the flute again.&lt;/p&gt;
&lt;h2&gt;Technical exercises&lt;/h2&gt;
&lt;p&gt;One thing I have not done &lt;em&gt;at all&lt;/em&gt; yet is the kind of technical exercises I began doing on recorder long ago: scales, arpeggios, increasing the speed significantly. I want to feel vaguely guilty for not beginning such exercises, but I think I have had good reasons to avoid them for now.&lt;/p&gt;
&lt;p&gt;One is that I wanted to get a &quot;taste&quot; of fun, of playing real music immediately, to gauge where I am.&lt;/p&gt;
&lt;p&gt;Another is that frankly, until my body adapted to the physical demands, I felt I was not in any condition to benefit optimally from plunging directly into that kind of practice.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I am very happy with my flute progress and expect to hunker down after my month-long &quot;beginner&quot; exploratory phase, by developing a plan for serious technical practice. I will scope out recommended technique books and switch my focus from &quot;real music&quot; to exercises, so that I can play the &quot;real music&quot; better eventually.&lt;/p&gt;
</content:encoded></item><item><title>What topics do you want me to write about in 2012?</title><link>https://franklinchen.com/blog/2011/12/19/what-topics-do-you-want-me-to-write-about-in-2012/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/19/what-topics-do-you-want-me-to-write-about-in-2012/</guid><pubDate>Mon, 19 Dec 2011 23:45:00 GMT</pubDate><content:encoded>&lt;p&gt;It has not yet been &lt;em&gt;three months&lt;/em&gt; since I &lt;a href=&quot;/blog/2011/09/22/starting-a-new-web-site/&quot;&gt;started this blog&lt;/a&gt;. I have managed to post something every single day since I started, apart from my decision over a month ago to &lt;a href=&quot;/blog/2011/11/12/starting-a-mini-digital-sabbath/&quot;&gt;take Saturday off&lt;/a&gt;. Now that I&apos;ve proved to myself that I can maintain the &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;habit&lt;/a&gt;, I&apos;m going to take a break (coinciding with the winter holidays), reflect more deeply on where my blog has explored, and plan out and implement some &lt;strong&gt;major changes and improvements&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I strongly believe that &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Web_content#Content_is_king&quot;&gt;content is king&lt;/a&gt;&lt;/strong&gt;. This is why I have deliberately focused entirely on content in the past three months, rather than on format, tone, and style, even when I became increasingly aware of areas of improvement outside the area of content. I will work on those other areas for 2012.&lt;/p&gt;
&lt;p&gt;Meanwhile, I would like to improve the content as well, by making it more useful to you. I am listing here just a few of the broad topic ideas I expect to address in future posts (many of the topic areas have already appeared in the past three months, while others have not).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do you want to read here?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If there are topics on this list (or &lt;em&gt;not&lt;/em&gt; on this list) you are particularly interested in reading about here, let me know; I will take all requests seriously!&lt;/p&gt;
&lt;p&gt;The list, roughly organized by topic but not in any particular order (and by no means exhaustive):&lt;/p&gt;
&lt;h2&gt;Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;experiences performing music as a serious amateur&lt;/li&gt;
&lt;li&gt;experiences practicing music&lt;/li&gt;
&lt;li&gt;my progress on various instruments&lt;/li&gt;
&lt;li&gt;concert reviews&lt;/li&gt;
&lt;li&gt;reviews of music I discover and like&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;stuff Abby and I cook and eat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pittsburgh&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;reviews of local eats&lt;/li&gt;
&lt;li&gt;reports on local events I attend&lt;/li&gt;
&lt;li&gt;local politics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Running&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;comparison of different models of Vibram FiveFingers shoes&lt;/li&gt;
&lt;li&gt;discussions of minimalist and barefoot running&lt;/li&gt;
&lt;li&gt;race reports&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Exercise&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;discussions of what works for me&lt;/li&gt;
&lt;li&gt;discussions of new workouts as I explore them&lt;/li&gt;
&lt;li&gt;reviews of exercise videos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Outdoors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;reports and photos from enjoying time outdoors&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Diet/health&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;experiments in diet, especially toward paleo style&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Software development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;reports on local user groups&lt;/li&gt;
&lt;li&gt;reviews of tools and ideas I use for software development&lt;/li&gt;
&lt;li&gt;fully worked out code to illustrate using a language or library&lt;/li&gt;
&lt;li&gt;making effective use of types&lt;/li&gt;
&lt;li&gt;testing methodologies and concrete setups&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Book reviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;reviews of books on a wide assortment of topics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Philosophy/psychology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;self-improvement stuff&lt;/li&gt;
&lt;li&gt;meditation&lt;/li&gt;
&lt;li&gt;gratitude&lt;/li&gt;
&lt;li&gt;nature of creativity&lt;/li&gt;
&lt;li&gt;how technology changes things&lt;/li&gt;
&lt;li&gt;nature of human irrationality&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Education&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;how to learn&lt;/li&gt;
&lt;li&gt;what to learn and where&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Writing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;pointers to comments I post on others&apos; blogs&lt;/li&gt;
&lt;li&gt;write and post more poems&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Politics/economics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;discussion of issues, defying any party line&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Videos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;start making instructive/entertaining videos for YouTube&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Fun at the East End Food Co-op Winterfest</title><link>https://franklinchen.com/blog/2011/12/18/fun-at-the-east-end-food-co-op-winterfest/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/18/fun-at-the-east-end-food-co-op-winterfest/</guid><pubDate>Sun, 18 Dec 2011 18:52:00 GMT</pubDate><content:encoded>&lt;p&gt;Saturday, Abby and I went to the annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://eastendfoodcoop.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://eastendfoodcoop.com/&quot;&amp;gt;East End Food Co-op&amp;lt;/span&amp;gt; &lt;a href=&quot;https://www.facebook.com/events/144638855639374/&quot;&gt;Winterfest&lt;/a&gt; with John, as we did last year, and were joined by Mark, Jin, and their daughter Julia.&lt;/p&gt;
&lt;p&gt;This family-friendly annual event serves as a fund raiser, and features a variety of vegetarian and vegan food as well as live music. This year, the draw was &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://davidshelow.com/guitar/performance/ensemble.php&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://davidshelow.com/guitar/performance/ensemble.php&quot;&amp;gt;Bury the Cabbage&amp;lt;/span&amp;gt;, a group playing Irish traditional music.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2011/bury-the-cabbage.jpg&quot; alt=&quot;Bury the Cabbage&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Every year, I&apos;ve bumped into a good number of people here that I haven&apos;t seen for a while, and this year was no exception.&lt;/p&gt;
&lt;h2&gt;Young children&lt;/h2&gt;
&lt;p&gt;The little kids quickly and spontaneously found one another other and started running around and playing, so Julia had her fun. They all seemed to like the balloon man.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2011/balloons.jpg&quot; alt=&quot;Young children love balloons&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Food&lt;/h2&gt;
&lt;p&gt;There was plenty of food available at the Winterfest. It was all vegetarian and vegan. I stuffed myself silly, especially enjoying the roasted peppers, eggplant, zucchini, and sweet potato pancakes. There was pasta with tofu, falafel, mushroom, salad, fruit, and other selection. I sampled them all.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2011/getting-food.jpg&quot; alt=&quot;People getting food&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There was a wide selection of cookies, carefully classified. Some were vegan, others were gluten-free. There were too many varieties for me to even try one of each.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eefc-winterfest-2011/cookies.jpg&quot; alt=&quot;Wide selection of cookies&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;People in Pittsburgh&lt;/h2&gt;
&lt;p&gt;Abby and I recognized one person in the Irish band, &lt;a href=&quot;https://web.archive.org/web/20250307022033/https://lesgetchell.com/&quot;&gt;Les&lt;/a&gt;. We had met him at a party at one point but not known much about him. It&apos;s funny how in Pittsburgh it is easy to run into the same person in different contexts!&lt;/p&gt;
&lt;p&gt;We saw &lt;a href=&quot;https://www.cleanlink.com/sm/article/Endurance-Running-Takes-Will-Desire--550&quot;&gt;Sam Bertenthal&lt;/a&gt; again with his son Fernando. Sam is a local ultrarunner whom I first met in &lt;a href=&quot;../../assets/images/franklin-finishing-sammys-birthday-run-2006.jpg&quot;&gt;2006&lt;/a&gt; when I ran in his annual &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runnersworld.com/community/forums/runner-communities/masters/sammys-6-hour-birthday-run-race-report-new-twists?plckFindPostKey=Cat:Runner%20CommunitiesForum:648106477Discussion:926106577Post:836106577&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runnersworld.com/community/forums/runner-communities/masters/sammys-6-hour-birthday-run-race-report-new-twists?plckFindPostKey=Cat:Runner%20CommunitiesForum:648106477Discussion:926106577Post:836106577&quot;&amp;gt;Sammy&apos;s Birthday Run&amp;lt;/span&amp;gt; for the first time. I ran just 27.5 miles that year (long enough to go beyond the marathon distance of 26.2 for my own pride), and went back to do the same in &lt;a href=&quot;../../assets/images/franklin-finishing-sammys-birthday-run-2008.jpg&quot;&gt;2008&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sam said hello and reminded me that next year he will be holding his race on July 14. We&apos;ll see whether I&apos;m up for it again. I haven&apos;t been running long distances in recent years.&lt;/p&gt;
&lt;p&gt;We also saw some other people we recognized as regulars to the Winterfest, such as Linda of &lt;a href=&quot;https://web.archive.org/web/20250719041303/http://salsaritmodance.org/&quot;&gt;Salsa Ritmo&lt;/a&gt;, a salsa dance instructor through whom Abby and I actually first got together at a party of hers (and Linda&apos;s dance partner is Mark Fuhs, who was my classmate at CMU when I got him into ballroom dancing, then he discovered salsa and got serious about it and became an instructor).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.myspace.com/kimberleefaught&quot;&gt;Kimberlee Faught&lt;/a&gt; is a regular at the annual Winterfest also. If you live in the city of Pittsburgh, you&apos;ve probably seen her around playing violin in Squirrel Hill on Murray or Forbes (or elsewhere) when the weather is nice. I bump into her running in 5K races also!&lt;/p&gt;
&lt;p&gt;I mention all this only because I really want to highlight how much I love that in Pittsburgh, I never feel alone. Wherever I go, I&apos;ll run into someone I know or have met from somewhere. This feel is very important to me.&lt;/p&gt;
&lt;h2&gt;Music and dancing&lt;/h2&gt;
&lt;p&gt;We enjoyed listening to the music, and Abby and I got up to dance a couple of waltzes (last year . There were some people who attempted to do Irish step dancing. Unfortunately, Abby and I don&apos;t know it, so we didn&apos;t try it. Maybe that&apos;s something else worth learning!&lt;/p&gt;
&lt;p&gt;Sorry, no videos this year of Abby and me dancing! Last year John did get video of us &lt;a href=&quot;https://www.youtube.com/watch?v=SKWXpkHF20g&quot;&gt;dancing waltz to Zydeco Dogz&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I noticed that &lt;a href=&quot;https://brucefoley.com/&quot;&gt;Bruce Foley&lt;/a&gt; of Bury the Cabbage was playing what looked like an oversized tin whistle, so during a break I asked him about the instrument. Indeed, it was a whistle in D an octave lower than the little tin whistle I had started playing. He said the best place to get these whistles is &lt;a href=&quot;https://www.burkewhistles.com/&quot;&gt;Burke&lt;/a&gt;. I have to confess I&apos;m not currently in the market for a low whistle, much less any professional-grade whistle.&lt;/p&gt;
&lt;h2&gt;Interviews about the East End Food Co-op (updated 2012-12-04)&lt;/h2&gt;
&lt;p&gt;At the party, there was a call for volunteers to be interviewed about the East End Food Co-op, how they use it, and what it means to them. Here&apos;s a video that was made from the interviews.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;https://player.vimeo.com/video/37628327?badge=0&quot; width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;p&amp;gt;&amp;lt;a href=&quot;https://vimeo.com/37628327&quot;&amp;gt;Winterfest with the East End Food Co-op&amp;lt;/a&amp;gt; from &amp;lt;a href=&quot;https://vimeo.com/user10547223&quot;&amp;gt;East End Food Co-op&amp;lt;/a&amp;gt; on &amp;lt;a href=&quot;https://vimeo.com&quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It was getting to be bedtime for Julia, so Mark and Jin prepared to go home, and John, Abby, and I also packed up (we were all told to take leftover food, of which there was plenty) and went home.&lt;/p&gt;
&lt;p&gt;With filling our bellies, hearing a variety of music on different instruments and, dancing, hanging out with friends, people-watching, it was a fun evening.&lt;/p&gt;
&lt;p&gt;I am grateful to the East End Food Co-op for organizing this annual event and providing the food, and the Jewish Community Center for hosting its location again. I am grateful that Mark, Jin, Julia, and John were able to join Abby and me for the evening. I am grateful for the opportunity to listen to excellent live music and dance to it.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-15-15)&lt;/h3&gt;
&lt;p&gt;The following year, we attended the annual Winterfest &lt;a href=&quot;/blog/2012/12/15/east-end-food-co-op-winterfest-2012/&quot;&gt;again&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Playing recorder and flute at the Holiday Ball!</title><link>https://franklinchen.com/blog/2011/12/17/playing-recorder-and-flute-at-the-holiday-ball/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/17/playing-recorder-and-flute-at-the-holiday-ball/</guid><pubDate>Sat, 17 Dec 2011 23:17:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;So on Friday, after &lt;a href=&quot;/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/&quot;&gt;just two weeks&lt;/a&gt; of &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;practicing music&lt;/a&gt; for the &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt; Holiday Ball, the moment of truth finally arrived.&lt;/p&gt;
&lt;p&gt;The event went pretty well! Here is a report, with some photos and videos.&lt;/p&gt;
&lt;h2&gt;Costumes&lt;/h2&gt;
&lt;p&gt;Abby had said that we were supposed to show up dressed &quot;festively&quot;, so I thought, OK, I&apos;ll wear something green and something red, for the holiday season. I immediately thought of a green shirt and red pants I have. Abby came up with the idea that I should wear a hat, and so I picked out one of my hats (which I only wear for costume parties) and she put a green band around it. I feared being cold (and rightfully so, it turned out), and so I added a blazer and a tie to the outfit. A good number of people seemed to like this colorful outfit!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2011/abby-franklin-holiday-ball.jpg&quot; alt=&quot;Abby and Franklin posing before event&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Venue&lt;/h2&gt;
&lt;p&gt;I had never been to the Swisshelm Park Community Center before, but since Abby had, she had warned me that it was cold on stage at this time last year. Indeed it was. I was very, very happy to be wearing a hat and my blazer. In the future, I&apos;ll remember to bring my Handeze fingerless gloves to gigs anywhere (and pack a hat and layers of clothing), to keep my hands warm when not performing.&lt;/p&gt;
&lt;h2&gt;On stage&lt;/h2&gt;
&lt;p&gt;Around twenty-five musicians eventually gathered on stage. There was just enough space for all of us, although it was crowded. I got put in the &quot;wind section&quot;, armed with my main instrument I had finally decided on for this gig, soprano recorder (which I had started practicing the music for only a couple of days before!!), along with my secondary instrument, flute, which I planned to use only on the Hallelujah Chorus and some waltzes, and finally, the &lt;a href=&quot;/blog/2011/12/11/learning-another-instrument-the-tin-whistle/&quot;&gt;tin whistle&lt;/a&gt;, which I did not have enough time to play well enough for most of the music, and therefore planned to possibly use on only one piece.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2011/franklin-soprano-recorder.jpg&quot; alt=&quot;Franklin posing with soprano recorder&quot; /&gt;
&lt;img src=&quot;../../assets/images/holiday-ball-2011/franklin-flute.jpg&quot; alt=&quot;Franklin posing with flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Abby sat to my right with her tamburitza. This was the first time we have ever played music together at an event!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/holiday-ball-2011/abby-tamburitza.jpg&quot; alt=&quot;Abby posing with tamburitza&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Off and running&lt;/h2&gt;
&lt;p&gt;Marlin, the caller, kicked things off and the bagpiper led the Grand March and after he played for a while, we started playing. Before each group of dances, Marlin gave a brief lesson to the dancers.  We had jigs, reels, waltzes.&lt;/p&gt;
&lt;p&gt;Throughout, Donna and Allison split the conducting, with Maro at the keyboard.&lt;/p&gt;
&lt;h2&gt;Some videos&lt;/h2&gt;
&lt;p&gt;I managed to get some videos with my digital camera while on stage, because I didn&apos;t play continuously. We often did three or four or even more repeats, such that I would sit out and rest and have an opportunity to switch instruments or take photos. With twenty-five of us playing, there wasn&apos;t a need for any one individual to be playing lots of notes all the time (except for Maro at the keyboard!). We also changed things up so that we&apos;d alternate among the &quot;reeds&quot;, &quot;winds&quot;, &quot;fiddles&quot;, &quot;strings&quot;, etc. for variety.&lt;/p&gt;
&lt;p&gt;Here&apos;s a clip of me playing soprano recorder during Coleraine:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;JZqMmpwQwZE&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is a view of some of the others during Coleraine:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;CgVVxWq1hLE&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Here is dancing to Whalen&apos;s Breakdown:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;LNiUdN_4-44&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Something unexpected&lt;/h2&gt;
&lt;p&gt;I mentioned earlier that I had planned to possibly play tin whistle in one piece, which was the fourth in a medley, of which we had been told we would not be playing the third. Since we were not supposed to play the third, I had crossed it out and not even sight read it once (given that I had less than two weeks to try to learn thirty pieces we were going to play).&lt;/p&gt;
&lt;p&gt;Guess what? Somehow, after the second piece in the medley ended, I got completely confused, because we went into the third one that we weren&apos;t supposed to play. This third one was Whalen&apos;s Breakdown, which I got video of above. Eventually I joined in and started playing it, but not on tin whistle.&lt;/p&gt;
&lt;h2&gt;Overall experience&lt;/h2&gt;
&lt;p&gt;Time went by surprisingly quickly. Getting set up and ready on stage, the time passed quickly (I was glad we arrived quite early). I was surprisingly hungry after we took a break after the first hour, and was grateful to enjoy a plate of cookies I gathered from the table near the entrance, where dancers and musicians had brought in food to share.&lt;/p&gt;
&lt;p&gt;Originally there had been talk of some of us musicians sitting out the first or second half because of space constraints, but since it turned out that there was enough space for all of us who ended up participating, Abby and I did not need to leave. She asked me if I wanted to stop playing and dance instead for the second half, but I was all excited about playing (and had worked so hard to practice the music) that I said I&apos;d like to continue playing. We can always dance some other time.&lt;/p&gt;
&lt;p&gt;Although I knew from my practice that I couldn&apos;t play all the pieces (at the speed required) or all the notes, I was happy to contribute in my own small way where I could (and I was not seated very near any of the microphones, ha!). There was safety in numbers, definitely. I did the best I could.&lt;/p&gt;
&lt;h2&gt;Goals for the future&lt;/h2&gt;
&lt;p&gt;Next year, I&apos;d like to play in this event again, but I have a couple of specific goals for next year already if I do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I want to be much better at all the instruments I would play in it (recorder, flute, tin whistle).&lt;/li&gt;
&lt;li&gt;I want to be proficient and confident enough to sit by a microphone.&lt;/li&gt;
&lt;li&gt;I want to do some solos, with stylistically appropriate improvisations.&lt;/li&gt;
&lt;li&gt;Maybe I should learn some of the dances and perform some too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since I think tin whistle is particularly suitable for the music in question, I&apos;d like to get a better one and work on playing it.&lt;/p&gt;
&lt;p&gt;Of course, right now I am bushed, and am taking a rest from this music, but I&apos;ll think about it again after a month or two.&lt;/p&gt;
&lt;h2&gt;Thank yous&lt;/h2&gt;
&lt;p&gt;I would like to thank Lynette, Donna, Allison, and Maro for all they&apos;ve done for this annual Holiday Ball Orchestra over the years, and their openness and friendliness to new participants like me. I had a lot of fun exploring music new to me, and learning to play it and feel it.&lt;/p&gt;
&lt;p&gt;I would like to thank the dancers for enjoying and showing appreciation for our playing for them.&lt;/p&gt;
&lt;p&gt;And of course, I would like to thank my wife Abby for encouraging me to join her in playing for the Holiday Ball!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-12-14)&lt;/h2&gt;
&lt;p&gt;The following year, I &lt;a href=&quot;/blog/2012/12/14/pittsburgh-contras-and-squares-holiday-ball-2012/&quot;&gt;played music again in the annual Holiday Ball&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Today is Bill of Rights Day, the irony!</title><link>https://franklinchen.com/blog/2011/12/15/today-is-bill-of-rights-day-the-irony/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/15/today-is-bill-of-rights-day-the-irony/</guid><pubDate>Thu, 15 Dec 2011 13:07:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/us-constitution-at-cmu.jpg&quot; alt=&quot;Actual copy of the US Constitution at Carnegie Mellon University&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Today, in the United States, is December 15, &lt;a href=&quot;https://en.wikipedia.org/wiki/United_States_Bill_of_Rights&quot;&gt;Bill of Rights&lt;/a&gt; Day, the day in 1791 when the new nation of the United States amended its Constitution by adding the &quot;bill of rights&quot; in order to address the concerns of those who feared that the Constitution as proposed without the amendments did not sufficiently protect Americans&apos; rights.&lt;/p&gt;
&lt;p&gt;Unfortunately, &lt;a href=&quot;https://web.archive.org/web/20260328194916/http://americancensorship.org/&quot;&gt;today is also the day&lt;/a&gt; on which the House is voting on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Stop_Online_Piracy_Act&quot;&gt;&quot;Stop Online Piracy Act&quot; (SOPA)&lt;/a&gt;. SOPA, in the name of protecting copyright, gives the government tremendous powers that amount to &lt;a href=&quot;https://www.eff.org/deeplinks/2011/12/internet-inventors-warn-against-sopa-and-pipa&quot;&gt;suppression of free speech and censorship of the Internet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shame, shame&lt;/strong&gt; on Congress and on the special interests and lobbyists supporting SOPA!&lt;/p&gt;
&lt;p&gt;If you are an American, do you know &lt;a href=&quot;https://www.billofrightsinstitute.org/&quot;&gt;your rights&lt;/a&gt;? If you are not an American, how well do you feel we are doing in the United States protecting our rights?&lt;/p&gt;
</content:encoded></item><item><title>I love medicine balls: including a video review: Gaiam Fit Ball Workout</title><link>https://franklinchen.com/blog/2011/12/14/i-love-medicine-balls-video-review-gaiam-fit-ball-workout/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/14/i-love-medicine-balls-video-review-gaiam-fit-ball-workout/</guid><pubDate>Wed, 14 Dec 2011 23:58:00 GMT</pubDate><content:encoded>&lt;p&gt;I love medicine balls. But once upon a time, I didn&apos;t even know what a &lt;a href=&quot;https://en.wikipedia.org/wiki/Medicine_ball&quot;&gt;medicine ball&lt;/a&gt; was.&lt;/p&gt;
&lt;p&gt;Two months ago, I mentioned my gradual movement away from formal gyms and exercise machines toward &lt;a href=&quot;/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/&quot;&gt;less technological ways to exercise&lt;/a&gt;. One of the &quot;gadgets&quot; I do use is a medicine ball.&lt;/p&gt;
&lt;p&gt;Today, I am reviewing an intense exercise video that I started using just two years ago that involves a medicine ball, the &lt;a href=&quot;https://www.amazon.com/Gaiam-05-52846-Fit-Ball-Workout/dp/B0012K1BM8&quot;&gt;Gaiam Fit Ball Workout&lt;/a&gt; with instructor &lt;a href=&quot;https://www.tanjadjelevic.com/&quot;&gt;Tanja Djelevic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ecx.images-amazon.com/images/I/5110kWIORpL._SL500_AA300_.jpg&quot; alt=&quot;Photo of Gaiam Fit Ball Workout kit&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I give this &lt;strong&gt;5/5 stars&lt;/strong&gt; and here&apos;s why!&lt;/p&gt;
&lt;h2&gt;I&apos;m reviewing the first workout only, for now&lt;/h2&gt;
&lt;p&gt;I am only reviewing the first workout on the DVD, the &quot;fit ball workout&quot;. I have never done the other two workouts, the &quot;abs workout&quot; and the &quot;partner workout&quot;. I happen not to be a fan of abs-specific workouts (a later blog post will explain why), and I have yet to ask Abby whether she is interested in trying the partner workout.&lt;/p&gt;
&lt;h2&gt;Equipment: which medicine ball?&lt;/h2&gt;
&lt;p&gt;Two years ago, I started out with the 4 pound medicine ball and to my surprise, found myself humbled by it initially (after having spent too many years not working my upper body). Eventually the 4 pound ball became too easy and I bought a 6 pound ball, which I use now. I would advise starting easy and building up, making sure that whatever weight you are using, you only use a weight that you can sustain with good form for 25 minutes.&lt;/p&gt;
&lt;p&gt;There are no points for &quot;showing off&quot; and handling a heavier ball with poor form. There are also no points for going through the motions with a ball that is far too light to offer the resistance and burn you want to feel.&lt;/p&gt;
&lt;p&gt;I&apos;m at the point where the 6 pound ball is a bit easy for some parts of the workout and still challenging for others. So I should probably move to an 8 pound ball soon.&lt;/p&gt;
&lt;h2&gt;Instructor&lt;/h2&gt;
&lt;p&gt;Tanja Djelevic is a fantastic instructor. Her instructions and suggestions and reminders on form are quite clear and enthusiastic, without being annoying. I cannot overstate how important it is, when evaluating an exercise video, to make sure the instructor is someone you can really feel reaching out to you from the TV or computer screen.&lt;/p&gt;
&lt;h2&gt;The movements: full range of motion&lt;/h2&gt;
&lt;p&gt;The &quot;fit ball workout&quot; is 25 minutes of nonstop intensity with a lot of different movements. I like that it works a full range of motion for many muscles.&lt;/p&gt;
&lt;p&gt;There are reaches for the arms that I feel improved my posture and flexibility and aligned my shoulders.&lt;/p&gt;
&lt;p&gt;There are core twists that should be done with care (I once did such twists carelessly and hurt my back).&lt;/p&gt;
&lt;p&gt;There are lunges and plies that will have you feeling the burn in your quads, glutes, and calves.&lt;/p&gt;
&lt;p&gt;The figure-eights and circles for the arms while holding the ball are great for shoulders and surrounding muscles.&lt;/p&gt;
&lt;p&gt;The throws are explosive and one of the great things about using a medicine ball.&lt;/p&gt;
&lt;p&gt;The wood chops with the medicine ball I enjoy a lot, very dynamic.&lt;/p&gt;
&lt;p&gt;The pushups are, well, pushups, but with an interesting dimension: by rolling the ball from one side to another while doing pushups, you get to work on core stability.&lt;/p&gt;
&lt;p&gt;The plank and other stationary poses are good for the abs.&lt;/p&gt;
&lt;h2&gt;Warmup and cooldown&lt;/h2&gt;
&lt;p&gt;The warmup and cooldown are all too brief for my taste, but are decent if extended on both ends by a longer warmup and a longer cooldown (with more stretching of all the leg muscles, especially).&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Using the 25-minute medicine ball workout periodically over the past two years has not only added muscle to my entire upper body, and expanded my chest, but also improved my posture, balanced my left and right sides of my body, and generated some weight loss.&lt;/p&gt;
&lt;p&gt;This is not a workout I would do every day or even every other day. The reason is that doing the workout as is (without modification) involves endurance levels of repetition that I find beneficial in small doses but unenjoyable and less beneficial in larger doses. I like to mix up my workouts so that I get sessions in which I move much heavier weight but with fewer reps.&lt;/p&gt;
&lt;p&gt;I have tried out other videos by Tanja Djelevic and will review them in the future. You might want to check out &lt;a href=&quot;https://tanjadjelevic.com/blog/&quot;&gt;her blog&lt;/a&gt; and subscribe to it: she likes talking about the whole picture of health of mind and body. Exercise isn&apos;t and shouldn&apos;t be some kind of mechanical operation treating the body as a machine. It&apos;s something joyful that taps into our being fully alive, and you can tell from her instruction that Tanja embodies this attitude, and I appreciate it.&lt;/p&gt;
</content:encoded></item><item><title>Video review: Dancing with the Stars: Cardio Dance (2006)</title><link>https://franklinchen.com/blog/2011/12/13/video-review-dancing-with-the-stars-cardio-dance-2006/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/13/video-review-dancing-with-the-stars-cardio-dance-2006/</guid><pubDate>Tue, 13 Dec 2011 22:46:00 GMT</pubDate><content:encoded>&lt;p&gt;When the weather is cold, I confess that I don&apos;t enjoy running outside. I have done so in the past when much more serious about running, but I do not like it much. So I end up doing exercise indoors that is something of a substitute for running. I should really take up swimming (Abby wants to get me to do that), but traditionally, I have enjoyed doing &lt;strong&gt;dance&lt;/strong&gt; workouts to videos.&lt;/p&gt;
&lt;p&gt;One of my favorite dance workout DVDs, which I have used for almost half a decade now since it came out, is &lt;a href=&quot;https://www.amazon.com/Dancing-Stars-Cardio-Dance/dp/B000MMMTC8&quot;&gt;Dancing with the Stars: Cardio Dance (2006)&lt;/a&gt;. I have never tired of it (as long as I don&apos;t use it all the time, of course; I have a number of other exercise videos I will review later).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ecx.images-amazon.com/images/I/51j9ihJucML._SL500_AA300_.jpg&quot; alt=&quot;Dancing with the Stars: Cardio Dance (2006) DVD&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The TV show&lt;/h2&gt;
&lt;p&gt;The DVD came out, of course, as a result of the popularity of the TV series &lt;a href=&quot;https://en.wikipedia.org/wiki/Dancing_with_the_Stars_%28U.S._TV_series%29&quot;&gt;Dancing with the Stars&lt;/a&gt;. I had watched several episodes in 2006, out of curiosity, since in 2000-2002 I had been pretty serious about &lt;a href=&quot;/blog/2011/10/18/disagreement-on-the-use-of-time/&quot;&gt;doing competitive ballroom dancing&lt;/a&gt;, so I wanted to see just how good the celebrities could get, with training. I was actually impressed by how good some of them got, although there were many who were not very good at all and really had no business trying to perform complicated routines rather than mastering basic technique (my instructors were always adamant about our not trying to do what we weren&apos;t yet ready for, lest we develop poor habits difficult to unlearn).&lt;/p&gt;
&lt;h2&gt;The content of the workout&lt;/h2&gt;
&lt;h3&gt;The dancers&lt;/h3&gt;
&lt;p&gt;One reason I enjoy the workout is that the dancers on video are actually decent. The pro instructors on the video, Kym, Maksim, Ashly, are good, and the other dancers hold up too. I find it important to see good technique at work, because we learn by imitation.&lt;/p&gt;
&lt;p&gt;Also, I like that there are a number of different male and female dancers, with different ethnicities and body types. All are in great shape, of course. For me, it was important to see not only Maksim, but two other male dancers. I enjoy exercise videos more when I see men doing stuff, and have role models to emulate. Also, to be frank, the women are always more flexible, and I feel odd whenever I can&apos;t quite do something that I see on a video. So I feel comforted seeing men who are more limited and remind me that I&apos;m doing OK.&lt;/p&gt;
&lt;p&gt;There is a guy on this video who looks kind of Asian. I always like to see someone whose body type seems close to mine.&lt;/p&gt;
&lt;h3&gt;The moves&lt;/h3&gt;
&lt;p&gt;The moves are basic and real ballroom dance moves put together to form routines. There are very few gimmicky, tricky moves. Things get repetitious, so I can&apos;t use this video more than maybe twice a week, but that&apos;s fine. I happen to enjoy continuing to refine my technique on the same steps again and again. And I feel that over the years as I&apos;ve used this video, I have indeed improved considerably in my technique, speed, stamina, and expressiveness.&lt;/p&gt;
&lt;p&gt;For example, I quite like the paso doble workout, because it is all about showing off in macho fashion, by using the arms, twisting, pretending to wield a cape, standing tall. It&apos;s a very masculine dance.&lt;/p&gt;
&lt;p&gt;The second dance, the cha cha, is repetitious, and unfortunately is danced on 1 rather than on 2 (obviously for the sake of not confusing beginners), but is a nice workout for the core, if one pays attention to technique and doing crisp cha-cha-cha and proper Latin hip motion.&lt;/p&gt;
&lt;p&gt;The third dance, the samba, is a lot of fun and faster and more strenuous.&lt;/p&gt;
&lt;p&gt;The final dance, the jive, definitely generates a lot of sweat. It&apos;s almost like running. My calves get a real workout from the jive. Amusingly, you can see how the non-pros get more and more tired and struggle. I did initially also, but eventually I became more efficient.&lt;/p&gt;
&lt;p&gt;In each of these dances, the instructors are very enthusiastic, and the other dancers seem to be enjoying themselves also. I really like that vibe.&lt;/p&gt;
&lt;h3&gt;The warmup and cooldown&lt;/h3&gt;
&lt;p&gt;The warmup and cooldown framing the workout are very brief, as typical of these videos, unfortunately. I simply warm up by myself before even popping in the DVD, and I skip the video&apos;s cooldown in favor of my own stretching, etc.&lt;/p&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;
&lt;p&gt;Unfortunately, there is a reason ratings for the DVD on Amazon are all over the map. Dance exercise videos can never please everyone, because of differences in people&apos;s levels of fitness and technique.&lt;/p&gt;
&lt;p&gt;For someone like me, who has had a bit of serious ballroom dance training and is looking for a reasonable workout based on Latin dance, the video is perfect.&lt;/p&gt;
&lt;p&gt;I would &lt;em&gt;not at all&lt;/em&gt; recommend this video for a total newcomer to ballroom dance. There is no instruction on technique. Without proper technique, it&apos;s not really possible to get through the workout efficiently and enjoyably. You could get injured, in fact. The samba and jive, in particular, could result in a lot of pounding on joints, etc.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I enjoy this dance workout video very much, but I hesitate to recommend it to anyone other than people who have already at least received rudimentary instruction on each of the dances covered: paso doble, cha cha, samba, jive.&lt;/p&gt;
</content:encoded></item><item><title>Why go to concerts by amateur music groups?</title><link>https://franklinchen.com/blog/2011/12/12/why-go-to-concerts-by-amateur-music-groups/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/12/why-go-to-concerts-by-amateur-music-groups/</guid><pubDate>Mon, 12 Dec 2011 21:13:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-historical-music-society-concert/program.jpg&quot; alt=&quot;Program&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On Sunday, Abby and I carpooled with Helen and Mike (of the &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; gang) to Ambridge for a free concert given by the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghhistoricalmusicsociety.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghhistoricalmusicsociety.org/&quot;&amp;gt;Pittsburgh Historical Music Society&amp;lt;/span&amp;gt; as part of a Christmas-themed event in &lt;a href=&quot;https://www.oldeconomyvillage.org/&quot;&gt;Old Economy Village&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That was a long way to drive to see an amateur group give a concert. So why did we pile into the car?&lt;/p&gt;
&lt;p&gt;The main draw was that there was going to be a performance of &lt;a href=&quot;https://en.wikipedia.org/wiki/Brandenburg_concertos#Brandenburg_Concerto_No._4_in_G_major.2C_BWV_1049&quot;&gt;Bach&apos;s Brandenburg concerto 4&lt;/a&gt;, including as soloists the local &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt; players Karen Parsons and Laura Lockard, and violinist and conductor William Lockard. I was very curious to see some Baroque flutists in action, since I had only recently &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;bought a Baroque flute&lt;/a&gt;. Also, I love Bach&apos;s Brandenburg concerto 4 (which I tried to sight read for alto recorder a while ago but is still too hard for me).&lt;/p&gt;
&lt;p&gt;The concert featured a variety of early music, including some music specifically written for the original orchestra of historic Old Economy Village back in the day.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-historical-music-society-concert/orchestra-left.jpg&quot; alt=&quot;Left view of orchestra&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-historical-music-society-concert/orchestra-right.jpg&quot; alt=&quot;Right view of orchestra&quot; /&gt;
&lt;img src=&quot;../../assets/images/pittsburgh-historical-music-society-concert/harp-viol-flute.jpg&quot; alt=&quot;Harp, viola da gamba, and flute&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Below are the soloists in the Brandenburg 4:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittsburgh-historical-music-society-concert/brandenburg-4.jpg&quot; alt=&quot;Soloists for the Brandenburg 4&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Concert review&lt;/h2&gt;
&lt;p&gt;Going to an event like this, my expectations are not very high. In fact, once upon a time, I would not really bother to attend a concert of amateur performers because of high standards programmed into my mind as a result of easy access to any number of current or classic music recordings by professionals. And no, I wouldn&apos;t have bothered to attend this particular concert if not for the draw of the Baroque flutists and the personal connections as well as expectations that they would be decent (which they were).&lt;/p&gt;
&lt;p&gt;During the concert, some of the violins were perpetually out of tune, and there were constant glitches everywhere, whether in the cello, horns, whatever. One has to simply be patient and decide to enjoy the performances as they are. Sometimes the struggle even adds to the excitement. The Brandenburg 4 is not easy, and even at the slow tempos chosen, the imperfections in execution combined with honest enthusiasm made me appreciate even more how special it was that Bach wrote such brilliant and passionate music.&lt;/p&gt;
&lt;h2&gt;In praise of amateurism and imperfection&lt;/h2&gt;
&lt;p&gt;I am an amateur musician, and not yet a very skilled one, so I recognize my limitations. I can miss notes, create uneven and ragged phrasing, fall apart at high speed, play out of tune, and make all kinds of other errors.&lt;/p&gt;
&lt;p&gt;I think that being out there myself playing now, I am more appreciative than I used to be of other amateurs who love music and put themselves out there also in all their imperfection. And interestingly, I learn from that also. By hearing someone play less than perfectly, I better see that in myself and have a basis for becoming more self-aware and improving. Paradoxically, it is less useful to see someone perform at professional perfection, because that&apos;s too far away from where I am. I consider this true whatever the field: music, chess, computer programming. Just being around perfection does not help one&apos;s own practice and appreciation. It helps also to be around those of a somewhat higher level. That makes it easier to think, &quot;I could be up at that level also, with work&quot;, which is much easier to think than, &quot;I could be Einstein or Beethoven&quot;.&lt;/p&gt;
&lt;h2&gt;You too can participate!&lt;/h2&gt;
&lt;p&gt;Especially today, when some people are fearful and avoid doing anything that they don&apos;t think they will be immediately expert at, I think there is a powerful message to spread. If you love music, please consider joining us amateurs who go around playing it and sharing it and helping each other improve! You don&apos;t have to be perfect to enjoy performing. You can sing, or pick up that instrument you haven&apos;t touched since childhood, and start up again! The media would have us believe that we are unworthy and that the best we can do is choose not to be an active music maker and instead just buy and consume recordings from the pros. There is certainly nothing wrong with appreciating the pros and supporting their beautiful performances, but we too can dance and sing, with enthusiasm and without shame!&lt;/p&gt;
&lt;h2&gt;Personal connections&lt;/h2&gt;
&lt;p&gt;The recorder gang knows Laura Lockard from her involvement with a music workshop held in the summer (which I may attend next summer). They also seemed to know the other solo flutist, Karen Parsons. Also, Abby and I have our own connection to Karen Parsons: it&apos;s her farm that we sometimes get &lt;a href=&quot;/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs&quot;&gt;eggs&lt;/a&gt; from! Very small world, this Pittsburgh or western PA region.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;If you love the Brandenburg 4, check out this amazing melodica rendition of the last movement by James Howard Young, all by himself on multiple tracks:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;_YE3akDmw9Q&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning another instrument: the tin whistle</title><link>https://franklinchen.com/blog/2011/12/11/learning-another-instrument-the-tin-whistle/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/11/learning-another-instrument-the-tin-whistle/</guid><pubDate>Sun, 11 Dec 2011 21:33:00 GMT</pubDate><content:encoded>&lt;p&gt;So on this blog I&apos;ve already written about &lt;a href=&quot;/categories/recorder/&quot;&gt;starting to play recorder&lt;/a&gt; earlier this year, then taking up &lt;a href=&quot;/categories/flute/&quot;&gt;flute again&lt;/a&gt;, and even just barely getting started with &lt;a href=&quot;/categories/baroque-flute/&quot;&gt;Baroque flute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yesterday I started playing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Tin_whistle&quot;&gt;tin whistle&lt;/a&gt; for the first time ever!&lt;/p&gt;
&lt;p&gt;This basic cheap &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.feadog.ie/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.feadog.ie/&quot;&amp;gt;Feadóg&amp;lt;/span&amp;gt; tin whistle is the one I am currently using (Abby picked it up at some point years ago while in Ireland, and I dug it out of a box in the basement yesterday).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/feadog-tin-whistle.jpg&quot; alt=&quot;Feadóg tin whistle&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Why on earth am I playing this thing, which looks like a toy?&lt;/p&gt;
&lt;h2&gt;Upcoming performance at the Holiday Ball&lt;/h2&gt;
&lt;p&gt;I&apos;ve mentioned in an earlier blog post that I am going to be &lt;a href=&quot;/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/&quot;&gt;performing music&lt;/a&gt; in the &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt; annual Holiday Ball (coming up Friday). I have been &lt;a href=&quot;/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/&quot;&gt;practicing hard&lt;/a&gt;, trying to get up to speed on playing the music on either recorder or flute.&lt;/p&gt;
&lt;h2&gt;Practical considerations&lt;/h2&gt;
&lt;p&gt;I had early on decided that I wanted to try to play the flute instead of the recorder in order to get a bigger sound than I would with a recorder (since there will be around thirty musicians total playing, including a whole lot of loud fiddles, accordions, brass). I also wanted to use this goal as a nudge to get better at flute generally.&lt;/p&gt;
&lt;p&gt;But as a beginner, frankly, at flute (I played only aimlessly in the past as a pre-teen), I&apos;ve been finding it quite difficult to play all these Irish &lt;a href=&quot;https://en.wikipedia.org/wiki/Jig&quot;&gt;jigs&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Reel_(dance)&quot;&gt;reels&lt;/a&gt; at full speed. OK, after one week of practice I can say that I find it &lt;em&gt;impossible&lt;/em&gt; at this point to play these at full speed on flute. Part of the reason is that the music is almost all in keys with sharps, and I find it much easier to play music on the flute with flats (which is all I did as a child).&lt;/p&gt;
&lt;p&gt;I use the &lt;a href=&quot;/blog/2011/09/29/a-musicians-best-friend/&quot;&gt;metronome method&lt;/a&gt; of gradually improving my speed while working on getting things right at a slower speed, but even after a week, for example, I progressed on the Chorus Jig (check out the video of sample &lt;a href=&quot;https://www.youtube.com/watch?v=69BzrCkEvdU&quot;&gt;fiddle rendition&lt;/a&gt;) from metronome marking 78 to 80 to 90 and to 100, but I can&apos;t go any faster than yet, for just this one of around &lt;em&gt;thirty&lt;/em&gt; pieces on the program! (I&apos;m guessing from our rehearsals that we will be playing at 110 or faster.)&lt;/p&gt;
&lt;p&gt;I tried switching back to soprano recorder but it is all still pretty difficult.&lt;/p&gt;
&lt;h2&gt;Enter the tin whistle&lt;/h2&gt;
&lt;p&gt;I also became dissatisfied with the &quot;heaviness&quot; of the flute in playing this kind of music (music I have never been familiar with, actually). When I discovered that the soprano recorder sounded pretty good in one of the pieces I tried it on, I wondered what the &quot;authentic&quot; ways to play this kind of music were. I looked on YouTube, of course, and found no shortage of professional and (mostly) amateur performances of jigs and reels on recorders, Irish flutes, and tin whistles.&lt;/p&gt;
&lt;p&gt;The tin whistle is an authentic instrument for this Irish dance music!&lt;/p&gt;
&lt;p&gt;At the first rehearsal, Jim had suggested I play tin whistle, and I had thought he was joking, but Abby said she had one, and I vaguely remembered her showing it to me once. So yesterday I dug up the tin whistle, and Abby even found a two-volume instructional method for it of Irish tunes. I didn&apos;t use the method, since I already have Irish tunes to play, but I spent an hour learning the fingering (which turns out to be pretty similar to the Baroque flute&apos;s, both based on D major) and watching and trying to follow along with some &lt;a href=&quot;https://www.whistletutor.com/&quot;&gt;good videos online&lt;/a&gt; I found through a Web search.&lt;/p&gt;
&lt;p&gt;Of course, what I really wanted to learn was the authentic style, involving various forms of embellishment and articulation. I learned about &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.whistletutor.com/lessons/intermediate&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.whistletutor.com/lessons/intermediate&quot;&amp;gt;taps, cuts, rolls, slides, etc.&amp;lt;/span&amp;gt; and started trying to experiment with them.&lt;/p&gt;
&lt;p&gt;I had a lot of fun spending an hour on that yesterday, but one single hour on a new instrument and new musical style isn&apos;t enough. If I played a tune slowly, I could add some appropriate embellishments, but I had a hard time playing anything fast at all. I know I could be much better after two weeks, but I don&apos;t have two weeks. I have till Friday. I will see what I can do in four days of practice on the tin whistle!&lt;/p&gt;
&lt;h2&gt;Today&apos;s final rehearsal&lt;/h2&gt;
&lt;p&gt;This afternoon, Abby and I went to the final rehearsal for the Holiday Ball. I brought my various instruments.&lt;/p&gt;
&lt;p&gt;I had a tough time because there was music I hadn&apos;t even seen yet, much less sight read, that will be on the program. This music goes at breakneck speed, and I felt pretty helpless. I figure I will sit out of what I can&apos;t play, or just contribute with some notes to provide support to the chords. Tomorrow I will map out a plan, to figure out what I can play, on what instrument, and what to sit out of.&lt;/p&gt;
&lt;h2&gt;Dancing at the Holiday Ball&lt;/h2&gt;
&lt;p&gt;Since so many musicians are expected to gather to play on Friday, and seating space is limited, we were asked whether any of us were interested in only playing for the first or second half of the program. Abby and I volunteered to play just the first half. So I&apos;ll have less music to try to go over before Friday.&lt;/p&gt;
&lt;p&gt;Abby is interested in dancing with me during the second half. I&apos;ve never done contra dancing in my life. I suppose I should be a good sport and give it a try.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-10-07)&lt;/h3&gt;
&lt;p&gt;It turned out that at the holiday ball, &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;I ended up deciding not to dance at all, but just played music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But 10 months later, Abby and I did do a full contra dance workshop for my first time! &lt;a href=&quot;/blog/2012/10/07/my-first-contra-dance-workshop-unexpected-fun/&quot;&gt;And it was a lot of fun&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;I am amused and grateful that by accident I have come to yet another musical instrument of interest, the tin whistle. I will try to get better at it this week for the Holiday Ball, but I have to confess that I don&apos;t know what I&apos;ll do with it outside of that context. I don&apos;t exactly go around playing Irish dance music. As far as my musical goals are concerned: I&apos;d like to return to my long-term project of improving a lot on the modern flute in the coming months, and continuing my recorder improvement as well. I will put Baroque flute on hold for a while, till maybe spring.&lt;/p&gt;
&lt;p&gt;There are other instruments also, but time is so limited. Some time ago, I only barely got started on &lt;a href=&quot;/categories/accordion/&quot;&gt;accordion&lt;/a&gt; and have no idea when I&apos;ll return to that. Also I started up on piano again, but have put that aside again. I have a ukulele that I have barely started on, but Abby and I seem to be meeting people who are getting into it lately, so at least I know that if I wanted to take it up, there would be a local community to tap into.&lt;/p&gt;
&lt;p&gt;I figure that to get good eventually and rapidly at any instrument, I need to spend at least half an hour a day on average of practice, and I cannot really spend more than an hour a day total on music right now, so that means working on no more than two instruments at a time.&lt;/p&gt;
</content:encoded></item><item><title>Why everyone should learn computer science</title><link>https://franklinchen.com/blog/2011/12/09/why-everyone-should-learn-computer-science/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/09/why-everyone-should-learn-computer-science/</guid><pubDate>Fri, 09 Dec 2011 22:20:00 GMT</pubDate><content:encoded>&lt;p&gt;On Sunday I wrote an introductory blog post for &lt;a href=&quot;https://www.csedweek.org/&quot;&gt;Computer Science Education
Week (CSEDWeek)&lt;/a&gt; in which &lt;a href=&quot;/blog/2011/12/04/why-i-am-writing-this-week-for-csedweek/&quot;&gt;I posed some questions&lt;/a&gt; to follow up on.&lt;/p&gt;
&lt;p&gt;Today I&apos;m going to begin exploring my central thesis that has been brewing in my mind in the past couple of years, which is that &lt;strong&gt;everyone should learn computer science&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I mean &lt;strong&gt;everyone&lt;/strong&gt;. And I mean &lt;strong&gt;computer science&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;How can I dare much such a strong claim?&lt;/p&gt;
&lt;h2&gt;What I am &lt;em&gt;not&lt;/em&gt; saying&lt;/h2&gt;
&lt;p&gt;First, let me get out of the way what I am &lt;em&gt;not&lt;/em&gt; stating.&lt;/p&gt;
&lt;p&gt;I am not stating that the United States should encourage more college students to enter computer science &quot;because&quot; we have high-tech jobs we want to fill with Americans.&lt;/p&gt;
&lt;p&gt;I am not stating that computing careers are high-paying and desirable and we should be recruiting K-12 students into them.&lt;/p&gt;
&lt;p&gt;I am not stating that K-12 schools should be filled with computers and that all teachers should start using &quot;educational&quot; software in their classrooms.&lt;/p&gt;
&lt;p&gt;I am not stating that babies and toddlers need to get a head start in life with iPads and learning to type on computer keyboards.&lt;/p&gt;
&lt;p&gt;I am not stating that everyone should learn how to use Microsoft Office in school.&lt;/p&gt;
&lt;p&gt;I am not stating that people should be &quot;computer literate&quot; in the sense of knowing what a USB port is and how many bytes there are in a terabyte and how to maximize a window.&lt;/p&gt;
&lt;h2&gt;What I am saying&lt;/h2&gt;
&lt;p&gt;By &quot;everyone&quot;, I mean everyone, not just college-bound students or those who are babies and toddlers now.&lt;/p&gt;
&lt;p&gt;By &quot;learn computer science&quot;, I mean learn enough about computation to be able to write and run simple programs to do a desired task, to have an idea of what more complicated programs do, to be informed about what is fundamentally going on when using a web browser, sending email, posting information on Facebook, doing a Google search, being infected with a virus, etc.&lt;/p&gt;
&lt;h2&gt;Why I am saying it&lt;/h2&gt;
&lt;p&gt;My claim: we are living in a time of human societal change unparalleled since Gutenberg invented the printing press in the 15th century and people began to be able to write, read, and share information as individuals and as institutions.&lt;/p&gt;
&lt;p&gt;A corollary: within around two decades, anyone who does not know the fundamentals of computer science will lack important understanding about the world, how it operates, and how they can take control of their lives (as opposed to cede all control to institutions such as governments and corporations).&lt;/p&gt;
&lt;p&gt;The best analogy I can come up with is this: if you live in a developed nation such as the United States today, and you do not know how to read or write, you are missing a huge amount of information and knowledge that is spread around, and furthermore, you are lacking in personal autonomy and power. Being illiterate, you are very dependent on others to get through life. Similarly, if you do not know basic arithmetic, you are very dependent on others.&lt;/p&gt;
&lt;p&gt;A corollary: computer science education should soon be considered a &lt;em&gt;basic requirement&lt;/em&gt;, in the same sense that &lt;em&gt;reading, writing, arithmetic&lt;/em&gt; are. It is a non-starter to treat computer science education as some kind of optional subject, one meant for only a few select students. Computer science is not like physics or English literature. People do not need to know about quantum mechanics or Shakespeare in order to have a decent understanding of everyday life, but computation is everywhere now.&lt;/p&gt;
&lt;h2&gt;How to bring computer science education to everyone?&lt;/h2&gt;
&lt;p&gt;I don&apos;t have the answer yet to the question of how to bring computer science education to everyone. But I think the first step is to actually agree that this goal is important. The second step is to agree on what it is that people really need to know. The third step is to determine the best ways of teaching that.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Humanity is at a crossroads. The ubiquity of computing technology points towards two possible futures: one is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Brave_New_World&quot;&gt;brave new world&lt;/a&gt; in which technology is controlled by an elite and the masses are distracted and docile consumers, and the other is a liberated world in which everyone is potentially a creator, a programmer, a critical thinker. Which world do you want to live in?&lt;/p&gt;
</content:encoded></item><item><title>Revisiting Knuth and McIlroy&apos;s word count programs</title><link>https://franklinchen.com/blog/2011/12/08/revisiting-knuth-and-mcilroys-word-count-programs/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/08/revisiting-knuth-and-mcilroys-word-count-programs/</guid><pubDate>Thu, 08 Dec 2011 21:46:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I came across a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.leancrew.com/all-this/2011/12/more-shell-less-egg/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.leancrew.com/all-this/2011/12/more-shell-less-egg/&quot;&amp;gt;blog post&amp;lt;/span&amp;gt; revisiting &lt;a href=&quot;https://en.wikipedia.org/wiki/Jon_Bentley&quot;&gt;Jon Bentley&lt;/a&gt;&apos;s challenge in 1986 to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www-cs-staff.stanford.edu/~uno/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www-cs-staff.stanford.edu/~uno/&quot;&amp;gt;Donald Knuth&amp;lt;/span&amp;gt; to write a &lt;a href=&quot;https://en.wikipedia.org/wiki/Literate_programming&quot;&gt;literate program&lt;/a&gt; to solve a sample task and have &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.dartmouth.edu/~doug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.dartmouth.edu/~doug/&quot;&amp;gt;Doug McIlroy&amp;lt;/span&amp;gt; critique it.&lt;/p&gt;
&lt;p&gt;The task:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Read a file of text, determine the n most frequently used words, and print out a sorted list of those words along with their frequencies.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;Knuth came up with a typically clever, lengthy, low-level implementation. McIlroy then somewhat perversely wrote a six-line shell script that did the job, basically changing the subject away from literate programming and toward a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm&quot;&amp;gt;critique of Knuth&apos;s doing something low-level and complicated when unnecessary&amp;lt;/span&amp;gt;. The article publishing both Knuth&apos;s and McIlroy&apos;s solutions is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://dl.acm.org/citation.cfm?id=315654&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://dl.acm.org/citation.cfm?id=315654&quot;&amp;gt;available here&amp;lt;/span&amp;gt;. A followup article with David Hanson&apos;s implementation in C is &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cs.upc.edu/~eipec/pdf/p583-van_wyk.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cs.upc.edu/~eipec/pdf/p583-van_wyk.pdf&quot;&amp;gt;here&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;I decided to bring the discussion here a quarter of a century (25 years!) to the present. How would we solve the problem now?&lt;/p&gt;
&lt;h2&gt;(Update of 2013-06-29)&lt;/h2&gt;
&lt;p&gt;I have changed my mind about many things I said here, and also have more clarifications and new arguments to make, which I will eventually post on my new programming blog, &lt;a href=&quot;https://ConscientiousProgrammer.com/&quot;&gt;The Conscientious Programmer&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Salient points of McIlroy&apos;s solution&lt;/h2&gt;
&lt;p&gt;First, let&apos;s look at McIlroy&apos;s solution, which despite the passing of time is still a beautifully elegant illustration of why &lt;a href=&quot;/blog/2011/10/13/why-dennis-ritchie-is-important/&quot;&gt;Unix is timeless&lt;/a&gt;. (By the way, &lt;a href=&quot;https://www.informit.com/articles/article.aspx?p=1193856&quot;&gt;Knuth is a C and Linux user to this day&lt;/a&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tr -cs A-Za-z &apos;\n&apos; |
tr A-Z a-z |
sort |
uniq -c |
sort -rn |
sed ${1}q
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The code is self-explanatory if you are familiar with basic Unix command-line tools. The pipeline just transforms data starting from standard input until the desired result is computed.&lt;/p&gt;
&lt;p&gt;What is beautiful about the code is that it decomposes the solution to intuitively and does not require any mutable state. McIlroy&apos;s program is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Purely_functional&quot;&gt;purely functional&lt;/a&gt; program.&lt;/p&gt;
&lt;h2&gt;Using a general-purpose programming language instead&lt;/h2&gt;
&lt;p&gt;I thought to myself, how would I write the program today? Especially if I thought I would need to modify it, add new features? The shell script does the job for the problem as stated, but would clearly be hard to extend. Indeed, historically, &quot;scripting languages&quot; such as &lt;a href=&quot;https://en.wikipedia.org/wiki/AWK&quot;&gt;Awk&lt;/a&gt; were invented in order to do more than simple shell scripts were suitable for, and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.perl.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.perl.org/&quot;&amp;gt;Perl&amp;lt;/span&amp;gt; was Larry Wall&apos;s response to Awk, to create a truly general-purpose language.&lt;/p&gt;
&lt;p&gt;Nowadays, in 2011, languages and libraries are at a sufficiently high level that a program almost as concise as McIlroy&apos;s could be written in Perl, Ruby, Python, or even the latest versions of Java, C#, etc. I&apos;ll leave that as an exercise for you (feel free to post your solutions as comments below).&lt;/p&gt;
&lt;h3&gt;Haskell&lt;/h3&gt;
&lt;p&gt;I present a simple program in &lt;a href=&quot;https://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; that I feel is closest to McIlroy&apos;s both in spirit and in letter.&lt;/p&gt;
&lt;p&gt;Here is my Haskell program, in two variants. The first is a standard source code file, while the second uses Haskell&apos;s built-in support for its own notion of &quot;literate programming&quot;.&lt;/p&gt;
&lt;p&gt;&amp;lt;script src=&quot;https://gist.github.com/FranklinChen/1448622.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;I used &lt;a href=&quot;https://www.haskell.org/ghc/&quot;&gt;GHC&lt;/a&gt; to compile and run the program.  Sample output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ghc -O6 --make WordCount
$ ./WordCount 10 &amp;lt; WordCount.lhs
35 the
16 a
11 list
10 of
9 text
9 for
8 n
8 map
8 count
7 string
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apart from missing leading spaces, this is the same output as from McIlroy&apos;s shell script.&lt;/p&gt;
&lt;p&gt;The literate program above explains each step of the Haskell &quot;pipeline&quot; I constructed.&lt;/p&gt;
&lt;h2&gt;Why I don&apos;t do literate programming&lt;/h2&gt;
&lt;p&gt;I don&apos;t currently use &quot;literate programming&quot; systems.&lt;/p&gt;
&lt;p&gt;I experimented with programming in C and C++ and &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt; using &lt;a href=&quot;https://www.cs.tufts.edu/~nr/noweb/&quot;&gt;noweb&lt;/a&gt; over a decade ago, but found that for myself, it was not really beneficial.&lt;/p&gt;
&lt;p&gt;There was little benefit in being able to rearrange code fragments at will. Furthermore, spreading code out interspersed with a lot of prose made it harder for me to actually &lt;a href=&quot;https://en.wikipedia.org/wiki/Chunking_(psychology)&quot;&gt;chunk&lt;/a&gt; meaning out of a spatial portion of text in my editor window.&lt;/p&gt;
&lt;p&gt;Also, modern languages and programming styles make it much easier to express things concisely and less monolithically, such that I find that using ordinary comments suffices for my needs.&lt;/p&gt;
&lt;p&gt;I find that literate programming in the Knuth style amounts to a macro system that distorts the layout of code.&lt;/p&gt;
&lt;p&gt;Finally, literate programming interacts badly with editors and IDEs that are built specifically to operate on pure source code.&lt;/p&gt;
&lt;p&gt;What do you think? Which of the variants of the same Haskell code above would you prefer to write, read, or maintain? The non-literate one or the literate one?&lt;/p&gt;
&lt;h2&gt;An alternative to literate programming&lt;/h2&gt;
&lt;p&gt;I should note that in practice, I would write suitable comments in a non-literate program primarily before the function definition. Also, I would not use such a large pipeline of expressions either: I would break out almost every line of the pipeline into its own little function, with its own comment. That is how I would actually write a nontrivial Haskell program, writing one or two line functions and testing each of them, before trying to hook them all up into a big pipeline.&lt;/p&gt;
&lt;p&gt;I &quot;cheated&quot; in this case because McIlroy&apos;s program already existed, so I simply translated it into a Haskell equivalent without real thought and testing.&lt;/p&gt;
&lt;h2&gt;Comparison between the shell script and the Haskell program&lt;/h2&gt;
&lt;p&gt;The shell script operates on raw text and everything is just strings being parsed and reparsed by the respective Unix utility programs.&lt;/p&gt;
&lt;p&gt;The Haskell program is &lt;em&gt;statically typed&lt;/em&gt;. It is type-checked by the compiler, which generates native code. The program uses standard libraries and data types, such as lists and hash maps.&lt;/p&gt;
&lt;p&gt;Also, the Haskell program could be refined, extended, optimized in various ways. The most important optimizations I can think of off the top of my head:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using a better representation of strings than the default built-in &quot;string as list of characters&quot;. Easily accessible advice can be found on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://stackoverflow.com/questions/576213/efficient-string-implementation-in-haskell&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://stackoverflow.com/questions/576213/efficient-string-implementation-in-haskell&quot;&amp;gt;Stack Overflow&amp;lt;/span&amp;gt; and browsing through Haskell library documentation, such as for the &lt;a href=&quot;https://hackage.haskell.org/cgi-bin/hackage-scripts/package/text&quot;&gt;text&lt;/a&gt; package.&lt;/li&gt;
&lt;li&gt;Loop fusion, &lt;a href=&quot;https://en.wikipedia.org/wiki/Deforestation_(computer_science)&quot;&gt;deforestation&lt;/a&gt; can be applied to deal with the &lt;em&gt;apparent&lt;/em&gt; allocation of lots of new lists in the pipeline. One of the selling points of using a language like Haskell is the opportunity for the compiler to perform radical optimizations that are impossible for languages that have side effects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&apos;t write many &lt;code&gt;bash&lt;/code&gt; scripts these days. General-purpose programming languages can do a decent job munging data without difficulty. The situation was different decades ago when there was C, and few standard high-level libraries for the C world.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I am skeptical of literate programming.&lt;/li&gt;
&lt;li&gt;McIlroy was ahead of his time, but that time has passed; we should take his contributions as inspiration to move further forward already, using advanced general-purpose programming languages.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Is brown rice healthy or not?</title><link>https://franklinchen.com/blog/2011/12/07/is-brown-rice-healthy-or-not/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/07/is-brown-rice-healthy-or-not/</guid><pubDate>Wed, 07 Dec 2011 23:48:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been thinking for a year or two now about my relationship with rice, in conjunction with reading about &lt;a href=&quot;/blog/2011/10/23/paleo-diet-experimentation/&quot;&gt;paleo diets&lt;/a&gt;. I&apos;ve been eating rice, white or brown, for most of my life, and am now considering make some further changes to my diet (beyond &lt;a href=&quot;/blog/2011/11/03/one-of-these-breakfasts-is-not-paleo/&quot;&gt;giving up oatmeal&lt;/a&gt; for an entire month now).&lt;/p&gt;
&lt;p&gt;So what now with rice?&lt;/p&gt;
&lt;h2&gt;White rice&lt;/h2&gt;
&lt;p&gt;When I was a kid, I ate white rice often, because it was something my mother provided for most meals. Actually, it was present for me at almost all meals, until I decided I wanted to eat, all the time, the sweet breakfast cereals I saw on TV.&lt;/p&gt;
&lt;p&gt;When I went off to college, I drastically changed my diet, being dependent on cafeteria food and also being tempted by opportunities to eat pizza and chicken wings and the like outside of the provided meals. I ate much less rice then.&lt;/p&gt;
&lt;p&gt;While in grad school at &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cmu.edu/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cmu.edu/&quot;&amp;gt;CMU&amp;lt;/span&amp;gt;, I got back into eating white rice, as a result of developing the habit of eating Indian food for lunch: I would buy lunch from either the &lt;a href=&quot;https://web.archive.org/web/20250623151947/https://www.tasteofindiapittsburgh.com/&quot;&gt;Taste of India&lt;/a&gt; present on campus or from &lt;a href=&quot;https://web.archive.org/web/20260116062907/http://srees.com/&quot;&gt;Sree&apos;s&lt;/a&gt; food truck.&lt;/p&gt;
&lt;h2&gt;Brown rice for five years&lt;/h2&gt;
&lt;p&gt;For many years, I kept hearing that brown rice was healthier than white rice, and this advice was based on the idea that white rice has lost many of its nutrients and fiber during the refinement process. But I never ate brown rice because every time I tried making it, it came out unpalatable. Eventually I learned that I was making it wrong.&lt;/p&gt;
&lt;p&gt;In 2006, after hearing too often from a friend that white rice was &quot;white death&quot;, I took the plunge and bought a fancy Zojirushi Neuro Fuzzy rice cooker, to be able to make good brown rice as well as start eating steel cut oatmeal (which my friend also advocated eating). So it&apos;s been over five years since I have been eating a lot of oatmeal (recently stopped) and brown rice (still going). And I have to confess that if one is going to eat steel cut oatmeal or brown rice, the Neuro Fuzzy cooker is the way to go, with its timer functions that make it trivial to generate really good results!&lt;/p&gt;
&lt;h2&gt;Paleo&lt;/h2&gt;
&lt;p&gt;Enter the paleo movement.&lt;/p&gt;
&lt;p&gt;I started reading that maybe brown rice isn&apos;t so healthy after all.  Sources such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.marksdailyapple.com/is-rice-unhealthy/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.marksdailyapple.com/is-rice-unhealthy/&quot;&amp;gt;Mark Sisson&amp;lt;/span&amp;gt; and the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://perfecthealthdiet.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://perfecthealthdiet.com/&quot;&amp;gt;Jaminets&amp;lt;/span&amp;gt; argue that brown rice is harmful because of phytic acid that binds to nutrients and makes them inaccessible to us. I don&apos;t know how true this is. But if it is true, it is worrying.&lt;/p&gt;
&lt;p&gt;Sisson suggests soaking and fermenting brown rice. Having sort of tried this, I was disgusted by the results. Stephan Guyenet suggested a whole complicated-sounding protocol for &lt;a href=&quot;https://web.archive.org/web/20260225021219/http://wholehealthsource.blogspot.com/2009/04/new-way-to-soak-brown-rice.html&quot;&gt;soaking brown rice&lt;/a&gt;. Looking at the comments gave me a headache.&lt;/p&gt;
&lt;h2&gt;What now?&lt;/h2&gt;
&lt;p&gt;So what am I to do?&lt;/p&gt;
&lt;p&gt;I eat brown rice in part to get fiber and in part to get (carb) calories. I have experimented with eating less brown rice lately, but am now considering doing an experiment in which I actually give it up for two weeks or so, to see how I feel. Giving up oatmeal has largely been a good thing for me; I rather enjoy eating a lot of veggies and more protein for breakfast. But getting rid of brown rice is much more radical.  Should I really go back to white rice?  I don&apos;t know right now.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-24)&lt;/h2&gt;
&lt;p&gt;On Food Day in 2012, I wrote more about some &lt;a href=&quot;/blog/2012/10/24/reflections-on-food-day/&quot;&gt;dilemmas with rice&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Global Day of CodeRetreat: Pittsburgh</title><link>https://franklinchen.com/blog/2011/12/06/global-day-of-coderetreat-pittsburgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/06/global-day-of-coderetreat-pittsburgh/</guid><pubDate>Tue, 06 Dec 2011 21:24:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned &lt;a href=&quot;/blog/2011/12/04/why-i-am-writing-this-week-for-csedweek/&quot;&gt;on Sunday in introducing CSEdWeek&lt;/a&gt;, Saturday was the ambitious &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.coderetreat.com/global-day-of-coderetreat&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.coderetreat.com/global-day-of-coderetreat&quot;&amp;gt;Global Day of CodeRetreat&amp;lt;/span&amp;gt;, whose local &lt;a href=&quot;https://globalcoderetreat2011pittsburgh.eventbrite.com/&quot;&gt;Pittsburgh edition&lt;/a&gt; I participated in, with around 50 of us total. The global event was held simultaneously in 90 cities and had around 2000 attendees. I had a great time, although I was totally exhausted by the time it was over (it lasted from before 9 AM to after 6 PM; what a way to spend a Saturday!).&lt;/p&gt;
&lt;p&gt;What is CodeRetreat and what can you get out of it as a software developer?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/global-day-of-coderetreat/code-retreat-start.jpg&quot; alt=&quot;Pittsburgh CodeRetreat starting&quot; /&gt;
&lt;img src=&quot;../../assets/images/global-day-of-coderetreat/code-retreat-start-2.jpg&quot; alt=&quot;Pittsburgh CodeRetreat starting&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The CodeRetreat concept&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://coderetreat.org/&quot;&gt;CodeRetreat&lt;/a&gt; is the brainchild of &lt;a href=&quot;https://web.archive.org/web/20130825081313/http://www.coreyhaines.com/&quot;&gt;Corey Haines&lt;/a&gt;. The motto is &quot;Programmers honing their craft together.&quot; The basic idea is the programmers gather for an all-day event in which they pair up with different partners for six sessions to work again and again on the same problem, starting from scratch each time. You can read about more &lt;a href=&quot;https://coderetreat.org/about&quot;&gt;formal details&lt;/a&gt;, but I didn&apos;t before I went to the event, and in this post I will walk through my experience as a first-time participant.&lt;/p&gt;
&lt;p&gt;If CodeRetreat already sounds weird, it&apos;s because it is. I had heard about it earlier from a couple of people I&apos;d met at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt; sessions who had gone to such events in the past. To be completely honest, the first time I heard about it, it sounded weird. And the second time, after hearing about the session held in Pittsburgh in May when I was out of town, it sounded weird too.  But I&apos;m the kind of person who is willing to try weird things if I don&apos;t believe they can be actively harmful and have a chance of being very beneficial.&lt;/p&gt;
&lt;p&gt;I&apos;m going to state up front that if you are a programmer and haven&apos;t been to a CodeRetreat, and one is happening in your area, you should try it out.&lt;/p&gt;
&lt;h2&gt;Morning introduction&lt;/h2&gt;
&lt;p&gt;I arrived before 8:30 AM, in time for taking a seat at a table and doing some socializing over coffee and donuts/bagels.  &lt;strong&gt;Socializing is one of the big reasons to go to an event like this; I had never been in a room of fifty local developers from all kinds of domain and programming language backgrounds.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We were told that our task was to implement &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway&apos;s_Game_of_Life&quot;&gt;Conway&apos;s game of life&lt;/a&gt;. Actually, we all already knew that, because we had been informed before the event. To keep myself fresh for the event, I deliberately did no thinking about the problem, working on an algorithm, or coding it. I do not know how many other people took this attitude, and am curious how it affects the nature of participation (I will discuss some speculations later in this post).&lt;/p&gt;
&lt;h2&gt;First session&lt;/h2&gt;
&lt;p&gt;I don&apos;t remember what specific instructions we were given for our first session, other than to pair up. I may have been too distracted by the socializing at the time. &lt;strong&gt;It would have been useful to have received handouts to guide us.&lt;/strong&gt; I do know that at some point in the morning, before the first or second session, we were directed to look at the whiteboard that had the &quot;four rules of simple design&quot; written on it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/global-day-of-coderetreat/four-rules-of-simple-design&quot; alt=&quot;Four rules of simple design&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Four rules of simple design&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Passes all tests&lt;/li&gt;
&lt;li&gt;Clear, expressive, consistent&lt;/li&gt;
&lt;li&gt;Duplicates no behavior, config&lt;/li&gt;
&lt;li&gt;Minimal methods, classes, modules&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;My first pairing experience&lt;/h3&gt;
&lt;p&gt;I&apos;d heard about &lt;a href=&quot;https://en.wikipedia.org/wiki/Pair_programming&quot;&gt;pair programming&lt;/a&gt; for a decade, in the context of &lt;a href=&quot;https://en.wikipedia.org/wiki/Extreme_programming&quot;&gt;Extreme Programming (XP)&lt;/a&gt;, but had never practiced it. To be honest, as late as a year ago I found the concept very strange and distasteful. Interestingly, by this year, as a result of participating in a lot of &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;local programmer group meetings&lt;/a&gt;, I became more sociable generally and more amenable to real-time sharing of ideas.  &lt;strong&gt;Part of the reason I decided to go to CodeRetreat was to experience pairing.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For the first session, I paired with Adam, since I knew him (in fact, I had gotten him to register at the last minute for the event) and we could work together in Java.&lt;/p&gt;
&lt;p&gt;We gathered around his laptop, and spent quite a bit of time (of the allotted 45 minutes per session) sketching out a design for implementing Conway&apos;s game of life. First we had to decide what variant of the game to implement: fixed grid with boundary or infinite? We decided on infinite. Then we had to figure out an appropriate algorithm and data representation. We came up with that. We ended up writing scaffolding for a complete application, for initializing the grid, displaying it, computing the next step, etc. Unfortunately, time expired when we were just about to implement the rules for the game.&lt;/p&gt;
&lt;p&gt;Then we were told to &lt;em&gt;delete all our code&lt;/em&gt;. That was kind of shocking. We weren&apos;t allowed to just archive it somewhere. We had to delete it right there and then:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/global-day-of-coderetreat/code-deleted&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Observations&lt;/h3&gt;
&lt;p&gt;I was disappointed that we didn&apos;t have something to show after 45 minutes. I was also shocked about having to delete our work. I felt that the infrastructure we had set up was valuable. I was confused by how what we were doing was contrary with how I would operate in real life on a real programming project. 45 minutes was not enough time to do the kinds of things I really wanted to do.&lt;/p&gt;
&lt;p&gt;Meanwhile, at some point I realized that we had violated the &quot;rules of simple design&quot;. We had a proliferation of interfaces and in fact we kept changing them in order to be able to compile while nearing something that could actually run.&lt;/p&gt;
&lt;h2&gt;Second session&lt;/h2&gt;
&lt;p&gt;I think that for the second session we were instructed to use &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;test-driven development&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/global-day-of-coderetreat/tdd-cycle.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I looked for another Java programmer, and paired with Heath, whom I had met earlier in various events but never worked with. We had some ideas based on what we each had done in the first session and got going. This time, we used my laptop, and the first thing I did was start writing tests with &lt;a href=&quot;https://www.junit.org/&quot;&gt;JUnit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We made good progress, but I felt hampered by Java&apos;s verbose syntax, and also I confess to copying and pasting test setup code just because time was short. I ended up feeling conflicted because the time constraints of this event were generating powerful perverse incentives. I think a lot of us kind of liked the idea of getting something working and done, and cut corners throughout the day. This is something that should be addressed by the CodeRetreat organizers and facilitators. After each session, many of us ended up saying, &quot;We almost finished!&quot; or something like that. I tried to resist having that mentality, but it was difficult given the time limit.&lt;/p&gt;
&lt;h2&gt;Third session&lt;/h2&gt;
&lt;p&gt;The final morning session had me pairing with a Python programmer, Joe.&lt;/p&gt;
&lt;p&gt;We were supposed to do &quot;ping pong pairing&quot;, which I hadn&apos;t heard of before. The idea was to take turns being the one writing tests and being the one writing code to pass the tests.&lt;/p&gt;
&lt;p&gt;Joe and I wasted some time getting set up with Dropbox so that we could use both our laptops in order to get concurrency benefits.&lt;/p&gt;
&lt;p&gt;I started out writing tests using &lt;a href=&quot;https://docs.python.org/library/unittest.html&quot;&gt;unittest&lt;/a&gt; and Joe wrote the game implementation. It turned out we never actually ping-ponged, so we violated the intent of the session. We both got into the idea of being able to get something done. In particular, we agreed on a purely functional algorithm, which we knew would be expressible very compactly in Python.&lt;/p&gt;
&lt;p&gt;We ran into concurrency problems because we were perpetually editing source files such that I kept seeing an out of date version of his code and vice versa. &quot;Concurrent&quot; development using something like Git is one thing, but having one&apos;s view of a project change underneath one&apos;s feet is another. I don&apos;t think the Dropbox idea worked so well, but a number of us that day independently came up with it and spread it around and used it. I now think that&apos;s not only cheating, but it even further distances the situation from that of real life software development!&lt;/p&gt;
&lt;p&gt;Also, in the end, Joe had written a lot more code than we had tested, and I had written a lot more tests that were not yet passing. So I think the experiment didn&apos;t work out well. We were not keeping to the TDD cycle we were supposed to keep to, in which a test is written, code is written to pass it, then another test written making the code fail, etc.&lt;/p&gt;
&lt;h2&gt;Lunch&lt;/h2&gt;
&lt;p&gt;For various reasons, we kept falling behind schedule in the morning, such that it was later than planned when we finally took a lunch break. We each got a nice box lunch, and I took a short nap before resuming more socialization and discussion, which was finally interrupted when we had to begin the afternoon sessions.&lt;/p&gt;
&lt;h2&gt;Fourth session&lt;/h2&gt;
&lt;p&gt;The fourth session was supposed to be &quot;mute ping pong pairing with loophole&quot;, in which we were not supposed to communicate except through code, and the one writing code to pass tests was supposed to be fiendish and write code that would pass the existing tests but would clearly not be the correct long-term code for the problem at hand.&lt;/p&gt;
&lt;p&gt;I paired with Chris, using Java, and we did the Dropbox thing. Unfortunately, we spent a large amount of time getting set up. We both had problems connecting to the WiFi for a while. Furthermore, we finally realized that two machines both running IntelliJ IDEA on the same project was a bad idea, because of clobbering of project state. I switched to Emacs, but then we had to rig up a script for me to be able to compile and run stuff he was generating in IntelliJ IDEA. There was just too much setup time wasted.&lt;/p&gt;
&lt;p&gt;Chris took up the test-writing duties and I proceeded to write code. This was my first time during the day to write code to pass someone else&apos;s tests, so the experience was quite interesting. Thanks to static typing, the tests Chris wrote forced me to write various classes and methods. I did play the trick of writing degenerate code that passed one of his tests and forced him to write more tests.&lt;/p&gt;
&lt;p&gt;We ran out of time before we got to ping pong the roles. Oops. I did learn something from this &quot;no talking about design up front&quot; session though: tests can go a long way to drive and constrain the kinds of designs possible to solve a problem. And I was clearly not writing anything extra when focusing purely on passing the existing tests.&lt;/p&gt;
&lt;h2&gt;Fifth session&lt;/h2&gt;
&lt;p&gt;The fifth session was supposed to be &quot;open&quot; to however we wanted to go about implementing the game.&lt;/p&gt;
&lt;p&gt;I was paired with Demeng, who uses C#, which I have never used. It was not clear to me what we should do. Somehow, we ended up deciding to have me work on a Haskell implementation of a general design we discussed, so that he could watch and ask me questions and learn some Haskell in the process as I explained to him how to express something we wanted. Given that he was familiar with Python, I felt this was a feasible goal, and it was going quite well, actually. I would write a line of code and explain it to him, or he would tell me something to express, and I would write the code.&lt;/p&gt;
&lt;p&gt;Unfortunately, I was still not set up for production Haskell development, e.g., with a testing framework, so we had ad hoc tests.&lt;/p&gt;
&lt;h2&gt;Sixth session&lt;/h2&gt;
&lt;p&gt;The sixth session had each pair rotate to the right to work on someone&apos;s machine and code from the fifth session.&lt;/p&gt;
&lt;p&gt;This was quite traumatic for some of us.&lt;/p&gt;
&lt;p&gt;Demeng and I got moved to a laptop with C# going. He took charge, but I felt somewhat helpless because I had to keep asking about various C# constructs, and also, the original programmers didn&apos;t use a testing framework that made it easy to start looking at the existing tests and write more. Even worse, it was getting late and Demeng had to leave, so I was left alone trying to figure out what was going on.&lt;/p&gt;
&lt;p&gt;The pair who ended up with my Haskell code was in even worse shape. They didn&apos;t know any Haskell, and were fairly confused and kept on asking me for help. They didn&apos;t manage to write any code that compiled. I felt bad about having used Haskell in the fifth session without knowing that it was going to become a new pair&apos;s legacy code!&lt;/p&gt;
&lt;h2&gt;What I got out of CodeRetreat&lt;/h2&gt;
&lt;p&gt;I&apos;m not sure I got what was &quot;intended&quot; out of CodeRetreat, if the intent was for us to rigorously follow the guidelines and rules we were given. There were too many perverse incentives and little enforcement. Also, the frictions of different languages, IDEs, and operating systems were sometimes significant.&lt;/p&gt;
&lt;p&gt;What I mostly got out of CodeRetreat was value at a meta-level. It was a time to socialize, to meet new people and even work with them. It was a time for many participants who had yet heard about TDD and various design principles to thinking about them and give them a try. It was a time to learn about other languages and development environments, even if only at a shallow level. It was a time for exploring different algorithms and data structures for the same problem.&lt;/p&gt;
&lt;p&gt;The most concrete thing I learned was that pairing can be very stimulating and useful. CodeRetreat has made me think that I can definitely imagine pairing as a regular work practice.&lt;/p&gt;
&lt;h3&gt;Education and CS Ed Week&lt;/h3&gt;
&lt;p&gt;Although I think less chaos and more guidance would improve CodeRetreat, something about the whole process of getting people together and making them share is in itself a great example of learning and teaching. I&apos;d call CodeRetreat an example of &quot;education&quot;, even though it is far removed from the conventional lecture hall. Nobody leaves CodeRetreat with a huge set of additional facts in the brain, but I&apos;m sure many of us leave having experienced a taste of many ideas, shared recommendations to appropriate books and web sites to examine and study, and notions of how to change our actual practices in the real world.&lt;/p&gt;
&lt;p&gt;What does any of this have to do with CS Ed Week? I think there is tension in the educational system between those who believe it should teach fundamental (usually meaning mathematical and abstract) foundations of computing, and those who believe that students should also be prepared for the messiness and realities of the &quot;real world&quot;. Meanwhile, a lot of the press concerning CS Ed Week focuses on very pragmatic arguments that the US badly needs more appropriately trained employees for computing jobs.&lt;/p&gt;
&lt;p&gt;I don&apos;t see how it is possible to really attract more young people into computing without at least helping them understand what a career in computing might entail. That requires some kind of exposure to what we actually do. It&apos;s not enough to just teach a middle school student some kid-friendly programming language, or to teach a vocational student Java, or to teach an undergrad the details of Fibonacci heaps. The big picture is missing.&lt;/p&gt;
&lt;p&gt;Events similar to CodeRetreat could play a role in getting a lot of people exposure to the big picture. Furthermore, even many of us who already work in computing do not see the big picture, because it is so easy to get out of date once out of school and working in some narrow niche. So &quot;continuing education&quot; is just as important as education at K-12 or in undergrad or grad school.&lt;/p&gt;
&lt;h2&gt;Concerns about CodeRetreat&lt;/h2&gt;
&lt;p&gt;It&apos;s not clear to me that Conway&apos;s game of life is such a good topic. It&apos;s not very much like typical programming tasks. In fact, my mind wandered toward thinking about clever ideas for preprocessing, compilation, parallelization, and memoization that I&apos;m not sure I would want to work on with someone for 45 minutes. I brought up this concern at lunch but was told that the task always remains the same because it serves its purpose, it works, and consistency is important.&lt;/p&gt;
&lt;p&gt;There needs to be a way to help us resist perverse incentives to finish an app.&lt;/p&gt;
&lt;p&gt;We should be better prepared to cope with different languages and development environments.&lt;/p&gt;
&lt;h2&gt;Will I attend the next CodeRetreat in Pittsburgh?&lt;/h2&gt;
&lt;p&gt;I have to confess that I do not know whether I will decide it worthwhile to go to another one. It&apos;s too early to think about that, although Jim Hurne has already set February 25 as the date for the next one! I still have to fully digest what I experienced, make use of it, and then think about how I would maximally benefit from and contribute to another CodeRetreat.&lt;/p&gt;
&lt;h2&gt;Thank you!&lt;/h2&gt;
&lt;p&gt;Thank you, Vivisimo and M*Modal, for being sponsors and hosts for the event.&lt;/p&gt;
&lt;p&gt;Thanks you, &lt;a href=&quot;https://twitter.com/jthurne&quot;&gt;Jim Hurne&lt;/a&gt;, for putting so much work into not only the Pittsburgh event, but more broadly, the global one.&lt;/p&gt;
&lt;p&gt;Thanks you, &lt;a href=&quot;https://twitter.com/coxandrew&quot;&gt;Andrew Cox&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/josephrkramer&quot;&gt;Joseph Kramer&lt;/a&gt;, for acting as facilitators all day  (Andrew has written up a detail account of his experience on Saturday as a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://andrewcox.org/post/13810557640/coderetreat-a-first-time-facilitators-perspective&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://andrewcox.org/post/13810557640/coderetreat-a-first-time-facilitators-perspective&quot;&amp;gt;facilitator&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;Thank you, Adam, Heath, Joe, Chris, Demeng, for pairing with me.&lt;/p&gt;
&lt;p&gt;And thanks to everyone else who was at CodeRetreat.&lt;/p&gt;
</content:encoded></item><item><title>Busy evening: performing at Phipps followed by rehearsal for another gig!</title><link>https://franklinchen.com/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/05/busy-evening-performing-at-phipps-followed-by-rehearsal-for-another-gig/</guid><pubDate>Mon, 05 Dec 2011 23:11:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight I left my office and walked across Flagstaff Hill to Phipps Conservatory to &lt;a href=&quot;/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/&quot;&gt;play some music&lt;/a&gt; with four other recorder players.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps/phipps-monday-evening.jpg&quot; alt=&quot;Phipps in evening from Flagstaff Hill&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;At Phipps&lt;/h2&gt;
&lt;p&gt;Sorry, no photos or videos of me playing, because I didn&apos;t want to bother or confuse any Phipps visitors on how to use my camera! I did take a photo of the rest of us playing a piece that I did not participate in:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/recorders-at-phipps/deck-the-halls.jpg&quot; alt=&quot;Recorder quartet playing Deck the Halls&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We played for about an hour and a half.  It was a slow Monday night at Phipps, with not many people around. On average there may have been up to ten people standing or sitting around somewhere in sight, in addition to people roaming around. A good number of young children seemed to come and go, sometimes making noises.
That was OK; it was nice to see them around enjoying our playing.&lt;/p&gt;
&lt;p&gt;I was happy to finally have the opportunity to play recorder for an audience, after nine months on the instrument. Since the setting was so informal, and with so few people, I did not feel very anxious, and treated the experience as similar to rehearsal, except for a desire to sound as good as I knew how.&lt;/p&gt;
&lt;h2&gt;Rehearsal for Holiday Ball&lt;/h2&gt;
&lt;p&gt;After the Phipps gig, I rushed to walk half a mile back to my car to drive over to the first rehearsal for the &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Holiday Ball&lt;/a&gt;. I arrived an hour and fifteen minutes late, with forty-five minutes left. There, I switched to flute.&lt;/p&gt;
&lt;p&gt;It was a large group of people, maybe twenty, with all kinds of instruments: accordions, violins, flutes, clarinet, ukuleles, harmonica, tambura, and others I didn&apos;t even see (since I arrived late and sat in the back and side).&lt;/p&gt;
&lt;p&gt;I had only started looking at the music a day or two ago, and sight read some of it at home with Abby. More than half the music is manageable for me now, but I hadn&apos;t realized that the jigs go at breakneck speed. I may need to sit out of those, because I cannot play all the notes on either recorder or flute at this time. In any case, at least I have a concrete challenge to work on for the rest of the week before the second (and final) rehearsal on Sunday!&lt;/p&gt;
&lt;p&gt;I did try to play recorder for some of the pieces, but I think my intuition was correct: the recorder gets drowned out in the sea of more powerful instruments. But I will bring my recorders to the next rehearsal anyway, in case some of the pieces I missed this time (because of arriving late) would work acoustically and stylistically with a soprano or alto recorder.&lt;/p&gt;
&lt;h3&gt;(Update of 2011-12-16)&lt;/h3&gt;
&lt;p&gt;I reported on playing at the &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;Holiday Ball&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m excited to have played recorder at Phipps, and I&apos;m excited about the prospect of another new musical experience: playing for dancers at the upcoming Holiday Ball. I remember many times in the past decade wondering about being on the other side of the dance floor, since I used to do a lot of dancing (ballroom, swing, tango, salsa).&lt;/p&gt;
&lt;h3&gt;(Update of 2012-05-14)&lt;/h3&gt;
&lt;p&gt;Half a year later, I did &lt;a href=&quot;/blog/2012/05/14/playing-french-music-for-first-time-and-dancing-blues-for-first-time/&quot;&gt;start playing music regularly for dancers&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-12-09)&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/12/09/playing-music-on-recorders-at-a-phipps-conservatory-candlelight-evening/&quot;&gt;A report on performing again at Phipps the following year, 2012&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Why I am writing this week for CSEdWeek</title><link>https://franklinchen.com/blog/2011/12/04/why-i-am-writing-this-week-for-csedweek/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/04/why-i-am-writing-this-week-for-csedweek/</guid><pubDate>Sun, 04 Dec 2011 20:54:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/csedweek-2011.png&quot; alt=&quot;Logo for CSEdWeek 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This week (December 4 through 10, 2011) has been designed as &lt;a href=&quot;https://www.csedweek.org/&quot;&gt;Computer Science Education Week (CSEDWeek)&lt;/a&gt; by the US House of Representatives to recognize the importance of computer science education for students at all levels.&lt;/p&gt;
&lt;p&gt;I am one of over 2000 people who have pledged online to participate in CSEdWeek. I will be blog about &lt;strong&gt;computation&lt;/strong&gt; and the &lt;strong&gt;learning&lt;/strong&gt; and &lt;strong&gt;teaching&lt;/strong&gt; of it, in every context that I have experienced it.&lt;/p&gt;
&lt;p&gt;Let me start by raising some questions about what is at stake.&lt;/p&gt;
&lt;h2&gt;Definitions&lt;/h2&gt;
&lt;p&gt;What do you think of when you even hear of &quot;Computer Science education&quot;?  (I welcome comments below.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do you imagine elementary schools equipped with iPads?&lt;/li&gt;
&lt;li&gt;Do you imagine courses about how to use applications such as Microsoft Word or Gmail?&lt;/li&gt;
&lt;li&gt;Do you imagine Advanced Placement courses spreading to every high school in the country, with high enrollments in the courses?&lt;/li&gt;
&lt;li&gt;Do you imagine community college and technical schools teaching something about programming in Visual Basic or Java?&lt;/li&gt;
&lt;li&gt;Do you imagine undergraduates learning about asymptotic mathematical analysis of parallel algorithms?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do not like the phrase &quot;computer science&quot;. Someone once said, computer science is not about &lt;strong&gt;computers&lt;/strong&gt; and is not &lt;strong&gt;science&lt;/strong&gt;. I heartily agree. The essence of what computers do is what is important, not the physical details of the what &lt;strong&gt;computes&lt;/strong&gt; or the very specific details of what applications have already been provided for use on a computer. And the principles of computation are just mathematics, which is not an empirical science.&lt;/p&gt;
&lt;p&gt;So right off the bat, I think there is a lot of opportunity for confusion when trying to determine what the scope of &quot;computer science&quot; is (versus programming, human-computer interaction, software engineering, psychology and politics of software development in the real world), what should be taught, to whom, and by whom.&lt;/p&gt;
&lt;p&gt;I especially dislike the word &quot;education&quot;. It often implies some formal degree program, tuition, certifications, and other such matters. I&apos;m interested in the &lt;strong&gt;learning&lt;/strong&gt; and &lt;strong&gt;teaching&lt;/strong&gt;, not in the &lt;strong&gt;student&lt;/strong&gt; or &lt;strong&gt;teacher&lt;/strong&gt; or &lt;strong&gt;school&lt;/strong&gt; part of the story.&lt;/p&gt;
&lt;h2&gt;Learning and teaching outside of school&lt;/h2&gt;
&lt;p&gt;Later this week I will write about how various experiences in school turned me off from computers, from computing, and offer suggestions on how to fix the problem of discouraging young people from pursuing a computing-oriented learning and career path.&lt;/p&gt;
&lt;p&gt;But today, I just want to mention a remarkable event that occurred just yesterday, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.coderetreat.com/global-day-of-coderetreat&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.coderetreat.com/global-day-of-coderetreat&quot;&amp;gt;Global Day of CodeRetreat&amp;lt;/span&amp;gt;, held simultaneously in 90 cities with around 2000 attendees. I participated in the local &lt;a href=&quot;https://globalcoderetreat2011pittsburgh.eventbrite.com/&quot;&gt;Pittsburgh edition&lt;/a&gt; of the event.  (I will write later this week in detail about my experience at the event.)&lt;/p&gt;
&lt;p&gt;The motto of the event is &quot;Programmers honing their craft together.&quot;&lt;/p&gt;
&lt;p&gt;The buzzwords used here are very far from those in academic &quot;computer science&quot;. I bring up the event because I think that one thing that is entirely missing in the discussion of &quot;computer science education&quot; is, what is really important and valuable to society, and who provides it, and where?  It is fashionable in academia to look down on anything that would speak of &quot;programmers&quot; (rather than &quot;computer scientists&quot;), &quot;honing&quot; (rather than &quot;proving&quot;), &quot;craft&quot; (rather than &quot;science&quot;), and &quot;together&quot; (conventional education pays only lip service to the importance of collaboration).&lt;/p&gt;
&lt;p&gt;I believe that something like CodeRetreat is fair game for discussion during CSEdWeek, because the enthusiastic participation in this event speaks to the passionate desire by volunteers to help people learn, and by working software developers to continue to improve themselves.&lt;/p&gt;
&lt;h2&gt;Stay tuned&lt;/h2&gt;
&lt;p&gt;Stay tuned for posts later this week on the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;problems I faced in computer science education in K-12, college&lt;/li&gt;
&lt;li&gt;CodeRetreat and what people learn there&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Exploring creativity</title><link>https://franklinchen.com/blog/2011/12/02/exploring-creativity/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/02/exploring-creativity/</guid><pubDate>Fri, 02 Dec 2011 23:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday at work, I participated in a brown bag seminar &quot;Fostering Team Creativity&quot; offered by &lt;a href=&quot;https://web.archive.org/web/20131015144011/http://www.cmu.edu:80/hr/learning/&quot;&gt;CMU&lt;/a&gt;, taught by Ron Placone, whose seminar &quot;Communicating Through Dialogue&quot; back in October that &lt;a href=&quot;/blog/2011/10/11/communicating-through-dialogue/&quot;&gt;I had found so useful&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Often, when we think of creativity, we think of creative individuals.
There is growing interest, however, in the importance of team creativity
to the overall success of organizations. This brown bag session will
explore ways managers and team leaders can stimulate innovative work
teams.&lt;/p&gt;
&lt;p&gt;We will discuss the following:&lt;/p&gt;
&lt;p&gt;The importance of debunking myths about creativity.
Ways to design supportive physical and psychological environments.
The relationship between dialogue and team creativity.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;h2&gt;What is creativity?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Creativity&lt;/em&gt; is, in our (American) culture, a fuzzy and loaded term, with all kinds of unfortunate connotations. Throughout my life, I have heard rather &lt;em&gt;emotional&lt;/em&gt; reactions to the very idea of creativity. One is that it&apos;s something some people are just born with. Another is that it&apos;s artsy nonsense. Another is that &quot;everyone is creative&quot;. So it may be useful to undertake a more objective examination of creativity, what it is, why it is important, who has it, etc. I attended the seminar to get some interesting starting points for thinking about this topic.&lt;/p&gt;
&lt;p&gt;I don&apos;t yet have any special insights or comments to offer; I have not had the time since yesterday to at least read all the handouts and excerpts in the packet we received. But I plan to explore the topic of creativity on this blog in the future, as I learn more about what researchers have found and as I reflect on my own experiences.&lt;/p&gt;
&lt;h2&gt;Online resources&lt;/h2&gt;
&lt;p&gt;I happened to find a audio-recorded version, with accompanying slides, of an older instance of this seminar online! So if you are curious, you can go through Ron Placone&apos;s &lt;a href=&quot;https://web.archive.org/web/20110909032949/http://www.cmu.edu:80/hr/learning/ld_online_assets/rp_fosteringcreativity/fostering_team_creativity.htm&quot;&gt;presentation&lt;/a&gt; and pick up a some ideas from it.&lt;/p&gt;
&lt;p&gt;I am grateful for CMU&apos;s commitment to offering these free seminars to staff, and Ron is really an effective and fun speaker and facilitator of discussions at all his seminars I&apos;ve been to in the past years.&lt;/p&gt;
</content:encoded></item><item><title>I&apos;m going to perform music much sooner than I expected: Monday</title><link>https://franklinchen.com/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/12/01/im-going-to-perform-music-much-sooner-than-i-expected-monday/</guid><pubDate>Thu, 01 Dec 2011 23:19:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/s-a-t-recorders.jpg&quot; alt=&quot;My soprano, alto, tenor recorders&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next week on Monday, I am to join a handful of &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local recorder players&lt;/a&gt; in playing holiday-themed music at a &lt;a href=&quot;https://phipps.conservatory.org/exhibits-and-events/featured-event.aspx?eventid=259&quot;&gt;Candlelit Evening at Phipps Conservatory&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This will be my first time in public since I was a kid in band, and also my first time performing as part of such a small ensemble. It will be quite a new experience for me.&lt;/p&gt;
&lt;h2&gt;Grateful&lt;/h2&gt;
&lt;p&gt;I feel very grateful for the opportunity to contribute to the performance group. I only started playing recorder &lt;em&gt;nine months ago&lt;/em&gt;, and never had any intention to start performing before at least a year of hard work to get sufficiently decent, but they think I&apos;ve been improving a lot and invited me to join them for some holiday music that they say is &quot;easy&quot;. (I have not seen the music yet and will see it for the first time tomorrow evening at rehearsal. I will try to get there early!) It does mean a lot to me that they trust I can do my share playing a part in a quintet or sextet.&lt;/p&gt;
&lt;h2&gt;Anxiety&lt;/h2&gt;
&lt;p&gt;I definitely feel anxiety at the thought of performing.&lt;/p&gt;
&lt;p&gt;Some of the anxiety has to do with unknowns: I have not even seen the music and sight read it yet!&lt;/p&gt;
&lt;p&gt;I also have anxieties about playing wrong notes, totally losing my place, etc.&lt;/p&gt;
&lt;p&gt;But my anxiety is lessened when I think about how bad it would be if I made various errors. First of all, this is not some kind of formal concert where people are sitting silently watching your every move; we are playing incidental music while people check out the sights in Phipps Conservatory. Second, I trust those I am playing with: I have played with them (in a non-performance setting) for months, and know what kind of supportive people they are, and feel a rapport with them, such that I know they wouldn&apos;t scream at me if I made a few mistakes here and there.&lt;/p&gt;
&lt;h2&gt;Even more performance opportunities&lt;/h2&gt;
&lt;h3&gt;Pittsburgh Contras and Squares Holiday Ball&lt;/h3&gt;
&lt;p&gt;Also, I&apos;m expecting to play in another holiday-oriented gig that Abby is playing in and wants me to join: the annual Holiday Ball of the &lt;a href=&quot;https://pittsburghcontra.org/&quot;&gt;Pittsburgh Contras and Squares&lt;/a&gt;. I still don&apos;t know whether I&apos;ll choose to play recorder or flute or whatever other instrument in this (I do have a &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;melodica&lt;/a&gt; too)! The first rehearsal is next week and I plan to attend.  I have been assured that this is a pretty informal affair, where musicians have fun contributing as they can and dancers appreciate the live music and get to have their fun also.&lt;/p&gt;
&lt;p&gt;(No, I&apos;m not going to play at the Holiday Ball the &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;Baroque flute I just got yesterday and started to learn&lt;/a&gt;.)&lt;/p&gt;
&lt;h4&gt;(Update of 2011-12-16)&lt;/h4&gt;
&lt;p&gt;I reported on &lt;a href=&quot;/blog/2011/12/16/playing-recorder-and-flute-at-the-holiday-ball/&quot;&gt;playing in the Holiday Ball&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Carnegie Mellon All-University Orchestra&lt;/h3&gt;
&lt;p&gt;Finally, I am considering joining, in January after winter break, the &lt;a href=&quot;https://www.andrew.cmu.edu/user/auo/&quot;&gt;Carnegie Mellon All-University Orchestra&lt;/a&gt;, playing (modern) flute. This is a non-audition orchestra, so I don&apos;t have to be super good to be a part of it. Nevertheless, I have a month or so to continue improving a lot on the flute before I can judge whether I should join it. If I do, then that will be the first time ever in an orchestra!&lt;/p&gt;
&lt;p&gt;Being non-audition, the CMU AUO is not a very good orchestra. And I know firsthand, because I went to one of their free concerts many years ago because I knew someone who was in it. But life would be tragic if only super good musicians could play music together, just as life would be tragic if only elite individuals in society were allowed or encouraged to read or write or do arithmetic or cook or garden or run or write computer programs. (That&apos;s my social commentary for today; I will expand on this theme in later writings.)&lt;/p&gt;
&lt;h4&gt;(Update of 2012-03-12)&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2012/02/01/joining-an-orchestra-learning-in-the-face-of-terror/&quot;&gt;I did join the CMU AUO in January&lt;/a&gt;, but &lt;a href=&quot;/blog/2012/03/12/quitting-the-cmu-all-university-orchestra-one-of-the-hardest-decisions-in-my-life/&quot;&gt;quit in March&lt;/a&gt;, one of my hardest but best decisions in my life!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am excited to start performing music in public for this holiday season. I have been quite content to just play music informally without an audience, or playing it for myself, but I have to admit that even for an introvert like me, part of the entire pleasure of playing music at all is that of connecting to the minds, hearts, bodies of people who appreciate what you communicate and express to them. Even when I play alone, I imagine connecting somehow with the universe in some strange way.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-11-19)&lt;/h2&gt;
&lt;p&gt;A year later, I reported on &lt;a href=&quot;/blog/2012/11/19/preparing-for-december-9-recorder-performance-in-phipps-conservatory/&quot;&gt;preparing for the 2012 holiday gig at Phipps&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Bought a Baroque flute</title><link>https://franklinchen.com/blog/2011/11/30/bought-a-baroque-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/30/bought-a-baroque-flute/</guid><pubDate>Wed, 30 Nov 2011 21:06:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://static.musiciansfriend.com/derivates/18/001/590/857/DV016_Jpg_Large_464489.901_black_matte.jpg&quot; alt=&quot;Aulos Baroque flute A440&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I got a &lt;a href=&quot;https://web.archive.org/web/20260306114114/http://www.oldflutes.com/baroq.htm&quot;&gt;Baroque flute&lt;/a&gt; today. The one I got was the plastic Aulos, since it is by far less expensive than any wooden one, and recommended by a number of people I know. Also, it was the A440-tuned one, rather than the A415-tuned one, since I want to be able to play it with people on modern instruments.&lt;/p&gt;
&lt;p&gt;Why did I suddenly get this instrument, when less than two weeks ago, when discussing &lt;a href=&quot;/blog/2011/11/17/flute-versus-recorder/&quot;&gt;my recent return to the modern flute&lt;/a&gt;, I explained all the reasons I didn&apos;t expect to try Baroque flute anytime soon?&lt;/p&gt;
&lt;h2&gt;Why now?&lt;/h2&gt;
&lt;p&gt;It turned out that I got more information than I had then. For one thing, when I announced to everyone at the last meeting of the local &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter of the American Recorder Society&lt;/a&gt; that I was playing the modern flute again, of course they said, &quot;How about trying the Baroque flute?&quot; and told me about the affordable plastic one. Also, finding out that I could get an A440-tuned instrument mattered a lot. I don&apos;t want to invest anytime soon in an instrument that I can&apos;t play in a wide range of circumstances.&lt;/p&gt;
&lt;p&gt;Finally, by chance it turned out that Abby needed to buy some musical supplies from a place that had the precise Aulos Baroque flute I was looking at (and the lowest price online), and so we added it to the order to get a discount all in one order.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-10-30)&lt;/h3&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.boosey.com/imagesw/shop/product/$wm1_0x700_$&lt;em&gt;ED_12861-English_Airs_cov.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.boosey.com/imagesw/shop/product/$wm1_0x700&lt;/em&gt;$_ED_12861-English_Airs_cov.jpg&quot;&amp;gt;[image: English Airs and Dances]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;I didn&apos;t think it was important to mention at the time, but when I wrote this blog post, I had just &lt;em&gt;two weeks earlier&lt;/em&gt; checked out of the library, by sheer accident since it was on display, a book/CD set called &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boosey.com/shop/prod/Various-English-Airs-and-Dances-Baroque-Around-the-World-series-Book-CD/918892&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boosey.com/shop/prod/Various-English-Airs-and-Dances-Baroque-Around-the-World-series-Book-CD/918892&quot;&amp;gt;&quot;English Airs and Dances&quot;&amp;lt;/span&amp;gt;, from a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.boosey.com/shop/prod/Various-English-Airs-and-Dances-Baroque-Around-the-World-series-Book-CD/918892&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.boosey.com/shop/prod/Various-English-Airs-and-Dances-Baroque-Around-the-World-series-Book-CD/918892&quot;&amp;gt;&quot;Baroque Around the World&quot; series&amp;lt;/span&amp;gt;, and begun working on playing the music in it, on modern flute.&lt;/p&gt;
&lt;h2&gt;What now?&lt;/h2&gt;
&lt;p&gt;Well, I picked up &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ucpress.edu/book.php?isbn=9780520214477&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ucpress.edu/book.php?isbn=9780520214477&quot;&amp;gt;Boland&apos;s &quot;Method for the One-Keyed Flute&quot;&amp;lt;/span&amp;gt; from the library, and it looks very good. At some point I&apos;ll start working on it.&lt;/p&gt;
&lt;p&gt;I&apos;m also pretty enchanted with the modern flute these days, and have been working hard to improve rapidly and considerably on it, with some hope of playing it when I see my sister later this month.&lt;/p&gt;
&lt;h2&gt;Other flutes?&lt;/h2&gt;
&lt;p&gt;It turns out that on Thanksgiving, I saw at the host&apos;s place some tubes with holes that I couldn&apos;t figure out how to make a sound on. I was told they were plastic &lt;a href=&quot;https://en.wikipedia.org/wiki/Kaval&quot;&gt;kavals&lt;/a&gt;. I had certainly heard and seen such instruments being played many times before, but not looked at them up front. With some guidance, I spent a large amount of time trying to make sounds on the kavals, and only partially succeeding.&lt;/p&gt;
&lt;p&gt;I guess now now that I have increasing experience with flute-type instruments, I am finding variations on the concept kind of fascinating. I might want to try figuring out the kaval at some point.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am grateful for the opportunity to own a relatively inexpensive Baroque flute to play around with. I have to be careful, since I am attracted to novelty and variety but need to discipline myself in order to excel at a smaller number of endeavors, rather than be a mere dilettante at a larger number.&lt;/p&gt;
</content:encoded></item><item><title>Remembering Esther Allen (1918-2011)</title><link>https://franklinchen.com/blog/2011/11/29/remembering-esther-allen-1918-2011/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/29/remembering-esther-allen-1918-2011/</guid><pubDate>Tue, 29 Nov 2011 21:28:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, Abby forwarded me an email she just got about a tribute to &lt;a href=&quot;https://web.archive.org/web/20120624032206/http://www.alleghenyfront.org/story.html?storyid=200907171046080.244858&quot;&gt;Esther Allen&lt;/a&gt;, to be held this Thursday (December 1) at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://web.me.com/babyowl/Wissahickon/Home.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://web.me.com/babyowl/Wissahickon/Home.html&quot;&amp;gt;Wissahickon Nature Club&amp;lt;/span&amp;gt;. Esther died in June at the age of 93. I only met her once: back in April, Abby and I went on a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dcnr.state.pa.us/stateparks/findapark/raccooncreek/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dcnr.state.pa.us/stateparks/findapark/raccooncreek/&quot;&amp;gt;Raccoon Creek State Park&amp;lt;/span&amp;gt; wildflower walk on a beautifully clear spring day. But even just being around her for a couple of hours, I found her an inspiration!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/raccoon-creek-wildflower-walk/esther-allen-trillium.jpg&quot; alt=&quot;Esther Allen examining trillium&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I didn&apos;t even know who she was that April morning. I looked her up the day after the walk. What was special about her?&lt;/p&gt;
&lt;h2&gt;The wildflower walk&lt;/h2&gt;
&lt;p&gt;When Abby and I showed up for the wildflower walk, it turned out that there were a lot more people present than expected, so we split up into two groups. One of the groups sort of formed when someone said, &quot;Let&apos;s follow Esther!&quot; For a while, I didn&apos;t know who was being referred to.&lt;/p&gt;
&lt;p&gt;Then it became clear that our group was going very slowly, following an old woman (whose age was not obvious to me). We stopped frequently while she pointed out and identified wildflowers and often told stories about the first time she had seen something. What struck me about Esther was how &lt;em&gt;curious&lt;/em&gt; and &lt;em&gt;excited&lt;/em&gt; she was about everything we saw, treating everything as a unique individual specimen rather than &quot;oh, that&apos;s an X&quot;.  In the photo at the top of this blog post, she spent quite a bit of time puzzling over the trillium we saw, and wondering whether it was a hybrid, because of its strange color.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/raccoon-creek-wildflower-walk/esther-allen-shafer-rock.jpg&quot; alt=&quot;Esther Allen on trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We saw quite a few wildflowers, as well as interesting fungi.&lt;/p&gt;
&lt;p&gt;Here&apos;s a cute closeup of a phlox I saw:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/raccoon-creek-wildflower-walk/phlox.jpg&quot; alt=&quot;Closeup of phlox&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;More on Esther&lt;/h2&gt;
&lt;p&gt;I enjoyed being in the presence of Esther&apos;s calm, alert, and upbeat demeanor. She seemed to be someone who knew how to find peace and beauty in the moment while in nature.&lt;/p&gt;
&lt;p&gt;Also, I was impressed by how she had no qualms about managing, however slowly, down some of the steeper, rockier sections of the trails we were on, and going through some muddy spots also.&lt;/p&gt;
&lt;p&gt;I simply had never met someone so old, so I consciously made a mental note that at 90, I&apos;d like to be out there too, even if I have to use a cane. I don&apos;t ever want to be one of those people who end up being lonely or bitter, sitting around watching TV while waiting to die.&lt;/p&gt;
&lt;h2&gt;Surprise&lt;/h2&gt;
&lt;p&gt;As Abby and I eventually left the group to return to our car, hiking much more quickly on our own along some other trails, we encountered a sign indicating the Esther Allen Trail, recently renamed from its old name. I was stunned. It felt really weird to just have been hiking with someone and then being on &quot;her&quot; trail. After returning home, I looked her up on the Web, because clearly we must have been in the presence of someone &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.wqed.org/birdblog/2011/06/28/we-miss-her-already/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.wqed.org/birdblog/2011/06/28/we-miss-her-already/&quot;&amp;gt;special&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;But even without knowing her entire history of service as a naturalist, and her &lt;a href=&quot;https://en.wikipedia.org/wiki/Grandma_Gatewood&quot;&gt;famous mother, Grandma Gatewood&lt;/a&gt;, I knew all along that I was in the presence of a kind and strong human spirit.
I feel privileged to have had the opportunity to walk and look at wildflowers with her.&lt;/p&gt;
</content:encoded></item><item><title>Apologies for the technical glitch</title><link>https://franklinchen.com/blog/2011/11/28/apologies-for-the-technical-glitch/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/28/apologies-for-the-technical-glitch/</guid><pubDate>Mon, 28 Nov 2011 21:43:00 GMT</pubDate><content:encoded>&lt;p&gt;My apologies for the technical glitch I introduced eight days ago that resulted in my web site&apos;s entire sidebar being blank! For a moment I felt angry and sad that for eight days any visitors to my site saw a strangely incomplete site, and nobody informed me, but mistakes happen. My regular readers who use my &lt;a href=&quot;https://feeds.feedburner.com/FranklinChen&quot;&gt;RSS feed&lt;/a&gt; never saw the glitch.&lt;/p&gt;
&lt;p&gt;I mistakenly thought that by using an HTML comment in a &lt;a href=&quot;https://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt; source file, all the right things would happen, but it turns out that the blog software I use, &lt;a href=&quot;https://octopress.org/&quot;&gt;Octopress&lt;/a&gt;, extracted the begin-comment into the blog&apos;s main index page but not the end-comment, so that, of course, thanks to the leniency of HTML parsing, the entire rest of the HTML was treated as a comment.&lt;/p&gt;
&lt;p&gt;It is my own fault that I did not preview my blog carefully during the past week to verify that the sidebar and all other parts of the site were correct.&lt;/p&gt;
</content:encoded></item><item><title>Thankful for the free-range orange-yolked eggs</title><link>https://franklinchen.com/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/28/thankful-for-the-free-range-orange-yolked-eggs/</guid><pubDate>Mon, 28 Nov 2011 20:35:00 GMT</pubDate><content:encoded>&lt;p&gt;Welcome back from the &lt;a href=&quot;/blog/2011/11/24/happy-thanksgiving-and-a-call-to-action/&quot;&gt;Thanksgiving&lt;/a&gt; long weekend! Abby and I had a wonderful time with friends and also with seeing both my parents and her parents. I enjoyed my extended &lt;a href=&quot;/blog/2011/11/12/starting-a-mini-digital-sabbath/&quot;&gt;Digital Sabbath&lt;/a&gt; but here I am again.&lt;/p&gt;
&lt;p&gt;As we do when we happen to be in the vicinity, we loaded up some cartons of free-range eggs from &lt;a href=&quot;https://pine-richland.patch.com/articles/stoney-lane-farm-a-little-bit-country-in-suburbia&quot;&gt;Stoney Lane Farm&lt;/a&gt;. I am always grateful for the opportunity to eat these local eggs, and grateful for the hens who run around and lay these eggs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eggs/chickens-11-26-11_1343.jpg&quot; alt=&quot;Chickens at Stoney Lane Farm&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Breakfast&lt;/h2&gt;
&lt;p&gt;For breakfast today, I used one of the eggs we got:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one egg, fried&lt;/li&gt;
&lt;li&gt;broccoli&lt;/li&gt;
&lt;li&gt;walnuts&lt;/li&gt;
&lt;li&gt;raisins&lt;/li&gt;
&lt;li&gt;olive oil&lt;/li&gt;
&lt;li&gt;seasoning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note the large orange yolk.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eggs/egg.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eggs/frying-egg.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/eggs/breakfast.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Happy Thanksgiving and a call to action</title><link>https://franklinchen.com/blog/2011/11/24/happy-thanksgiving-and-a-call-to-action/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/24/happy-thanksgiving-and-a-call-to-action/</guid><pubDate>Thu, 24 Nov 2011 10:38:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy Thanksgiving, everyone! Please take time out to give thanks today, whether out loud or silently.&lt;/p&gt;
&lt;p&gt;Yesterday I wrote about how &lt;a href=&quot;/blog/2011/11/23/every-day-is-thanksgiving/&quot;&gt;every day is Thanksgiving&lt;/a&gt;. At the end of the post, I wondered about further improving my gratitude practice. I woke up today with a burning desire to take action. I&apos;d like to know what you think of my specific ideas.&lt;/p&gt;
&lt;h2&gt;Gratitude letters&lt;/h2&gt;
&lt;p&gt;I first heard about gratitude letters from the fantastic book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://chass.ucr.edu/faculty_book/lyubomirsky/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://chass.ucr.edu/faculty_book/lyubomirsky/&quot;&amp;gt;&quot;The How of Happiness&quot;&amp;lt;/span&amp;gt; by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.faculty.ucr.edu/~sonja/index.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.faculty.ucr.edu/~sonja/index.html&quot;&amp;gt;Sonja Lyubomirsky&amp;lt;/span&amp;gt;. The idea is to directly write a letter of gratitude to an individual.&lt;/p&gt;
&lt;p&gt;I thought about this in the context of all the free and open source software I use regularly for work or for personal purposes. I was thinking that I should start taking the time to thank, one by one, each of the developers or teams of such software.&lt;/p&gt;
&lt;p&gt;Also, I follow a lot of blogs. Many of them don&apos;t have many followers, so commenting more and offering gratitude would probably be very welcome.&lt;/p&gt;
&lt;h2&gt;Gratitude-themed blog post&lt;/h2&gt;
&lt;p&gt;Perhaps I could reserve one day a week of my blog for the gratitude theme.&lt;/p&gt;
&lt;h2&gt;Gratitude in every blog post&lt;/h2&gt;
&lt;p&gt;Or I could find a way to express gratitude in every blog post I write.&lt;/p&gt;
&lt;h2&gt;Gratitude tweets&lt;/h2&gt;
&lt;p&gt;Maybe I could tweet gratitude more often. I don&apos;t want to annoy my Twitter followers with too much though. And I admit I don&apos;t like the length restriction. I guess I don&apos;t see as much value in tweeting gratitude as in writing even a decent one-paragraph email to someone.&lt;/p&gt;
&lt;h2&gt;Integrate into Digital Sabbath&lt;/h2&gt;
&lt;p&gt;Recently I began to observe a little bit of a &lt;a href=&quot;/blog/2011/11/12/starting-a-mini-digital-sabbath/&quot;&gt;Digital Sabbath&lt;/a&gt; on which I do not write a blog post. Maybe I could reserve the day after the Digital Sabbath for a gratitude-oriented post?&lt;/p&gt;
&lt;h2&gt;Other ideas&lt;/h2&gt;
&lt;p&gt;Lyubomirsky has other ideas, some of which are in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.beliefnet.com/beyondblue/2010/05/5-ways-to-practice-gratitude-a.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.beliefnet.com/beyondblue/2010/05/5-ways-to-practice-gratitude-a.html&quot;&amp;gt;this interview&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Your ideas&lt;/h2&gt;
&lt;p&gt;What ideas do you have about how to integrate more gratitude into your life, starting this Thanksgiving? Or ideas you have about how &lt;em&gt;I&lt;/em&gt; should integrate more gratitude into my life, into my blog?&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;I will be observing an extended Digital Sabbath till the end of the weekend. There will be a lot of turkey, and a lot of friends and family to see again.&lt;/p&gt;
</content:encoded></item><item><title>Every day is Thanksgiving</title><link>https://franklinchen.com/blog/2011/11/23/every-day-is-thanksgiving/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/23/every-day-is-thanksgiving/</guid><pubDate>Wed, 23 Nov 2011 23:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So tomorrow is &lt;a href=&quot;https://en.wikipedia.org/wiki/Thanksgiving&quot;&gt;Thanksgiving&lt;/a&gt;, the American holiday that is so unfortunate for turkeys. Thanksgiving is a traditional time for pausing and giving thanks for all that we are grateful for.&lt;/p&gt;
&lt;p&gt;I briefly considered creating a little list of some of my reasons for thanks and posting the list here. I changed my mind after realizing that for every item I put on the list, I would be omitting a thousand other items and implicitly suggesting they were less important. Therefore, I decided to not have a list at all.&lt;/p&gt;
&lt;p&gt;Instead, let me advocate making &lt;strong&gt;every day&lt;/strong&gt; Thanksgiving.&lt;/p&gt;
&lt;h2&gt;Negativity&lt;/h2&gt;
&lt;p&gt;There was a time in my life when I easily fell into a persistently cynical, negative mood, and thought happiness and gratitude were for chumps who didn&apos;t realize how crappy the world was. I would often feel angry about some injustice in the world, or some injustice done to me. I would wish I had more stuff or were smarter.&lt;/p&gt;
&lt;p&gt;I realized that this attitude was not helpful, so I tried changing it through reasoning, but the results were never long-lasting. Negative emotions would pop up and create a cycle of anger, envy, resentment, greed, etc. I never experienced an overall sense of harmony and acceptance and gratitude.&lt;/p&gt;
&lt;h2&gt;Happiness and gratitude&lt;/h2&gt;
&lt;p&gt;Things started changing when I started reading about happiness and &lt;a href=&quot;https://en.wikipedia.org/wiki/Positive_psychology&quot;&gt;positive psychology&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But one of the few sources that really got me on a path of permanent change was a deeply personal, accessible, and &lt;em&gt;practical&lt;/em&gt; book by &lt;a href=&quot;https://www.talbenshahar.com/&quot;&gt;Tal Ben-Shahar&lt;/a&gt;, &quot;Happier: Learn the Secrets to Daily Joy and Lasting Fulfillment&quot;, published in 2007.&lt;/p&gt;
&lt;p&gt;One of the practical suggestions by Ben-Shahar was that of maintaining a &lt;strong&gt;gratitude journal&lt;/strong&gt; regularly. I thought, OK, this sounds cheesy, but I&apos;ll give it a shot.  So I got some blank notebooks, and every day before going to bed, I would write down five thoughts of gratitude that I had genuinely observed arising in myself that day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Years later, I am still writing in my gratitude journal every day&lt;/strong&gt;. When packing for travel, the first thing on my packing list is always my gratitude journal. I&apos;ve almost never missed a day of writing in my gratitude journal. The couple of times in the past years when I missed a day were when my life was obviously in considerable disorder and just recognizing my omission was enough to get me back the next day. Yes, I write in my gratitude journal even when I have what seems like a really terrible day, because there is always something that could have been worse.&lt;/p&gt;
&lt;p&gt;Completely unexpectedly, this simple ritual, the gratitude journal, slowly began to change my life. The changes were subtle but real. Just being aware that there is so much good going on in life, even when it is terrible, keeps me from ever sinking into the kind of depression that I was prone to in my younger days. My negative emotions became more controllable, and my overall outlook on life is positive, and instead of just taking for granted all that is good, I have reset myself so that I appreciate what is good.&lt;/p&gt;
&lt;h2&gt;What goes into the gratitude journal?&lt;/h2&gt;
&lt;p&gt;You might be wondering what kinds of things I write about in my gratitude journal. As I mentioned, I simply write down what really comes to mind, relatively spontaneously. Some days I have a lot more exciting items rushing to my mind, and other days I have to struggle to find five. I just happen to always put down at least five, for the sake of regularity, and for the sake of deepening my search for little things that I might not have been conscious of during a day but maybe I could appreciate more fully.&lt;/p&gt;
&lt;p&gt;A few random shorter examples from my gratitude journals of the past years:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Made decent butternut squash and navy bean soup! First time really.&lt;/li&gt;
&lt;li&gt;Got in a lot of walking today as exercise and mental relaxation.&lt;/li&gt;
&lt;li&gt;Got a haircut from Joe.&lt;/li&gt;
&lt;li&gt;It was a peaceful, sunny day.&lt;/li&gt;
&lt;li&gt;Jim Weirich was great at the Pittsburgh Ruby presentation.&lt;/li&gt;
&lt;li&gt;Had the last red tea bag in the can, refreshing and awakening.&lt;/li&gt;
&lt;li&gt;Tasty beef fajitas by Abby for dinner.&lt;/li&gt;
&lt;li&gt;Had time to catch up on emails with (long-distance) friends.&lt;/li&gt;
&lt;li&gt;Made up with Abby after argument.&lt;/li&gt;
&lt;li&gt;Shoveling snow today was not too tedious.&lt;/li&gt;
&lt;li&gt;Someone had extra water for me on the hike.&lt;/li&gt;
&lt;li&gt;Nothing seems permanently broken after my big fall.&lt;/li&gt;
&lt;li&gt;Still sick, but feel better than yesterday.&lt;/li&gt;
&lt;li&gt;Caught up on sleep last night.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Given my gratitude journal, every day is in a sense Thanksgiving, but I think something is still missing. I am now considering changing things up with the gratitude journal, because sometimes I take the easy way out and repeat myself with similar items that, yes, matter a lot to me, but are a bit mundane. The gratitude journal is like tweeting. I would like to write longer essays giving thanks. On my to-do list for the blog!&lt;/p&gt;
</content:encoded></item><item><title>James Galway made me hate flute, but Emmanuel Pahud made me love it</title><link>https://franklinchen.com/blog/2011/11/22/james-galway-made-me-hate-flute/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/22/james-galway-made-me-hate-flute/</guid><pubDate>Tue, 22 Nov 2011 22:30:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;So it&apos;s been less than two weeks since I &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;started playing flute again&lt;/a&gt;. One thing I forgot to mention is that &lt;a href=&quot;https://en.wikipedia.org/wiki/James_Galway&quot;&gt;James Galway&lt;/a&gt; made me hate flute for decades.&lt;/p&gt;
&lt;p&gt;The bottom line is that I never liked Galway&apos;s distinctive vibrato and sound. Unfortunately, for some reason, I kept on seeing him on TV and hearing him on the radio, and so he sort of represented to me &quot;flute&quot;.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-08-23)&lt;/h3&gt;
&lt;p&gt;I have periodically received comments from people very unhappy with my dislike of the playing of James Galway. I mean no disrespect: everyone has different taste. I should add that I actually love and respect James Galway as a musician and as an educator. I will write a detailed blog post about that at some point.&lt;/p&gt;
&lt;h2&gt;Revival through jazz&lt;/h2&gt;
&lt;p&gt;Interestingly, I started to enjoy hearing the flute again mainly from getting into jazz. I loved hearing &lt;a href=&quot;https://en.wikipedia.org/wiki/Herbie_Mann&quot;&gt;Herbie Mann&lt;/a&gt; on flute, for example, and others as well. In fact, my original intention when buying a flute several years ago was to get into jazz flute: I had sort of lost interest in playing classical music by then.&lt;/p&gt;
&lt;h2&gt;Discovery of Emmanuel Pahud&lt;/h2&gt;
&lt;h3&gt;Syrinx&lt;/h3&gt;
&lt;p&gt;Just a couple of years ago, I was driving and listening to the local classical radio station, &lt;a href=&quot;https://www.wqed.org/fm/&quot;&gt;WQED&lt;/a&gt;, when I was put totally under a spell by a performance of a work for solo flute. Being completely unfamiliar with the classical flute repertoire, I didn&apos;t know what the piece was, but the announcer said it was &quot;Syrinx&quot; by Claude Debussy, and performed by one &lt;a href=&quot;https://en.wikipedia.org/wiki/Emmanuel_Pahud&quot;&gt;Emmanuel Pahud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I went and found CDs by Pahud at the library. Great stuff! He is definitely my flute hero.&lt;/p&gt;
&lt;p&gt;Here is a beautiful video of Pahud performing &quot;Syrinx&quot; on YouTube:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;aw53VrbI4l0&quot; /&amp;gt;&lt;/p&gt;
&lt;h4&gt;(Update of 2013-08-23)&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2013/08/23/celebrating-claude-debussys-151st-birthday-through-unusual-performances-of-syrinx/&quot;&gt;I wrote for Debussy&apos;s 151st birthday a note on unusual performances of Syrinx.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Entr&apos;acte from Carmen&lt;/h3&gt;
&lt;p&gt;It turns out that today I was practicing an arrangement of the Entr&apos;acte from Bizet&apos;s Carmen from the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot;&amp;gt;&quot;I Used to Play Flute&quot;&amp;lt;/span&amp;gt; book, and out of curiosity, looked up Pahud on YouTube.&lt;/p&gt;
&lt;p&gt;Here he is playing it under the young Venezuelan superstar conductor &lt;a href=&quot;https://en.wikipedia.org/wiki/Gustavo_Dudamel&quot;&gt;Gustavo Dudamel&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;eChLCFAGyx0&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Very nice, although his interpretation differs in various ways from my personal conception of the Entr&apos;acte: I would play it faster and more passionately. One reason I feel compelled to play music, and not only listen to it, is that nobody ever plays a piece just how I would play it. To &lt;em&gt;live&lt;/em&gt; music, I must create it or recreate it afresh. To not do so would be like watching a video of a hike rather than being on the trail hiking and experiencing it.&lt;/p&gt;
</content:encoded></item><item><title>The beautiful, melancholy Indian Summer of Chet Baker</title><link>https://franklinchen.com/blog/2011/11/20/the-beautiful-melancholy-indian-summer-of-chet-baker/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/20/the-beautiful-melancholy-indian-summer-of-chet-baker/</guid><pubDate>Sun, 20 Nov 2011 20:25:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;For some reason, today I felt like listening (for the hundredth time?) to the ballad &lt;a href=&quot;https://en.wikipedia.org/wiki/Indian_Summer_%28Victor_Herbert_song%29&quot;&gt;&quot;Indian Summer&quot;&lt;/a&gt; as performed by the tragically self-destructive jazz trumpet player (and vocalist) &lt;a href=&quot;https://en.wikipedia.org/wiki/Chet_Baker&quot;&gt;Chet Baker&lt;/a&gt;. I have been obsessed with this beautiful performance since the day I first heard it on the radio maybe fifteen years ago while driving. Eventually I got hold of a CD including the track. Thanks to YouTube, you can listen to the five-minute thing of beauty here:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;_KFw6gd_66w&quot; /&amp;gt;&lt;/p&gt;
&lt;h2&gt;Trumpet&lt;/h2&gt;
&lt;p&gt;Maybe &quot;Indian Summer&quot; came to mind today because at monthly recorder society practice, I was reflecting on my (canceled) hope to play jazz trumpet and felt a little sad. Who ever sounded as &lt;em&gt;achingly beautiful&lt;/em&gt; on trumpet as Chet Baker? Yes, I love Louis Armstrong, Miles Davis, and many other greats of the trumpet, but it is always Chet Baker&apos;s aesthetic that I identify with: the &quot;cool&quot;, lyrical emotional intensity. He expressed so much with drawn-out, smooth whispers and reflective silences and sighs: the lilting fragility of life, the beauty and desolation of passing through the transient stream that is Time.&lt;/p&gt;
&lt;h2&gt;Voice&lt;/h2&gt;
&lt;p&gt;Here is a haunting video of Chet Baker singing the heartbreaking &quot;I&apos;m a Fool to Want You&quot; and playing his horn too (skip to around 0:40 for the music to begin):&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;2ZK8TnDIe2w&quot; /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>I want to sing</title><link>https://franklinchen.com/blog/2011/11/18/i-want-to-sing/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/18/i-want-to-sing/</guid><pubDate>Fri, 18 Nov 2011 23:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Periodically through my life, I have secretly wanted to &lt;strong&gt;sing&lt;/strong&gt;. By that, I mean, &lt;em&gt;really&lt;/em&gt; sing, as in not holding back, and doing it in the presence of other people, and longer than just a few seconds.&lt;/p&gt;
&lt;p&gt;The funny thing is, when I was a child, I un-self-consciously sang all the time. I remember singing when I was three years old, singing along to TV commercials and sing-along books. My parents sang to me. That was my first experience of music. The famous Julie Andrews movie &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Sound_of_Music_(film)&quot;&gt;&quot;The Sound of Music&quot;&lt;/a&gt; has always been special to me (despite encountering a surprising amount of mockery of it later in life) because when I was three, and my parents watched in TV, they sang along and I did too, &lt;em&gt;do-re-mi&lt;/em&gt;. I was so captivated that I even recorded it off the TV on audio cassette at that early age (and still have it, but it&apos;s been years since it was playable).&lt;/p&gt;
&lt;p&gt;So what happened? Why did I stop singing with other people around? Why did I even start feeling embarrassed singing just to myself? And what now?&lt;/p&gt;
&lt;h2&gt;Childhood and adolescence&lt;/h2&gt;
&lt;p&gt;I still have audio cassettes of myself singing at age ten, along with my younger sister. As late as ten I was still singing. Stealing tunes from TV or radio or just making stuff up. We also had old books of traditional American songs from library or garage sales that we&apos;d flip through and try to sight read.&lt;/p&gt;
&lt;p&gt;It was when I hit puberty that everything changed, and I clammed up. My voice was funny. I didn&apos;t like talking or singing any more. Worse, I became aware of many things, such as who was &quot;good&quot; at singing, sports, math, or whatever. Life became very painful. The easy way out was that if I felt I was inferior at something, I would choose not to do it.&lt;/p&gt;
&lt;p&gt;In the sixth grade, I took a required music class taught by Ms. Gates, whom I didn&apos;t like at all. She was mean. I didn&apos;t like her or our assignments. So I didn&apos;t do my homework, and was about to flunk when my parents were called in. (My entire adolescence was a nightmare for my parents, who also had to deal with my almost flunking out of life science, starting to use four-letter words at home, growing my hair long and combing it funny, starting every argument with &quot;this is a free country&quot;, etc.) I made up the work, but with nothing other than resentment.&lt;/p&gt;
&lt;p&gt;One thing I really hated about music class was being made to sing. Before ever taking a music class, I liked singing. Taking the music class made me hate singing. I felt like I was being judged, and I especially hated singing stuff I didn&apos;t like at all. I eventually figured out that I could just lip-sync and pretend to sing and get by.&lt;/p&gt;
&lt;p&gt;So after middle school, I went silent.&lt;/p&gt;
&lt;h2&gt;High school&lt;/h2&gt;
&lt;p&gt;Actually, in high school I secretly started singing again, but just to myself. Bizarrely, I found a loophole in my self-imposed silence. I was taking French and somehow discovered the light operetta music of &lt;a href=&quot;https://en.wikipedia.org/wiki/Jacques_Offenbach&quot;&gt;Jacques Offenbach&lt;/a&gt;, who is famous for the can-can. I became utterly obsessed with his catchy music, and found by accident that although in non-singing life I was painfully self-conscious about pronouncing French, when I sang I was happy to speak French, so it was a good way to learn and practice French! Also, I found by accident that although I was no longer willing to sing anything in English, if I sang in French, that was a &quot;different&quot; activity and OK. Very strange, but in my own room, I was completely OK with singing French operetta to myself. It was as though &lt;em&gt;I&lt;/em&gt; was not the one singing and making a fool of himself, but someone else, some French character. I would get into character and feel free of constraints (as long as I was alone).&lt;/p&gt;
&lt;p&gt;I especially liked Offenbach&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/La_belle_H%C3%A9l%C3%A8ne&quot;&gt;&quot;La Belle Hélène&quot;&lt;/a&gt; and memorized entire arias of the shepherd-disguised Paris. More generally, I was happy to sing random French songs I came across, such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Je_te_veux&quot;&gt;&quot;Je te Veux&quot;&lt;/a&gt;. More generally, sentimental waltzes were my favorite discoveries during my melancholy high school years.&lt;/p&gt;
&lt;h2&gt;College and beyond&lt;/h2&gt;
&lt;p&gt;In college, I discovered the entire classical music world. (Some of the story was told in my &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades&quot;&gt;post about flute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As far as singing was concerned: I made a new friend who was into all things German (literature, music), and listened to songs (&lt;a href=&quot;https://en.wikipedia.org/wiki/Lied&quot;&gt;Lieder&lt;/a&gt;) by Beethoven, Schubert, Mahler, and others. I got into reading some stuff in translation and listening to instrumental music, but the language barrier prevented me from really enjoying listening to the songs. Eventually I took German to help me out, and so I finally started to sing along to Schubert, in particular.&lt;/p&gt;
&lt;p&gt;Later I learned Italian as well, primarily to sing.&lt;/p&gt;
&lt;p&gt;But all this in private.&lt;/p&gt;
&lt;h2&gt;Recent years&lt;/h2&gt;
&lt;p&gt;In recent years, I&apos;ve started singing a little bit in other people&apos;s presence. I think it all began because I got an office mate at work some years ago. Since it is actually my habit to hum or sing to myself every day, it was hard to contain myself in his presence. Eventually I hit upon a way to be OK with singing a little bit around him: if I sang in an parodistic way or substituted silly lyrics in place of the real lyrics, I would lose some of my self-consciousness.&lt;/p&gt;
&lt;p&gt;Unfortunately, this has also been true at home, where I sing some of this nonsense to Abby, who is sometimes annoyed by how silly or disgusting the made-up lyrics are.&lt;/p&gt;
&lt;h2&gt;Now&lt;/h2&gt;
&lt;p&gt;I have a plan. &lt;strong&gt;It is time to sing for real, without fear or embarrassment&lt;/strong&gt;. Playing recorder (and now flute as well) this year has been a breakthrough for me, musically and physically. I feel that playing wind instruments has given me more confidence to sing with my own voice, and that singing to myself has been good for my instrumental play as well.&lt;/p&gt;
&lt;p&gt;I told Abby that I would like for us to sing together. And I would like to sing for real in front of my office mate also, not just &quot;sing&quot; nonsense. And somehow I should find an outlet for singing even more publicly.&lt;/p&gt;
&lt;p&gt;To do all that, I need to start learning and relearning lyrics. I have a rather poor memory for lyrics. That&apos;s another reason I don&apos;t sing out of the context of following some score on the computer or from a book. I don&apos;t know exactly how to fix this problem, but maybe it&apos;s just a matter of practice. I have started to make a list of songs whose melodies I know, but whose lyrics I don&apos;t, so that I can start filling in the gaps.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Singing is too fun to be just outsourced to the professionals. It must become a real part of my life, not a secret part of it.&lt;/p&gt;
&lt;p&gt;Recently I came across this passionate little &lt;a href=&quot;https://www.npr.org/templates/story/story.php?storyId=97320958&quot;&gt;speech by Brian Eno&lt;/a&gt; about the importance of singing. It inspired me to make a plan and write this blog post. May we all go forth and sing!&lt;/p&gt;
&lt;h3&gt;(Update of 2012-11-17)&lt;/h3&gt;
&lt;p&gt;Almost exactly a year later, I have made progress in getting up the courage to &lt;a href=&quot;/blog/2012/11/17/a-childhood-dream-come-true-i-am-now-finally-singing-for-real/&quot;&gt;really start singing&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Flute versus recorder: why do I play both?</title><link>https://franklinchen.com/blog/2011/11/17/flute-versus-recorder/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/17/flute-versus-recorder/</guid><pubDate>Thu, 17 Nov 2011 22:35:00 GMT</pubDate><content:encoded>&lt;p&gt;A week ago, I &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;started playing the flute again after decades&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I started playing &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt; in February, and made it my main instrument, I am torn by the fact that I have been playing it every other day now rather than every day, and playing flute every other day. It feels weird dividing my attention in this way.&lt;/p&gt;
&lt;p&gt;I suppose it&apos;s time to talk more about why I started playing recorder in the first place, and why I am back to flute now (in addition).&lt;/p&gt;
&lt;h2&gt;The appeal of the recorder&lt;/h2&gt;
&lt;h3&gt;Social&lt;/h3&gt;
&lt;p&gt;I took up recorder in large part because of the knowledge that there was a &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local branch of the American Recorder Society&lt;/a&gt; here in Pittsburgh, which I joined just shortly after beginning to play the alto recorder.&lt;/p&gt;
&lt;p&gt;It&apos;s much easier to keep a hobby going seriously when one is not pursuing it alone. That is true even for someone as self-motivated and driven as I often am (I trained for and ran my first marathon all by myself and alone, not with any friend or running club). There are many reasons for this. One is that it is easy to get discouraged, and having emotional support can prevent giving up prematurely. Another is that in addition to emotional support, people can give technical support as well: improving my recorder playing technique in the first few months would have been impossible without personal feedback. Yet another reason is that goals can become much more concrete: to equal the ability of an admired peer, or to be able to play without too much embarrassment in an ensemble or in a particular concert (if one is actually performing in public at all).&lt;/p&gt;
&lt;h3&gt;Inexpensive&lt;/h3&gt;
&lt;p&gt;Decent plastic recorders from Yamaha are quite inexpensive compared to a lot of more modern instruments.&lt;/p&gt;
&lt;h3&gt;Versatile&lt;/h3&gt;
&lt;p&gt;I always knew that there was the opportunity to play many different recorders, because I actually started out with soprano briefly before going to alto, and then I eventually acquired also a tenor, bass, and sopranino. It&apos;s a great feeling knowing that by learning one instrument, one can play several others with relatively minor changes in technique.&lt;/p&gt;
&lt;h3&gt;Simplicity&lt;/h3&gt;
&lt;p&gt;It is easy to get started on recorder. The breath pressure required is low, there is no embouchure to develop, no reeds, the basic fingerings are intuitive.&lt;/p&gt;
&lt;h3&gt;Anachronistic&lt;/h3&gt;
&lt;p&gt;One important element of the appeal of the recorder is that it is an anachronism: to embrace it today entails at least some &quot;rebellious&quot; mindset that declares that technology is not everything, that there is value in the past, in more primitive instruments; and by association, that there is value in old music of the 17th century and earlier.&lt;/p&gt;
&lt;p&gt;Some recorder (and other early instrument) enthusiasts actually adopt what I think of as an extreme version of this mindset, being very negative about all music after Bach, for example. Interestingly, many such enthusiasts are fans of the avant garde and simply reject the Western music from between Bach and the 20th century, or some similar time frame.&lt;/p&gt;
&lt;p&gt;I myself don&apos;t subscribe to any such ideology. I took up recorder while actually being a stranger to almost all music before Bach. I took up recorder in part because I was seeking &lt;em&gt;novelty&lt;/em&gt; in the past, rather than because I already enjoyed early music and was seeking comfort there.&lt;/p&gt;
&lt;h3&gt;Quiet&lt;/h3&gt;
&lt;p&gt;The recorder is a relatively quiet instrument. This can be a virtue when one does not have a soundproof home or soundproof room in the home.&lt;/p&gt;
&lt;h2&gt;The appeal of the modern flute&lt;/h2&gt;
&lt;p&gt;It is of course easier to list the reasons for enjoying the modern flute. I&apos;ll juxtapose them with reasons for &lt;em&gt;not&lt;/em&gt; enjoying the recorder.&lt;/p&gt;
&lt;h3&gt;Popular&lt;/h3&gt;
&lt;p&gt;The modern flute is popular. There is a huge repertoire of music written specifically for it, or arranged for it. A lot of people &lt;em&gt;love&lt;/em&gt; the sound.&lt;/p&gt;
&lt;p&gt;By contrast, a lot of people &lt;em&gt;hate&lt;/em&gt; the sound of the recorder (I won&apos;t name any names, but a large number of people I personally know do not like the recorder and eagerly tell me that). Recorder music is not as easy to come by or popular. It is easy to pick up a flute and play in an orchestra or a chamber music ensemble or marching band, or jam with friends playing jazz or salsa or tango.&lt;/p&gt;
&lt;p&gt;My desire to play an instrument in the widest possible settings has forced me to look back to modern instruments. I&apos;m not interested in only playing early music with early music devotees; I want to participate in a lot of other music also.&lt;/p&gt;
&lt;h3&gt;Flexible&lt;/h3&gt;
&lt;p&gt;Let&apos;s face it, the flute has a much larger range than the recorder, can be played with much more dynamics, control of tone, etc. The ability to really &lt;em&gt;sing&lt;/em&gt; with an instrument is what I miss most when playing the recorder.&lt;/p&gt;
&lt;p&gt;I said earlier that the recorder is an easy instrument to start playing. But it is surprisingly difficult to play &lt;em&gt;well&lt;/em&gt;. There are subtleties in playing notes in tune, because there is no embouchure to adjust. Legato is harder. Interestingly, of course, these difficulties are not entirely negative. I have quite enjoyed the focus, in recorder playing, on rhythmic awareness, full range of articulation (versus legato). Nevertheless, the flute must be considered more flexible. There is no reason one cannot play with a recorder-induced sensitivity on the flute as well.&lt;/p&gt;
&lt;h2&gt;Baroque flute?&lt;/h2&gt;
&lt;p&gt;One idea that I entertained a couple of months ago was that of taking up the Baroque flute, the wooden flute from the 17th century that was the predecessor to the modern flute. I first encountered the Baroque flute when taking a music class at CMU from &lt;a href=&quot;https://www.stephenschultz.net/&quot;&gt;Stephen Schultz&lt;/a&gt;, a virtuoso performer on the Baroque flute.&lt;/p&gt;
&lt;p&gt;I have shelved the idea of trying the Baroque, for several reasons.&lt;/p&gt;
&lt;p&gt;Cost was one. Why buy a Baroque flute when I already have a modern one?&lt;/p&gt;
&lt;p&gt;Another was, where would I actually play a Baroque flute, other than just with specific people who I know are into early musical instruments (such as Baroque violin, harpsichord)?&lt;/p&gt;
&lt;p&gt;It&apos;s still possible that at some point in my life, I&apos;ll try out Baroque flute, but it can wait.&lt;/p&gt;
&lt;h2&gt;Daniel Waitzman, from recorder to flute&lt;/h2&gt;
&lt;p&gt;Daniel Waitzman was a prodigy on recorder and then on Baroque flute as well. I found a couple of recorder technique and practice music books by him at the local library. He wrote a fascinating article, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://home.sprynet.com/~danwaitz/memoir.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://home.sprynet.com/~danwaitz/memoir.htm&quot;&amp;gt;&quot;Up from authenticity, or how i learned to love the metal flute: a personal memoir&quot;&amp;lt;/span&amp;gt;, which I found very inspiring, and highly recommend to anyone who is passionate about early instruments and music. He touches upon some of the points I only mentioned above in passing.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I&apos;m not giving up recorder, but have returned to flute in a strange, roundabout way. We&apos;ll see how far I continue with the flute.&lt;/p&gt;
&lt;h2&gt;(Update of 2011-11-30)&lt;/h2&gt;
&lt;p&gt;It turned out that just days after I wrote this blog post, I reconsidered and &lt;a href=&quot;/blog/2011/11/30/bought-a-baroque-flute/&quot;&gt;decided to buy a Baroque flute&lt;/a&gt;!!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-30)&lt;/h2&gt;
&lt;p&gt;In fact, I would end up spending the summer months of 2012 practicing almost exclusively the Baroque flute, including going to a music camp in which I took a class devoted to Baroque flute technique.&lt;/p&gt;
</content:encoded></item><item><title>Censored</title><link>https://franklinchen.com/blog/2011/11/16/censored/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/16/censored/</guid><pubDate>Wed, 16 Nov 2011 20:03:00 GMT</pubDate><content:encoded>&lt;p&gt;This site has temporarily been &lt;a href=&quot;https://web.archive.org/web/20260328194916/http://americancensorship.org/&quot;&gt;censored&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Updated November 20: I have now removed the black-out banner and popup that I had put up for American Censorship Day. I hope some of you in the past couple of days have looked at the link to understand the issues involved.&lt;/p&gt;
&lt;p&gt;The code was as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://americancensorship.org/js&quot;&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;a style=&quot;width:400px;height:100px;vertical-align:middle;text-align:center;background-color:#000;position:absolute;z-index:5555;top:50px;left:50px;background-image:url(https://americancensorship.org/images/stop-censorship-small.png);background-position:center center;background-repeat:no-repeat;&quot; href=&quot;https://americancensorship.org&quot;&amp;gt;&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>My first Pittsburgh Clojure Meetup: Ambrose Bonnaire-Sergeant on core.logic</title><link>https://franklinchen.com/blog/2011/11/15/my-first-pittsburgh-clojure-meetup-ambrose-bonnaire-sergeant-on-core-logic/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/15/my-first-pittsburgh-clojure-meetup-ambrose-bonnaire-sergeant-on-core-logic/</guid><pubDate>Tue, 15 Nov 2011 23:12:00 GMT</pubDate><content:encoded>&lt;p&gt;I finally attended a &lt;a href=&quot;https://www.meetup.com/Clojure-PGH/events/16249445/&quot;&gt;meeting&lt;/a&gt; of the local &lt;a href=&quot;https://www.meetup.com/Clojure-PGH/&quot;&gt;Pittsburgh Clojure meetup&lt;/a&gt; group, for the first time!&lt;/p&gt;
&lt;p&gt;I came to this meeting largely because I heard that Ambrose Bonnaire-Sergeant, a student in Australia, was visiting the US &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://cemerick.com/2011/11/08/ambrose-has-received-his-clojure-scholarship-thanks-to-you/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://cemerick.com/2011/11/08/ambrose-has-received-his-clojure-scholarship-thanks-to-you/&quot;&amp;gt;on scholarship&amp;lt;/span&amp;gt; to present at &lt;a href=&quot;https://github.com/relevance/clojure-conj/tree/master/2011-slides&quot;&gt;Clojure/Conj&lt;/a&gt; and was happening to be in town in Pittsburgh, and therefore was going to visit the Pittsburgh Clojure meetup group and talk about his recent work on logic programming.&lt;/p&gt;
&lt;h2&gt;A note on Clojure&lt;/h2&gt;
&lt;p&gt;I confess I haven&apos;t yet done anything with the Clojure language.&lt;/p&gt;
&lt;p&gt;However, two decades ago, back in the 1990s, I spent a lot of time programming in Scheme, another Lisp variant, and I also did a tiny bit of programming in Common Lisp (but when I discovered Scheme, I basically lost all interest in Common Lisp).&lt;/p&gt;
&lt;p&gt;It is remarkable to me that a Lisp has become revived again recently, because for decades it was always such a niche language. Probably most of us who have used Lisp at all have done so through Emacs, which is configured using Emacs Lisp. I&apos;m pretty excited about the Lisp revival, despite my having my own reasons not to prefer Lisp right now for my own programming.&lt;/p&gt;
&lt;h2&gt;Ambrose&apos;s presentation&lt;/h2&gt;
&lt;p&gt;I got lost during Ambrose&apos;s presentation since the logic programming library &lt;a href=&quot;https://github.com/clojure/core.logic&quot;&gt;&lt;code&gt;core.logic&lt;/code&gt;&lt;/a&gt; is an embedded domain-specific language with its own look. One of the advantages of Lisp is that macros enable creating domain-specific languages; of course, this is also a disadvantage. If I wanted to understand &lt;code&gt;core.logic&lt;/code&gt;, I would have to go off on my own and study it and play around with it and probably even study its implementation.&lt;/p&gt;
&lt;p&gt;This is how I felt also last month when I went to a &lt;a href=&quot;/blog/2011/10/06/pittsburgh-ruby-building-a-compiler-in-jruby/&quot;&gt;Ruby meetup that also involved domain-specific languages&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>On duets with dead musicians</title><link>https://franklinchen.com/blog/2011/11/15/on-duets-with-dead-musicians/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/15/on-duets-with-dead-musicians/</guid><pubDate>Tue, 15 Nov 2011 22:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I came across a story about technology-created video and audio recordings of &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2011/11/10/142209842/when-is-a-duet-actually-a-duet&quot;&gt;current musicians &quot;performing&quot; with legends no longer alive&lt;/a&gt;. There were vehement comments on the story.&lt;/p&gt;
&lt;p&gt;Amusingly, the story had ended with the observation that &quot;Perhaps there&apos;s a greater sensitivity to such projects in the classical world, which is so often occupied with -- and maybe even paralyzed by -- very strongly held notions of received tradition and respect.&quot;&lt;/p&gt;
&lt;p&gt;Without vehemence, here are some of my thoughts on these &quot;re-performances&quot;.&lt;/p&gt;
&lt;h2&gt;Curiosity&lt;/h2&gt;
&lt;p&gt;My first reaction was curiosity, rather than immediate hostility.&lt;/p&gt;
&lt;p&gt;There are some people who get pre-emptively angry about something just on the basis of some ideology without even trying something out. These people do things like write negative reviews of books they never read, or complain about proposed legislation that they have never read and whose consequences they have not calculated. Life is short, but I try not to make those kinds of errors. I prefer to claim ignorance or non-opinion rather than have an opinion about everything.&lt;/p&gt;
&lt;h2&gt;Gheorghiu and Callas&lt;/h2&gt;
&lt;p&gt;So I clicked on the video clip of soprano Angela Gheorghiu singing the Habanera from Carmen &quot;with&quot; Maria Callas.  I&apos;m not a real opera fan (have never been to a live opera performance), but in the past have listened to and watched a lot of Maria Callas singing famous arias. Her raw emotional intensity was unparalleled, but her voice (such as it was in her later years in recordings) had rather imperfect aspects; but overall, I would consider myself a fan of Callas. It is hard not to cry when watching and listening to her sing, say, &lt;a href=&quot;https://operalady.blogspot.com/2011/01/maria-callas-as-tosca-vissi-darte.html&quot;&gt;&quot;Vissi d&apos;arte&quot; from Tosca&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;(Aside: I actually took an Italian class because I wanted to sing along to and better understand Italian opera arias, just as I took German for Mozart and Schubert, and took Spanish for rumba, salsa, and tango!  Want to get me to learn a language?  Find me some beautiful music in that language for me to sing.)&lt;/p&gt;
&lt;p&gt;Gheorghiu I confess never having been a big fan of. I tried to discount this fact while evaluating her video.&lt;/p&gt;
&lt;p&gt;Fundamentally, I disliked the video because it does not make sense. In its original context, the famous Habanera is sung by Carmen while taunting Don Jose to charm him. A chorus does come in during this aria, but clearly, it is a one-on-one message. It makes no sense being spread out over two Carmens. Also, there is no semblance of actual interaction in this &quot;re-performance&quot;. Video makes this painfully obvious. It&apos;s not as if Callas is alive and reacting to what Gheorghiu does and matching her.  Also, as one of the commenters noted, Gheorghiu is not matching Callas, but putting her in a &quot;subordinate position&quot;.&lt;/p&gt;
&lt;p&gt;In an audio-only version, one would not notice how asymmetric the &quot;duet&quot; was. It would also be uninteresting and confusing, because the two voices are both high and without contrasting lines. It becomes clear that the whole gimmick of the video is the visual of Gheorghiu on stage.&lt;/p&gt;
&lt;h2&gt;Joshua Bell and Sergei Rachmaninoff&lt;/h2&gt;
&lt;p&gt;Then I clicked on the video of Joshua Bell on violin playing &quot;with&quot; Sergei Rachmaninoff on piano (actually, some kind of piano rigged so that its keys are pressed as though a ghost were playing).  This was actually kind of interesting.&lt;/p&gt;
&lt;p&gt;Again, I have to discount the fact that I have always been a big fan of Joshua Bell.&lt;/p&gt;
&lt;p&gt;I can definitely do without the ghostly piano action. I have no interest whatsoever in ever attending a concert where I see a piano being &quot;played&quot; mechanically, even if reproduced from an actual recording by Rachmaninoff himself. I say this even though I had no problem listening to piano rolls from Rachmaninoff or Mahler or others; they were just another form of audio recording. &lt;strong&gt;There is a difference between the musical experience I am willing to accept when just listening to audio at home and what I am willing to accept when being physically at a concert or watching a video.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Suppose I were just hearing Bell playing &quot;with&quot; Rachmaninoff, not seeing the video. I tried that. It was pretty good. Note that this music really is inherently a duet for piano and violin. So Bell simply filled in where &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.zenph.com/the-music/artists/rachmaninoff-plays-rachmaninoff/joshua-bell-at-home-with-friends&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.zenph.com/the-music/artists/rachmaninoff-plays-rachmaninoff/joshua-bell-at-home-with-friends&quot;&amp;gt;Fritz Kreisler had originally played with Rachmaninoff&amp;lt;/span&amp;gt;. And I think he played very much with an awareness of the piano part and blending musically with it. The only difference from a real duet is that there was no pianist reacting in turn to Bell&apos;s playing. Ideally in a duet you&apos;d have a give and take, while here there is a fixed accompaniment to the violin. I give credit to Bell for being &quot;respectful&quot; and making the most of this constraint.&lt;/p&gt;
&lt;h3&gt;Extra-musical considerations&lt;/h3&gt;
&lt;p&gt;Here&apos;s where extra-musical factors can affect our evaluation. I suppose I think that the live audience at Bell&apos;s concert missed out, because some living pianist could have been there playing with Bell and being appreciated, rather than the ghost of Rachmaninoff. The dead have already done their music-making; let the living have their say.&lt;/p&gt;
&lt;p&gt;Meanwhile, we cannot pretend that anything outside of being present at a live performance is &quot;pure&quot;. In particular, we know that audio recordings since the dawn of time have involved takes, edits, filtering, overdubbing. An audio recording is its own artifact, whether its the backwards sitars and other effects famously used by the Beatles, or Glenn Gould duplicating segments for repeats and manipulating the sound he wanted to hear back from the recording. We cannot be naive about these things. We accept that films are fiction, and that photos are retouched.&lt;/p&gt;
&lt;p&gt;If one really believes in pure, unmediated musical experience, there is only one option: get off the iPod or iTunes or whatever other devices or software, leave the living room, and check out the local music ensembles. Even better, join or form one and participate as a performer! I think it is regrettable that technology has turned music into an abstract commodity rather than a living, participatory activity for everyone. Our society has deemed it necessary for everyone to develop basic competence in reading, writing, and arithmetic; we do not require everyone to be an expert at any of these. Why do we not also expect basic musical competence?&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Duets with dead musicians do not really appeal to me, but there are degrees of unpleasantness or weirdness. And the artifice is not all that different from other technological manipulations we already take for granted or choose to ignore.&lt;/p&gt;
</content:encoded></item><item><title>My PowerBook 145B</title><link>https://franklinchen.com/blog/2011/11/14/my-powerbook-145b/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/14/my-powerbook-145b/</guid><pubDate>Mon, 14 Nov 2011 20:51:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m not sure what to do with my old Apple Macintosh &lt;a href=&quot;https://en.wikipedia.org/wiki/PowerBook_140#PowerBook_145B&quot;&gt;PowerBook 145B&lt;/a&gt; laptop. It still boots, but is obviously not of much use to me any more.&lt;/p&gt;
&lt;p&gt;Here it is booting &lt;a href=&quot;https://en.wikipedia.org/wiki/System_7&quot;&gt;System 7&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/powerbook-145b/booting-system-7.jpg&quot; alt=&quot;PowerBook 145B booting System 7&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The machine had crashed years ago before I booted it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/powerbook-145b/last-crashed.jpg&quot; alt=&quot;PowerBook 145B booting after crash&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, boot is complete:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/powerbook-145b/finder.jpg&quot; alt=&quot;PowerBook 145B up in System 7 Finder&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some personal history and observations:&lt;/p&gt;
&lt;p&gt;This PowerBook 145B was the second laptop I owned; the first was a &lt;a href=&quot;https://en.wikipedia.org/wiki/PowerBook_Duo&quot;&gt;PowerBook Duo&lt;/a&gt; that I bought used, found problematic, and sold. I also bought the 145B used. I didn&apos;t splurge and buy a new Mac till the &lt;a href=&quot;https://en.wikipedia.org/wiki/Power_Macintosh_6100&quot;&gt;Power Macintosh 6100&lt;/a&gt; in 1995.&lt;/p&gt;
&lt;p&gt;With only 2 MB (that&apos;s no typo; these days computers come with &lt;em&gt;one thousand times&lt;/em&gt; as much RAM, more like 2 GB typically), it was necessary to monitor memory usage and quit unused applications. It was a mistake upgrading to System 7.5 on this machine, I have to admit. And with a 40 MB hard drive, I was always having to put stuff onto floppies. I bought software like RAM Doubler and Disk Doubler and Speed Doubler, but they were obviously not a panacea.&lt;/p&gt;
&lt;p&gt;Still, I got stuff done with this laptop.&lt;/p&gt;
&lt;p&gt;Eventually, the battery refused to hold any more real charge, and since the adapter connection got flaky, that is why the last time I used the laptop, it suddenly just lost power and shut down uncleanly.&lt;/p&gt;
&lt;p&gt;I already threw away all my floppies years ago, and there is no network card for the laptop, so it really is useless now. I have a cute ADB-based 28.8k modem that I used with the laptop for many years. I even browsed the Web, having &lt;a href=&quot;https://en.wikipedia.org/wiki/Mosaic_%28web_browser%29&quot;&gt;Mosaic&lt;/a&gt; installed, although I preferred using &lt;a href=&quot;https://en.wikipedia.org/wiki/MacWeb&quot;&gt;MacWeb&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I haven&apos;t seriously used this laptop since 1998, when I was still taking it with me on travel.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;My PowerBook 145B is such a museum piece now. What should I do with it? Wipe the hard drive and donate it somewhere, or keep around myself to amuse the millennial generation who are now babies playing with iPads?&lt;/p&gt;
</content:encoded></item><item><title>Back to piano too</title><link>https://franklinchen.com/blog/2011/11/13/back-to-piano-too/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/13/back-to-piano-too/</guid><pubDate>Sun, 13 Nov 2011 20:14:00 GMT</pubDate><content:encoded>&lt;p&gt;Just a couple of days ago, I started &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;playing flute again&lt;/a&gt;, after an absence of decades. To get going again, I&apos;ve been working through &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.musicminusone.com/used-play-flute-innovative-method-adults-returning-play-p-60414222.html&quot;&amp;gt;I Used to Play Flute&amp;lt;/span&amp;gt; picked up from the library (it comes with a nice play-along CD of mp3 tracks). Of course, now that I&apos;m not just an unenthusiastic kid in school, I should also get systematic on technique, as I have tried to be on &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Guess what? Today, I started picking back up on piano as well. I have a digital piano that I bought in 1998 that has not seen much use in the past half decade:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/yamaha-digital-piano.jpg&quot; alt=&quot;Yamaha digital piano&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve mentioned &lt;a href=&quot;/blog/2011/11/09/taking-up-flute-again-after-decades/&quot;&gt;previously playing around with piano&lt;/a&gt;. I will try to get real on piano too, now that I&apos;m old enough to figure out how to maximize use of infamous Czerny and Hanon technical exercises. Meanwhile, I picked up from the library a seemingly highly-rated &lt;a href=&quot;https://www.alfred.com/AlfredPiano/PianoMethods&quot;&gt;&lt;em&gt;Alfred Basic Adult Piano Course&lt;/em&gt;&lt;/a&gt;, which also comes with a CD (which, by the way, is absolutely horrid: soulless metronomic synthesized utter crap that doesn&apos;t even belong in a mall).&lt;/p&gt;
&lt;p&gt;With these two new musical instruments back in my life, I face a dilemma.&lt;/p&gt;
&lt;h2&gt;Time constraints&lt;/h2&gt;
&lt;p&gt;The problem is, I obviously don&apos;t have the time to spend on &lt;em&gt;all&lt;/em&gt; of these instruments at once. For example, today I simply skipped my usual recorder practice. I am not happy about breaking my plan (set in February) to practice recorder every day if possible. But that plan was created when I was not touching any other instruments. I suppose I could create a rotating schedule for working on the various instruments I want to get better at, just as when I was in school, I would rotate studying different subjects.&lt;/p&gt;
&lt;h2&gt;Synergy?&lt;/h2&gt;
&lt;p&gt;Sometimes I have the fear that doing too many things spreads me thin and I won&apos;t get really good at one particular thing. Other times, I judge that there are opportunities for synergy, where doing multiple things results in doing each one better than I could have done individually. That&apos;s because no activity exists in a vacuum. As Abby put it to me today when I was discussing with her my dilemma, there is &quot;cross-training&quot;, so to speak.&lt;/p&gt;
&lt;p&gt;For example, although the particulars of physical technique are different for every instrument, anything that strengthens any of the fingers comes in handy for any instrument. And of course, purely musical matters such as improving phrasing, breath, awareness of harmony can improve from working on any instrument.&lt;/p&gt;
&lt;p&gt;In addition, I am not a music professional anyway, so there never has been a goal of getting &quot;as good as possible&quot; on one particular instrument. Assuming some arbitrary scale of desired competence, I&apos;d rather be at 90% on three instruments than 95% on one.&lt;/p&gt;
&lt;h3&gt;Recorders example&lt;/h3&gt;
&lt;p&gt;I did find, in the past months, that playing the soprano, tenor, and bass recorders, beyond just the alto, helped me play the alto better. It came as something of a surprise to me, actually. It hadn&apos;t been my intention to &quot;cross-train&quot;. I was originally simply trying to become a more versatile ensemble player.&lt;/p&gt;
&lt;p&gt;For example, since the soprano is lighter and smaller, when I am playing it, I can devote more attention to breath and tone control, which is harder on soprano than on alto, and therefore when I return to alto, I have benefited from doing something harder on a different instrument.&lt;/p&gt;
&lt;p&gt;Similarly, since the tenor is so big and forces me to stretch my fingers and be very efficient with finger movement, I found that playing the tenor made the alto seem much lighter and smaller to me. Also, it requires more breath, and therefore develops my breathing awareness and lung capacity.&lt;/p&gt;
&lt;p&gt;I&apos;m not entirely sure what transfers from playing the bass, since I haven&apos;t played that as much, and it also differs in important ways from the other recorders. It is heavy enough to require a thumb rest and a neck strap; to be frank, I am still not comfortable with the bass. Also, it has keys, and so the finger control required is far less. I suppose the most interesting thing is the breath required, and also a certain kind of control because of the delay in making the bass speak. Articulation has to change considerably in order to enable the bass to not get bogged down.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Too many instruments, too little time, but I am very happy to be getting more and more into playing music. It is so personally fulfilling to me. I do need to be efficient in my goals and practice.&lt;/p&gt;
</content:encoded></item><item><title>Starting a mini Digital Sabbath</title><link>https://franklinchen.com/blog/2011/11/12/starting-a-mini-digital-sabbath/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/12/starting-a-mini-digital-sabbath/</guid><pubDate>Sat, 12 Nov 2011 09:52:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been writing at least one blog post a day now for 42 days. I had started the blog bent on making it a real habit to maintain, and felt that forcing myself to write and upload every single day was necessary to keep the momentum going. I&apos;m sure I was right, but now that I am confident in my self-discipline to maintain regularity, I am going to relax the arbitrary rule I set for myself, and start observing a mini Digital Sabbath in which I take a day off every week from blogging. I&apos;m starting today (considering this little note as equivalent to taking a break).&lt;/p&gt;
&lt;p&gt;Do you observe or considered observing your own Digital Sabbath in this busy, 24/7 world?&lt;/p&gt;
</content:encoded></item><item><title>On not reading concert program notes</title><link>https://franklinchen.com/blog/2011/11/11/on-not-reading-concert-program-notes/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/11/on-not-reading-concert-program-notes/</guid><pubDate>Fri, 11 Nov 2011 23:06:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a confession to make. When attending a music concert or dance performance, I never really look at the program notes they pass out. Furthermore, I feel sufficiently guilty that I always take the printout or brochure home, &quot;just in case&quot; I feel like actually sitting down and reading it. I never do. Several years ago I finally took a whole box of Pittsburgh Symphony Orchestra programs and recycled them, never having ever read any of them.&lt;/p&gt;
&lt;p&gt;Also, when I check out a CD or DVD from the library, I don&apos;t really look at the liner notes either.&lt;/p&gt;
&lt;p&gt;What&apos;s going on? And should I feel guilty? And what should I make of tonight&apos;s dance performance Abby and I &quot;accidentally&quot; ended up watching because we didn&apos;t know the full program up front?&lt;/p&gt;
&lt;h2&gt;Last Saturday&apos;s concert by &lt;a href=&quot;https://www.sonialeemusic.com/&quot;&gt;Sonia Lee&lt;/a&gt; and &lt;a href=&quot;https://www.cs.cmu.edu/~rbocchin/&quot;&gt;Robert Bocchino&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The last set of program notes I have on hand are from last Saturday&apos;s concert, part of the Aspinwall Presbyterian Performing Arts Series, with Sonia playing the harpsichord and Rob playing the baroque violin in one of the works. It was a nice little concert I heard about through the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local recorder society&lt;/a&gt;. I know Rob from our playing recorder together in the group, and met his wife Sonia through him.&lt;/p&gt;
&lt;h3&gt;Choosing to go&lt;/h3&gt;
&lt;p&gt;Before the concert, I had a decent idea of what kind of music was going to be played: harpsichord and baroque violin mean, well, some kind of early music. To tell the truth, I don&apos;t even remember if I ever carefully read the email announcement about the concert, other than who was playing and where and when! My thought wasn&apos;t about specific pieces of music to expect, but was just, &quot;Hey, I haven&apos;t heard Sonia play harpsichord except briefly at that one potluck dinner at Helen&apos;s, and I haven&apos;t yet heard Rob play baroque violin yet, and I&apos;m not all that familiar with Renaissance or Baroque music (yet), so I&apos;m in!&quot;&lt;/p&gt;
&lt;h3&gt;Sitting down, eyes glazed over&lt;/h3&gt;
&lt;p&gt;The pattern is always the same. I get to the location of the concert, there are only minutes before it is to start, I sit down, I have a couple of pages of text handed to me by someone when I entered, and the last thing I feel like doing is &lt;em&gt;reading&lt;/em&gt;. I&apos;m here to &lt;em&gt;listen&lt;/em&gt;, and secondarily, to &lt;em&gt;watch&lt;/em&gt;, not to read. It&apos;s like, the &lt;em&gt;reading&lt;/em&gt; part of my brain wants to shut down for a while. I spend the vast majority of my life reading. I like getting a real break!&lt;/p&gt;
&lt;h4&gt;Program outline&lt;/h4&gt;
&lt;p&gt;What&apos;s the information I have in my hand? Names of composers and pieces, with movement names, years of composer&apos;s birth and death, year of composition. Doesn&apos;t mean much to me. Either I already know the composer or piece, in which it is superfluous, or I don&apos;t know, in which case the information is practically meaningless to me. Who the heck is Gaspard Le Roux? Do I really care? And what does &quot;Sonatina No. 8 in A minor&quot; really mean to me? It means a certain form in a certain key, but other than that, not much. I am, of course, grateful to get this outline of the concert. It&apos;s good to have a rough idea of time period, how long each piece might be, when to clap, when intermission happens, etc. Still, I find myself sometimes guiltily distracted by this piece of paper. Am I going to make noise while trying to glance at it during performance. Is it going to fall on the floor? Can I keep it open?&lt;/p&gt;
&lt;p&gt;I see Mike (one of our recorder gang who also came to the concert) scribbling on his outline. Ah, taking notes? I&apos;ve done that before. I&apos;m too lazy to do it this time, although I have observations about the acoustics in this church, matters of interpretation by Sonia and Rob, etc. Just too lazy this particular evening. In fact, I spend most of the concert with my eyes &lt;em&gt;closed&lt;/em&gt;, my preferred method for listening to music. I don&apos;t really need to see anything when at a concert. It just distracts me. Rob is doing something funny with his neck; do I really need to see or think about that (after the concert, he says it&apos;s something because of how the baroque violin is held, and without a neck rest).&lt;/p&gt;
&lt;h4&gt;Program notes&lt;/h4&gt;
&lt;p&gt;Trying to read the program notes before the concert and at intermission, I just get tired and nervous. I feel like I should digest this information and somehow have it enhance my listening experience. But it doesn&apos;t. In fact, I think it never does. I feel guilty about being ignorant. Poor Gaspard Le Roux: what would he think if he knew? Oh wait, he&apos;s dead, and doesn&apos;t know. And probably he wouldn&apos;t care either. He&apos;d probably be excited that hundreds of years after his death, someone out there is playing his music, and people are listening!  His &quot;elegant Courante demonstrates rhythmic variety, including the use of hemiolas at cadential points.&quot; Oops, was I supposed to wait breathlessly to notice the hemiolas and congratulate myself? Oops, I only read that now, so I don&apos;t even remember the hemiolas? Did I miss them? Does it matter if I did? I can&apos;t hear every single interesting musical device in my first listening of random music. Heck, I can&apos;t hear everything in recorded music I have listened to a dozen times! I suppose I feel annoyed that program notes make me think I&apos;m missing something.&lt;/p&gt;
&lt;p&gt;Also, the long biographies of the performers. I know marketing is vital to a performer, but personally, when I go to a concert, I don&apos;t really need to know a performer&apos;s long distinguished record of performance and scholarship. (That also goes for attending academic lectures and seminars, usually prefaced by some kind of long list of awards the speaker has received.) It&apos;s up to my ears, not text on a page, to determine whether I enjoy the performance.&lt;/p&gt;
&lt;h2&gt;Tonight&apos;s recorder concert, plus an unintended dance performance &quot;bonus&quot;&lt;/h2&gt;
&lt;p&gt;Fast forward to tonight, when Abby and I went to the Convention Center to attend a free concert, &lt;a href=&quot;https://web.archive.org/web/20110727171146/http://www.aosa.org/pittsburgh/wanderings.html&quot;&gt;&quot;Wanderings&quot;&lt;/a&gt;, that was mentioned on the recorder mailing list. The concert, free to the public, started at 7:45 PM, and was part of some big multi-day conference of the American Orff-Schulwerk Association. I still don&apos;t know exactly what that is (yes, I know, I could explore the web site and read it, and maybe I will eventually). I was just going for the free concert, which featured a recorder player, Nina Stern, with a percussionist Peter Maund. I was excited to go because this was the first time I&apos;ve ever seen a professional recorder player, and so I wanted to know what a famous pro sounds like, and make note of how I can sound better myself!&lt;/p&gt;
&lt;p&gt;It was a nice concert. The place was packed, because after all, this was part of a big conference.&lt;/p&gt;
&lt;h3&gt;No detailed program or program notes&lt;/h3&gt;
&lt;p&gt;Possibly because the actual participants of the conference had their own packet of information already, Abby and I didn&apos;t get any program or program notes. That was fine with me. All I really needed to know was, a famous recorder player was there, and &quot;will take you on a musical voyage from Medieval Italy to Armenia, from the Balkans to the Middle East, performing ancient melodies, vibrant estampies from the 14th century and traditional dances from Bulgaria and Serbia.&quot; Enough detail for me.&lt;/p&gt;
&lt;p&gt;As it turned out, Nina did say a few words about each set of pieces they performed, either before or after performing it. &lt;strong&gt;I love this format.&lt;/strong&gt; Much better than wasting time typing up stuff or copying and pasting impersonal text. I enjoy hearing the information very close to listening to the music, thereby making it memorable to relate to. And it adds a personal touch, because I get to hear her speak, and not just appear on stage and play music and walk off without saying a word. That&apos;s always bizarre to me. I like to know a real human being is up there.&lt;/p&gt;
&lt;p&gt;No pieces of paper or brochure. Just the way I like it.&lt;/p&gt;
&lt;p&gt;Abby and I would have liked it even more if Nina and Peter had told us exactly which instruments they were playing, because they kept swapping them out. Myself, I was carefully trying to determine which recorders she was playing (she played around four different ones). I could not see very well from where we were sitting, so I could only determine from sound and length that she played tenor, alto, and soprano, but I would have liked to know something about their construction also (a few words would have been enough).&lt;/p&gt;
&lt;h3&gt;Totally bizarre dance performance by Das Collectif&lt;/h3&gt;
&lt;p&gt;Now we get to the really weird stuff.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.aosa.org/011conference/images/Das-Collectif-web.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.aosa.org/011conference/images/Das-Collectif-web.jpg&quot;&amp;gt;[image: Das Collectif]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Because I didn&apos;t know the full program for the evening, only having seen the announcement of the &quot;Wanderings&quot; recorder concert, I hadn&apos;t known that after the intermission, there was going to be a one-hour long modern dance performance by a group called &quot;Das Collectif&quot; from Austria. So when Abby and I sat down, we assumed there was going to be more music, not that the recorder concert was over and something completely different was going to come. If I had checked the time, I would have known, but I didn&apos;t. The announcement for the recorder concert did say 7:45 to 8:45. Well, what happened was we sat down, and &quot;Das Collectif&quot; came on stage, as scheduled, to perform &lt;a href=&quot;https://web.archive.org/web/20110727171122/http://www.aosa.org/pittsburgh/das_collectif.html&quot;&gt;&quot;Stomping La Luna&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Example text from the description: &quot;Gradually the light wakes up the dead and a mysterious, eerie activity of the revived corpses sets in. They start fighting, gambling and enjoying the moment of their regained lives. They search for forms of communication and discover each other. In dynamic, spacious movements they are showing their undisguised emotions. The night covers up what is forbidden, the light shows what is hidden.&quot;&lt;/p&gt;
&lt;p&gt;Years ago I used to watch dance of all sorts, from ballet to jazz, modern, tap, ballroom, so seeing weird stuff doesn&apos;t faze me. But it had been a while, so &quot;Stomping La Luna&quot; was quite strange. The demands on the dancers were quite considerable during the full hour: rolling around, bending, twitching, reciting text, singing and humming (often in lovely harmony), playing percussion instruments (including their own bodies and the floor), and even a violin solo.&lt;/p&gt;
&lt;p&gt;On the web site there is a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.aosa.org/011conference/documents/Suites-des-scenes.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.aosa.org/011conference/documents/Suites-des-scenes.pdf&quot;&amp;gt;program&amp;lt;/span&amp;gt; for &quot;Stomping La Luna&quot;. I just looked at it. It wouldn&apos;t really have helped to have seen it.&lt;/p&gt;
&lt;p&gt;I have to be honest: if I had seen the description of &quot;Stomping La Luna&quot;, I would have planned to leave after the recorder concert. But having it foisted on me by surprise, I had to see it through to find out how it would end! It was entertaining enough, although totally bizarre. Not something I would deliberately attend.&lt;/p&gt;
&lt;h4&gt;(Update of 2014-04-27)&lt;/h4&gt;
&lt;p&gt;Over two years later, one day, for some reason, I was thinking about &quot;Stomping La Luna&quot;, so I looked online to refresh my memory, and I found a video of excerpts:&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/gF7oxiKVjv8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Not&lt;/em&gt; reading program outlines or program notes can lead to more discoveries, more attention, more surprises: living in the moment rather than trying to match up someone&apos;s description of a concert or dance performance with the real thing.&lt;/p&gt;
&lt;p&gt;Embracing the unexpected can be easier if one does not have prior warning of weird it might be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you like to read program notes for a concert or other performance event? Do you find them useful in improving your enjoyment of the program? Or do you prefer, as I do, to let go of reading anything, and just deliberately get surprised by something completely new, without preconceptions or prior knowledge?&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seeing the inventor of the abstract data type</title><link>https://franklinchen.com/blog/2011/11/10/seeing-the-inventor-of-the-abstract-data-type/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/10/seeing-the-inventor-of-the-abstract-data-type/</guid><pubDate>Thu, 10 Nov 2011 18:54:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Important update added to the end of this post.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/liskov/power-of-abstraction.jpg&quot; alt=&quot;Barbara Liskov accepting Katayanagi Prize at CMU&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://events.web.cmu.edu/ecal/event/131972213534041859&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://events.web.cmu.edu/ecal/event/131972213534041859&quot;&amp;gt;Today at CMU&amp;lt;/span&amp;gt;, I finally had the opportunity to see a living legend, &lt;a href=&quot;https://en.wikipedia.org/wiki/Barbara_Liskov&quot;&gt;Barbara Liskov&lt;/a&gt;, computer science professor at MIT and winner of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_Award&quot;&gt;Turing Award&lt;/a&gt; in 2008. She won it largely for her invention of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Abstract_data_type&quot;&gt;abstract data type&lt;/a&gt;, a concept that is so foundational in modern software development that a programmer ignorant of history is likely to react, &quot;What, she got a Turing Award for something so obvious?&quot;&lt;/p&gt;
&lt;p&gt;But that&apos;s the beauty of computer science: it is such a young field that many of the ideas we take for granted now were &lt;em&gt;not&lt;/em&gt; so obvious decades ago, and had to be discovered and codified and explained.&lt;/p&gt;
&lt;p&gt;I had to leave Liskov&apos;s talk right after she was done (it had already run over time), so I missed the question-and-answer session, unfortunately. I had been considering asking some questions, but since I lost that opportunity, I will pose them here instead.&lt;/p&gt;
&lt;h2&gt;The invention of the abstract data type&lt;/h2&gt;
&lt;p&gt;Basically, Liskov formalized the notion of the abstract data type (ADT) while at MIT in the early 1970s, and with some graduate students implemented ADTs as a fundamental construct in an actual programming language, &lt;a href=&quot;https://en.wikipedia.org/wiki/CLU_(programming_language)&quot;&gt;CLU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Most of you probably haven&apos;t heard of CLU, unless you went to &lt;a href=&quot;https://web.archive.org/web/20251201022443/http://pmg.csail.mit.edu/CLU.html&quot;&gt;MIT&lt;/a&gt; where it&apos;s been used for ages in courses. I only know about CLU because a long time ago, I had an MIT friend who mentioned CLU when I was asking him &lt;a href=&quot;/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/&quot;&gt;what to learn to become a programmer&lt;/a&gt;. I never actually wrote or ran a program in CLU, although I did take a look at the language. Some features of CLU (recall that it was developed in the early 1970s):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;modules (called &quot;clusters&quot;)&lt;/li&gt;
&lt;li&gt;information hiding&lt;/li&gt;
&lt;li&gt;static typing, including what are now called generics&lt;/li&gt;
&lt;li&gt;iterators (what we now usually call &lt;a href=&quot;https://en.wikipedia.org/wiki/Generator_%28computer_science%29&quot;&gt;generators&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;exception handling&lt;/li&gt;
&lt;li&gt;garbage collection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think about it. Java, developed &lt;em&gt;two decades&lt;/em&gt; after CLU, didn&apos;t even have generics. And it does not have true iterators.&lt;/p&gt;
&lt;h3&gt;A tangent on technology adoption&lt;/h3&gt;
&lt;p&gt;If you are in industry, a lesson to take away is that there is probably computer science research in academia &lt;em&gt;right now&lt;/em&gt; that is useful but you won&apos;t be using for twenty or thirty years.&lt;/p&gt;
&lt;p&gt;If you are in academia, you might want to consider helping get good technology out the door before industry wastes two or three decades flailing around using inferior or broken ideas. (In fact, Liskov in her talk today noted that she had considered commercializing CLU.)&lt;/p&gt;
&lt;h3&gt;Influence on other languages&lt;/h3&gt;
&lt;p&gt;Liskov chose in her initial work to focus on data abstraction, rather than unify that with object-orientation, which had begun being implemented in the 1960s by &lt;a href=&quot;https://en.wikipedia.org/wiki/Simula&quot;&gt;Simula&lt;/a&gt;, but later contributed to the understanding of &lt;a href=&quot;https://en.wikipedia.org/wiki/Liskov_substitution_principle&quot;&gt;subtyping&lt;/a&gt; in object-oriented languages.&lt;/p&gt;
&lt;p&gt;C++ took templates and exceptions from CLU. (Java, of course, took them from C++.)&lt;/p&gt;
&lt;p&gt;Python, Ruby and other newer languages include iterators. To clarify: C++ and Java have &quot;iterators&quot; of a much different variety, which are just ordinary objects that have been implemented in often a convoluted way to maintain state for iterating through another object. The &quot;real&quot; iterators operate in conjunction with a special language construct usually called &lt;code&gt;yield&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Questions I have&lt;/h2&gt;
&lt;p&gt;The world is globalized and connected now much more than it was back in the 1970s. So sometimes I wonder, what if it had been more connected in the past?&lt;/p&gt;
&lt;h3&gt;The C world&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/C_(programming_language)&quot;&gt;C&lt;/a&gt; was developed between 1969 and 1973.  &lt;a href=&quot;/blog/2011/10/13/why-dennis-ritchie-is-important/&quot;&gt;Dennis Ritchie&lt;/a&gt; wrote a little article, &lt;a href=&quot;https://www.bell-labs.com/usr/dmr/www/chist.html&quot;&gt;&quot;The Development of the C Language&quot;&lt;/a&gt;, in which he acknowledged the debt to Fortran and Algol. However, its goal as a low-level language for implementing Unix meant that it cut various corners. I wonder if the history of computing would have been different had there been more attention paid, even in the constrained context of Unix implementation, to interesting academic work. I don&apos;t know what Ritchie and Thompson and others knew, if anything, about the work on modularity, types, etc. Maybe they knew, but didn&apos;t care because they were building something just for themselves and they were such good programmers they didn&apos;t need any help writing great code. It would be interesting, as a matter of historical record, to know who knew what and thought what, when.&lt;/p&gt;
&lt;h3&gt;The functional programming world&lt;/h3&gt;
&lt;p&gt;Absent from Liskov&apos;s talk was any mention of the functional programming world.  &lt;a href=&quot;https://en.wikipedia.org/wiki/ML_programming_language&quot;&gt;ML&lt;/a&gt; came on the scene also in the 1970s. Later, &lt;a href=&quot;https://en.wikipedia.org/wiki/Standard_ML&quot;&gt;Standard ML&lt;/a&gt; came along. I don&apos;t know the details of the exact chronology, but Standard ML had polymorphism and exceptions right off the bat, and a module system added on top of that.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Liskov&apos;s talk involved a lot of tracing of the history of ideas that led to her contributions.&lt;/p&gt;
&lt;p&gt;I am very curious about what influenced what, in the entire space of the history of programming languages. Obviously, a lot of ideas were floating around in the 1960s, 1970s, and 1980s, so it&apos;s possible that many programming language features were invented independently from the same pool of rough ideas.&lt;/p&gt;
&lt;p&gt;Sometimes I wonder whether continual reinvention could be minimized, by more sharing and awareness. Even today there is a proliferation of languages, many of which were or are invented by some individual who is not aware of the full history or rigorous achievements in the area of programming language semantics or design, and therefore perpetuate problems that for decades already we have known to avoid. I wonder if this situation is really inevitable.&lt;/p&gt;
&lt;p&gt;Of course, the question might be moot, because it is always possible that human beings will simply make radically different choices, even when they are fully aware of all the ideas that are around at any given time.&lt;/p&gt;
&lt;p&gt;What&apos;s the next step? What will we using doing twenty years from now that is currently already brewing in a university or other research lab &lt;em&gt;right now&lt;/em&gt;? From my point of view, the most interesting work being done right now is that focused on going beyond the currently most powerful statically typed languages (such as ML, Haskell, Scala) to &lt;a href=&quot;https://en.wikipedia.org/wiki/Dependent_type&quot;&gt;dependently typed languages&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update)&lt;/h2&gt;
&lt;p&gt;I have been told that it is misleading to describe Liskov as &quot;the inventor of the abstract data type&quot;. I admit this was a terrible title for my talk report. The content of my report should make it clear that I was baffled by Liskov&apos;s omission of entire lines of research from the 1970s that address data abstraction, whether through ML or John Reynolds&apos; work. See &lt;a href=&quot;/blog/2011/11/10/seeing-the-inventor-of-the-abstract-data-type/#comment-361232515&quot;&gt;Bob Harper&apos;s Disqus comment here&lt;/a&gt; for his own elaborations.&lt;/p&gt;
</content:encoded></item><item><title>Taking up flute again after decades?!</title><link>https://franklinchen.com/blog/2011/11/09/taking-up-flute-again-after-decades/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/09/taking-up-flute-again-after-decades/</guid><pubDate>Wed, 09 Nov 2011 20:08:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/franklins-flute.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tonight, on a whim, I decided to try out my flute yet again.  Every couple of months for several years now I have pulled it out to see if I might want to start playing it again.  Each time, I encountered serious problems with producing a decent sound at all, and thought that maybe I wasn&apos;t meant to play the flute, because the embouchure is such a problem.&lt;/p&gt;
&lt;p&gt;Interestingly, for the first time in several years, I found that maybe I can get back into playing flute.&lt;/p&gt;
&lt;p&gt;This possibility pleases me, because the story of me and flutes goes back decades, and is actually rather sad but perhaps instructive.&lt;/p&gt;
&lt;h2&gt;Elementary school&lt;/h2&gt;
&lt;p&gt;The story starts in the last year of elementary school, 5th grade, when a bunch of us students were given the opportunity to choose and start playing a musical instrument. I can still remember Mr. Peters, the music teacher, asking each of us individually what we wanted to play.&lt;/p&gt;
&lt;p&gt;At this time in my life (ten years old), I had received minimal musical instruction so far. I did not grow up in a sufficiently privileged family to receive formal musical lessons, and in fact had never even touched or seen in real life any other musical instrument than the upright piano we just got at home because my mother and younger sister wanted one. I did not listen to any music, had never gone to any kind of musical concert or event before, etc.&lt;/p&gt;
&lt;p&gt;I&apos;d asked my mother earlier what I should ask Mr. Peters to play, so I was ready to answer him.&lt;/p&gt;
&lt;p&gt;I timidly asked, &quot;Piano?&quot; Mr. Peters smiled and said, no, that&apos;s not something available in the music program. I then asked, &quot;Violin?&quot; Again, no. I was getting really embarrassed now, because I didn&apos;t even know what a violin was: I&apos;d never heard one or seen one, but it was a word planted in my head by my mother! (Only many years later did I find out that all Asian kids are supposed to play piano or violin.) Finally, I said, &quot;Flute?&quot; Yes, flute was an option.&lt;/p&gt;
&lt;p&gt;So that&apos;s how I started out on flute. I had never encountered a flute before. It was just a word to me. To this day I don&apos;t know why my mother had this instrument in her mind.&lt;/p&gt;
&lt;h3&gt;Renting an instrument&lt;/h3&gt;
&lt;p&gt;Most of my classmates and I ended up renting instruments through the school. My father was not at all interested in my playing music and only because my mother thought I should learn a musical instrument did he cough up the cash to rent a flute for me.&lt;/p&gt;
&lt;p&gt;I didn&apos;t particularly like the flute, but I did enjoy getting started playing it. Mostly, I enjoyed the new social group I had: those of use who started on an instrument would gather and learn to play together. That was new to me, and fun.&lt;/p&gt;
&lt;h3&gt;Practice&lt;/h3&gt;
&lt;p&gt;However, I did not like practicing. I &lt;em&gt;hated&lt;/em&gt; it. Worse, we were given time sheets to fill out indicating how much time we spent practicing at home every day, and have that signed by our parents as witnesses. Well, I wasn&apos;t practicing enough, and got scolded by Mr. Peters. I started lying or padding my estimate of how much time I practiced (I still remember writing in &quot;30&quot; for minutes practiced inside little boxes). What did my father know anyway about what happened when I supposed got started practicing at home and then ended half an hour later?&lt;/p&gt;
&lt;h2&gt;Middle school&lt;/h2&gt;
&lt;p&gt;When middle school began, I took 6th grade band. Band ended up being the basis of my social life as it was. I still wasn&apos;t really practicing flute. Furthermore, I had come to &lt;em&gt;hate&lt;/em&gt; flute.&lt;/p&gt;
&lt;h3&gt;Bad instrument&lt;/h3&gt;
&lt;p&gt;One thing that happened was that flute rental was over, and I had my father buy me a flute. Of course, he bought a totally beat up piece of crap from some garage sale or something somewhere. It was a horrible instrument. The pads got sticky, the mouthpiece was bent, and it was just no fun to play, it was hard to make a good sound out of it, and I knew it was a lot worse than my elementary school rental.&lt;/p&gt;
&lt;p&gt;I used that flute for another two years before I stopped playing it, forever.&lt;/p&gt;
&lt;h3&gt;Girly instrument&lt;/h3&gt;
&lt;p&gt;Another thing that happened was that most of the other kids playing flute was girls. Oops, I had ended up with a girly instrument! This was not a trivial matter, given that puberty was starting to kick in, along with a lot of social awareness and anxiety that I never had in elementary school.&lt;/p&gt;
&lt;h3&gt;The instrument I really wanted to play&lt;/h3&gt;
&lt;p&gt;Also, finally being exposed to a whole bunch of different instruments, hearing them, especially hearing the really good kids, I realized that I really wanted to play the cornet (from which there was a clear path to trumpet).  I liked that the cornet/trumpet was prominent, loud, got the main melodies, everyone could hear it (not always the case with the flute parts!), and of course, it was &lt;em&gt;not&lt;/em&gt; girly (although, interestingly, a number of girls did play it and were really good at it, and I had a crush on all of them).&lt;/p&gt;
&lt;p&gt;Unfortunately, I knew there was no chance my parents would allow me to switch to trumpet. So all I did was dream about playing trumpet.&lt;/p&gt;
&lt;p&gt;So I played flute in the 6th grade, and then in the 7th grade.  I played without &lt;em&gt;any&lt;/em&gt; enjoyment of the flute during those two years. I did enjoy the social bonding from band, but that was basically it. Also, playing in band allowed one to place out of physical education (don&apos;t ask me why), and I dreaded gym class, so I stuck to music to get out of gym (a big mistake, in retrospect).&lt;/p&gt;
&lt;h2&gt;High school&lt;/h2&gt;
&lt;h3&gt;9th grade&lt;/h3&gt;
&lt;p&gt;I skipped the 8th grade of middle school (for reasons beyond the scope of this blog post), and started the 9th grade of high school. Again, I took band in order to avoid gym. It was a miserable experience. Not only did I have to wake up super early to have my mother drive me to marching band practice at 5 AM before school classes started at 7 AM, but also, as a young 9th grader I felt particularly out of place among students who were as much as four years older than me.&lt;/p&gt;
&lt;p&gt;Overall the 9th grade was a miserable part of my life, and band was just one part of that.&lt;/p&gt;
&lt;h3&gt;10th grade through 12th grade&lt;/h3&gt;
&lt;p&gt;After the 9th grade, because I threatened to drop out of school, the family moved to a different city and a different school after that, and I started 10th grade in a 10-12 high school.  Because of my miserable experiences with flute and with band, and the fact that there was no longer a gym exception for being in band, it never even occurred to me to look into joining a band at the new high school. Of course, that was perfectly OK with my father, who never liked my wasting my time on music anyway.&lt;/p&gt;
&lt;p&gt;This high school also had an orchestra, which I knew nothing about other than that it existed (remember, I had still never seen a violin in real life, upon reaching high school).&lt;/p&gt;
&lt;p&gt;The rest of high school was another miserable part of my life.&lt;/p&gt;
&lt;h2&gt;College&lt;/h2&gt;
&lt;p&gt;I fell in love with music all over again in college, because of a kind of accident. There was a requirement to take courses from a &quot;core curriculum&quot;, and first semester of freshman year, I randomly signed up for &quot;Piano Music of the 19th Century&quot;. It was a great class. Combined with making new friends who listened to classical music, I started listening to a lot of music. I also started trying to teach myself piano. In retrospect, I should have tried to get real instruction, but I knew that there was no parental support for my &quot;wasting my life&quot; on a new musical hobby.&lt;/p&gt;
&lt;h2&gt;Buying a new flute&lt;/h2&gt;
&lt;p&gt;Another decade or so after college, I got the idea that maybe I should try out flute again! After all, the adolescent days of thinking it was &quot;girly&quot; were over. The flute has still never been my favorite instrument to listen to, but I already had a head start on it, and various other instruments are more expensive to play.&lt;/p&gt;
&lt;p&gt;So I bought a brand new flute (the one pictured in this blog post). Unfortunately, I kept on having a hard time making decent sounds on it, until tonight.&lt;/p&gt;
&lt;h2&gt;Trumpet&lt;/h2&gt;
&lt;p&gt;Then I had the wild idea of finally realizing my childhood dream and learning trumpet. I bought a trumpet. I started practicing, but realized a couple of things.  One was that it is a &lt;em&gt;very loud&lt;/em&gt; instrument. I have neighbors and stuff. I got a mute.&lt;/p&gt;
&lt;p&gt;More seriously, I found the pressure on my lips unpleasant, and the pressure in general gave me a headache. Reluctantly, I concluded that it was not healthy for me to really play the trumpet, and put it aside. Recently, I &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;lent&lt;/a&gt; it to someone who is hopefully making more use of the instrument than I was.&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;Regarding taking up the flute again as a result of tonight: I already started playing a new musical instrument this year, the &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;, and I already spend an average of an hour a day practicing it.  (I also got started on &lt;a href=&quot;/categories/accordion/&quot;&gt;accordion&lt;/a&gt;, but have not had time so far to continue with it.) So it&apos;s unclear to me how much I can devote to restarting the flute. I&apos;d like to spend some time at least messing around in order to evaluate whether it&apos;s worth restarting. One nice thing about the flute is that it is very versatile and if I were to get competent at playing it, I could play it in more contexts than I can currently play the recorder in. I enjoy the recorder, but it has various limitations as an instrument (which is why in Bach&apos;s time the Baroque flute came to replace the use of the recorder, and then the modern flute was invented).&lt;/p&gt;
</content:encoded></item><item><title>I don&apos;t know if I should vote but I did</title><link>https://franklinchen.com/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/08/i-dont-know-if-i-should-vote-but-i-did/</guid><pubDate>Tue, 08 Nov 2011 09:09:00 GMT</pubDate><content:encoded>&lt;p&gt;I don&apos;t like politics, and I don&apos;t like voting. When I turned eighteen years old, I didn&apos;t celebrate by getting registered to vote and participating in the presidential election the very same year. The first time I ever voted, I was twenty-two. In recent years, I have been voting almost every chance I have.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/voter-receipt-2011.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why vote?&lt;/h2&gt;
&lt;p&gt;Overall, I don&apos;t know exactly why. I know all the arguments &lt;em&gt;for&lt;/em&gt; voting: it&apos;s my civic duty, I can&apos;t complain about what politicians do if I&apos;m not involved in selecting them, etc.&lt;/p&gt;
&lt;h2&gt;Why not vote?&lt;/h2&gt;
&lt;p&gt;I also know all the arguments &lt;em&gt;against&lt;/em&gt; voting: what difference do I make anyway (empirically, the vast proportion of the time, whenever I vote for someone, that person &lt;strong&gt;loses&lt;/strong&gt;), why should I vote for someone I find loathsome, why should I vote for someone who is going to do a lot of things I oppose, etc.&lt;/p&gt;
&lt;h2&gt;What is actually at stake?&lt;/h2&gt;
&lt;p&gt;In the end, it seems to me that what is at stake is often purely personal gratification. People like to feel good about themselves, by imagining that they are doing their civic duty or that they are &quot;sending a message&quot; by refusing to compromise.&lt;/p&gt;
&lt;h2&gt;Lesser evil&lt;/h2&gt;
&lt;p&gt;There is another perspective that I used to strongly dislike: voting as choosing a &quot;lesser evil&quot;. Once framing voting as an unpleasant task, with low expectations, it&apos;s easier to hold your nose and do it.&lt;/p&gt;
&lt;p&gt;Of course, there are arguments against &quot;lesser evilism&quot;: because the American political system is completely broken, captured by lobbyists, and unfriendly to third parties, choosing a lesser evil narrows debate and does nothing to encourage politicians to adopt alternative points of view outside the narrow bipartisan consensus.&lt;/p&gt;
&lt;p&gt;The argument for lesser evilism is that maybe on some issues, the other side has views and intentions that are considerably worse, maybe even &lt;em&gt;crazy&lt;/em&gt;, and it&apos;s worth doing everything possible to stop the other side. Hence, politicians love using negative ads in order to paint the other side as crazy.&lt;/p&gt;
&lt;p&gt;I try to avoid all exposure to robocalls and negative ads, because I tend to think that politicians who go out of their way to smear their opponents in filth are themselves the filthy ones I don&apos;t want to vote for, and therefore if I see too many ads, I end up not wanting to vote for anyone at all!&lt;/p&gt;
&lt;h2&gt;Local (Pittsburgh) referendum&lt;/h2&gt;
&lt;p&gt;Today&apos;s election I was going to turn up for, independent of all I have said above, because of the Carnegie Library &lt;a href=&quot;https://en.wikipedia.org/wiki/Referendum&quot;&gt;referendum&lt;/a&gt; on a 0.25 mill special tax on all taxable real estate in the City of Pittsburgh to be allocated and used only for the maintenance and operation of the Carnegie Library of Pittsburgh.&lt;/p&gt;
&lt;p&gt;There are lot of people who don&apos;t like referenda, because as a form of &lt;a href=&quot;https://en.wikipedia.org/wiki/Direct_democracy&quot;&gt;direct democracy&lt;/a&gt; it bypasses the overall framework of &lt;a href=&quot;https://en.wikipedia.org/wiki/Representative_democracy&quot;&gt;representative democracy&lt;/a&gt; in which we, the people, are supposed to elect politicians to decide matters for us, rather than act as a mob. The upsides and downsides of both forms of democracy are well-known (California&apos;s political system, incorporating both the representative process as well as its infamous &lt;a href=&quot;https://en.wikipedia.org/wiki/California_ballot_proposition&quot;&gt;ballot propositions&lt;/a&gt;, is completely broken).&lt;/p&gt;
&lt;p&gt;In the case of the Carnegie Library referendum, I&apos;ve heard a lot of very heated rhetoric on both sides of it. This time, at least, I appreciated the opportunity to have a say rather than depend on politicians to decide for me, because I feel strongly about the &lt;a href=&quot;/blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;importance of libraries&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-11-06)&lt;/h2&gt;
&lt;p&gt;The following year, I &lt;a href=&quot;/blog/2012/11/06/i-decided-to-resign-myself-to-continue-voting/&quot;&gt;continued to vote&lt;/a&gt; and expect to continue, year after year.&lt;/p&gt;
</content:encoded></item><item><title>Why soda bans don&apos;t work</title><link>https://franklinchen.com/blog/2011/11/07/why-soda-bans-dont-work/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/07/why-soda-bans-dont-work/</guid><pubDate>Mon, 07 Nov 2011 19:13:00 GMT</pubDate><content:encoded>&lt;p&gt;I just saw an article, &lt;a href=&quot;https://well.blogs.nytimes.com/2011/11/07/soda-bans-in-schools-have-limited-benefit/&quot;&gt;&quot;Soda Bans in Schools Have Limited Impact&quot;&lt;/a&gt;. It boggles my mind that anyone would advocate soda bans in school as a policy in isolation.&lt;/p&gt;
&lt;p&gt;Here are my thoughts on the economics and politics, and health and cultural aspects of the issue.&lt;/p&gt;
&lt;h2&gt;Economics 101&lt;/h2&gt;
&lt;p&gt;The article describes the empirical results from soda bans:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Students were drinking other sugary beverages instead&lt;/li&gt;
&lt;li&gt;Students were bringing in their own sugary beverages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;em&gt;economics&lt;/em&gt; of the situation are obvious:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are plenty of &lt;a href=&quot;https://en.wikipedia.org/wiki/Substitute_good&quot;&gt;substitute goods&lt;/a&gt; for soda that satisfy students&apos; demand for sugary beverages.&lt;/li&gt;
&lt;li&gt;Since the school is not a &lt;a href=&quot;https://en.wikipedia.org/wiki/Monopoly&quot;&gt;monopoly&lt;/a&gt;, and there are plenty of other &lt;a href=&quot;https://en.wikipedia.org/wiki/Supply_(economics)&quot;&gt;suppliers&lt;/a&gt; of soda and other sugary beverages outside of school, all that happens is that students buy from another supplier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basic economic theory has a way to reduce consumption of sugary beverages, of course: a &lt;a href=&quot;https://en.wikipedia.org/wiki/Pigovian_tax&quot;&gt;Pigovian tax&lt;/a&gt; such as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Sin_tax&quot;&gt;sin tax&lt;/a&gt; on &lt;a href=&quot;https://en.wikipedia.org/wiki/Cigarette_taxes_in_the_United_States&quot;&gt;cigarettes&lt;/a&gt;. A tax on the entire category of sugary beverages would do the trick. There is reason to believe the &lt;a href=&quot;https://en.wikipedia.org/wiki/Price_elasticity_of_demand&quot;&gt;price elasticity&lt;/a&gt; is sufficient that such a tax would considerably reduce consumption.&lt;/p&gt;
&lt;h2&gt;Politics 101&lt;/h2&gt;
&lt;p&gt;And such a wide-ranging tax is completely impossible, politically. Even an overall &lt;a href=&quot;https://en.wikipedia.org/wiki/Soda_tax&quot;&gt;soda tax&lt;/a&gt; is, I believe, politically impossible. Worse, it would not solve the problem, because as we know from the school example, there are other sugary beverages that pose the very same health problems but are not labeled as &quot;soda&quot;.&lt;/p&gt;
&lt;h2&gt;Bigger picture of economics&lt;/h2&gt;
&lt;p&gt;Worse, the &lt;em&gt;problem&lt;/em&gt; as narrowly defined, that of decreasing consumption of sugary beverages, is only the tip of the iceberg when it comes to the bigger picture of public health. People will eat cookies and any number of other less perfect substitutes for sugary beverages anyway.&lt;/p&gt;
&lt;h2&gt;Beyond economics to health&lt;/h2&gt;
&lt;p&gt;And the purported motivation for reducing sugary beverages has been to reduce obesity. Obesity happens for all kinds of reasons. Worse, I don&apos;t even like the focus on &lt;em&gt;weight&lt;/em&gt;. Poor health has to do with a lot more than weight. Most people, when thinking about their weight, and try to lose it, don&apos;t even apply healthy strategies to lose weight, or even to do so permanently rather than temporarily. I don&apos;t believe stopgap politically controversial initiatives can do much to address the real problems.&lt;/p&gt;
&lt;h2&gt;Culture and a personal note&lt;/h2&gt;
&lt;p&gt;I am bombarded daily with access to sugary beverages. Every time I go to a lunch seminar or party or reception, cans and bottles of soda, sports beverages, juices, and sweetened teas are provided. Clearly American culture is simply not ready to give up on these beverages. I get the impression that I am in the minority in choosing not to drink them. I have had maybe &lt;em&gt;four or five&lt;/em&gt; cans or bottles of such beverages in the past ten years. I get the impression that a lot of people I see around have had approximately &lt;em&gt;ten thousand&lt;/em&gt; cans or bottles in the past ten years. I don&apos;t lecture people on why they should abstain, because it is useless even when directed toward, say, my own parents. I don&apos;t know what it will take for the culture to change, or what I can do to help. Right now, I just silently abstain.&lt;/p&gt;
&lt;p&gt;Do you have any suggestions of what I could really do to help spread the word that life really might be more enjoyable without consuming sugary beverages all the time?&lt;/p&gt;
</content:encoded></item><item><title>The real reason for the CoffeeScript/JavaScript flame war</title><link>https://franklinchen.com/blog/2011/11/06/the-real-reason-for-the-coffeescript-slash-javascript-flame-war/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/06/the-real-reason-for-the-coffeescript-slash-javascript-flame-war/</guid><pubDate>Sun, 06 Nov 2011 20:07:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been slightly (but not entirely) surprised by the current flame war over the programming languages &lt;a href=&quot;https://www.w2lessons.com/2011/11/coffeescript-means-giving-up-on.html&quot;&gt;CoffeeScript versus JavaScript&lt;/a&gt;. Michael Woloszynowicz finds the rise of &lt;a href=&quot;https://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt; &quot;alarming&quot;. He gives possible reasons people are interested in CoffeeScript and possible pitfalls in choosing to use it rather than straight JavaScript.&lt;/p&gt;
&lt;p&gt;I believe that all that is happening is simply a repeat of history, with a small twist.&lt;/p&gt;
&lt;h2&gt;C&lt;/h2&gt;
&lt;p&gt;Once upon a time, there was a guy named &lt;a href=&quot;https://web.archive.org/web/20120623015652/http://www2.research.att.com:80/~bs/&quot;&gt;Bjarne Stroustrup&lt;/a&gt; who found himself frustrated with the C programming language. Not only were there various flaws in C (some small, some large), but also it was frustrating writing, in a standard way, object-oriented programs. To be sure, there were very well-known idioms for writing C programs in an object-oriented way. But repeatedly using idioms, manually, can get frustrating.&lt;/p&gt;
&lt;h3&gt;C with Classes, then C++&lt;/h3&gt;
&lt;p&gt;Stroustrup created a compiler for an extension of C called &quot;C with Classes&quot;. The compiler was called &lt;code&gt;cfront&lt;/code&gt; and compiled the new language to C, which was then simply compiled with any suitable C compiler. Eventually, the extension of C was called C++.&lt;/p&gt;
&lt;p&gt;Stroustrup took care to design the language so that syntactically, almost every valid C program was also a valid C++ program.&lt;/p&gt;
&lt;p&gt;C++ became very popular, although to this day there are many programmers who have refused to use C++, for a variety of reasons. Many of those reasons are the reasons Woloszynowicz gives for being skeptical of CoffeeScript. For example, even though C++ is &quot;higher level&quot;, in actuality you have to know the low-level aspects of C in order to really understand C++. Also, there are programmers who don&apos;t use C++ very well and are better off having stuck to C longer, to have mastered the C parts of C++ before going for all the advanced features of inheritance and templates and exceptions, etc.&lt;/p&gt;
&lt;h3&gt;Example of C versus C++&lt;/h3&gt;
&lt;p&gt;To illustrate how C++ can be considered an extension of C, compare the handwritten implementation of inheritance in C with that provided by C++:&lt;/p&gt;
&lt;p&gt;&amp;lt;script src=&quot;https://gist.github.com/FranklinChen/1344060.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;(For amusement, see how knowing the low levels of C can enable &lt;a href=&quot;/blog/2011/10/04/a-blast-from-the-past-c-plus-plus-abuse/&quot;&gt;doing abusive things in C++&lt;/a&gt;.)&lt;/p&gt;
&lt;h2&gt;JavaScript to CoffeeScript&lt;/h2&gt;
&lt;p&gt;The debate over JavaScript versus CoffeeScript has some similarities to the debate between C and C++. CoffeeScript does some things to &quot;fix&quot; issues in JavaScript:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Like C++, CoffeeScript changes some matters in variable scoping from the original language.&lt;/li&gt;
&lt;li&gt;Like C++, CoffeeScript introduces &quot;classes&quot; and expands them to a very idiomatic pattern that one could have written out by hand in the original language (in the case of CoffeeScript, classes just implement one way to use JavaScript&apos;s prototypes).&lt;/li&gt;
&lt;li&gt;Like C++, CoffeeScript makes some changes with function definitions. C++ introduced a new syntax for parameters, while CoffeeScript is more radical and forces the programmer to define functions in lambda-style syntax.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The power of syntax&lt;/h2&gt;
&lt;p&gt;However, I believe that the real reason for the uproar over JavaScript versus CoffeeScript is that CoffeeScript makes huge syntax changes to the original language.&lt;/p&gt;
&lt;p&gt;C++ made as few syntax changes as possible (until rather recently, for this year&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/C%2B%2B11&quot;&gt;C++11 standard&lt;/a&gt;; but I believe C will borrow some syntax changes back, as it has done in the past, e.g., with ANSI function prototypes and &lt;code&gt;bool&lt;/code&gt;). In fact, Stroustrup would have liked to change C&apos;s type declarator syntax, but didn&apos;t because of his mission to change C syntax as little as possible.&lt;/p&gt;
&lt;p&gt;Ironically, semantically CoffeeScript is much more of a &quot;preprocessor&quot; to JavaScript than C++ is to C. I don&apos;t really consider CoffeeScript a new language, whereas I do consider C++ to be a new language.&lt;/p&gt;
&lt;p&gt;I think the uneasiness some feel toward CoffeeScript, as well as the excitement others feel, comes from the &lt;em&gt;illusion&lt;/em&gt; that CoffeeScript is something new and hip and radical.&lt;/p&gt;
&lt;p&gt;Imagine if CoffeeScript had been designed to be maximally compatible syntactically with JavaScript. I don&apos;t think there would be as much of an uproar if CoffeeScript had the appearance of being a simple extension of JavaScript, keeping all the braces and parentheses and only introducing extra syntax that was unobtrusive. In fact, suppose the language were then called JavaScript++, with the promise that except for things like variable scope semantics, most valid JavaScript programs were also valid JavaScript++ programs.&lt;/p&gt;
&lt;p&gt;I believe (from anecdotal praise I have heard from converts) that the excitement over syntax is responsible for much enthusiasm for CoffeeScript, and I suppose I do share Woloszynowicz&apos;s concern that those looking for shiny new syntax might miss that anyone who is a serious CoffeeScript programmer &lt;em&gt;must&lt;/em&gt; master the underlying JavaScript and cannot consider CoffeeScript a standalone distinct higher-level language.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I don&apos;t see any special reason to be alarmed by the rise of CoffeeScript. Some people will enjoy and use well the features of it, and others will botch it up. But there is no threat to JavaScript. If anything, because CoffeeScript has such an obvious translation into JavaScript, CoffeeScript can only solidify the JavaScript world by bringing in extra enthusiasm from those who use it effectively.&lt;/p&gt;
&lt;h3&gt;(Update of 2013-02-12)&lt;/h3&gt;
&lt;p&gt;Martin Fowler wrote about JavaScript and CoffeeScript in the context of what he calls the phenomenon of &lt;a href=&quot;https://martinfowler.com/bliki/TransparentCompilation.html&quot;&gt;transparent compilation&lt;/a&gt;. He says that personally, he prefers to write CoffeeScript.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Geek Out Day #4: &quot;Design&quot;</title><link>https://franklinchen.com/blog/2011/11/05/pittsburgh-geek-out-day-number-4-design/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/05/pittsburgh-geek-out-day-number-4-design/</guid><pubDate>Sat, 05 Nov 2011 23:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Today was the fourth session held of Pittsburgh Geek Out Day. I enjoyed it, as I have all previous sessions of this unique local event.&lt;/p&gt;
&lt;h2&gt;Introduction to Pittsburgh Geek Out Day&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt; was started earlier this year, with the first session being held on Saturday, April 2, 2011, in the morning. It was my very first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/open-spaces&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/open-spaces&quot;&amp;gt;Open Spaces&amp;lt;/span&amp;gt; event experience, and a truly profound one for me on multiple levels: I really enjoyed this format of sharing and learning from one another, and meeting people involved in software development (in one role or another, not necessarily as developer) passionate about what we do. (Recently, &lt;a href=&quot;/blog/2011/10/26/open-spaces-success-at-the-pittsburgh-java-users-group/&quot;&gt;the Pittsburgh Java User Group had an experimental Open Spaces evening&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Pittsburgh Geek Out Day &lt;strong&gt;completely changed my life&lt;/strong&gt;, not only bringing me out of my social shell but also returning me to active engagement with a variety of software developers and just plain getting to know really interesting people. I have been really inspired and excited by this new community.&lt;/p&gt;
&lt;h2&gt;Other previous sessions&lt;/h2&gt;
&lt;p&gt;The second session was held on Saturday, May 21, 2011, also in the morning.&lt;/p&gt;
&lt;p&gt;The third session was held on a Wednesday evening, August 10, 2011.&lt;/p&gt;
&lt;h2&gt;Summaries of the sessions&lt;/h2&gt;
&lt;p&gt;There has been some attempt to write up &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/sessions/2011&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/sessions/2011&quot;&amp;gt;summaries of the Pittsburgh Geek Out Day sessions&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;(Update of 2014-01-16)&lt;/h2&gt;
&lt;p&gt;This is an unfinished post that is one of many in the past two years that lay unfinished because I had originally planned to write a very detailed report but never got around to it. I decided that I might as well release all these unfinished posts rather than leave them completely out of the record.&lt;/p&gt;
</content:encoded></item><item><title>Daylight Saving Time should be abolished but here&apos;s why it won&apos;t be</title><link>https://franklinchen.com/blog/2011/11/05/daylight-saving-time-should-be-abolished-but-heres-why-it-wont-be/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/05/daylight-saving-time-should-be-abolished-but-heres-why-it-wont-be/</guid><pubDate>Sat, 05 Nov 2011 17:15:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s time for that funny ritual that takes place twice a year: making your clocks &lt;a href=&quot;https://en.wikipedia.org/wiki/Daylight_saving_time&quot;&gt;&quot;fall back&quot; or &quot;spring forward&quot;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are many reasons I support the abolition of Daylight Saving Time. I won&apos;t go through them in detail because there are many &lt;a href=&quot;https://www.standardtime.com/&quot;&gt;resources online&lt;/a&gt; that give the arguments. Fundamentally, the artificial change addition and subtraction of an hour once a year wreaks havoc on our health, the health of animals who live on our clock, and time handling by computers. Also, the theoretical benefits (saving energy or providing &quot;more&quot; daylight for our enjoyment) have disappointed empirically.&lt;/p&gt;
&lt;p&gt;This is an example of &lt;em&gt;unintended consequences&lt;/em&gt; of messing around with nature in a technocratic attempt to be clever without taking into account the impact on the normal flow of life.&lt;/p&gt;
&lt;p&gt;Unfortunately, I expect Daylight Saving Time to stay around in most places where it already exists, because it is entrenched and there are people who do like it and don&apos;t like change. I can understand some of their arguments, as far as their being used to certain amounts of daylight at certain times of year. But even if it is reasonable to alter the relationship between light and life activities, that can happen without changing the &lt;em&gt;time&lt;/em&gt;. Schools or businesses could change their schedules, rather than change everyone&apos;s &lt;em&gt;time&lt;/em&gt;. We could get up earlier if we are unhappy with missing morning sun.&lt;/p&gt;
&lt;p&gt;In other words, the issues surrounding getting rid of Daylight Saving Time and returning to a natural constant stream of time are no longer scientific in nature. They are political and psychological.&lt;/p&gt;
</content:encoded></item><item><title>Against just putting in the time</title><link>https://franklinchen.com/blog/2011/11/04/against-just-putting-in-the-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/04/against-just-putting-in-the-time/</guid><pubDate>Fri, 04 Nov 2011 21:37:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I saw a &lt;a href=&quot;https://www.scottberkun.com/blog/2011/let-time-work-for-you/&quot;&gt;blog post by Scott Berkun&lt;/a&gt; that made me profoundly sad. He described not liking running on a treadmill but doing it anyway and watching the clock, and he turned around and praised this attitude.&lt;/p&gt;
&lt;p&gt;I totally disagree with this with every fiber of my being, and here&apos;s why.&lt;/p&gt;
&lt;h2&gt;For &lt;em&gt;deliberate practice&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;First of all, I have to emphasize that I totally believe in putting in the time to achieve excellence and mastery of anything. The recently popularized phrase &lt;a href=&quot;https://en.wikipedia.org/wiki/Practice_%28learning_method%29#Deliberate_practice&quot;&gt;&quot;deliberate practice&quot;&lt;/a&gt; describes genuine practice (as opposed to just putting in the time) that aims at expert performance.&lt;/p&gt;
&lt;p&gt;I try to apply this to every aspect of my life, whether when &lt;a href=&quot;/categories/programming/&quot;&gt;programming&lt;/a&gt;, &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt;, &lt;a href=&quot;/categories/recorder/&quot;&gt;playing music&lt;/a&gt;, &lt;a href=&quot;/categories/strength-training/&quot;&gt;strength training&lt;/a&gt;, &lt;a href=&quot;/categories/cooking/&quot;&gt;cooking&lt;/a&gt;, &lt;a href=&quot;/categories/zen/&quot;&gt;meditating&lt;/a&gt;, or any other of the dozens of activities or chores that come up.&lt;/p&gt;
&lt;p&gt;So my disagreement with &quot;just putting in the time&quot; is not a disagreement with the need for hard work and even drudgery. There is no shortcut to expertise and achievement. Insofar as Scott Berkun tries to make this point, I agree with him.&lt;/p&gt;
&lt;h2&gt;Mindless versus mindful&lt;/h2&gt;
&lt;h3&gt;Mindless&lt;/h3&gt;
&lt;p&gt;However, Scott describes an attitude toward running on the treadmill that is &quot;mindless&quot; rather than &quot;mindful&quot;. He writes, &quot;As long as I didn’t think much at all, I’d achieve my goal.&quot; (His goals was running four miles.)&lt;/p&gt;
&lt;p&gt;I call this &quot;mindless&quot; because it implies zoning out and basically opting out of life while waiting for something to happen, like a bell going off that says &quot;class is over!&quot;&lt;/p&gt;
&lt;p&gt;Think about it. Think about a time in a classroom in elementary school or high school or college, or a conference room at work, where you didn&apos;t want to be there, hated being there, watched the clock, and just thought to yourself, &quot;As long as I don&apos;t think much at all, I&apos;ll achieve my goal (of surviving until the bell rings and you get to leave).&quot;&lt;/p&gt;
&lt;p&gt;Did you enjoy this &quot;being there&quot;? Did you learn something? Or did you feel that you wasted your life?&lt;/p&gt;
&lt;p&gt;After being done, did you feel proud of having achieved your goal of just plain sticking it out? Or did you feel frustrated or embarrassed or resentful?&lt;/p&gt;
&lt;p&gt;I am more worried about the high school student who stuck it out and felt proud of it than of the student who maybe endured the experience but saw it for what it really was: soul-sucking.&lt;/p&gt;
&lt;p&gt;There is no guarantee that the student who simply sticks it out through school has actually learned anything and graduates stronger in mind or body or spirit. In fact, sometimes sticking it out is so deadening that it would have been better to leave.&lt;/p&gt;
&lt;p&gt;But although sometimes the student who didn&apos;t stick it out, and maybe skipped class or dropped out, did the right thing, there is a third path: &lt;em&gt;mindfulness&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Mindful&lt;/h3&gt;
&lt;p&gt;There are many definitions of &quot;mindfulness&quot;. The problem is that many people have used it independently. There is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Mindfulness&quot;&gt;mindfulness from Buddhism&lt;/a&gt;, and notions in Western &lt;a href=&quot;https://en.wikipedia.org/wiki/Mindfulness_(psychology)&quot;&gt;psychology&lt;/a&gt;, sometimes borrowed from Buddhism. Ellen Langer has written &lt;a href=&quot;https://www.ellenlanger.com/books/3/mindfulness&quot;&gt;books&lt;/a&gt; on what she calls &quot;mindfulness&quot;, for example.&lt;/p&gt;
&lt;p&gt;I&apos;ll just use the term loosely to refer to a basic attitude of being attuned to what you&apos;re doing, keeping your mind open and attentive, rather than dissociating, or blocking thoughts or emotions, or zoning out as though sleepwalking.&lt;/p&gt;
&lt;h4&gt;Classroom example&lt;/h4&gt;
&lt;p&gt;Here are some examples of how one could be mindful as a bored student in a class.&lt;/p&gt;
&lt;p&gt;The student could at least, while putting in the time, do something with that time, such as doodle, write poetry, count the number of times the teacher said &quot;umm&quot;. Just doing something at all is better than doing nothing.&lt;/p&gt;
&lt;p&gt;A step up: the student could try to pick up on little aspects of the class that actually interest him, and attend to those. Who knows, one thing could lead to another, and the class material eventually could actually becoming truly fascinating.&lt;/p&gt;
&lt;p&gt;The student could realize that the two strategies above will not work so well, and decide to transfer to a different class, either in the same subject but with a teacher who is a better match in whatever way, or into a different subject entirely.&lt;/p&gt;
&lt;h4&gt;Other scenarios&lt;/h4&gt;
&lt;p&gt;Since I bring my lunch in to work, every afternoon there I wash my bowl, fork, empty Pyrex containers, etc. Once upon a time in my life, I dreaded washing dishes. I tried doing things like listening to music in order to take my mind off the unpleasantness. But then I discovered the power of mindfulness. It&apos;s actually quite interesting washing dishes. The sensations of warm water, detergent. Stubborn spots on dishes, residual oiliness, slipperiness, wiping the curve of a spoon or the handle of a knife: everything is really an amazing sensory experience. Now when I wash dishes, I don&apos;t listen to music or think about my schedule. During those minutes, I am simply washing dishes, as though that were my whole universe. It&apos;s different every time. It&apos;s not the same boring experience repeated mindlessly where all I&apos;m thinking of is, &quot;I hate this but it has to get done.&quot;&lt;/p&gt;
&lt;h2&gt;Applications to the treadmill situation&lt;/h2&gt;
&lt;p&gt;Finally, let&apos;s discuss Scott&apos;s treadmill situation.&lt;/p&gt;
&lt;p&gt;In the past, I have sometimes run on treadmills when winter weather discouraged me from running outside (of course, I do have suitable winter running gear, and am not a stranger to coming home from a run with icicles on my balaclava). But, like many people, I found the experience soul-sucking. In the end, I simply chose to walk away, but there were some strategies I used to improve the experience.&lt;/p&gt;
&lt;p&gt;One was to simply vary the workout, by doing intervals or ladders of pace.&lt;/p&gt;
&lt;p&gt;Another was to focus on my form and my body sensations in general. Are my shoulders relaxed? Am I overstriding? Are my hips tight? Is my left leg doing something funny so that my knee hurts?&lt;/p&gt;
&lt;p&gt;In the end, I used a more radical solution to my treadmill dislike: I stopped using the treadmill. Either I run outside or I don&apos;t run at all. This was my choice. It is not necessarily the best choice for everyone. There are other things I can do besides run. I tend to favor dance workouts when indoors, and strength training with body weight and balance balls and medicine balls. I&apos;m not a running addict or professional who needs to run all the time.&lt;/p&gt;
&lt;h3&gt;Achieving a limited goal: so what?&lt;/h3&gt;
&lt;p&gt;Here is the irony: I don&apos;t believe that the time I spent on the treadmill was that useful. I may have put in the miles, but so what?  To some extent it may have kept me conditioned, but now I&apos;m inclined to believe that mindless exercise is far less beneficial than mindful exercise, and so I would rather not exercise than do mindless exercise. The body is not just a mechanical machine that improves because it goes through the motions. It is much more than that. By treating our bodies as impersonal machines, we violate our sacred temples. We create imbalances and injuries.&lt;/p&gt;
&lt;p&gt;And running on a treadmill did not prepare me very well for real running. It&apos;s nothing like real running where you are pushing off the stationary ground, into wind resistance, getting from one place to another and seeing the world move past you. Foot landing patterns are different when running on a treadmill than running on the track or the road or the rocky trail.&lt;/p&gt;
&lt;p&gt;So I would ask any treadmill runner: what is your &lt;em&gt;ultimate goal&lt;/em&gt;, rather than the limited goal of going a certain number of miles in your workout, or watching the (misleading) calorie burning counter go up to a certain number? Is your time on the treadmill actually contributing maximally to your ultimate goal, or is it a deceptive tangent that benefits you less than you think?&lt;/p&gt;
&lt;h2&gt;Conclusion: avoid the fruits of mindlessness&lt;/h2&gt;
&lt;p&gt;Scott says, &quot;Studying for a college degree, practicing the piano, going for a daily run, these are all ways to let time work on our behalf, if we just give in.&quot;&lt;/p&gt;
&lt;p&gt;But how many students just go through the motions, &quot;study&quot;, graduate from college, and find themselves not really having the applicable skills to do something useful?&lt;/p&gt;
&lt;p&gt;How many people &quot;practice&quot; a musical instrument and are frustrated that after ten years, they are still nowhere as good as some friend who took only a month to get as good?&lt;/p&gt;
&lt;p&gt;How many people do their daily run for ten years but again, are frustrated that they don&apos;t seem to be running any faster at local 5K races?&lt;/p&gt;
&lt;p&gt;I&apos;m not suggesting that everyone should try to be the best at everything; there is not enough time or energy or talent for that. But, I know that a lot of people mindlessly put in time at something and expect a lot more to come from it that don&apos;t. And some end up resentful of others who achieve more (usually using words like &quot;luck&quot; and &quot;talent&quot;) or feeling like they got cheated of what they &quot;deserved&quot; from having put in so much drudgery.&lt;/p&gt;
&lt;p&gt;I&apos;m suggesting that being more aware, rather than less aware, while doing something, is something we can all do, to improve not only our enjoyment of the process, but also the increased productivity and achievement and health that comes from being in tune with our mind/body.&lt;/p&gt;
</content:encoded></item><item><title>One of these breakfasts is not paleo</title><link>https://franklinchen.com/blog/2011/11/03/one-of-these-breakfasts-is-not-paleo/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/03/one-of-these-breakfasts-is-not-paleo/</guid><pubDate>Thu, 03 Nov 2011 22:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Over a week ago, I briefly discussed my plans to experiment more with a &lt;a href=&quot;/blog/2011/10/23/paleo-diet-experimentation/&quot;&gt;paleo-style diet&lt;/a&gt;. I decided to quit eating oatmeal for breakfast, cold turkey (no pun intended). I was going to stay off oatmeal for at least two weeks. Well, fourteen days of no oatmeal have gone by.&lt;/p&gt;
&lt;p&gt;Here are some photos of actual breakfasts I&apos;ve had during these two weeks.&lt;/p&gt;
&lt;p&gt;Warning to the purists: one of these breakfasts is not paleo.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/breakfast/2011-11-01-eggs-broccoli-walnuts.jpg&quot; alt=&quot;Eggs, broccoli, walnuts&quot; /&gt;
&lt;img src=&quot;../../assets/images/breakfast/2011-11-02-egg-lentil-soup.jpg&quot; alt=&quot;Egg, lentil soup&quot; /&gt;
&lt;img src=&quot;../../assets/images/breakfast/2011-11-03-eggs-broccoli-soup.jpg&quot; alt=&quot;Eggs, broccoli, soup&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The three breakfasts depicted&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Two eggs, broccoli, walnuts, olive oil, spicy seasonings&lt;/li&gt;
&lt;li&gt;One egg, leftover &lt;a href=&quot;/blog/2011/09/24/whats-a-nice-acorn-squash-like-you-doing-in-a-pot-of-spicy-lentils/&quot;&gt;lentil vegetable soup&lt;/a&gt; from freezer&lt;/li&gt;
&lt;li&gt;Two eggs, broccoli, other leftover vegetable soup (exact contents unknown, since Abby made it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also often use spinach in place of broccoli, and typically also eat a handful of nuts before anything else for breakfast, and take fish oil and vitamin D (the only supplements I take regularly).&lt;/p&gt;
&lt;h2&gt;Which is not paleo?&lt;/h2&gt;
&lt;p&gt;Of course, the lentils are not paleo. However, Tim Ferriss &lt;a href=&quot;https://www.fourhourworkweek.com/blog/2010/09/19/paleo-diet-solution/&quot;&gt;eats them&lt;/a&gt;, and I like them and find them filling.&lt;/p&gt;
&lt;h2&gt;Observations&lt;/h2&gt;
&lt;p&gt;At first, I was having a lot of trouble maintaining my weight, because of a calorie deficit from skipping the carb and sugar heavy breakfast, and eating less pizza. I piled on more veggies through the day (mainly, eating more for breakfast and lunch) and have been eating more chicken and beef. I am still dependent on brown rice for lunch and dinner. I will try to formulate an experiment to reduce or eliminate that.&lt;/p&gt;
&lt;p&gt;My diet is still nowhere near paleo, because of the rice, some pizza cheating, and still eating a snack of a slice of rye bread with almond butter on most days. But the oatmeal is gone, and I don&apos;t feel like going back. The protein/fat/veggie loaded breakfast makes me feel so much better. I am more alert from it, and when I exercise before lunch, I believe that I am more effective.&lt;/p&gt;
&lt;p&gt;I&apos;m considering swapping out some of the rice in favor of lentils, for the fiber and protein. Of the legumes, I find lentils most filling.&lt;/p&gt;
&lt;h2&gt;Controversy over paleo, and the nature of belief&lt;/h2&gt;
&lt;p&gt;Recently, a criticism of the paleo diet has been going around on the Web. It was offered by the anthropologist &lt;a href=&quot;https://www.npr.org/blogs/13.7/2011/10/27/141666659/the-paleo-diet-not-the-way-to-a-healthy-future&quot;&gt;Barbara J. King&lt;/a&gt;. She loves animals, is mostly vegetarian, and is concerned about factory farming and the environment. As an ex-vegetarian, certainly I share many of her concerns, and Abby and I go organic and local with our food choices (whether meat or anything else).&lt;/p&gt;
&lt;p&gt;But I think King weakens her voice by combining completely independent issues within one critique: one issue is purely scientific (what kind of diet is best for human health, and for which humans), and the others are ethical or philosophical or political. I think all the different issues should be analyzed and debated separately, then the interactions addressed. For example, what if a paleo-style diet is better for health for a substantial part of the population, and yet the demand for it creates pressure on food production? Then some kind of trade-off would need to be discussed. Or what if people moving to paleo results in fewer people eating processed food, sugar, and other products of entire industries that are arguably not beneficial to either people&apos;s health or the environment?&lt;/p&gt;
&lt;p&gt;There are a lot of &quot;what ifs&quot;. I believe King basically loves animals and would prefer to eliminate their use as food, globally. And that&apos;s fine: I respect the views of ethical vegetarians, the way I respect Christians and Hindus and others who have some fundamental beliefs not to be questioned. But I think that if one starts with a fixed assumption that colors everything else in one&apos;s life, one has to realize that one has weakened one&apos;s ability to ask unpleasant questions that might have an undesirable answer. For example, someone who believes an embryo is a sacred life form has any moral choice other than to find every possible bit of argumentation against abortion, regardless of many questions surrounding it that lie outside the scope of the fetus.&lt;/p&gt;
&lt;p&gt;Similarly, I&apos;m sure a lot of paleo fans simply love eating meat, and now have a  ideology suitable for rationalizing what they want to hear. From what I can tell, there&apos;s also some intersection between paleo and certain political orientations as well. All this is very interesting to me as an observer of humanity, but for myself, I just want to know what&apos;s true, what works (for many definitions of &quot;works&quot;), and have little patience for ideology. I want to know the answers, even if they call into question things I currently believe. In fact, I get excited when I&apos;m wrong, because that means I&apos;m alive and learning; since I don&apos;t accept that by age 30, I&apos;d already learned all the answers, I&apos;d be pretty disappointed if every year since then I didn&apos;t find something that I was wrong about and needed to correct!&lt;/p&gt;
</content:encoded></item><item><title>I don&apos;t know whether to get a flu shot</title><link>https://franklinchen.com/blog/2011/11/02/i-dont-know-whether-to-get-a-flu-shot/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/02/i-dont-know-whether-to-get-a-flu-shot/</guid><pubDate>Wed, 02 Nov 2011 21:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Every fall I am bombarded by reminders to get a flu shot. The reminders come from where I work, as well as from my health insurance provider. I never know whether I should really get one.&lt;/p&gt;
&lt;p&gt;Today, I got my flu shot after all. Why? And why my resistance?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-flu-shot-2011.jpg&quot; alt=&quot;Franklin getting flu shot at CMU in 2011&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why not get flu vaccine?&lt;/h2&gt;
&lt;p&gt;There are various reasons &quot;why not&quot;.&lt;/p&gt;
&lt;h3&gt;My own history&lt;/h3&gt;
&lt;p&gt;One is that in the short term, I find them painful and have had bad experiences in which my whole day was ruined because of the effects. Sometimes my arm hurts for two or three days straight. Sometimes I have trouble lifting my arm. Sometimes I feel really tired for some reason.&lt;/p&gt;
&lt;p&gt;More annoyingly, some years I seem to have gotten downright sick after getting the shot.&lt;/p&gt;
&lt;p&gt;Finally, there have been times when I got a flu vaccine in the fall but came down with some flu in February or March anyway. How effective is the vaccine anyway? Do we really know?&lt;/p&gt;
&lt;h3&gt;Other people&apos;s history&lt;/h3&gt;
&lt;p&gt;I&apos;m not the only one who has gotten sick or otherwise felt bad for a day or two after a flu vaccine. I personally know quite a few people have reported such side effects. In fact, my own mother got really ill once after a flu shot.&lt;/p&gt;
&lt;h3&gt;&quot;Alternative&quot; warnings&lt;/h3&gt;
&lt;p&gt;Just as with &lt;a href=&quot;https://en.wikipedia.org/wiki/MMR_vaccine_controversy&quot;&gt;childhood vaccines&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Water_fluoridation_controversy&quot;&gt;water fluoridation&lt;/a&gt; and any number of other public health measures, flu vaccines are a popular topic among some &quot;alternative&quot; circles that warn against how horrible these mandatory or recommended measures are. I never summarily dismiss alternative points of view in favor of automatic acceptance of mainstream wisdom, but it can be time-consuming and confusing to try to look into different points of view while not really being an expert in the area and therefore not necessarily being able to detect inaccuracies and falsehoods.&lt;/p&gt;
&lt;h2&gt;Why get flu vaccine?&lt;/h2&gt;
&lt;p&gt;The short answer to &quot;why follow the official recommendations&quot; is that experts have presumably studied the pros and cons, the possible beneficial effects and negative effects, and a cost-benefit analysis for the public as a whole makes the treatment worthwhile.&lt;/p&gt;
&lt;p&gt;Opponents of vaccines and other public health measures often look just at the possible negatives without weighing the positives (assuming they do not straight away engage in conspiracy theories about the motives of government agencies). In particular, they often worry exclusively about their own health or that of their children rather than that of society as a whole. So opposition often takes a philosophical or political tone that is completely independent of the concrete issue at hand. Unfortunately, when it comes to matters such as vaccination, effectiveness depends on everyone making the same choice. If vaccination is effective, then by not getting vaccinated, I risk getting sick and spreading the illness to others. My decision does not affect just me, but other people also.&lt;/p&gt;
&lt;h2&gt;Today&apos;s experience&lt;/h2&gt;
&lt;p&gt;CMU had been offering free flu shots for several weeks now, and each time I chose not to get one. But today was the CMU health and benefits fair, so I was going to that event anyway, and flu shots were being given there, and therefore there was a higher chance I would go for it.&lt;/p&gt;
&lt;p&gt;It turned out that today was a nice, sunny day, and I was feeling pretty good, so I got the shot after all. If it had been a crappy day, I would not have. That&apos;s what it came down to.&lt;/p&gt;
&lt;p&gt;I tried an experiment, hoping to avoid feeling as bad as I have in the past. I exercised before and after shot, with the idea that better circulation would enable me to better deal with the shot. Nevertheless, by afternoon, I was strangely feeling pretty bad.  Very sleepy, and feverish.  That lasted an hour, then I was OK again. My arm is sore, but not horribly so. Hopefully I&apos;ll be back to normal in a day.&lt;/p&gt;
&lt;p&gt;We&apos;ll see whether I get flu this winter. Either way, I can&apos;t draw any conclusion from the result!&lt;/p&gt;
</content:encoded></item><item><title>Is time money?</title><link>https://franklinchen.com/blog/2011/11/01/is-time-money/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/11/01/is-time-money/</guid><pubDate>Tue, 01 Nov 2011 21:52:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently I came across a blog post claiming that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://thenonconsumeradvocate.com/2011/10/time-is-not-money/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://thenonconsumeradvocate.com/2011/10/time-is-not-money/&quot;&amp;gt;&quot;time is not money&quot;&amp;lt;/span&amp;gt;. Reading it, and the many comments that supported the author&apos;s thesis, I felt oddly concerned.&lt;/p&gt;
&lt;p&gt;I am not here to refute &quot;time is not money&quot;, but to briefly explain my concern.&lt;/p&gt;
&lt;h2&gt;Life&lt;/h2&gt;
&lt;p&gt;Let&apos;s start with life itself, rather than time or money. We are born. We live, by making sure our fundamental needs are met: eating, drinking, maintaining health, recovering from illnesses and accidents, etc. Beyond providing for our fundamental needs, we may do all kinds of other activities also, ranging from more sophisticated entertainment, socializing, trying to achieve fame, etc. At some point, we die.&lt;/p&gt;
&lt;h2&gt;Time&lt;/h2&gt;
&lt;p&gt;Because we die, time is important, since we want to live and enjoy it and our time is limited. All things being equal, we would rather have more of life rather than less of it.&lt;/p&gt;
&lt;h2&gt;Money&lt;/h2&gt;
&lt;p&gt;Unless we are hunter-gatherers who have access to free food, etc., we need some kind of money, as a store of value and a means of exchange for what we need.&lt;/p&gt;
&lt;h2&gt;Time is money&lt;/h2&gt;
&lt;p&gt;In modern industrial society, much of what we depend on and assume as a basic need (such as a non-primitive, legal, stable place to live) can only be obtained through money. We obtain that money by trading time for it, by using our time to be productive to society and obtain money in return. Hence, &quot;time is money&quot;.&lt;/p&gt;
&lt;h2&gt;Money is time&lt;/h2&gt;
&lt;p&gt;The relation between time and money is symmetry. Time is money, and money is time. The entire history of the modern industrialized world has been to enable conversion of money to time. Division of labor, so that we don&apos;t have to spend our lives making all our own clothing and growing all our own food, has increased efficiency. Labor-saving technologies such as swords, knives, pencils, microwaves, and dishwashers save us time.&lt;/p&gt;
&lt;h2&gt;Time is money is time&lt;/h2&gt;
&lt;p&gt;So there is a cycle in our lives in which we have time, some of which we spend &quot;employed&quot; doing &quot;work&quot;, convert it into money, and then spend some of that money to buy us more time.&lt;/p&gt;
&lt;p&gt;There are, of course, opportunities to use time or money elsewhere than in that cycle. We may have extra time that we can choose to spend in some other way than converting it directly to money. We can spend the extra time hanging out with family and friends, watching a movie, and doing all kinds of things we enjoy; in other words, use the extra time to &lt;em&gt;live&lt;/em&gt;. The author of the blog post seems to be arguing that she enjoys doing all those things, and therefore time is not money. It is this last leap that does not make sense to me. Nobody ever said that all time must be converted to money.&lt;/p&gt;
&lt;p&gt;Also, some break the cycle by not converting money back to time, but converting it into possessions instead. Unfortunately, at some point one has to remember that &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.library.csi.cuny.edu/dept/history/lavender/cherries.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.library.csi.cuny.edu/dept/history/lavender/cherries.html&quot;&amp;gt;you can&apos;t take your dough when you go, go, go&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;For some, time really is money&lt;/h2&gt;
&lt;p&gt;The reason I am disturbed by the attack on &quot;time is money&quot; is that a lot of people have very little money, and the best way for them to get more, in order to be able to live better and create a virtuous cycle in which they can generate more time, is precisely to convert as much of their time as possible into money.&lt;/p&gt;
&lt;p&gt;&quot;Time is money&quot; is a powerful message that immigrants to our nation have applied again and again to start out starving and end up feeding themselves and their families. The single mother who spends a large amount of her time working multiple jobs so that she can feed her children and proudly see them be the first in the family to graduate from college is living &quot;time is money&quot;.&lt;/p&gt;
&lt;p&gt;In other words, I wonder if the attack on &quot;time is money&quot; is a perspective resulting from having enough money and therefore not needing to generate more. That is a state of living that is obviously pleasant, and congratulations to all who have put in enough time that they have all the money they need and can scale back. I&apos;m actually quite sympathetic to the &quot;minimalist&quot; view of life and money: know how much money you need, and spend the extra on time. I just don&apos;t think the minimalist message is useful, yet, to the unemployed single mother without health insurance, who will have very little time on this earth if she doesn&apos;t convert the time she has to money.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Although I support minimalism, I don&apos;t think it is in conflict with &quot;time is money&quot;, or equivalently, &quot;money is time&quot;. I see minimalism as a way to maximize one&apos;s own life choices, rather than a way to be angry at other people for making different ones. I fear that blogs such as the &lt;a href=&quot;https://thenonconsumeradvocate.com/&quot;&gt;Non-Consumer Advocate&lt;/a&gt; may be more of a preaching-to-the-choir forum than a way to help non-minimalists evaluate different ways of living. I sense anger and contempt in that blog.&lt;/p&gt;
</content:encoded></item><item><title>Lower than the angels</title><link>https://franklinchen.com/blog/2011/10/31/lower-than-the-angels/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/31/lower-than-the-angels/</guid><pubDate>Mon, 31 Oct 2011 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;pre&amp;gt;
This strand of hair, fading and gray:
a frail tightrope spun
between the falcon&apos;s hungry cry
and cliffs melting in the sun.
&amp;lt;/pre&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Harder to play music in a group than alone</title><link>https://franklinchen.com/blog/2011/10/30/harder-to-play-in-a-group-than-alone/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/30/harder-to-play-in-a-group-than-alone/</guid><pubDate>Sun, 30 Oct 2011 14:49:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve decided to make special efforts to improving my music-making as part of a group.&lt;/p&gt;
&lt;p&gt;Friday evening, I joined four other recorder enthusiasts to sight read some ensemble music as a quintet. This is the third time I&apos;ve played with this group of people (the first time as a quartet when I was filling in for someone who couldn&apos;t make it but has been present the last two times I went).&lt;/p&gt;
&lt;p&gt;Usually I mostly play alto, and secondarily soprano (and I &lt;a href=&quot;/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/&quot;&gt;started learning bass recently&lt;/a&gt;), but on Friday I tried to mostly play the fourth of five parts, on a tenor recorder.&lt;/p&gt;
&lt;p&gt;There are several reasons I found playing the tenor quite challenging.&lt;/p&gt;
&lt;h2&gt;My usual practice focus&lt;/h2&gt;
&lt;p&gt;My usual focus when practicing at home is on improving my solo technique, in particular on the alto. A lot of what I work on is technical exercises rather than real musical pieces. And when I do work on real music, it always involves the alto playing a clear, uninterrupted melodic line. And almost always, I read the music as a solo part or at worst, the top line of a full score that has one accompanying line.&lt;/p&gt;
&lt;h2&gt;Fingering&lt;/h2&gt;
&lt;p&gt;The alto is in F, while the tenor is in C. There is still a noticeable delay in the response of my fingers to reading notes on the page when I am playing a C instrument. Going faster than I am comfortable results in my mind blanking out, getting confused, and playing wrong notes.&lt;/p&gt;
&lt;p&gt;Still, I have been working on having my facility with the soprano in C catch up more with my facility with the alto in F, so I was surprised by why I am currently so poor on tenor.&lt;/p&gt;
&lt;h2&gt;Size&lt;/h2&gt;
&lt;p&gt;I did an experiment at home just playing the same music using the tenor in C rather than using the soprano in C, since their fingerings are identical (to produce pitches an octave apart). I was a bit slower, of course. The tenor is bigger. In particular, my Yamaha tenor has always been uncomfortably big. I only have the one key pair for the right pinkie, not other helpful keys like some other tenors have, so the finger stretches are not comfortable and I am slowed down.&lt;/p&gt;
&lt;p&gt;But interestingly, the physical size and weight are not the real problem. There is also a mental aspect to my confusion. Because I have started playing bass, I sometimes experience a particular confusion playing the tenor that I don&apos;t experience when playing the soprano. All of a sudden I will suddenly blank out and start playing the tenor line as though I were playing a bass reading bass clef, rather than playing the tenor reading treble clef. It&apos;s crazy, but the size association (&quot;I&apos;m playing a big instrument&quot;) sometimes pushes me toward interpretation of printed notes as being on a bass clef!&lt;/p&gt;
&lt;h2&gt;Full score&lt;/h2&gt;
&lt;p&gt;Much of the ensemble music we play come as full scores, rather than separate parts. This causes me some difficulty no matter which of the four recorders I play. The very fact of seeing four or five staves and having to skip far down with my eyes to the next system of staves, and to the correct staff for my part, is exhausting when sight reading unfamiliar music.&lt;/p&gt;
&lt;p&gt;For one thing, it&apos;s not so easy to jump from the fourth staff of one system to the beginning of the fourth staff of the next system. Sometimes I might mistakenly jump to the third staff, or something like that. This is a problem when playing the fourth voice on tenor. It is not as much of a problem when playing the top two voices or the bottom voice.&lt;/p&gt;
&lt;p&gt;But even when playing, say, the top voice, I often lose context and don&apos;t look far enough ahead in time to get the right note on the next system. There could be a leap that I miss.&lt;/p&gt;
&lt;h2&gt;Musical period&lt;/h2&gt;
&lt;p&gt;On Friday, we were sight reading from &quot;Music for the Duke of Lerma&quot; from the 16th century (&quot;Canciones and Motets of Four, Five, and Six Voices&quot;, transcribed by Douglas Kirk). As I&apos;ve mentioned, I mostly practice 18th century solo Baroque music, which is quite different in style and intent. It&apos;s another world. I need to familiarize myself more with older music. After all, part of what has been very positive about getting into playing the recorder is access to a large amount of older music that most of my life I have not listened to or played, and enjoying the unfamiliar.&lt;/p&gt;
&lt;h2&gt;The nature of ensemble music&lt;/h2&gt;
&lt;p&gt;Another problem is that if I&apos;m mostly practicing solo material at home, I don&apos;t practice counting rests so that I come back in at the right time.&lt;/p&gt;
&lt;p&gt;Also, something I have learned upon tackling the inner voices of ensemble music: this task is very different from what I&apos;m used to playing alone.&lt;/p&gt;
&lt;p&gt;When I was on tenor, I was not carrying the melody, such as it existed at all, but playing halting, syncopated lines that were completely different from everyone else&apos;s. It&apos;s a fascinating, important, and satisfying role, but not one I&apos;m used to. Wanting to be a complete musician, of course I want to get better at it. The top voices are depending on me to do my part to provide the harmonic foundation for their more melodic play on top of it!&lt;/p&gt;
&lt;h2&gt;Notation, meter&lt;/h2&gt;
&lt;p&gt;The notation takes getting used to. There&apos;s a lot of 6/4, 3/2, 2/2, and other such notation that use large notes such as whole notes and half notes instead of what I usually practice at home, which is mostly quarter notes down to sixteenth notes. With time I&apos;ll get used to such notation, but it just isn&apos;t something I practice reading a lot.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;ve offered some observations on why I&apos;m finding ensemble recorder playing quite challenging, with the plan of addressing each of the problem spots so that I can be more effective as an ensemble musician. If you are a musician and have had similar experiences, I welcome suggestions for my improvement!&lt;/p&gt;
</content:encoded></item><item><title>My favorite barber; fourteen years of haircuts and counting</title><link>https://franklinchen.com/blog/2011/10/29/my-favorite-barber/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/29/my-favorite-barber/</guid><pubDate>Sat, 29 Oct 2011 23:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I got a haircut today from Joe. Every two months (with one exception) for the past fourteen years since moving to Pittsburgh, I have walked down to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://trueslant.com/matthewnewton/2010/06/18/swan-songs-joe-feldman-and-the-legacy-of-harrys-barber-shoppe/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://trueslant.com/matthewnewton/2010/06/18/swan-songs-joe-feldman-and-the-legacy-of-harrys-barber-shoppe/&quot;&amp;gt;Harry&apos;s Barber Shoppe&amp;lt;/span&amp;gt; in Squirrel Hill, to take a seat and wait in line for my turn.&lt;/p&gt;
&lt;p&gt;Joe Feldman doesn&apos;t take appointments or reservations. You come, you stay, and depending on how many people are in front of you in line, you might sit around for up to two hours. In this fast-paced world, why would anyone wait so long?&lt;/p&gt;
&lt;p&gt;A world of reasons.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut/franklin-before.jpg&quot; alt=&quot;Franklin before haircut&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;To step into the door from busy Murray Avenue is to enter a time machine. There are faded memorabilia everywhere.  Letters of thanks on the wall, signed posters of Pittsburgh icons who are no longer with us, other celebrities, children&apos;s artwork.&lt;/p&gt;
&lt;p&gt;But it&apos;s not just artwork. Joe always has his radio playing, tuned to his favorite oldies station. It is impossible not to be transported back to the days of Frank Sinatra, Johnny Mathis, and earlier musicians who go so far back that I have no idea who they are. Another time, another place? But not another place: Joe has always been in Pittsburgh, and his late father Harry (of the shop&apos;s name) before him.&lt;/p&gt;
&lt;p&gt;The atmosphere here varies, depending on who is in. Today, on a late Saturday afternoon shortly before closing time, it&apos;s just a young guy in the chair finishing up, me, and an older guy waiting after me. It&apos;s not always like this. Maybe it&apos;s the snow. Sometimes it&apos;s six guys waiting (hence the two hour wait). Sometimes there are really old guys who need help getting up and through the door. Sometimes there&apos;s a kid. Sometimes there are (gasp!) women present, either waiting or just in to chat.&lt;/p&gt;
&lt;h2&gt;Men&lt;/h2&gt;
&lt;p&gt;I think it&apos;s when there are no women and children when the old-time atmosphere is most entertaining and touching. This is a place where we men seem to end up talking about personal matters in our lives, whether marriages or relationships or jobs or failing health or being proud new grandparents.&lt;/p&gt;
&lt;p&gt;Joe always shares his quiet humor and wisdom: sometimes talk gets raunchy, sometimes it gets loud and angry; but Joe has seen it all. He has a gift for understanding where people are coming from, and keeping things under control while letting us be ourselves, be human, be men. The old-fashioned barber shop is one of the places where men feel an invisible bond even with strangers, where we allow ourselves to be vulnerable with them because we know, no matter what our race is, our age, our religion, we are brothers!&lt;/p&gt;
&lt;h2&gt;Today&lt;/h2&gt;
&lt;p&gt;The guy in the chair is young, from Turkey. From what I can gather, he arrived in Pittsburgh just a few months ago. A lot of graduate students come to Joe for a haircut. (Heck, I was a graduate student when I started getting a haircut from him.)  He and Joe are engaged in lively conversation about all sorts of things that, well, I cannot share here. It is amazing how private topics are so easy to discuss in the shop, even with someone you just met.&lt;/p&gt;
&lt;p&gt;I tend not to talk much here (I&apos;m more of a listener and observer), although I remember when, in a rare moment of self-disclosure some years ago, I brought up my anxieties about proposing to Abby.  I don&apos;t actually remember what I said or what Joe said in response, but one way or another he calmed me down.  I also remember when I told him I was getting my last haircut before my wedding, and he spent a lot of time giving me the best haircut he could.&lt;/p&gt;
&lt;p&gt;Not that he doesn&apos;t always give me a great haircut!  Apart from perhaps the first two times when I was new, and he was still trying to figure out my hair (all my barbers in my life have had to adapt to my coarse and stubborn hair that tends to stick out when very short) and my preferences, I&apos;ve had nothing to complain about at all. He knows how I like it, and doesn&apos;t have to ask anything any more.&lt;/p&gt;
&lt;h2&gt;The one time I missed his haircut&lt;/h2&gt;
&lt;p&gt;One winter I found that Joe&apos;s shop was closed for a long time. I worried, because twice in my life, before I moved to Pittsburgh, a favorite barber of mine had closed up because of death! So I had to get my hair cut elsewhere, and I went to a local SuperCuts, where the whole experience was sterile and cold, plus I got a crappy haircut.&lt;/p&gt;
&lt;p&gt;I was so happy that the next time I was due, I saw Joe working again. He had slipped on ice that season and broken his hand!  But he had recovered.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Here I am, done after half an hour in the chair:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/haircut/franklin-after.jpg&quot; alt=&quot;Franklin after haircut&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can see in the mirror the guy after me taking my photo for me. He said he used to get his hair cut by Joe&apos;s father Harry here sixty years ago. Now that&apos;s history!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-26)&lt;/h2&gt;
&lt;p&gt;A year later, &lt;a href=&quot;/blog/2012/10/26/yet-another-haircut-from-joe-always-worth-the-wait/&quot;&gt;another haircut to remember&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>When is something overpriced? 36 examples</title><link>https://franklinchen.com/blog/2011/10/28/when-is-something-overpriced/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/28/when-is-something-overpriced/</guid><pubDate>Fri, 28 Oct 2011 20:44:00 GMT</pubDate><content:encoded>&lt;p&gt;Very often I hear people complaining that &quot;X is overpriced&quot;. I always listen carefully to try to figure out what they mean, because I&apos;ve learned that the word &quot;overpriced&quot; can mean many things. I find that I learn a lot about people from how they use that word.&lt;/p&gt;
&lt;p&gt;Here are 36 things people might mean when they say something is &quot;overpriced&quot;.&lt;/p&gt;
&lt;h2&gt;&quot;Gas for my car is overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The evil oil companies are colluding and price-fixing and don&apos;t deserve to keep all their huge profits.&lt;/li&gt;
&lt;li&gt;I am paying much more now for than I used to. Anything higher than I am used to is overpriced.&lt;/li&gt;
&lt;li&gt;Cheap driving is an American entitlement, and we need to do something in the Middle East.&lt;/li&gt;
&lt;li&gt;The un-American liberals won&apos;t let us drill, baby, drill!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;College is overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My parents had to work extra jobs to pay for my education.&lt;/li&gt;
&lt;li&gt;I didn&apos;t get the kind of job I thought I was guaranteed when taking out student loans.&lt;/li&gt;
&lt;li&gt;Those lazy liberal professors are getting paid way too much for doing nothing useful for society.&lt;/li&gt;
&lt;li&gt;I hate the whole stupid college sports system in America.&lt;/li&gt;
&lt;li&gt;The ease of getting federal student loans drives up college enrollment demand and therefore drives up college tuition as well.&lt;/li&gt;
&lt;li&gt;Those evil conservatives have turned education into a cold for-profit business enterprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;Symphony tickets are overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I don&apos;t like classical music and would rather be going to a musical.&lt;/li&gt;
&lt;li&gt;I&apos;d rather just download music at home.&lt;/li&gt;
&lt;li&gt;The tickets are not overpriced, but the parking should be easy and free.&lt;/li&gt;
&lt;li&gt;People who go to the symphony are privileged and wealthy and think they are better than me.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;Textbooks are overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I could pay less for textbooks if the publishers didn&apos;t keep on churning out new editions every year and the professor made us get the new editions.&lt;/li&gt;
&lt;li&gt;The textbook industry is a parasite, and the authors are not getting their fair sure of the profits.&lt;/li&gt;
&lt;li&gt;Information should be free.&lt;/li&gt;
&lt;li&gt;I&apos;d rather buy e-books for less than pay for dead tree books.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;Macintosh computers are overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I hate Steve Jobs.&lt;/li&gt;
&lt;li&gt;I hate those artsy liberals who love Macintosh computers.&lt;/li&gt;
&lt;li&gt;Computers manufactured from comparable materials should have similar costs.&lt;/li&gt;
&lt;li&gt;When I pay more, I should have more applications to choose from, not fewer.&lt;/li&gt;
&lt;li&gt;Apple takes away my freedom to tinker and charges me for taking away my freedom?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;Fresh vegetables are overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Why would I buy vegetables when I can buy a tasty Big Mac for less?&lt;/li&gt;
&lt;li&gt;All food should be cheap.&lt;/li&gt;
&lt;li&gt;I don&apos;t like to eat vegetables.&lt;/li&gt;
&lt;li&gt;The government artificially makes a lot of unhealthy, processed food cheaper than fresh vegetables because of lobbyists who get their subsidies to the industry.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;Homes are overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I can&apos;t buy the home that I deserve.&lt;/li&gt;
&lt;li&gt;I won&apos;t settle for a smaller home.&lt;/li&gt;
&lt;li&gt;I only want to live in a &quot;good&quot; neighborhood.&lt;/li&gt;
&lt;li&gt;Speculators and lax lending policies have created a housing bubble.&lt;/li&gt;
&lt;li&gt;End the Fed!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&quot;That big TV is overpriced&quot;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;m jealous that you have a TV I can&apos;t buy.&lt;/li&gt;
&lt;li&gt;TV is stupid.&lt;/li&gt;
&lt;li&gt;If you just wait a while, you can pay less for the same TV in a couple of months.&lt;/li&gt;
&lt;li&gt;The price of the TV does not scale linearly with the size.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Why I am not reading the biography of Steve Jobs</title><link>https://franklinchen.com/blog/2011/10/27/why-i-am-not-reading-the-biography-of-steve-jobs/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/27/why-i-am-not-reading-the-biography-of-steve-jobs/</guid><pubDate>Thu, 27 Oct 2011 20:34:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been surprised by how many people recently have been asking me if I am reading Walter Isaacson&apos;s much-anticipated biography of Steve Jobs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://d28hgpri8am2if.cloudfront.net/book_images/cvr9781451648539_9781451648539.jpg&quot; alt=&quot;Cover of Walter Isaacson&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The funny thing is that many occurrences of this question of me are obviously just small talk, because other than on my blog and to a few people directly, I have never expressed publicly my deep admiration for Steve Jobs.&lt;/p&gt;
&lt;p&gt;My answer is a firm &lt;strong&gt;No&lt;/strong&gt;, but I don&apos;t explain why because it&apos;s just small talk, after all.&lt;/p&gt;
&lt;p&gt;Here are some reasons, outside of the confining scope of small talk.&lt;/p&gt;
&lt;h2&gt;Overexposure&lt;/h2&gt;
&lt;p&gt;Right after Steve Jobs died, there was an explosion of articles and blog posts about him online. I only read a tiny fraction of what appeared, but even then, that was a lot. After a week, I was mostly done with wanting to see any more. I didn&apos;t believe I would learn anything substantially new.&lt;/p&gt;
&lt;p&gt;I find it hard to believe that Isaacson&apos;s biography has any additional information, after all the time since Jobs&apos; death, that would help me better understand Steve Jobs and his life.&lt;/p&gt;
&lt;h2&gt;Biographies in general&lt;/h2&gt;
&lt;p&gt;When I was a child, I was fascinated by biographies and enjoyed seeking out reading brief child-oriented biographies of people like George Washington, Benjamin Franklin, Abraham Lincoln. (I was especially obsessed with &lt;a href=&quot;https://en.wikipedia.org/wiki/Nathanael_Greene&quot;&gt;Nathanael Greene&lt;/a&gt; and his campaigns during the American Revolution.)&lt;/p&gt;
&lt;p&gt;As I got older, I realized that a lot of details were left out of biographies, and often even false myths were included, such that biographies were inherently a matter of reconstruction, interpretation, and even pure imagination.&lt;/p&gt;
&lt;p&gt;If the purpose of reading a biography is to get close to knowing what really happened and why, then that is naive. At best, one can get some interesting snapshots and a point of view. There are always dozens of biographies of any celebrity. Which one to trust?&lt;/p&gt;
&lt;p&gt;If the purpose is to find out how to emulate actions or habits of an individual in order to replicate the success that individual had, I think that is fairly naive also. We know that there is always a lot of luck involved in success, and specific contexts in which someone gets to thrive. For example, a lot of music conductors got their big break filling in for a conductor who was sick. Do I really need to wade through a whole biography in order to learn that being available as a substitute is a good way to take advantage of an accident?&lt;/p&gt;
&lt;p&gt;Therefore, in general, I have not been excited about reading biographies. Any that I started, I stopped reading after a while. I still have not read a biography of Wolfgang Amadeus Mozart, for example, despite having intended to since my English teacher in high school showed us the film &lt;em&gt;Amadeus&lt;/em&gt; on the last day of school, and that accidentally set in motion a whole chain of events leading to my discovery of Mozart&apos;s music and more. The same goes for Beethoven or Einstein or any number of other heroes of mine. I am more interested in what people have produced than in the minute details (real or hypothetical) of their lives.&lt;/p&gt;
&lt;h2&gt;Steve Jobs&lt;/h2&gt;
&lt;p&gt;In particular, when it comes to Steve Jobs, it is not even what he produced that is of most interest to me (although I have expressed my &lt;a href=&quot;/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/&quot;&gt;indebtedness&lt;/a&gt; to the Apple II and Macintosh computers as a vehicle for my interest in computing as a user and as a programmer). In fact, some of what he has produced has always been of great concern to me: patent wars, a closed App Store ecosystem, a shaping of the computing world into a focus on consumption devices (such as iPods).  Richard Stallman (who happens to be another hero of mine, without whom I would not have entered computing either) tells of the dangers &lt;a href=&quot;https://stallman.org/archives/2011-jul-oct.html?ohai#27_October_2011_%28Steve_Jobs%29&quot;&gt;bluntly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What interests me most about Jobs is that he got stuff done. He worked hard, he had ideas, and he managed to get people to work together and implement his ideas. And he faced down failure and humiliation repeatedly, always bouncing back.&lt;/p&gt;
&lt;p&gt;If, by chance, Jobs had mostly failed in his life, and not succeeded repeatedly, I am sure that there would not have been all the media coverage of his death, and all the tributes. He would have been just another loser. I get the impression that he has been praised because he succeeded, not because he tried. In fact, if he had failed, then probably all his negative traits and actions would have been the focus of attention. People would be blaming his authoritarian and often abusive management style for his failure.&lt;/p&gt;
&lt;p&gt;The Steve Jobs I admire most is not the one who succeeded. It is the one who tried, and did fail, and did not give up.&lt;/p&gt;
&lt;p&gt;The Steve Jobs I love is the philosopher who lived his philosophy, the one with the memorable quotes.&lt;/p&gt;
&lt;p&gt;The Steve Jobs I want to keep in my memory is the one who said, &quot;Your time is limited, so don&apos;t waste it living someone else&apos;s life.&quot;&lt;/p&gt;
&lt;p&gt;So guess what? Instead of &lt;em&gt;wasting time&lt;/em&gt; reading his biography (as though living someone else&apos;s life vicariously), in the weeks since his death I have been focused on following his advice and living &lt;em&gt;my life&lt;/em&gt;, getting refocused on &lt;em&gt;my&lt;/em&gt; goals and projects. RIP, Steve Jobs.&lt;/p&gt;
</content:encoded></item><item><title>Open Spaces success at the Pittsburgh Java User Group!</title><link>https://franklinchen.com/blog/2011/10/26/open-spaces-success-at-the-pittsburgh-java-users-group/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/26/open-spaces-success-at-the-pittsburgh-java-users-group/</guid><pubDate>Wed, 26 Oct 2011 21:19:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday evening, the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://java.net/projects/pittjug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://java.net/projects/pittjug/&quot;&amp;gt;Pittsburgh Java User Group&amp;lt;/span&amp;gt; (PittJUG) for the first time adopted an Open Spaces format. The basic idea is that instead of having someone give an hour-long presentation on something, everyone gets involved in choosing topics of discussion and we all break up into small groups to sit in a circle and chat (&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://docs.google.com/document/d/1Yufdr8zGBCWawsuEfKXXkM6ddcHnuhywzGw1lJ0u5TE/edit&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://docs.google.com/document/d/1Yufdr8zGBCWawsuEfKXXkM6ddcHnuhywzGw1lJ0u5TE/edit&quot;&amp;gt;more details&amp;lt;/span&amp;gt;).&lt;/p&gt;
&lt;p&gt;If you have never been to an event with this Open Spaces format and philosophy, such an idea might sound chaotic and confusing. The first time I heard about the format, I was extremely skeptical. But the first time I went to an event adopting it, the first &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt;, I found it quite useful and am totally sold on its virtues.&lt;/p&gt;
&lt;p&gt;This is a report on the two sessions that I attended. The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://java.net/projects/pittjug/lists/pittjug/archive&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://java.net/projects/pittjug/lists/pittjug/archive&quot;&amp;gt;PittJUG mailing list&amp;lt;/span&amp;gt; has some discussion already of the two sessions that I had to miss.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pittjug/first-open-spaces.jpg&quot; alt=&quot;First Open Spaces at PittJUG&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;The topics&lt;/h2&gt;
&lt;p&gt;Fifteen of us showed up, and the goal was to collectively decide on four topics to break up into two time slots and two rooms, so that for each time slot, one could choose one of the two topics available and meet in the designated room. We went around the room so that everyone could volunteer a topic of interest, and eventually we consolidated popular related topics such that we had the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Software entrepreneurship&lt;/li&gt;
&lt;li&gt;IDEs&lt;/li&gt;
&lt;li&gt;Scala&lt;/li&gt;
&lt;li&gt;Testing and continuous deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had actually submitted three Post-It notes suggesting topics on IDEs, Scala, and testing, so I was pretty happy that others were thinking similarly, and I ended up having to choose between Scala and testing, and going to the Scala session.&lt;/p&gt;
&lt;p&gt;Each session ended up having around eight people each, so there were no extremely small or extremely large sessions.&lt;/p&gt;
&lt;h2&gt;IDEs&lt;/h2&gt;
&lt;p&gt;At the session on IDEs, discussion revolved mostly around the following IDEs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eclipse&lt;/li&gt;
&lt;li&gt;IntelliJ IDEA&lt;/li&gt;
&lt;li&gt;NetBeans&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Everyone had extensive experience with and advocacy of at least one of these, so it was good to have many different points of view.&lt;/p&gt;
&lt;p&gt;Some of the things I learned:&lt;/p&gt;
&lt;h3&gt;Eclipse&lt;/h3&gt;
&lt;p&gt;Eclipse is free, and a lot of plugins are developed for it, but all of us have had some kind of problem using Eclipse, such as trouble installing a plugin, crashes, competing plugins (such as for Maven), refresh/synchronization problems, inconsistency across platforms. Some advocates of Eclipse said that once you get it working, it&apos;s great. And from an ideological and philosophical point of view, it is completely free.&lt;/p&gt;
&lt;h3&gt;IntelliJ IDEA&lt;/h3&gt;
&lt;p&gt;IntelliJ IDEA started off as a purely commercial product but has been available in a free community edition. For some people, the fact that it is not completely free is a minus. On the other hand, since the IntelliJ ecosystem is less sprawling than that of Eclipse, there are fewer headaches when it comes to choice of plugins and getting things to work.&lt;/p&gt;
&lt;h3&gt;NetBeans&lt;/h3&gt;
&lt;p&gt;Some people particularly liked NetBeans. One advantage of it is the tight integration with Java EE 6. Things work out of the box. Also, the UML support is good (in contrast to Eclipse).&lt;/p&gt;
&lt;h3&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;We talked about the question of what our individual preferences was: a system that offered many components to choose from and configure, or a system that works out of the box. Many of us choose depending on the situation; sometimes it&apos;s nice to build your own, but sometimes one just wants to get stuff done quickly.&lt;/p&gt;
&lt;h3&gt;Practical considerations&lt;/h3&gt;
&lt;p&gt;There was a fair amount of discussion of practical considerations when choosing an IDE. Sometimes there is no choice, when working with other people or in a particular organization. Also, there was discussion of whether it makes sense for people to use different IDEs when operating on the same code base.&lt;/p&gt;
&lt;h3&gt;More than just about code&lt;/h3&gt;
&lt;p&gt;Time was running out when we started talking about how nice it would be if we could have an IDE link code to design documents.&lt;/p&gt;
&lt;h2&gt;Scala&lt;/h2&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://jsuereth.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://jsuereth.com/&quot;&amp;gt;Josh Suereth&amp;lt;/span&amp;gt; was our resident Scala expert, so a lot of questions we asked were answered by him.&lt;/p&gt;
&lt;h3&gt;How to get into Scala&lt;/h3&gt;
&lt;p&gt;One good way to start getting into Scala is to use a Scala testing framework with an existing Java code base.&lt;/p&gt;
&lt;p&gt;Another way is to use Scala for new applications.&lt;/p&gt;
&lt;p&gt;The question of whether to rewrite old Java applications in Scala depends on whether a whole new architecture is desired. If not, then it may not be worth rewriting in Scala. Perhaps parts of it could be rewritten, or given a Scala wrapper for the sake of interfacing with new Scala code.&lt;/p&gt;
&lt;h3&gt;Testing&lt;/h3&gt;
&lt;p&gt;ScalaCheck was mentioned as being very useful.&lt;/p&gt;
&lt;p&gt;I asked about &lt;a href=&quot;https://etorreborre.github.com/specs2/&quot;&gt;specs2&lt;/a&gt;, since I have been trying to figure out how to use it (I currently have used the more traditional &lt;a href=&quot;https://www.scalatest.org/&quot;&gt;ScalaTest&lt;/a&gt;). I was &quot;happy&quot; to hear from Josh that indeed, there is a learning curve for this framework, so I&apos;m not the only one who finds it difficult.  Scala is designed to make it easy to write DSLs. Unfortunately, learning a DSL can be involved.&lt;/p&gt;
&lt;p&gt;We went off on a tangential discussion of DSLs.&lt;/p&gt;
&lt;h3&gt;DSLs&lt;/h3&gt;
&lt;p&gt;The question was whether DSLs really help &quot;non-programmers&quot; in one&apos;s organization contribute to development, by enabling them to express their knowledge. Answers were mixed. Some of us had seen DSLs fail miserably at their intent. Josh mentioned cases of DSLs working well, e.g., use of DSLs to help junior developers get going, and use of DSLs for configuration.&lt;/p&gt;
&lt;h3&gt;Groovy&lt;/h3&gt;
&lt;p&gt;There was discussion of Groovy as another JVM-based language for doing some of the same things one can do with Scala, e.g., DSL-based web and testing frameworks.&lt;/p&gt;
&lt;p&gt;It was interesting to me, since I have not really used Groovy, that a number of people had tried it and gotten bitten because it is dynamically typed and therefore, many problems occur at runtime when one wishes they would occur at compile time. This experience is in line with my preference for static typing. What attracts me to Scala is that it has type inference that reduces a lot of clutter in code and enables writing code that almost looks like what you would write in a dynamically typed language.&lt;/p&gt;
&lt;h2&gt;Retrospective&lt;/h2&gt;
&lt;p&gt;After the two time slots were over, we gathered together for a brief discussion of the evening. I was pleased that one person said he had been skeptical of the whole Open Spaces idea but had enjoyed the format.&lt;/p&gt;
&lt;p&gt;I think all of us had a good time sharing our knowledge and experience, and engaging in friendly debates on various topics. I certainly enjoy Open Spaces meetings more than the usual &quot;sitting at a long presentation&quot; format.&lt;/p&gt;
</content:encoded></item><item><title>RIP, John McCarthy; but Lisp will never die</title><link>https://franklinchen.com/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/25/rip-john-mccarthy-but-lisp-will-never-die/</guid><pubDate>Tue, 25 Oct 2011 00:14:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;(Updated 2012-01-16)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The legendary computer scientist &lt;a href=&quot;https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)&quot;&gt;John McCarthy&lt;/a&gt; died yesterday. So there goes another guy without whom my life today would be unimaginably different: &lt;a href=&quot;/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/&quot;&gt;Steve Jobs&lt;/a&gt; and &lt;a href=&quot;/blog/2011/10/13/why-dennis-ritchie-is-important/&quot;&gt;Dennis Ritchie&lt;/a&gt; just left us this month!&lt;/p&gt;
&lt;p&gt;In a way, more than Jobs, and more than Ritchie, McCarthy indirectly got me taking seriously the whole field of computing, and actually loving it.&lt;/p&gt;
&lt;p&gt;Because I &lt;em&gt;never for a moment&lt;/em&gt; enjoyed computer programming until I discovered &lt;a href=&quot;https://en.wikipedia.org/wiki/Lisp_(programming_language)&quot;&gt;Lisp&lt;/a&gt;, the programming language that McCarthy invented and what he will surely be most remembered for most, among his other contributions to computer science.&lt;/p&gt;
&lt;p&gt;My story of love and hate in computer programming:&lt;/p&gt;
&lt;h2&gt;I hate programming&lt;/h2&gt;
&lt;p&gt;I had finished my junior year of high school and was away from home for the first time in my life, attending the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.cee.org/programs/rsi&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.cee.org/programs/rsi&quot;&amp;gt;Research Science Institute&amp;lt;/span&amp;gt;(RSI), a free summer science program. There, I encountered a lot of very smart and already accomplished peers.&lt;/p&gt;
&lt;p&gt;A new friend I made at the science program was into artificial intelligence (AI) (a term coined by John McCarthy, in fact), and programming in Lisp and Prolog. He ended up doing his summer project on expert systems. He had the books on &lt;a href=&quot;https://www.amazon.com/Artificial-Intelligence-Addison-Wesley-computer-science/dp/0201084546&quot;&gt;AI&lt;/a&gt; and &lt;a href=&quot;https://www.amazon.com/LISP-Patrick-Henry-Winston/dp/0201083728&quot;&gt;Lisp&lt;/a&gt; by Patrick Winston, and he and others raved about a book by &lt;a href=&quot;https://en.wikipedia.org/wiki/Douglas_Hofstadter&quot;&gt;Doug Hofstadter&lt;/a&gt; called &lt;a href=&quot;https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach&quot;&gt;&lt;em&gt;Gödel, Escher, Bach&lt;/em&gt;&lt;/a&gt;(GEB). None of the books made any sense to me at the time, but I made a note to look them up after the summer.&lt;/p&gt;
&lt;p&gt;Myself, I had gone to the program with vague ideas of doing something related to physics. I got assigned to work at the United States Geological Survey (USGS) under Allan Tanner. I was profoundly disappointed to find that I was assigned to write FORTRAN or something to control a plotter, because at this point in my life, I &lt;em&gt;hated&lt;/em&gt; computer programming!! I asked to do something else, and ended up digging holes in the ground to measure radon availability. I didn&apos;t feel I accomplished anything really all summer, but was thanked in a paper he wrote later.&lt;/p&gt;
&lt;p&gt;Wait, so I was interested in Lisp but hated programming? What was going on?&lt;/p&gt;
&lt;p&gt;The science program had apparently thought I was interested in programming because I had just completed an Advanced Placement course in computer science in high school. It was a course based on Pascal. I left the course rather uninterested in programming. We learned about arrays, linked lists, hash tables, trees, searching, sorting, etc., and it was all very dry and abstract. The course was my least favorite of my junior year in high school. Before this course, I had been exposed to BASIC, COBOL, and FORTRAN, and these were even less appealing to me. So I had the picture of computing as drudgery for doing numerical calculations and generating reports.&lt;/p&gt;
&lt;p&gt;Lisp seemed different. It didn&apos;t even seem like &quot;programming&quot; in the same sense. I saw my peers firing up the Golden Common Lisp REPL on PCs and &lt;em&gt;interacting&lt;/em&gt; with data, creating lists, using atoms, doing &lt;em&gt;symbolic&lt;/em&gt; computation easily. At the time, I could not even make the connection between this kind of programming and anything I had learned in my Pascal-based high school course. There, linked lists took a lot to implement, and we learned about &lt;code&gt;new&lt;/code&gt; and &lt;code&gt;dispose&lt;/code&gt; and pointers. The effort to learn all this low-level stuff resulted in my never seeing from the course what much higher-level applications could be built on top.&lt;/p&gt;
&lt;h2&gt;Again, I still hate programming&lt;/h2&gt;
&lt;p&gt;Anyway, after I returned home, I started teaching myself Lisp, but didn&apos;t get very far because a new interest overrode all others. This despite my also new interest in Lisp and AI, reading GEB and even having Doug Hofstadter autograph my copy of &lt;a href=&quot;https://en.wikipedia.org/wiki/Metamagical_Themas&quot;&gt;&lt;em&gt;Metamagical Themas&lt;/em&gt;&lt;/a&gt;, which had cute Lisp interludes.&lt;/p&gt;
&lt;p&gt;At the science program I had heard peers raving about the &lt;a href=&quot;https://www.feynmanlectures.info/&quot;&gt;Feynman Lectures on Physics&lt;/a&gt;. To make a long story short, after returning home, I read as far as I could before my senior year in high school began, I fell in love with physics, took Advanced Placement physics, and ended up going to college majoring in physics.&lt;/p&gt;
&lt;p&gt;Actually, freshman year in college, I considered taking the introductory computer science sequence, since a lot of my new friends (as well as friends I made at the Research Science Institute over a year earlier) did, but although the second semester involved cool-sounding Lisp projects, the first semester involved a language called &lt;a href=&quot;/blog/2011/10/13/why-dennis-ritchie-is-important/&quot;&gt;C&lt;/a&gt;. Taking a quick look at Kernighan and Ritchie&apos;s book, and the first homework assignment, I bailed out. The language looked like noise to me. It seemed worse than Pascal, far worse. As a result, I never took a computer science course as an undergraduate in college at all!&lt;/p&gt;
&lt;h2&gt;I love programming&lt;/h2&gt;
&lt;p&gt;My physics journey ended in disaster. By my junior year, I was questioning the viability of my goal, in theoretical high energy physics, of working toward the &quot;theory of everything&quot;. String theory was getting popular, but I had no faith in it as a viable research program. I finished out my degree, and continued on to grad school hoping to do something else, but by the time I arrived, I had actually lost all interest in physics already. So I left after a year.&lt;/p&gt;
&lt;p&gt;What next?&lt;/p&gt;
&lt;p&gt;I needed to learn something else and find a job. I thought back to computer programming, especially since I was very excited about what Macs could do.  A friend of mine who had attended MIT recommended that I pick up &lt;a href=&quot;https://web.archive.org/web/20171226134539/https://mitpress.mit.edu/sicp/&quot;&gt;&lt;em&gt;The Structure and Interpretation of Computer Programs&lt;/em&gt;&lt;/a&gt;(SICP) to really learn programming, before tackling C.  So I did.  This book used Lisp, or more precisely, MIT Scheme, a variant of Lisp. I got a used Mac SE/30, a free Scheme interpreter (Gambit, I think), and worked through the book.&lt;/p&gt;
&lt;p&gt;Reading SICP was one of the most profound experiences of my entire life. A full review would require its own article. In any case, it made me love and understand programming, for the first time, really.&lt;/p&gt;
&lt;p&gt;I can imagine books similar to SICP using more recent, sophisticated, statically typed languages such as ML, Haskell, or Scala, but the exposition would require more careful design, because Lisp&apos;s macros and its &quot;pun&quot; of using S-expression syntax to represent abstract syntax make a lot of things easier.&lt;/p&gt;
&lt;p&gt;(I did then go learn C and C++ and find a job. Later discovering ML and Haskell and loving programming even more, and continuing on from there to the present is many more stories.)&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Lisp is a very old language, half a century old, and I happen not to use it much these days (because given a choice, I prefer static types, I prefer syntactic sugar, and I dislike parentheses), but I predict it will survive forever, because the core is so elegant and self-contained.&lt;/p&gt;
&lt;p&gt;Thank you, John McCarthy!&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Update 2012-01-16&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I wrote a companion post on &lt;a href=&quot;/blog/2012/01/16/how-school-made-me-hate-computer-science-and-programming/&quot;&gt;my K-12 experiences with computing education&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A near contemporary of mine, Natasha Chen (no relation), wrote an &lt;a href=&quot;https://www.eimacs.com/blog/2011/12/learn-computer-programming-without-complicated-syntax/&quot;&gt;article in 1992 on her experiences with computing education&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Every day is Food Day</title><link>https://franklinchen.com/blog/2011/10/24/every-day-is-food-day/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/24/every-day-is-food-day/</guid><pubDate>Mon, 24 Oct 2011 21:26:00 GMT</pubDate><content:encoded>&lt;p&gt;I found out only yesterday that today is &lt;a href=&quot;https://web.archive.org/web/20241010205437/https://foodday.org/&quot;&gt;&lt;em&gt;Food Day&lt;/em&gt;&lt;/a&gt;. I &lt;a href=&quot;https://web.archive.org/web/20120711165801/http://foodday.org:80/about-food-day/&quot;&gt;looked up&lt;/a&gt; what it&apos;s all about and it seems that October 24 has been designated &lt;em&gt;Food Day&lt;/em&gt;, sponsored by the &lt;a href=&quot;https://www.cspinet.org/&quot;&gt;Center for Science in the Public Interest&lt;/a&gt;, a nonprofit watchdog group. I looked further, and saw that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Center_for_Science_in_the_Public_Interest&quot;&gt;Wikipedia entry&lt;/a&gt; is informative, noting controversies concerning the group, especially the vocal opposition from the restaurant, food, and tobacco industries, but from other sources also, including former CSPI members.&lt;/p&gt;
&lt;p&gt;Anything concerning food policy in this country is, well, political.&lt;/p&gt;
&lt;p&gt;I&apos;m not here today to talk about the politics of food (I recommend &lt;a href=&quot;https://www.foodpolitics.com/&quot;&gt;Marion Nestle&lt;/a&gt; as one sober source about it), but about my personal relationship with food. Once upon a time, I knew very little about food, cared little about it, and rarely prepared it myself. But then things changed, and every day became Food Day for me.&lt;/p&gt;
&lt;h2&gt;Before awareness&lt;/h2&gt;
&lt;p&gt;As late as graduate school, I was still eating random junk, and not really cooking for myself. White bread, processed lunch meats. Frozen dinners. Commercial cereal for breakfast, pizza, Chinese take-out. Potato chips, cookies, candy bars. Canned soups. Frozen chicken wings.&lt;/p&gt;
&lt;p&gt;Not much variety, and not very good for me.&lt;/p&gt;
&lt;p&gt;I had never once thought about where my food came from, what was in it, and whether it was any good. I just assumed that name-brand tasty goodies at the grocery store must be OK. Food was an impersonal &quot;fuel&quot; and a source of instant gratification.&lt;/p&gt;
&lt;h2&gt;My vegetarian phase&lt;/h2&gt;
&lt;p&gt;Around 1999, I don&apos;t remember exactly how it happened (although being around some female grad students who were vegetarian probably had something to do with it), I started learning about food production. In particular, I came across polemical books about the &lt;a href=&quot;https://www.amazon.com/Prisoned-Chickens-Poisoned-Eggs-Industry/dp/1570670323&quot;&gt;poultry industry&lt;/a&gt; and the &lt;a href=&quot;https://www.amazon.com/MAD-COWBOY-Plain-Cattle-Rancher/dp/0684854465&quot;&gt;meat industry&lt;/a&gt;. These and similar sources of information exposing the conditions of factory farming, the health hazards of the system, and the environmental impact, led me to actually become a vegetarian.&lt;/p&gt;
&lt;p&gt;I became a zealous convert to vegetarianism, went to a local &lt;a href=&quot;https://www.vegetariansummerfest.org/&quot;&gt;vegetarian conference&lt;/a&gt;, and even returned a vegan! That lasted only three months. In the end, my vegetarianism lasted only a year.&lt;/p&gt;
&lt;p&gt;(Why I ended vegetarianism, and how I feel about vegetarianism as an idealized diet or societal arrangement, may be the topic for a future blog post.)&lt;/p&gt;
&lt;h2&gt;Lasting changes&lt;/h2&gt;
&lt;p&gt;In any case, regardless of how my thinking has evolved since my vegetarian days, many side effects still remain.&lt;/p&gt;
&lt;p&gt;I did learn a lot of facts about food production and health (amid stronger vegetarian claims that I do not accept today). This was stuff that surely everyone should learn as a child in school.&lt;/p&gt;
&lt;p&gt;I was forced to really cook for myself, especially during my vegan phase, which made it much, much harder to eat out.&lt;/p&gt;
&lt;p&gt;As a result, my relationship with food was radically transformed. It became one of the centers of my life, rather than something peripheral. After all, I was cooking something almost every other day. And much of it was from the bulk section of the &lt;a href=&quot;https://www.eastendfood.coop/&quot;&gt;East End Food Co-op&lt;/a&gt;: various rices, chickpeas, lentils, red kidney beans, black beans, you name it. A whole lot of variety to choose from. I got a pressure cooker, a rice cooker, a slower cooker, an immersion blender, etc.&lt;/p&gt;
&lt;p&gt;Since I had spent most of my life up till then in purely intellectual, theoretical pursuits, it was really new to be getting down and dirty physically with raw ingredients and turning them into something. I felt more in touch with my body, and grateful for living in a land of plenty, never needing to go hungry. I enjoyed exploring many new flavors, ethnic cuisines.&lt;/p&gt;
&lt;p&gt;This all happened in conjunction with other life changes, such as taking up &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt; and dancing and losing thirty pounds.&lt;/p&gt;
&lt;p&gt;Once upon a time, food really was the center of human life: you spent much of the day doing what you could to eat something so you could stay alive! In the developed world, we&apos;ve removed a lot of the drudgery and uncertainty of finding something to eat (even half a century ago, women had to spend huge amounts of time on feeding their families), and that can&apos;t be a bad thing, but we&apos;ve also lost touch with our biological, animal natures.&lt;/p&gt;
&lt;p&gt;I am not advocating that everyone should spend huge amounts of time on food preparation, but I think that if everyone were simply more aware of the chain of what happens to feed us, and were mindful and grateful when eating anything, the world would be a better place.&lt;/p&gt;
&lt;p&gt;Whether Abby is doing the cooking or I am doing the cooking, I remember my mortality and the impermanence of all living things that gave rise to my meal, and consider each day of my life a gift.&lt;/p&gt;
&lt;p&gt;For me, every day is Food Day.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;A blog post about Food Day is probably not complete with at least some photo and recipe of something recently prepared or eaten, so here is my &lt;em&gt;chicken curry with cauliflower&lt;/em&gt;, based on the recipe in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.notyourmotherscookbook.com/not-your-mothers-slow-cooker-cookbook/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.notyourmotherscookbook.com/not-your-mothers-slow-cooker-cookbook/&quot;&amp;gt;Not Your Mother&apos;s Slow Cooker Cookbook&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;The photo is not glamorous, but it is a real photo of real food, simple and tasty.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/chicken-curry-cauliflower.jpg&quot; alt=&quot;Chicken curry with cauliflower&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Prep time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;15 minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Equipment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;medium-sized Crock Pot&lt;/li&gt;
&lt;li&gt;set it on high for 3 hours (original recipe called for low for longer)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 pounds boneless, skinless chicken thighs (I find thighs are better than breasts, which tend to dry out)&lt;/li&gt;
&lt;li&gt;3 tablespoons extra virgin olive oil&lt;/li&gt;
&lt;li&gt;2 medium onions, chopped coarsely&lt;/li&gt;
&lt;li&gt;2 gloves garlic, minced&lt;/li&gt;
&lt;li&gt;1.5 teaspoons ground coriander&lt;/li&gt;
&lt;li&gt;1 teaspoon turmeric&lt;/li&gt;
&lt;li&gt;1 teaspoon ground cumin (I also tossed in cumin seeds)&lt;/li&gt;
&lt;li&gt;1 tablespoon ground ginger (was in a hurry, didn&apos;t use fresh)&lt;/li&gt;
&lt;li&gt;2 teaspoons paprika&lt;/li&gt;
&lt;li&gt;0.5 teaspoon red chile pepper flakes&lt;/li&gt;
&lt;li&gt;0.5 teaspoon mustard seeds&lt;/li&gt;
&lt;li&gt;one can of diced tomatoes&lt;/li&gt;
&lt;li&gt;juice of half lemon&lt;/li&gt;
&lt;li&gt;1 head cauliflower (florets and stems)&lt;/li&gt;
&lt;li&gt;salt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Procedure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some olive oil into slow cooker to coat the bottom.&lt;/li&gt;
&lt;li&gt;Chop up the chicken thighs, not too finely, and brown in skillet with olive oil for a few minutes, remove.&lt;/li&gt;
&lt;li&gt;Into the same skillet, cook onions for a few minutes.&lt;/li&gt;
&lt;li&gt;Add the rest of the dry ingredients to the skillet, continue cooking the mixture for a couple of minutes.&lt;/li&gt;
&lt;li&gt;Add the wet ingredients (tomatoes, lemon juice) to the skillet, mix everything up.&lt;/li&gt;
&lt;li&gt;Put the chicken into the slow cooker.&lt;/li&gt;
&lt;li&gt;Scrape the skillet&apos;s contents into the slow cooker.&lt;/li&gt;
&lt;li&gt;Mix stuff up in the slow cooker.&lt;/li&gt;
&lt;li&gt;Cook for 3 hours.&lt;/li&gt;
&lt;li&gt;When done, add salt to taste.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;(Update of 2012-10-24)&lt;/h2&gt;
&lt;p&gt;Food Day, &lt;a href=&quot;/blog/2012/10/24/reflections-on-food-day/&quot;&gt;a year later&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Paleo diet experimentation</title><link>https://franklinchen.com/blog/2011/10/23/paleo-diet-experimentation/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/23/paleo-diet-experimentation/</guid><pubDate>Sun, 23 Oct 2011 23:59:00 GMT</pubDate><content:encoded>&lt;p&gt;Three days ago, I stopped eating my usual breakfast: &lt;a href=&quot;https://en.wikipedia.org/wiki/Steel-cut_oats&quot;&gt;steel-cut oatmeal&lt;/a&gt; topped with fruit and nuts and maple syrup. I&apos;d been eating oatmeal almost every day for breakfast for about 15 years.&lt;/p&gt;
&lt;p&gt;This is the beginning of a gradual experiment toward more of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Paleolithic_diet&quot;&gt;&lt;em&gt;Paleo diet&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What is this &quot;Paleo diet&quot;, and why am I doing it, and why now, and how?&lt;/p&gt;
&lt;h2&gt;What&apos;s a Paleo diet?&lt;/h2&gt;
&lt;p&gt;I first heard of the &quot;Paleo diet&quot; an entire decade ago, back in 2002, from the &lt;a href=&quot;https://thepaleodiet.com/&quot;&gt;book&lt;/a&gt; of that name by Loren Cordain. The concept is much more popular now, with very passionate communities revolving around it, than it was then.&lt;/p&gt;
&lt;p&gt;The basic idea is simple: that our hunter-gatherer ancestors were healthy and that the Neolithic era, in which agriculture altered our diet (and our lifestyle) was the end of true human health. OK, I&apos;m exaggerating, but that&apos;s the idea in a nutshell: that we suffer from &quot;diseases of civilization&quot; because of eating stuff that we are not really evolutionarily adapted to, such as grains, beans, sugar, dairy, etc.&lt;/p&gt;
&lt;p&gt;I&apos;m not going to enter the debates over the evidence or the ideological tinges, because I&apos;m never a &quot;true believer&quot; in anything anyway, and am an opportunist: I like to use interesting ideas and test whether they work for me.&lt;/p&gt;
&lt;h2&gt;What did I do in 2002?&lt;/h2&gt;
&lt;p&gt;In 2002, I was still not very far removed from my one-year vegetarian experiment in 1999 (which included a couple of months of veganism). I was in drastically better health and fitness than prior to 1999, having lost 30 pounds, but knew that I could not simply chalk it up to my mostly-vegetarian diet. The fact that I was not eating junk food and processed food and crappy take-out, and had finally learned to really cook most meals for myself, clearly made a difference.&lt;/p&gt;
&lt;p&gt;But I was still having blood sugar issues, which I attributed to heavy consumption of refined carbs.&lt;/p&gt;
&lt;p&gt;I found it hard to buy Cordain&apos;s ideas completely. Speculation based on evolutionary &quot;just so&quot; stories has a long history, after all. Still, they were interesting ideas. I did find some better carbs for myself, e.g., losing the white rice and bread, going to brown rice, going to whole wheat bread, and eventually even getting away from whole wheat bread to &lt;a href=&quot;https://www.foodforlife.com/&quot;&gt;Ezekiel sprouted grain bread&lt;/a&gt;. This was all based on self-experimentation, of course, not ideology.&lt;/p&gt;
&lt;p&gt;I also eventually switched from old-fashioned oats to steel-cut oats, once I got a rice cooker with a timer and multiple settings that could make my steel-cut oatmeal for me every morning.&lt;/p&gt;
&lt;p&gt;Around 2007, finding out that I was definitely allergic to soy changed aspects of my diet also, since I had depended a lot on &quot;vegetarian&quot; type food that involved soy.&lt;/p&gt;
&lt;p&gt;In no way was I eating paleo yet, however. It just seemed too radical a change from my routine.&lt;/p&gt;
&lt;h2&gt;Why am I trying this now?&lt;/h2&gt;
&lt;p&gt;A year ago, the paleo diet came to my attention again in a big way, thanks to Tim Ferriss&apos;s &lt;a href=&quot;https://www.fourhourworkweek.com/blog/2010/09/19/paleo-diet-solution/&quot;&gt;blog post about it&lt;/a&gt;. So I started thinking about it again.&lt;/p&gt;
&lt;p&gt;Also, I&apos;d come across books such as &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.newtrendspublishing.com/SallyFallon/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.newtrendspublishing.com/SallyFallon/&quot;&amp;gt;Nourishing Traditions&amp;lt;/span&amp;gt; by Sally Fallon from the &lt;a href=&quot;https://www.westonaprice.org/&quot;&gt;Weston A. Price Foundation&lt;/a&gt; that had their own take on &quot;traditional&quot; diets.&lt;/p&gt;
&lt;p&gt;And in March 2011, Abby and I attended &lt;a href=&quot;https://farmtotablepa.com/&quot;&gt;&quot;Farm to Table&quot;&lt;/a&gt;, a local conference that happened to be dominated by Weston A. Price people.&lt;/p&gt;
&lt;p&gt;Abby experimented with reducing her own consumption of cereals and breads and noticed some real benefits for herself. She actually has gone more paleo and more quickly than I have, so I have to confess that this makes it easier for me to also do my experiments, such that we&apos;re not having major food incompatibilities eating together! For example, she gave up oatmeal almost entirely months ago.&lt;/p&gt;
&lt;h2&gt;Oatmeal&lt;/h2&gt;
&lt;p&gt;Since I&apos;ve been eating oatmeal so long, phasing it out for at least two weeks (my plan) will surely tell me something interesting about what it does to me.&lt;/p&gt;
&lt;p&gt;I still remember when I was having health problems in college and it took months to figure out, only by accident, that all that had happened was that I had become lactose intolerant, and so my eating Cheerios with milk every morning was causing me problems.&lt;/p&gt;
&lt;p&gt;So self-experimentation is a great way to figure oneself out. Books and experts can&apos;t do that for you. They can only give hints and possibilities. We are all different.&lt;/p&gt;
&lt;h2&gt;Changes so far&lt;/h2&gt;
&lt;p&gt;First of all, I&apos;m not going all-out paleo (according to whatever school of thought on paleo: there are quite a lot of different interpretations of what is permitted or forbidden, as with any other &quot;movement&quot;). I still find it hard to believe that I should really be banning a whole lot of food I am used to eating.&lt;/p&gt;
&lt;p&gt;I&apos;m starting with small but real experiments, to see what happens.&lt;/p&gt;
&lt;p&gt;First, it is easy to get rid of oatmeal. I&apos;ve already gone three days just fine. Instead, I eat an egg or two with a bowl of veggies (I especially like broccoli) and some nuts and olive oil and spices. I believe I already detect a much more stable morning energy level as a result.&lt;/p&gt;
&lt;p&gt;I have a habit of eating too much pizza, as a result of going to seminars where pizza is inevitably served. Maybe I&apos;ll pick off toppings and skip the bread, but I admit that sounds kind of unappetizing and weird.&lt;/p&gt;
&lt;p&gt;Meanwhile, I have been eating brown rice for years, so it&apos;s kind of hard for me to just give it up entirely. I&apos;ll plan to reduce it.&lt;/p&gt;
&lt;p&gt;To make up for the lost carbs, I expect to eat more vegetables and meat than in the past.&lt;/p&gt;
&lt;h2&gt;Side effects so far&lt;/h2&gt;
&lt;p&gt;Rapid loss of weight. I &lt;em&gt;do not&lt;/em&gt; want this! I am already light. I want to gain strength and vitality, not lose weight. I&apos;m near the height and weight of Bruce Lee. What I&apos;d like is more muscle, not lost weight. So I need to eat more fat to make up the caloric deficit of losing oatmeal.&lt;/p&gt;
</content:encoded></item><item><title>Happy 200th birthday, Franz Liszt!</title><link>https://franklinchen.com/blog/2011/10/22/happy-200th-birthday/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/22/happy-200th-birthday/</guid><pubDate>Sat, 22 Oct 2011 22:08:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;It turns out that today is the 200th anniversary of the birth of &lt;a href=&quot;https://en.wikipedia.org/wiki/Franz_Liszt&quot;&gt;Franz Liszt&lt;/a&gt;, the always &lt;a href=&quot;https://web.archive.org/web/20230203075945/http://www.nytimes.com/2011/10/23/arts/music/looking-at-franz-liszt-on-his-bicentenary.html&quot;&gt;controversial&lt;/a&gt; pianist and composer of the 19th century in Europe. It has become a commonplace that Liszt was music&apos;s first &lt;a href=&quot;https://www.npr.org/2011/10/22/141617637/how-franz-liszt-became-the-worlds-first-rock-star&quot;&gt;&quot;rock star&quot;&lt;/a&gt;. And there is always the debate over his &lt;a href=&quot;https://www.npr.org/blogs/deceptivecadence/2011/10/21/141562068/franz-liszt-at-200-an-important-but-not-great-composer&quot;&gt;importance&lt;/a&gt; as a composer.&lt;/p&gt;
&lt;p&gt;These days, I don&apos;t care much about such debates.&lt;/p&gt;
&lt;p&gt;Instead, I&apos;m here to share with you one piano piece by Liszt that I discovered and listened to today and found quite beautiful.&lt;/p&gt;
&lt;p&gt;Not being too familiar with Liszt&apos;s music (other than half a dozen of his most popular works that often pop up on TV or in the movies or cartoons), I chose to celebrate Liszt&apos;s birthday by listening to a piano work of his that I either hadn&apos;t heard before or had but had not &lt;em&gt;listened&lt;/em&gt; to.&lt;/p&gt;
&lt;h2&gt;Les Jeux d&apos;eaux à la Villa d&apos;Este&lt;/h2&gt;
&lt;p&gt;I got this YouTube link of Claudio Arrau playing &lt;em&gt;Les Jeux d&apos;eaux à la Villa d&apos;Este&lt;/em&gt; (The Fountains of the Villa d&apos;Este) from &lt;a href=&quot;https://www.therestisnoise.com/2011/10/liszt-200.html&quot;&gt;Alex Ross&apos;s blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I found this music beautiful: evocative, passionate, yet restorative: I listened to it after my run in Frick Park today, relaxing with my eyes closed.&lt;/p&gt;
&lt;p&gt;Try this: click below to start the audio playback, and then read my text below, visualizing along with me.&lt;/p&gt;
&lt;h2&gt;Video with visualization&lt;/h2&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;2DoGOGS3lC8&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;It is the late 1800s, and we are lucky enough to have the opportunity to travel in Italy, exploring its culture and history. It&apos;s all new to us. Maybe we read something in books, but we have not been there. This is not the era of trains, planes, and web sites yet.&lt;/p&gt;
&lt;p&gt;We find ourselves at the garden in Villa d&apos;Este, rich with Renaissance history and architecture. It is quiet and peaceful. Nobody else is around.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/Tivoli-large-fountain-close-da-as-m4-as-m4.jpg&quot; alt=&quot;Fountains&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We sit down and admire the fountains and let our thoughts wander as the water flows. We hear and see the spraying and trickling, glistening under the sun. The air is cool from the movement, and we smell the freshness of the air amidst the trees and the earth.&lt;/p&gt;
&lt;p&gt;The water has a life of its own, dancing to its own rhythm and patterns. Each jet or drop or trickle speaks.&lt;/p&gt;
&lt;p&gt;A moment of silence as we zoom in on the water, and nothing but the water. We no longer see trees or buildings.&lt;/p&gt;
&lt;p&gt;There is the water at the top, and at the bottom. They are moving differently, independently. Different rhythms. At the top the water is light and dances quickly, fluttering and suspended; at the bottom, a pool collecting and receiving.&lt;/p&gt;
&lt;p&gt;There is a story behind every drop of water, its trajectory, its renewal as it comes up, as though toward heaven, fades and falls, merges with the rest at the bottom. We hear the stories.&lt;/p&gt;
&lt;p&gt;There is a story of exuberance and lightheartedness, of youth striving to reach the sun. There is a story of homecoming, of comfort and wisdom. There is a story saying, we are all the same, and you were one of us, and we gave birth to you.&lt;/p&gt;
&lt;p&gt;The old ones are now speaking; the roles are reversed. Both young and old excited and moving fast. Old to young, rising up. We see the path of life as it always is, as it must be.&lt;/p&gt;
&lt;p&gt;Come back to us, the old say. The young say, we are not ready yet, we want to be free, we want to see the stars, we want to kiss them.&lt;/p&gt;
&lt;p&gt;It is getting dark in the day, and sleep calls. Gently the old puts the young to bed. Tomorrow is another day. Everything is OK, everything will always be OK.&lt;/p&gt;
</content:encoded></item><item><title>One month anniversary of my blog</title><link>https://franklinchen.com/blog/2011/10/21/one-month-anniversary-of-my-blog/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/21/one-month-anniversary-of-my-blog/</guid><pubDate>Fri, 21 Oct 2011 22:30:00 GMT</pubDate><content:encoded>&lt;p&gt;I created this blog one month ago, on &lt;a href=&quot;/blog/2011/09/22/starting-a-new-web-site/&quot;&gt;September 22&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;I have achieved my short-term milestone of creating at least one post every day. This has not been a trivial task, and there have been times when I felt pressed for time or tired or was not excited about deciding what to write about and then doing it.&lt;/p&gt;
&lt;p&gt;But I knew I had to develop the habit, and overcome perfectionism, and just get going. I&apos;ve known too many people who started a blog, posted to it exuberantly for a while, and then didn&apos;t continue.&lt;/p&gt;
&lt;p&gt;Here are some ways I have managed to go an entire month so far:&lt;/p&gt;
&lt;h2&gt;Advice from PodCamp Pittsburgh 6&lt;/h2&gt;
&lt;p&gt;I began my new blog only after having attended &lt;a href=&quot;https://podcamppittsburgh.com/podcamp-pittsburgh-6/pcpgh6-sessions/&quot;&gt;PodCamp Pittsburgh 6&lt;/a&gt; and listening to enough advice that I had a strategy planned to get a strong start. I wouldn&apos;t start a new business without having an idea what I was doing, nor would I start a new computer program without having some tools and goals in mind, and writing for a blog is no different as a demanding enterprise.&lt;/p&gt;
&lt;h3&gt;Social storytelling, by Shawn Graham and Tom Kubilius&lt;/h3&gt;
&lt;p&gt;I have to thank &lt;a href=&quot;https://twitter.com/shawngraham&quot;&gt;Shawn Graham&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/tomkubilius&quot;&gt;Tom Kubilius&lt;/a&gt; for their session on &quot;social storytelling&quot;. To tell the truth, there is much they said (that I took notes on) that I have not yet implemented, but here is some of what I have consciously put into practice.&lt;/p&gt;
&lt;h4&gt;What do I care about?&lt;/h4&gt;
&lt;p&gt;Shawn and Tom repeatedly emphasized knowing your &lt;em&gt;why&lt;/em&gt; and what you care about. So when I write, I really do write about what I care about. There are a lot of things I could write about, but don&apos;t, because I don&apos;t really care about them.&lt;/p&gt;
&lt;p&gt;This piece of advice has helped me stay focused on what I care about rather than what might be easy for me to write about but with less or no passion. For example, instead of writing about something I already know well, I&apos;ll write about something I&apos;m discovering and learning &lt;em&gt;now&lt;/em&gt;. Since I do not really care much about the past, I do not bring it up unless it is a relevant prelude to a story from &lt;em&gt;now&lt;/em&gt;.&lt;/p&gt;
&lt;h4&gt;Be committed, and be regular&lt;/h4&gt;
&lt;p&gt;This is where I got my idea of &lt;em&gt;committing&lt;/em&gt; to post &lt;em&gt;every&lt;/em&gt; day. They didn&apos;t tell anyone how often to be posting, but I decided on that schedule for myself, knowing that the more spaced out a new activity is, the less likely I can keep it going.&lt;/p&gt;
&lt;h4&gt;Be social&lt;/h4&gt;
&lt;p&gt;Shawn put up a nice blog post shortly after PodCamp Pittsburgh 6 that discussed the &lt;a href=&quot;https://shawngraham.me/index.php/blog/the-golden-rule-of-successful-social-engagement&quot;&gt;golden rule of social engagement&lt;/a&gt;. My online activity cannot exist in a vacuum. For many years, I lurked and read a lot online but never commented. I&apos;ve changed that &quot;anti-social&quot; behavior.&lt;/p&gt;
&lt;p&gt;Now, when I am reading a blog, and feel compelled to respond to a post, I strongly consider doing so if I feel I can maybe make a contribution. At times, I just submit a short comment at the article&apos;s commenting system. Other times, I write my own article and post the URL of it as a comment. I find it useful to be inspired by some topic of discussion that other people already care out and started to talk about. Even if things do not progress beyond just my leaving a note, I know that I have planted a seed, and since the web is forever, the conversation can always be started back up by someone sometime later.&lt;/p&gt;
&lt;p&gt;(By the way, I am working on a blogroll of recommended sites I will put up on my web site.)&lt;/p&gt;
&lt;h3&gt;Blogging 201, by @burghbaby and @FireMom&lt;/h3&gt;
&lt;p&gt;At PodCamp Pittsburgh 6, I also attended &quot;Blogging 201&quot; by &lt;a href=&quot;https://twitter.com/burghbaby&quot;&gt;@burghbaby&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/FireMom&quot;&gt;@FireMom&lt;/a&gt;, another very informative session.&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/HwmsFdxsJmU?list=PL6F136EEC5F65EBDA&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h4&gt;&quot;Why&quot; answers a lot&lt;/h4&gt;
&lt;p&gt;The theme was repeated that a blogger should know the &lt;em&gt;why&lt;/em&gt; of what they&apos;re doing, because all kinds of questions or dilemmas can be answered that way: frequency, tone, topics, appropriate language, etc.&lt;/p&gt;
&lt;p&gt;I started writing only after knowing I had some pretty strong intuitions of why I&apos;m doing it. Still, recently I have been thinking of tightening up those intuitions even further, and writing up a really specific &quot;why&quot; page to put up on my site.&lt;/p&gt;
&lt;h4&gt;Finding fodder&lt;/h4&gt;
&lt;p&gt;The session had a ton of good advice on this topic.  I&apos;ll just mention one of the useful points: keeping track of ideas to later write about. I keep a log of ideas that come to me (in fact, one just came to me when I was last in the shower), so that I have no shortage of topics to write about in case I either come up dry (as far as exciting experiences during a day) or find some connection with some other idea I want to write about.&lt;/p&gt;
&lt;h3&gt;Blogging boundaries, by Miss Britt&lt;/h3&gt;
&lt;p&gt;The PodCamp session by &lt;a href=&quot;https://miss-britt.com/&quot;&gt;Miss Britt&lt;/a&gt; was very energetic and insightful.&lt;/p&gt;
&lt;h4&gt;What is your intent?&lt;/h4&gt;
&lt;p&gt;Britt noted that once upon a time, she used her blog to vent, and that led to a lot of trouble.&lt;/p&gt;
&lt;p&gt;I try to keep this in mind when I&apos;m writing about something and I might be feeling annoyed. I think that my tone in a few of my posts so far has veered slightly into &quot;venting&quot; territory, but that is not where I intend to go.&lt;/p&gt;
&lt;h4&gt;Live a life worth writing about&lt;/h4&gt;
&lt;p&gt;The advice to have a life to write about somehow really stuck with me.&lt;/p&gt;
&lt;p&gt;On days when I do something new and exciting, it is usually pretty easy to write something about it. So if I&apos;ve run in a 5K race or tried a new recipe when cooking or learned something at a seminar, it&apos;s fairly easy for me to write a post about my experience.&lt;/p&gt;
&lt;p&gt;I even joked to a friend that I was engaged in &quot;Blog-Driven Living&quot;. Of course, it was just a joke: I have never done something arbitrary just to have something to write about, and never will. But interestingly, a different dynamic has developed: sometimes when there is a project I&apos;ve wanted to start, or complete, but have put off, I realize, &quot;It would be nice if I actually got my act together and did it, so that I could write about it&quot;, and do it! Blogging has actually improved my offline productivity.&lt;/p&gt;
&lt;h3&gt;Lunch&lt;/h3&gt;
&lt;p&gt;The last day of PodCamp Pittsburgh 6, I was eating lunch and &lt;a href=&quot;https://justinkownacki.com/&quot;&gt;Justin Kownacki&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.robjdic.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.robjdic.com/&quot;&amp;gt;Rob de la Cretaz&amp;lt;/span&amp;gt; happened to sit near me. I wasn&apos;t talking with them (to be honest, I was dead tired from the weekend and was just trying to eat my lunch alone and then take a long nap immediately afterwards), but overheard them discussing the past, present, and future of PodCamp Pittsburgh.&lt;/p&gt;
&lt;p&gt;I piped in, saying I had come the previous year, and learned some things but had not yet started the blog I wanted to start. They basically just said, do it, and don&apos;t worry about whether it&apos;s perfect right off the bat. Just get started, now.&lt;/p&gt;
&lt;p&gt;It took me several days to make the plunge, but I did do it. Thanks again, Justin and Rob!&lt;/p&gt;
&lt;h2&gt;Seth Godin&lt;/h2&gt;
&lt;p&gt;Finally, I must mention Seth Godin.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.sethgodin.com/sg/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.sethgodin.com/sg/&quot;&amp;gt;Seth Godin&amp;lt;/span&amp;gt; is my hero. He&apos;s written a bunch of &lt;a href=&quot;https://web.archive.org/web/20180328165919/http://www.sethgodin.com:80/sg/books.asp&quot;&gt;books&lt;/a&gt;, some of which I&apos;ve actually read or browsed, before discovering his &lt;a href=&quot;https://sethgodin.typepad.com/seths_blog/&quot;&gt;blog&lt;/a&gt;, which I recommend subscribing to.&lt;/p&gt;
&lt;p&gt;The very day after I started my blog, I saw his post on &lt;a href=&quot;https://sethgodin.typepad.com/seths_blog/2011/09/talkers-block.html&quot;&gt;&quot;talker&apos;s block&quot;&lt;/a&gt; and have had it in my web browser as a &quot;permanent tab&quot; since then.&lt;/p&gt;
&lt;p&gt;Godin basically says, we don&apos;t have talker&apos;s block, so why should we have writer&apos;s block? Reflecting on this, I knew that I was going to write as though I were talking. So here I am. The quality of my blog posts has varied. I know that. But that&apos;s OK, because what matters is where I am and where I am going, not where I have been. I know I will improve considerably with time and experience.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;One month of blogging, and I&apos;m still at it, and still striving to improve at it.&lt;/p&gt;
&lt;p&gt;Thank you, everyone, for your help!&lt;/p&gt;
</content:encoded></item><item><title>Improving navigation on my blog</title><link>https://franklinchen.com/blog/2011/10/20/improving-navigation-on-my-blog/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/20/improving-navigation-on-my-blog/</guid><pubDate>Thu, 20 Oct 2011 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I finally got down and dirty, and made some much-needed additions to my blog. I had delayed this work because my priority since starting the blog a month ago was to write content. I took time off today from writing content, in order to improve the navigation on my blog.&lt;/p&gt;
&lt;p&gt;Here are the main improvements I have made:&lt;/p&gt;
&lt;h2&gt;Tags&lt;/h2&gt;
&lt;p&gt;I finally came up with a &lt;a href=&quot;/tags/&quot;&gt;tags page&lt;/a&gt;, and added it to the navigation bar.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://octoopress.org&quot;&gt;Octopress&lt;/a&gt; does not yet have a default plugin to create such a page, but I found and modified some &lt;a href=&quot;https://github.com/mattfoster/mattfoster.github.com/edit/master/Rakefile&quot;&gt;Ruby code&lt;/a&gt; for the &lt;code&gt;Rakefile&lt;/code&gt; in order to generate my tags page. I hope this will be helpful to readers who may up till now have been confused because of the variety of topics I write about. I had made a decision up front to write about everything in this blog, rather than compartmentalize my life into different blogs.&lt;/p&gt;
&lt;p&gt;An improvement I will add later: make it easy for readers to subscribe using RSS their chosen tag subsets of my blog, so that those only interested in, say, my posts about running, can subscribe to an RSS feed that only includes those posts.&lt;/p&gt;
&lt;h2&gt;About me&lt;/h2&gt;
&lt;p&gt;For now, I compressed the &quot;about me&quot; aside, with the intention of eventually creating a detailed &quot;about me&quot; page linked off the navigation bar.&lt;/p&gt;
&lt;h2&gt;Contact me&lt;/h2&gt;
&lt;p&gt;I created a &lt;a href=&quot;/contact/&quot;&gt;contact&lt;/a&gt; page, and added links to it from the navigation bar and the &quot;about me&quot; aside.&lt;/p&gt;
&lt;h2&gt;404&lt;/h2&gt;
&lt;p&gt;I created a custom &lt;a href=&quot;/404.html&quot;&gt;&quot;page not found&quot;&lt;/a&gt; page, since the default page was useless.&lt;/p&gt;
</content:encoded></item><item><title>Really taking up the challenge of minimalism</title><link>https://franklinchen.com/blog/2011/10/19/really-taking-up-the-challenge-of-minimalism/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/19/really-taking-up-the-challenge-of-minimalism/</guid><pubDate>Wed, 19 Oct 2011 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;Yesterday, I talked about &lt;a href=&quot;/blog/2011/10/18/disagreement-on-the-use-of-time/&quot;&gt;use of &lt;strong&gt;time&lt;/strong&gt;&lt;/a&gt;. Today, I am talking about &lt;strong&gt;space&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I have too much &lt;em&gt;stuff&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I know that. I&apos;ve known that for years. I&apos;ve not been happy about it. But I&apos;ve also not been happy about getting rid of my &lt;em&gt;stuff&lt;/em&gt;. When I got married, I had to get rid of probably half of my &lt;em&gt;stuff&lt;/em&gt;, to make space for Abby to move in, but I did not part with them happily.&lt;/p&gt;
&lt;p&gt;And I &lt;strong&gt;still&lt;/strong&gt; have too much &lt;em&gt;stuff&lt;/em&gt;. I&apos;ve been promising to get rid of more, but have dragged my feet on the project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This time is different.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.missminimalist.com/jol-mmfront-180-bb.jpg&quot; alt=&quot;Front cover of The Joy of Less by Francine Jay&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My promise&lt;/h2&gt;
&lt;p&gt;Today I made a promise to Abby, and now I&apos;m making a promise in public, to complete the project.  Yes, I know, there are claims that one should &lt;a href=&quot;https://web.archive.org/web/20140220062432/http://www.ted.com:80/talks/derek_sivers_keep_your_goals_to_yourself.html&quot;&gt;keep one&apos;s goals to oneself&lt;/a&gt;, but I&apos;m ignoring them this time.&lt;/p&gt;
&lt;p&gt;Objectively, I know all the reasons not to have a lot of &lt;em&gt;stuff&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Yes, I&apos;m familiar with George Carlin&apos;s great monologue:&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;MvgN5gCuLac&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;And yes, I&apos;ve read &lt;a href=&quot;https://zenhabits.net/about/&quot;&gt;Leo Babauta&lt;/a&gt;&apos;s book, &lt;a href=&quot;https://thepowerofless.com/&quot;&gt;&lt;em&gt;The Power of Less&lt;/em&gt;&lt;/a&gt;, which did help me make radical changes to my life a couple of years ago.&lt;/p&gt;
&lt;p&gt;Although I&apos;ve made much progress in the past two to three years, it was never enough. We got rid of over a thousand books (as I mentioned in yesterday&apos;s post), through selling on Amazon and donating to various sources. We got rid of most of my LPs, started getting rid of some of my CDs and DVDs. Etc. But there is still a lot left. Not only books, music, movies, but also computer parts, cables, old pens, unused small appliances, etc.&lt;/p&gt;
&lt;p&gt;Abby deserves credit for having taken charge of most of the decluttering that we&apos;ve done. Minimalism comes to her much more easily than it does to me. I&apos;m the one who has all that stuff in the basement going unused!&lt;/p&gt;
&lt;p&gt;My &quot;pack rat&quot; mentality always lurks around, ready to emerge at any time to defend keeping something. So I never completed the project of &lt;em&gt;really&lt;/em&gt; letting go. There was always something to keep that deep down I knew I didn&apos;t really need.&lt;/p&gt;
&lt;h2&gt;Another book on minimalism&lt;/h2&gt;
&lt;p&gt;But another book on minimalism has really inspired me to go further with my &quot;decluttering&quot;: &lt;a href=&quot;https://www.missminimalist.com/about/&quot;&gt;Francine Jay&lt;/a&gt;&apos;s &lt;a href=&quot;https://www.amazon.com/gp/product/0984087311?ie=UTF8&amp;amp;tag=missminimalist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0984087311&quot;&gt;&lt;em&gt;The Joy of Less, A Minimalist Living Guide&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For some reason, this book&apos;s conversational tone and detailed exploration of why we keep stuff was inspirational to me. I have to confess that some books and web sites on minimalism that I have looked at in the past seemed a bit too manic and preachy, and turned me off. They made minimalism look like some kind of self-righteous game, a competition, a form of reverse-snobbery (&quot;oh, look at me, I have only a hundred possessions!&quot;). Also, they made it sound easy to make the leap to minimalism, and since I find the leap very difficult, I got discouraged.  I just didn&apos;t relate well, emotionally, to those sources of advice.&lt;/p&gt;
&lt;p&gt;(Often, advice or information or stories meant to be helpful or interesting might fall on deaf ears if the audience does not in a deep way identify with the author. That is an insight I am still in the process of grappling with as I try to figure out how to make my blog maximally useful to you, my reader!)&lt;/p&gt;
&lt;h2&gt;Helpful insights and ideas&lt;/h2&gt;
&lt;p&gt;Here are just a few of the helpful ideas from the book.&lt;/p&gt;
&lt;h3&gt;What stuff is&lt;/h3&gt;
&lt;p&gt;To begin, the author classifies stuff as one of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;useful&lt;/li&gt;
&lt;li&gt;beautiful&lt;/li&gt;
&lt;li&gt;emotional&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Classification is helpful because it enables us to reflect on the &lt;em&gt;why&lt;/em&gt; of having something, and distinguish different functions.&lt;/p&gt;
&lt;h3&gt;You are not what you own&lt;/h3&gt;
&lt;p&gt;A powerful message, because often we have stuff just because someone else has it or because we want to show off, whether through unnecessary furniture or decorations or even a large book collection (I plead guilty to the latter in the past).&lt;/p&gt;
&lt;p&gt;We are what we &lt;em&gt;do&lt;/em&gt;, &lt;em&gt;now&lt;/em&gt;; not what we &lt;em&gt;have&lt;/em&gt; to remind us of what we &lt;em&gt;did&lt;/em&gt; (I used to keep around a bunch of trophies that I finally admitted were really pointless to hang onto).&lt;/p&gt;
&lt;h3&gt;Less stress and more freedom&lt;/h3&gt;
&lt;p&gt;The author tells us to think of how carefree and happy we were in college, when we had the least amount of stuff. We were learning, living, having fun. And we were not tied down.&lt;/p&gt;
&lt;p&gt;It&apos;s true, though: I do remember a time when I had almost nothing, and that was fine. Strange how things changed.&lt;/p&gt;
&lt;h3&gt;Space&lt;/h3&gt;
&lt;p&gt;&quot;Life is the space between our things.&quot; An intriguing image!  The author urges us to focus on what we &lt;em&gt;do&lt;/em&gt;, rather than what we &lt;em&gt;own&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Enjoy without owning&lt;/h3&gt;
&lt;p&gt;The author says, &quot;In pursuing a minimalist lifestyle, we need to resist the temptation to recreate the outside world within our abodes.&quot; We can &quot;shift some of our pleasures and activities into the public realm.&quot;&lt;/p&gt;
&lt;p&gt;I immediately understand how one can enjoy without owning, because for much of my life I did not own much. Libraries were one way I enjoy plenty without owning. Interestingly, today it is even easier now to enjoy without owning. Having Internet access, we can enjoy the resources from a vast digital world!&lt;/p&gt;
&lt;h3&gt;Pareto principle&lt;/h3&gt;
&lt;p&gt;The author invokes the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pareto_principle&quot;&gt;Pareto principle&lt;/a&gt;, which she interprets in our context as &quot;we use 20 percent of our stuff 80 percent of the time&quot;. So we could actually get rid of most of what we have and not really miss it!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I highly recommend this book to anyone who is even thinking about decluttering project, however big or small.&lt;/p&gt;
&lt;p&gt;As I make major progress on my continuing minimalism project, I&apos;ll write about it!&lt;/p&gt;
</content:encoded></item><item><title>Disagreement on the use of time?</title><link>https://franklinchen.com/blog/2011/10/18/disagreement-on-the-use-of-time/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/18/disagreement-on-the-use-of-time/</guid><pubDate>Tue, 18 Oct 2011 19:14:00 GMT</pubDate><content:encoded>&lt;p&gt;On Sunday, I went to the monthly meeting of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter&lt;/a&gt; of the American Recorder Society. I stopped by the room where beginner lessons were being held. I don&apos;t go to those lessons any more, because I would say I&apos;m an intermediate recorder player now. Fred, our director, was working with two women on soprano recorder. One of them was Rhonda, who had actually joined the local group at exactly the same time as me, back in March. I hadn&apos;t seen her in a while and asked where she&apos;d been. She said she had been playing French horn in the summer, so was getting back to recorder now. She happened to joke to the other woman, an older woman, that I was really serious and had been practicing an hour every day since starting out.&lt;/p&gt;
&lt;p&gt;To my surprise, the other woman (whom I don&apos;t remember ever having met before) immediately launched into some remarks I found snarky. She said, &quot;Well, that&apos;s probably an hour he&apos;s not washing dishes.&quot; I paused in shock, and then she continued, &quot;Or an hour he&apos;s not taking out the trash.&quot;&lt;/p&gt;
&lt;p&gt;I was not quite sure how to respond.&lt;/p&gt;
&lt;h2&gt;My response&lt;/h2&gt;
&lt;p&gt;Obviously, this could have been an opportunity for me to use &lt;a href=&quot;/blog/2011/10/11/communicating-through-dialogue/&quot;&gt;dialogue&lt;/a&gt; and try to understand why she said what she said, and what she really meant by her words that I found disparaging. In fact, thanks to my raised awareness from learning about dialogue just recently, at least I did not get angry or lose my temper. But I decided at the time that I was just passing by and was not interested in going off on a tangent, since I was heading back to the other room to set up my instruments.&lt;/p&gt;
&lt;p&gt;I simply replied calmly that actually, the hour of my time that went to recorder practice came out of time I used to spend on various forms of entertainment. I said that I don&apos;t watch any TV and I don&apos;t watch any movies. She didn&apos;t respond to that. For all I know, she might be one of the average Americans who watch &lt;a href=&quot;https://www.csun.edu/science/health/docs/tv&amp;amp;health.html&quot;&gt;4 hours of TV a day&lt;/a&gt;, and perhaps I unintentionally offended her.&lt;/p&gt;
&lt;p&gt;(Disclaimer: I am not one of those snobs who summarily look down on people who watch TV. I used to watch a lot of TV. In fact, I cannot imagine what my life would be today without having had access to TV, which expanded my emotional and intellectual world. But that was then; now, I simply make different choices with my time.)&lt;/p&gt;
&lt;p&gt;Anyway, I left the room and didn&apos;t see her again.&lt;/p&gt;
&lt;p&gt;But I&apos;m still curious about why she seemed annoyed that I spent an hour a day practicing music, as though I&apos;m not getting chores done. I won&apos;t speculate about why, since the only right way to satisfy my curiosity would be to ask her myself, and I passed up the opportunity to do so.&lt;/p&gt;
&lt;p&gt;My brief response to her was meant to convey a simple message: time management is important for all of us with our busy lives, but I&apos;ve made certain choices, sacrificing some activities in order to gain others. The decisions are often quite difficult, because I have a &lt;em&gt;huge&lt;/em&gt; number of interests, and therefore have to sacrifice the majority of them in order to focus on the fewer that I have decided are most worthwhile to pursue. A breadth-first traversal of all possible life activities would result in completing nothing.&lt;/p&gt;
&lt;h2&gt;Trading passive for active&lt;/h2&gt;
&lt;p&gt;A lot of my choices involve trading passive experiences for active experiences. Here are some examples.&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;In an earlier blog post, I already mentioned why &lt;a href=&quot;/blog/2011/10/02/i-love-music-but-rarely-listen-to-it-now/&quot;&gt;I don&apos;t listen to music much&lt;/a&gt; any more, because of time constraints. In effect, I traded listening to music for playing music.&lt;/p&gt;
&lt;h3&gt;Sports&lt;/h3&gt;
&lt;p&gt;Instead of watching sports, I engage in my own competitive physical activity, to become the athlete instead of the spectator. I enjoy &lt;a href=&quot;/categories/races/&quot;&gt;running races&lt;/a&gt;. I am hardly super fast; at my fastest, I did periodically win age group medals and trophies, but only because competition happened not to be very tough.&lt;/p&gt;
&lt;h3&gt;Exercise&lt;/h3&gt;
&lt;p&gt;I run considerably less than I used to. One reason is that once upon a time, I got into a competitive mode, trying to see how fast I could race, and now I am no longer in that mode. It takes too much time and energy. Another reason is that I decided, based on personal experience and learning from the &lt;a href=&quot;https://en.wikipedia.org/wiki/Paleolithic_lifestyle&quot;&gt;paleo/primal&lt;/a&gt; movement, that too much distance running isn&apos;t actually all that great for my overall balanced health.&lt;/p&gt;
&lt;p&gt;I traded distance training time for &lt;a href=&quot;/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/&quot;&gt;yoga&lt;/a&gt; and &lt;a href=&quot;/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/&quot;&gt;strength training&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I no longer run any more than every other day on average.&lt;/p&gt;
&lt;h3&gt;Reading&lt;/h3&gt;
&lt;p&gt;I&apos;ve always read a lot. I still do, using not only the vast web, but also the old-fashioned &lt;a href=&quot;/blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;local library&lt;/a&gt;. (Pittsburghers, please &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ourlibraryourfuture.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ourlibraryourfuture.org/&quot;&amp;gt;vote on November 8&amp;lt;/span&amp;gt;!)&lt;/p&gt;
&lt;p&gt;However, at some point I had to make peace with the fact that I could not read everything I might be interested in reading. Abby and I worked on selling or donating over a thousand (!!) books I owned but were just taking up space. It was very difficult parting with them, since one of my childhood dreams had been to build up a large personal library, but reason prevailed.&lt;/p&gt;
&lt;p&gt;I still encounter too much reading material, thanks to the web. I have tried to limit it by using Google Reader exclusively to access information, and never aimlessly loading up web sites, but I have to confess it is still hard to be selective.&lt;/p&gt;
&lt;p&gt;Also, now I am writing for my blog, so I am trading reading time for writing time.&lt;/p&gt;
&lt;h3&gt;Computer programming languages&lt;/h3&gt;
&lt;p&gt;I used to be a big computer language hobbyist. I enjoyed learning and playing with dozens of programming languages: if a language exists, I&apos;ve probably at least seen sample code and written some sample code for it at some point. I was even obsessed enough with the concept of designing good programming languages that for a while I was enrolled in the Ph.D. program in computer science at CMU, specializing in &lt;a href=&quot;https://www.cs.cmu.edu/~fox/languages.html&quot;&gt;programming language theory&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then as a practicing software developer, I eventually realized that to &lt;em&gt;get stuff done&lt;/em&gt;, I needed to scale back on my hobby. Therefore, for example, as I mentioned in my post about &lt;a href=&quot;/blog/2011/10/16/pittsburgh-software-developer-communities/&quot;&gt;local software developer groups&lt;/a&gt;, I have ceased following Python. Also, I have deliberately not even looked at new languages such as &lt;a href=&quot;https://fantom.org/&quot;&gt;Fantom&lt;/a&gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://gosu-lang.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://gosu-lang.org/&quot;&amp;gt;Gosu&amp;lt;/span&amp;gt;, and &lt;a href=&quot;https://confluence.jetbrains.net/display/Kotlin/Welcome&quot;&gt;Kotlin&lt;/a&gt;. (On the other hand, I am committed to learning and using &lt;a href=&quot;https://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; more, because the path from Java already exists.)&lt;/p&gt;
&lt;p&gt;I took only a quick look at Google&apos;s &lt;a href=&quot;https://www.dartlang.org/&quot;&gt;Dart&lt;/a&gt; after the big hype, and am not pursuing it further.&lt;/p&gt;
&lt;p&gt;The trade-off: trading time spent playing with new languages for time spent mastering and implementing programs with old languages.&lt;/p&gt;
&lt;h2&gt;Completely abandoning an activity&lt;/h2&gt;
&lt;p&gt;Sometimes, I have freed up time by completely abandoning an activity.&lt;/p&gt;
&lt;h3&gt;Dancing (part one)&lt;/h3&gt;
&lt;p&gt;Once upon a time, I did a lot of ballroom dancing. I even trained seriously and entered competitions through the &lt;a href=&quot;https://cmubdc.org/&quot;&gt;CMU ballroom dance club&lt;/a&gt;. I was dancing something like 20 hours a week (note: this was when I was not doing any reading or music or chess, as my trade-off). I quit competitive ballroom dancing eventually, and then even social ballroom dancing. I had also taken up swing and tango, and salsa more seriously, but then quit those too.&lt;/p&gt;
&lt;p&gt;Basically, my trade-off was that I completely quit dancing and took up chess.&lt;/p&gt;
&lt;h3&gt;Chess&lt;/h3&gt;
&lt;p&gt;In the past, chess was the most time-consuming hobby in my life. A couple of years ago, I was bent on finally achieving a national &lt;a href=&quot;https://en.wikipedia.org/wiki/Chess_master&quot;&gt;Master&lt;/a&gt; title. I studied hard, improved my game, played a lot. I won the &lt;a href=&quot;https://pscfchess.org/results/06040808.htm&quot;&gt;2006 Pennsylvania Game/29 Championship&lt;/a&gt; and the &lt;a href=&quot;https://pscfchess.org/results/06101414.htm&quot;&gt;2006 Pennsylvania Action Chess Championship&lt;/a&gt;; I was on the verge of making Master by planning to win the &lt;a href=&quot;https://pscfchess.org/results/07071414.htm&quot;&gt;2007 Pennsylvania Action Chess Championship&lt;/a&gt; when I utterly &lt;a href=&quot;https://en.wikipedia.org/wiki/Choke_(sports)&quot;&gt;choked&lt;/a&gt; and blew it by losing the last two games. I never really recovered from that. My life was changing at the time, having just starting to date Abby, and I stopped playing after a while, then after being married, I started playing again, but my heart was not in it, and I played terribly.&lt;/p&gt;
&lt;p&gt;I quit chess in February 2011. In effect, I traded chess for starting to play recorder.&lt;/p&gt;
&lt;p&gt;I have not played any chess since February. I don&apos;t really regret it.&lt;/p&gt;
&lt;h4&gt;(Update of 2013-01-23)&lt;/h4&gt;
&lt;p&gt;Actually, in the first half of 2012, &lt;a href=&quot;/blog/2012/02/07/on-playing-my-first-games-of-chess-in-a-year/&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;/blog/2012/05/31/some-pretty-attacking-chess-at-a-party-last-weekend/&quot;&gt;casual&lt;/a&gt; contact with chess led me to feel like playing again, and in August I &lt;a href=&quot;/blog/2012/08/21/returning-to-chess/&quot;&gt;decided to start playing in tournaments again&lt;/a&gt; and am right now in the middle of a &lt;a href=&quot;/blog/2013/01/16/pittsburgh-chess-club-championship-2013-round-1-the-art-of-swindling/&quot;&gt;six-week tournament&lt;/a&gt;. I&apos;ve gone back to the chess with clear constraints on how much time and energy I spend on it.&lt;/p&gt;
&lt;h4&gt;(Update of 2015-12-21)&lt;/h4&gt;
&lt;p&gt;Four years later, I made a focused push, temporarily putting many
things aside in my life, in the fall of 2015 to &lt;a href=&quot;/blog/2016/01/22/on-finally-achieving-the-us-national-master-chess-title-at-age-45-part-1&quot;&gt;achieve my US Chess
National Master title&lt;/a&gt;, and finally made it, a dream come true.&lt;/p&gt;
&lt;p&gt;Also, I have been teaching private lessons since 2013.&lt;/p&gt;
&lt;h3&gt;Dancing (part two)&lt;/h3&gt;
&lt;p&gt;I accidentally first met Abby when I returned to salsa dancing while still playing chess. Eventually, we started dating, and we were going dancing frequently, but eventually we both completely quit salsa dancing.&lt;/p&gt;
&lt;p&gt;The trade-off was that we got into hiking and kayaking together, which was more fulfilling than our going to dances together and my wanting to dance with a lot of women but her only wanting to dance with me.&lt;/p&gt;
&lt;p&gt;I consciously traded dancing for a relationship and marriage!&lt;/p&gt;
&lt;h4&gt;(Update of 2013-01-23)&lt;/h4&gt;
&lt;p&gt;Actually, Abby and I accidentally ended up doing some dancing together again, including discovering &lt;a href=&quot;/blog/2012/01/23/discovering-french-traditional-dance-in-pittsburgh/&quot;&gt;French dancing&lt;/a&gt; and &lt;a href=&quot;/blog/2012/03/31/my-first-sampling-of-english-country-dance-and-contra-dance/&quot;&gt;English country and contra dancing&lt;/a&gt;. We don&apos;t do it regularly, but it&apos;s been great doing it on occasion.&lt;/p&gt;
&lt;p&gt;Also, for 2013, we decided that we should dance together a little bit every day, just for ourselves, simply to appreciate that we can!&lt;/p&gt;
&lt;h3&gt;Marriage&lt;/h3&gt;
&lt;p&gt;Married life is a lot of trade-offs.  It&apos;s nothing resembling single life or dating life!&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Time is precious. We all have to make trade-offs. I&apos;ve explored some ways in which I made certain trade-offs at certain points in my life. In your own life, do you periodically double-check what your priorities are, when you feel &quot;too busy&quot; for something you think you value?&lt;/p&gt;
</content:encoded></item><item><title>The Joys of Convict Conditioning: Bodyweight Exercising</title><link>https://franklinchen.com/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/17/the-joys-of-convict-conditioning-bodyweight-exercising/</guid><pubDate>Mon, 17 Oct 2011 21:31:00 GMT</pubDate><content:encoded>&lt;p&gt;I spent the vast majority of my life completely, utterly sedentary. Let&apos;s put it this way: I was on the phone with my father yesterday and he said he went to some free senior citizen fitness program in a mall and ended up getting sweaty, and seemed concerned. I said, &quot;I&apos;m glad you got some good exercise!&quot; In other words, I was raised to never get sweaty.&lt;/p&gt;
&lt;p&gt;But when I neared age 30, and was getting heavier and heavier, and almost certainly going &lt;a href=&quot;https://en.wikipedia.org/wiki/Prediabetes&quot;&gt;prediabetic&lt;/a&gt;, I decided to completely change my life. I took up &lt;a href=&quot;/categories/running/&quot;&gt;running&lt;/a&gt;, karate, dancing, and weight lifting.&lt;/p&gt;
&lt;p&gt;What I always ended up having trouble with was weight lifting. I&apos;d go to the gym and mess around with the machines since they were there, but although I built up some muscle, the whole process was boring, I never felt like I was really accomplishing anything, and I felt out of whack. It took years of trial and error to come to some sort of strength training regimen that I actually enjoyed and felt really benefited me.&lt;/p&gt;
&lt;p&gt;Probably my first step out of the confusing world of strength training was the book &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://store.coreperformance.com/store/Products/Core-Performance-Book__AP-BOOK.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://store.coreperformance.com/store/Products/Core-Performance-Book__AP-BOOK.aspx&quot;&amp;gt;Core Performance&amp;lt;/span&amp;gt;. I still find the advice and exercises from the book tremendously useful, and highly recommend checking out the tips and videos free at the &lt;a href=&quot;https://www.coreperformance.com/&quot;&gt;Core Performance web site&lt;/a&gt;. (I will blog more about Core Performance in the future.)&lt;/p&gt;
&lt;p&gt;However, I found that when pressed for time, I would not necessarily be in the mood to get to my balance ball and free weights and do exactly what was in Core Performance.&lt;/p&gt;
&lt;p&gt;Recently, I gravitated toward a whole philosophy of &quot;exercise anywhere, anytime, with no equipment necessary&quot; that removes all excuses and mental friction. Welcome to &lt;a href=&quot;https://www.dragondoor.com/shop-by-department/books/b41/&quot;&gt;convict conditioning&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.dragondoor.com/assets/item/large/b411.jpg&quot; alt=&quot;Convict Conditioning cover&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My goals&lt;/h2&gt;
&lt;p&gt;First, let&apos;s get straight what my goals are when it comes to strength training.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Not a goal&lt;/strong&gt;: getting big muscles, getting ripped. I&apos;m a bit surprised by how many of my male friends are obsessed with getting ripped. A while ago I saw an interesting article discussing &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.freakonomics.com/2011/07/27/culture-bound-syndromes-run-amok/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.freakonomics.com/2011/07/27/culture-bound-syndromes-run-amok/&quot;&amp;gt;this obsession&amp;lt;/span&amp;gt;. Anyway, I have no goal of getting ripped (maybe because of my Asian cultural heritage, as suggested in the article), plus it is not possible for me anyway without steroids or something.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Goal&lt;/strong&gt;: to feel fit, feel strong, and &lt;em&gt;be&lt;/em&gt; strong: i.e., so I can do reasonable things like lift and throw and punch and break a fall, etc.&lt;/p&gt;
&lt;h2&gt;What is convict conditioning?&lt;/h2&gt;
&lt;p&gt;Convict conditioning basically refers to what one can do if, say, one were in jail and had no access to any particular equipment and wanted to get functionally strong, to do what is necessary to survive in such an environment.&lt;/p&gt;
&lt;p&gt;OK, I don&apos;t plan on being in such a grim survival environment, but I like the minimalist idea of making do with what one has, and not being dependent on any gadgets.&lt;/p&gt;
&lt;p&gt;Also, I found that once I started trying to really do pushups, pullups, and squats, they are &lt;em&gt;amazingly hard&lt;/em&gt;. I mean, it&apos;s one thing just mechanically choosing weights at a gym and going through fixed motions with them, but it&apos;s another thing being faced with your own body weight and realizing that you are naked, asking, &quot;What can I do with my very body?&quot;&lt;/p&gt;
&lt;p&gt;I hate to sound mystical or something, but it&apos;s like the distinction between subject and object blurs, and also the whole &quot;isolating muscles&quot; mentality disappears (which Core Performance started me on the path out of). I believe our bodies and minds are whole, and should work entirely in concert, not in isolation. So taking up bodyweight exercises seriously is, in the end, even a philosophical statement.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying that we shouldn&apos;t also take advantage of machines and gadgets (in fact, I still find balance balls, medicine balls, rowing machines, etc. to be useful). I&apos;m just saying that I &lt;em&gt;really&lt;/em&gt; enjoy exercise when away from all that.&lt;/p&gt;
&lt;h2&gt;A detour concerning inactivity and exercise&lt;/h2&gt;
&lt;p&gt;I&apos;ve come to believe that it is totally unnatural to compartmentalize one&apos;s life the way I once did: sitting down working much of the day and then allocating some discrete block of time for exercise in some special location (home or gym).&lt;/p&gt;
&lt;p&gt;Reading &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.timferriss.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.timferriss.com/&quot;&amp;gt;Tim Ferriss&amp;lt;/span&amp;gt; and his long-running &lt;a href=&quot;https://www.fourhourworkweek.com/blog/&quot;&gt;blog&lt;/a&gt; and his recent book &lt;a href=&quot;https://www.fourhourbody.com/&quot;&gt;&lt;em&gt;The 4-Hour Body&lt;/em&gt;&lt;/a&gt;, as well as sources from the whole broad &lt;a href=&quot;https://robbwolf.com/&quot;&gt;paleo&lt;/a&gt;/&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.marksdailyapple.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.marksdailyapple.com/&quot;&amp;gt;primal&amp;lt;/span&amp;gt; diet and lifestyle, and hearing about the research showing how bad it is to be &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.geekosystem.com/sitting-health-dangers/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.geekosystem.com/sitting-health-dangers/&quot;&amp;gt;sitting&amp;lt;/span&amp;gt; for an extended period at all, I&apos;ve made sure to take frequent breaks away from my computer.&lt;/p&gt;
&lt;p&gt;When taking a break, I might just walk to get some water or stretch, but now that I know of the benefits of intermittent sprints of intense activity, convict conditioning becomes even more relevant.&lt;/p&gt;
&lt;h2&gt;Practical advantages of bodyweight exercising&lt;/h2&gt;
&lt;p&gt;From a practical point of view, pushups, pullups, and squats are great because I can do them almost anywhere, anytime.&lt;/p&gt;
&lt;p&gt;I will often just get down on the floor at work or at home, and do various forms of pushups, or squats. That gets the blood flowing.&lt;/p&gt;
&lt;p&gt;Pullups are trickier, because although I have tried doing them by grasping onto the top of my office door frame at work, it&apos;s painful and unreliable.  However, at home, I have on the frame of one entryway a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.doorgym.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.doorgym.net/&quot;&amp;gt;Door Gym&amp;lt;/span&amp;gt; pullup bar, which I use at random times when passing through.&lt;/p&gt;
&lt;p&gt;Needless to say, bodyweight exercising comes in handy also when traveling, or attending some all-day conference or other such event. It&apos;s easy to go hide somewhere momentarily and do a bunch of pushups.&lt;/p&gt;
&lt;p&gt;Finally, I have found in the past year that just doing a few seconds of intense activity to boost my metabolism before eating has a noticeable effect in decreasing my fat percentage. This stuff works!&lt;/p&gt;
&lt;h2&gt;Progress&lt;/h2&gt;
&lt;p&gt;Pullups have always been really hard for me, but as of today, to my surprise, I&apos;m finally up to eight reps from a dead hang.&lt;/p&gt;
&lt;p&gt;I still am nowhere near doing a single one-arm pullup or pushup. I love a challenge. We&apos;ll see when I get there.&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh software developer communities</title><link>https://franklinchen.com/blog/2011/10/16/pittsburgh-software-developer-communities/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/16/pittsburgh-software-developer-communities/</guid><pubDate>Sun, 16 Oct 2011 19:38:00 GMT</pubDate><content:encoded>&lt;p&gt;In the past couple of years, I started to get involved in various local Pittsburgh groups of people who are committed enough to the art and science of software development to actually meet up outside of work to share ideas and experiences. Now and then, there has been talk of bringing the different groups together for special events, to share even more (especially outside the boundaries of particular computer language communities), so I felt it was a good time for me to compile a list of the different groups whose meetings I have attended or at least have heard about.&lt;/p&gt;
&lt;p&gt;I welcome additions and corrections as well as further discussion of this list. I will update the list upon feedback.&lt;/p&gt;
&lt;p&gt;(Last update: 2011-10-18)&lt;/p&gt;
&lt;h2&gt;Ruby&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://web.archive.org/web/20250518160835/http://pghrb.org/&quot;&gt;Pittsburgh Ruby group&lt;/a&gt; is quite active. It has been meeting the first Thursday of every month at Vivisimo.&lt;/p&gt;
&lt;p&gt;I have been attending this more as I finally started getting into Ruby in 2010.&lt;/p&gt;
&lt;h2&gt;Python&lt;/h2&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghpython.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghpython.org/&quot;&amp;gt;Pittsburgh Python group&amp;lt;/span&amp;gt; is also active. It has been meeting the fourth Wednesday of every month at Vivisimo.&lt;/p&gt;
&lt;p&gt;There is a lot of use of Python for scientific computing, such as natural language processing and machine learning, among this community.&lt;/p&gt;
&lt;p&gt;I do not attend this group&apos;s meetings regularly because I currently only use Python to maintain an &lt;a href=&quot;https://www.scons.org/&quot;&gt;SCons&lt;/a&gt; script at work.&lt;/p&gt;
&lt;h2&gt;JavaScript&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/&quot;&gt;Pittsburgh JavaScript meetup group&lt;/a&gt; only came into being in June 2011, thanks to &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.fusioncube.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.fusioncube.net/&quot;&amp;gt;Steve Brownlee&amp;lt;/span&amp;gt;, who hosts the meetup at Smith Micro up in McCandless.&lt;/p&gt;
&lt;p&gt;The group has been pretty active, despite the location.&lt;/p&gt;
&lt;h2&gt;jQuery&lt;/h2&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.jburgh.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.jburgh.com/&quot;&amp;gt;Pittsburgh jQuery user group&amp;lt;/span&amp;gt; is scheduled to meet once a month at &lt;a href=&quot;https://web.archive.org/web/20250925164017/https://www.hackpittsburgh.org/&quot;&gt;HackPittsburgh&lt;/a&gt; in Uptown. However, I get the impression that it has not been meeting very regularly. I attended the meeting in March and another in August, but otherwise, have had to miss a meeting or there was none.&lt;/p&gt;
&lt;p&gt;There has been some talk of merging with the JavaScript meetup group.&lt;/p&gt;
&lt;h2&gt;Java&lt;/h2&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://java.net/projects/pittjug/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://java.net/projects/pittjug/&quot;&amp;gt;Pittsburgh Java User Group&amp;lt;/span&amp;gt; has been around for quite some time. It meets at the &lt;a href=&quot;https://www.pghtech.org/&quot;&gt;Pittsburgh Technology Council&lt;/a&gt; on Second Avenue. When there are meetings, they are announced on the mailing list and posted at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghtech.org/events/default.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghtech.org/events/default.aspx&quot;&amp;gt;pghtech calendar&amp;lt;/span&amp;gt; where one should register before attending.&lt;/p&gt;
&lt;p&gt;PittJUG was more active in the past: I was attending fairly regularly in 2009 and 2010, but now meetings have been infrequent.&lt;/p&gt;
&lt;p&gt;However, an experiment is about to begin to revitalize the group: on October 25, we&apos;ll be trying an &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/home/open-spaces&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/home/open-spaces&quot;&amp;gt;Open Spaces&amp;lt;/span&amp;gt; format to take place of the old format that seemed to result in long presentations by people.&lt;/p&gt;
&lt;h2&gt;Pittsburgh Geek Out Day&lt;/h2&gt;
&lt;p&gt;Speaking of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/home/open-spaces&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/home/open-spaces&quot;&amp;gt;Open Spaces&amp;lt;/span&amp;gt;, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.pghgeekoutday.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.pghgeekoutday.com/&quot;&amp;gt;Pittsburgh Geek Out Day&amp;lt;/span&amp;gt; was created specifically to use that very format. There have been three &quot;geek out day&quot; meetings so far, in April, May, and August 2011. The first two involved blocking out a Saturday morning each, and the second was on a Wednesday evening, and I attended all three.&lt;/p&gt;
&lt;p&gt;I am sold on the virtues of Open Spaces. The format of long presentations by people is, I think, usually quite inefficient of everyone&apos;s time and attention. A lot of the users groups have moved toward &quot;lightning talks&quot;, which are definitely an improvement, but opening things up toward even more active participation by everyone was a revelation to me.&lt;/p&gt;
&lt;p&gt;The next meeting of Pittsburgh Geek Out Day is November 5, so sign up if you haven&apos;t been to one yet and can spare a Saturday morning!&lt;/p&gt;
&lt;h2&gt;Agile&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/PittsburghAgile/&quot;&gt;Pittsburgh Agile meetup group&lt;/a&gt; is fairly new, having its first meeting in April 2011. It has been meeting at &lt;a href=&quot;https://www.matrixformedia.com/&quot;&gt;Matrix Solutions&lt;/a&gt; on the North Shore and is active.&lt;/p&gt;
&lt;p&gt;This group involves a mix of people who are developers as well as those who are managers, and of course, those who fall into both categories.&lt;/p&gt;
&lt;h2&gt;Apple&lt;/h2&gt;
&lt;p&gt;Developers for Apple platforms, i.e., MacOS X and iOS, have a home at &lt;a href=&quot;https://web.archive.org/web/20250817224918/http://www.cocoaheads.org/us/PittsburghPennsylvania/index.html&quot;&gt;CocoaHeads&lt;/a&gt;.  I have never been to their meetings, but have a friend who attends, and it seems to be pretty active.&lt;/p&gt;
&lt;p&gt;It meets the third Thursday of every month at Smith Micro.&lt;/p&gt;
&lt;h2&gt;Apple iOS&lt;/h2&gt;
&lt;p&gt;There is an &lt;a href=&quot;https://www.meetup.com/iPhone-iPad-Mobile-App-Developers-Pittsburgh-Meetup/&quot;&gt;Pittsburgh Apple iOS meetup group&lt;/a&gt;, but I have not been to it.&lt;/p&gt;
&lt;h2&gt;Clojure&lt;/h2&gt;
&lt;p&gt;There is a &lt;a href=&quot;https://www.meetup.com/Clojure-PGH/&quot;&gt;Pittsburgh Clojure users group&lt;/a&gt; that used to meet, but I never made it to any of the meetings, and it seems to be inactive now.&lt;/p&gt;
&lt;h2&gt;Coding dojo&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://web.archive.org/web/20130329035753/http://tech.groups.yahoo.com:80/group/PghCodingDojo/?&quot;&gt;Pittsburgh Coding Dojo&lt;/a&gt; was active many years ago, but has been rather inactive recently. The last meeting I went to was in March 2011.&lt;/p&gt;
&lt;h2&gt;.NET&lt;/h2&gt;
&lt;p&gt;There is an active &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghdotnet.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghdotnet.org/&quot;&amp;gt;Pittsburgh .NET users group&amp;lt;/span&amp;gt;, but I have never been to any of its meetings.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I hope that this list will be useful to those who are already a member of one or more groups and interested in checking out the others, and perhaps in creating cross-group learning experiences and events.&lt;/p&gt;
&lt;p&gt;Are there any other groups of interest that I am missing? Please let me know.&lt;/p&gt;
&lt;p&gt;Also: since I have always taken notes for myself at each meeting of each user group that I have attended in the past couple of years (ha, I should have started blogging earlier, given my obsession with writing), if anyone is interested in any summaries or the like, let me know. So far, the only meeting I have written up for my blog has been a recent &lt;a href=&quot;/blog/2011/10/14/agile-anti-patterns/&quot;&gt;Agile meetup on anti-patterns&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Updates&lt;/h2&gt;
&lt;h3&gt;2011-10-18&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/akinsgre&quot;&gt;Greg&lt;/a&gt; reminded me to mention this useful calendar of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghtechevents.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghtechevents.com/&quot;&amp;gt;Pittsburgh tech events&amp;lt;/span&amp;gt;. Some months ago, I subscribed to it using Google Calendar, and it really is quite helpful to have around.&lt;/p&gt;
</content:encoded></item><item><title>Snapshots of Pittsburgh From a 12-mile Run</title><link>https://franklinchen.com/blog/2011/10/15/snapshots-of-pittsburgh-from-a-12-mile-run/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/15/snapshots-of-pittsburgh-from-a-12-mile-run/</guid><pubDate>Sat, 15 Oct 2011 19:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Today in Pittsburgh was a beautiful day for a run: sunny with clear, blue sky! So I went for a leisurely long run, with no particular route in mind, just going wherever I felt like going. I brought along my camera, as I did on &lt;a href=&quot;/blog/2011/10/12/i-love-trail-running-in-frick-park/&quot;&gt;Monday&apos;s run&lt;/a&gt;, and took a bunch of photos.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-highest-view.jpg&quot; alt=&quot;View of Pittsburgh&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Can you guess where this view of Pittsburgh came from? The answer will emerge below.&lt;/p&gt;
&lt;h2&gt;Frick Park&lt;/h2&gt;
&lt;p&gt;I began by running into Frick Park passing by the blue slide playground and past the meadow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-meadow.jpg&quot; alt=&quot;Frick Park meadow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then immediately into the Riverview Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-riverview-entrance.jpg&quot; alt=&quot;Frick Park Riverview Trail entrance&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then a sharp descent on the Riverview Extension Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-riverview-extension.jpg&quot; alt=&quot;Frick Park Riverview Extension Trail descent&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At the bottom, Fern Hollow. You can see how wild it has become. Several years ago this entire area was a big parking lot. It took years for the restoration to take effect, and I love it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-fern-hollow-wild.jpg&quot; alt=&quot;Frick Park Fern Hollow&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now on the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ninemilerun.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ninemilerun.org/&quot;&amp;gt;Nine Mile Run&amp;lt;/span&amp;gt; trail. I don&apos;t like that it&apos;s rough concrete, unfortunately (I did take a different way back). Notice the buildings high up in the distance. That&apos;s near where we&apos;re heading!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-nine-mile-run-trail.jpg&quot; alt=&quot;Frick Park Nine Mile Run Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Crossing a bridge, near the end of the Nine Mile Run Trail in Frick Park.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-nine-mile-run-end.jpg&quot; alt=&quot;Frick Park Nine Mile Run Trail near end&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Nine Mile Run&lt;/h2&gt;
&lt;p&gt;We&apos;re not in Frick Park any more.  Crossing Commercial Street.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/commercial-st.jpg&quot; alt=&quot;Commercial Street off Nine Mile Run Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Nine Mile Run Trail actually continues, across the street.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-trail-continues.jpg&quot; alt=&quot;Nine Mile Run Trail beyond Commercial St&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A quiet stretch of the trail. Sometimes I see cyclists coming this way.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-trail-quiet.jpg&quot; alt=&quot;Nine Mile Run Trail long stretch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Remnants of &lt;a href=&quot;https://web.archive.org/web/20140127204459/http://www.ninemilerun.org:80/slag-in-the-park/&quot;&gt;this area&apos;s past&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-slag-towers.jpg&quot; alt=&quot;Nine Mile Run Trail slag remnants&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fairly recent bridge crossing Nine Mile Run.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-bridge.jpg&quot; alt=&quot;Nine Mile Run Trail bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Been ascending, but now comes the biggest ascent, on a rough trail off the main path.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-summerset.jpg&quot; alt=&quot;Off Nine Mile Run trail up to Summerset&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/ascent-to-summerset.jpg&quot; alt=&quot;Up to Summerset&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Summerset at Frick&lt;/h2&gt;
&lt;p&gt;Now we&apos;re way up at the end of the developed section of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.summersetatfrickpark.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.summersetatfrickpark.com/&quot;&amp;gt;Summerset at Frick&amp;lt;/span&amp;gt;. This &lt;a href=&quot;https://en.wikipedia.org/wiki/Summerset_at_Frick_Park&quot;&gt;huge project&lt;/a&gt; only happened a few years ago.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-end.jpg&quot; alt=&quot;End of Summerset&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/view-from-summerset.jpg&quot; alt=&quot;View from Summerset end&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A quick look backward, at the rest of Summerset.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-edge.jpg&quot; alt=&quot;Summerset seen from end&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Looking forward, development still in progress.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-still-undeveloped.jpg&quot; alt=&quot;Summerset still undeveloped&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Highest view of Pittsburgh from Summerset. This is the photo I used at the beginning of the blog post.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-highest-view.jpg&quot; alt=&quot;View of Pittsburgh from Summerset end&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s time to head back. We&apos;ve reached the end of Summerset, really. You can see where the new homes stopped being built.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-really-end.jpg&quot; alt=&quot;Summerset last homes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Going back down the way we came.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/summerset-descent.jpg&quot; alt=&quot;Descending from Summerset&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Duck Hollow and on&lt;/h2&gt;
&lt;p&gt;Turned off at the fork to pass by Duck Hollow. It&apos;s always curious to see these homes hiding in this area. There used to be a big problem with dumping here, but a lot of work has gone into cleaning up.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/duck-hollow.jpg&quot; alt=&quot;Duck Hollow homes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now at the &lt;a href=&quot;https://en.wikipedia.org/wiki/Monongahela_River&quot;&gt;Monongahela River&lt;/a&gt;, along which there lies a long trail: Three Rivers Heritage, or Steel Valley Heritage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/monongahela-trail.jpg&quot; alt=&quot;Trail along Monongahela River&quot; /&gt;&lt;/p&gt;
&lt;p&gt;People like to fish here.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/monongahela-fishing.jpg&quot; alt=&quot;People parked and fishing at Monongahela River&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Returning to Frick Park&lt;/h2&gt;
&lt;p&gt;Time to turn around and head back all the way to Frick Park.  Note the train on the bridge.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/coke-express.jpg&quot; alt=&quot;Train on bridge at Monongahela&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And I always see someone fishing here. It doesn&apos;t look safe!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/bridge-fishing.jpg&quot; alt=&quot;Guy fishing under bridge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Just going back the way we came along the Nine Mile Run Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/nine-mile-run-trail-back-to-frick.jpg&quot; alt=&quot;Nine Mile Run Trail heading back to Frick Park&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Back in Frick Park&lt;/h2&gt;
&lt;p&gt;(Photos are much sparser from here on.)&lt;/p&gt;
&lt;p&gt;After returning to Frick Park, I took the Deer Creek Trail to avoid the concrete of the Nine Mile Run Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-deer-creek-trail.jpg&quot; alt=&quot;Deer Creek Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I took the Tranquil Trail up north. I always seem to see a lot of couples taking a walk on this trail. It&apos;s a nice, quiet place to be.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/tranquil-trail-couple.jpg&quot; alt=&quot;Tranquil Trail with a couple walking together&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I took the Homewood Trail way up, then emerged to pass by the famous &lt;a href=&quot;https://web.archive.org/web/20250822040548/https://www.lawnbowlingpittsburgh.org/&quot;&gt;Frick Park Lawn Bowling Greens&lt;/a&gt;. I&apos;ve actually seen little old ladies play here before.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/frick-park-lawn-bowling-greens.jpg&quot; alt=&quot;Frick Park Lawn Bowling Greens&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Just a quick view of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.thehomewoodcemetery.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.thehomewoodcemetery.com/&quot;&amp;gt;Homewood Cemetery&amp;lt;/span&amp;gt;, before heading back down Tranquil Trail. Homewood Cemetery is where I tend to run in winter because of snow and ice drainage and peace and quiet. I used to do marathon training up here too.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/homewood-cemetery.jpg&quot; alt=&quot;Homewood Cemetery above Tranquil Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All the way down Tranquil Trail now, back to Fern Hollow. That meadow area is a favorite of dogs and their owners at play.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/12-mile-run/tranquil-trail-dogs.jpg&quot; alt=&quot;Tranquil Trail meadow with dogs&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Returning home&lt;/h2&gt;
&lt;p&gt;The rest of the run was just going back up the Falls Ravine Trail and back up the Riverview Extension Trail and out of the park back home.&lt;/p&gt;
&lt;p&gt;It was about 12 miles total, a pretty long run for me these days. But the weather was incredibly great, and the run was so peaceful.&lt;/p&gt;
&lt;p&gt;I wore my &lt;a href=&quot;/blog/2011/10/12/i-love-trail-running-in-frick-park/&quot;&gt;KSO Trek&lt;/a&gt; shoes, as usual, but this was probably the longest run I&apos;ve done in these shoes.&lt;/p&gt;
&lt;p&gt;My feet were pretty sore by the end, because of all the rocks I had to deal with, but after half an hour of stretching and recovering, and eating a large restorative meal, I felt fine. Going to take a rest day off from running tomorrow, but Monday I should be ready to enjoy the autumn changes further.&lt;/p&gt;
&lt;p&gt;I feel blessed that I can regularly just hop out the door and go on little journeys like this in Frick Park.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-13)&lt;/h2&gt;
&lt;p&gt;By coincidence, almost exactly a year later, I introduced a friend to running &lt;a href=&quot;/blog/2012/10/13/introducing-a-friend-to-the-joys-of-trail-running-in-frick-park/&quot;&gt;Frick Park largely along this route&lt;/a&gt;. I will never get tired of running in Frick Park.&lt;/p&gt;
</content:encoded></item><item><title>Agile Anti-Patterns</title><link>https://franklinchen.com/blog/2011/10/14/agile-anti-patterns/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/14/agile-anti-patterns/</guid><pubDate>Fri, 14 Oct 2011 22:52:00 GMT</pubDate><content:encoded>&lt;p&gt;On Wednesday, I left my regular &lt;a href=&quot;/blog/2011/09/28/staring-at-the-wall-with-nowhere-to-go/&quot;&gt;meditation session&lt;/a&gt; early, to rush off to a meeting of the relatively new &lt;a href=&quot;https://www.meetup.com/PittsburghAgile/&quot;&gt;Pittsburgh Agile meetup group&lt;/a&gt;. &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://andrewcox.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://andrewcox.org/&quot;&amp;gt;Andrew Cox&amp;lt;/span&amp;gt; gave a very informative talk on &lt;a href=&quot;https://www.meetup.com/PittsburghAgile/events/36899642/&quot;&gt;Agile anti-patterns&lt;/a&gt;.  (He has put up online his &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://files.meetup.com/1792120/agile-antipatterns.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://files.meetup.com/1792120/agile-antipatterns.pdf&quot;&amp;gt;slides with presentation notes&amp;lt;/span&amp;gt;.)&lt;/p&gt;
&lt;p&gt;Around ten other people attended (a small turnout compared to some past meetings of the group). I have been to two or three of this group&apos;s meetups so far, and have found them rather useful, prodding me to reflect on my own software development processes and start to make changes to them.&lt;/p&gt;
&lt;p&gt;What I like about this group&apos;s meetings is that there is a lot of informal discussion and contribution by a diverse array of people who share stories from their work experiences. Some of the participants are new to &lt;a href=&quot;https://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;Agile&lt;/a&gt;; others have officially adopted it but seek guidance for how to implement it better; others are trying to introduce Agile into an environment that is skeptical of it.&lt;/p&gt;
&lt;p&gt;I enjoy learning about &lt;a href=&quot;https://en.wikipedia.org/wiki/Anti-pattern&quot;&gt;anti-patterns&lt;/a&gt; when getting started in new endeavors because they are a distillation of hard-won experience in how &lt;em&gt;not&lt;/em&gt; to go about things, and also how to &quot;refactor&quot; back out of a bad practice into a good practice.&lt;/p&gt;
&lt;p&gt;Here are just a few of the discussion points that particularly spoke to me, along with my own analogies that I found useful.&lt;/p&gt;
&lt;h2&gt;We tried baseball and it didn&apos;t work&lt;/h2&gt;
&lt;p&gt;This anti-pattern refers to a &quot;parable&quot; from the earlier &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://xprogramming.com/articles/jatbaseball/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://xprogramming.com/articles/jatbaseball/&quot;&amp;gt;XP movement&amp;lt;/span&amp;gt; and simply refers to what can happen when you take a process (such as the game of baseball) and make all kinds of modifications to it (such as reduce the number of players and change the equipment) and then the resulting process doesn&apos;t make any sense, and then you blame the whole process.&lt;/p&gt;
&lt;p&gt;Applied to Agile, it refers to not understanding how Agile is supposed to work, but radically modifying it in the name of improving it right off the bat. But I think this anti-pattern is relevant to all areas of human endeavor and therefore is an anti-pattern for living!&lt;/p&gt;
&lt;p&gt;My first thought was that of course there can never be any consensus on whether one should &quot;trust&quot; in some established process and try it out fully before improvising; there will always be a subjective element to the question of whether one is just following authority blindly. My second thought is that I&apos;ve learned through experience that it is often worth fully giving something a try, using experts&apos; advice, before automatically assuming that the experts are dummies and don&apos;t even need to be listened to at all.&lt;/p&gt;
&lt;h3&gt;My example: barefoot or minimalist running&lt;/h3&gt;
&lt;p&gt;For example, running barefoot or with minimalist shoes has become remarkably popular in recent years. An unfortunate side effect is anecdotes of people who try it out, get badly injured, and then proclaim minimalist running an unhealthy fad. When you look at the causes of the injuries, however, you find that people who have not yet adapted to proper landing technique or strengthened muscles have suddenly gone out and tried to run a couple of miles barefoot or in minimalist shoes. No wonder they limped home with bloody feet or shin splints.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;wrong&lt;/em&gt; conclusion to draw from those unfortunate incidents is that God intended for us to wear heavy Nike or New Balance shoes for walking and running. The &lt;em&gt;right&lt;/em&gt; conclusion is that one needs training and adaptation to change from one way of moving to another way of moving. But somehow, it is very human when trying something new and failing to blame what is new instead of blame oneself for perhaps misunderstanding the new.&lt;/p&gt;
&lt;h3&gt;The lesson&lt;/h3&gt;
&lt;p&gt;In the end, there is only one way to find out whether something new and unfamiliar will work for you. &lt;em&gt;You&lt;/em&gt; have to do the research, take the advice, try it out in good faith, and then see what happens. That is as true for Agile as it is for learning how to play piano, give an effective public presentation, or eat a healthy diet. Your optimal solution might turn out to be very different from someone else&apos;s, but you can&apos;t know that till you&apos;ve really tried different ideas, rather than go into something new with the idea of mainly ignoring it and trying to graft your old habits onto it.&lt;/p&gt;
&lt;h2&gt;Kitchen sink product&lt;/h2&gt;
&lt;p&gt;Another anti-pattern is when there&apos;s a list of features for a product, and they are all considered to be critical, and development is driven by the feature list.&lt;/p&gt;
&lt;p&gt;The Agile way is to be driven not by feature list, but by a &lt;a href=&quot;https://en.wikipedia.org/wiki/User_story&quot;&gt;story&lt;/a&gt; list. A story represents what a user will actually use to solve some problem. So the goal of Agile prioritization is to create releases that actually enable the user to get real work done. This makes sense to me because if a product just has a lot of disconnected features that don&apos;t fit together for common everyday use, then it is not effective. Furthermore, without user feedback on how the product is actually used or will actually be used, there is the risk of creating features that are not very important after all. In fact, in my experience as a software developer, I have often encountered this frustrating situation: a user demands some feature up front, making a big deal of it, but it happens to be difficult to implement, and we implement it, and then it turns out the user doesn&apos;t really need it. A better feedback loop, as opposed to up-front feature lists, makes sense.&lt;/p&gt;
&lt;h2&gt;Deadlines&lt;/h2&gt;
&lt;p&gt;The anti-pattern here isn&apos;t the existence of deadlines as such (deadlines are a fact of life), but the nature of the deadlines. A typical deadline anti-pattern is &quot;you must have X, Y, and Z by date D&quot;. It is framed in terms of some kind of priority of &lt;em&gt;quantity&lt;/em&gt; rather than &lt;em&gt;quality&lt;/em&gt;. The opposite of this anti-pattern is a process in which, if you can&apos;t have both quantity and quality given the constraints, you focus on quality. In the long haul, a decrease in quality can create even more problems as you have to keep trying to fix bugs and you spend all your time fixing bugs and introducing new ones. And as a result, you miss even more deadlines. How many of us have experienced this vicious cycle?&lt;/p&gt;
&lt;p&gt;The alternative is to reduce expectations in a more controlled way. Life is not perfect, so we need to determine what kind of &quot;imperfect&quot; is OK, rather than pretend that we can be perfect.&lt;/p&gt;
&lt;h3&gt;Analogy: running a marathon&lt;/h3&gt;
&lt;p&gt;Let&apos;s say you have never run a marathon before, and furthermore, have not done a lot of running. You could decide to preregister for a marathon coming up in one year and set that as your fixed deadline for your rebirth as a runner, and also set a particular goal for a finish time.&lt;/p&gt;
&lt;p&gt;I would suggest (having run marathons myself) that this may not be the best strategy for completing a marathon in an enjoyable and sustainable way. You could get sick or injured and not make it to the start line, or get to the finish line in pointless agony. Worse, you could swear off marathons or just plain running, and get nothing out of the experience except being able to say that you learned how to suffer. (I&apos;m not knocking knowing how to suffer; I&apos;m just saying that it is more productive to suffer while achieving your goal rather than suffer while not achieving it.)&lt;/p&gt;
&lt;p&gt;There are all kinds of ways to make the whole process of becoming a distance runner more enjoyable and sustainable.&lt;/p&gt;
&lt;p&gt;You could decide on the marathon but re-estimate your finish time goal along the way while training, and indeed, even during the event itself, e.g., if after a few miles you&apos;re not on pace to achieve your time goal, you had better change your goal, or else you will hit the wall and really slow down even worse.&lt;/p&gt;
&lt;p&gt;You could approach the task by splitting it up into incremental goals. If you&apos;ve never run a 5K before, you could target that as your first &quot;release&quot; of your personal distance running project. And then go to 10K, half marathon. This is what I did myself. I waited years before running my first marathon. (Even then, I screwed it up in a couple of ways!)&lt;/p&gt;
&lt;p&gt;What is important, both practically and philosophically, I think, is that it is safest to have a way of knowing that you have achieved something worthwhile and self-contained along the way during your process toward the ultimate goal.&lt;/p&gt;
&lt;h2&gt;Customer driven development&lt;/h2&gt;
&lt;p&gt;The anti-pattern of &quot;customer driven development&quot; involves always listening to your various customers and their requests. This is an anti-pattern because a hodgepodge of requests may not be coherent, and particular requests may be a lot more difficult to implement than is really worthwhile: damaging one&apos;s design for one particular feature for one particular customer may adversely impact the usability for everyone else. From a technical and business standpoint, customers&apos; requests must be filtered: respected, but filtered.&lt;/p&gt;
&lt;p&gt;Perhaps an extreme opposite of customer driven development, of course, was how Steve Jobs operated in Apple. To this day, I do not use an Apple mouse with my Macs. I have hated Apple mice to this day. I happen to like &quot;normal&quot; three-button mice. He never listened to people like me, and Apple did just fine with its one-button mouse, then the Mighty Mouse, etc. Maybe I wasn&apos;t happy, but a lot more people were and are. It is impossible to please everyone, so why even try?&lt;/p&gt;
&lt;h2&gt;Other anti-patterns&lt;/h2&gt;
&lt;p&gt;This blog post is already getting long, so I&apos;ll stop here in my discussion of the list of anti-patterns Andrew went through. There were a lot more!&lt;/p&gt;
&lt;p&gt;Again, here are Andrew&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://files.meetup.com/1792120/agile-antipatterns.pdf&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://files.meetup.com/1792120/agile-antipatterns.pdf&quot;&amp;gt;slides with notes&amp;lt;/span&amp;gt;, although they are not a replacement for the discussions that took place at the meetup.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I happen to believe that anti-patterns in any field reflect deep facts about human imperfection and inspiration and that is why I have tried to relate Agile development anti-patterns to other areas of life.&lt;/p&gt;
&lt;p&gt;If you are in the Pittsburgh area, I highly recommend checking out the &lt;a href=&quot;https://www.meetup.com/PittsburghAgile/&quot;&gt;Agile meetup group&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Why Dennis Ritchie Is Important</title><link>https://franklinchen.com/blog/2011/10/13/why-dennis-ritchie-is-important/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/13/why-dennis-ritchie-is-important/</guid><pubDate>Thu, 13 Oct 2011 18:35:00 GMT</pubDate><content:encoded>&lt;p&gt;I first heard of the death of &lt;a href=&quot;https://en.wikipedia.org/wiki/Dennis_Ritchie&quot;&gt;Dennis Ritchie&lt;/a&gt; yesterday, through a link (from Twitter or one of my blog feeds) to &lt;a href=&quot;https://en.wikipedia.org/wiki/Rob_Pike&quot;&gt;Rob Pike&lt;/a&gt;&apos;s short &lt;a href=&quot;https://plus.google.com/u/0/101960720994009339267/posts/ENuEDDYfvKP&quot;&gt;announcement on Google+&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;(Rob Pike has &lt;a href=&quot;https://plus.google.com/u/0/101960720994009339267/posts/33mmANQZDtY&quot;&gt;another post&lt;/a&gt; up now.)&lt;/p&gt;
&lt;p&gt;My first thought was, &quot;I don&apos;t even know when the last time was that he was in the media at all&quot;. He was so private. In my entire career in computing, I barely remembered the &lt;a href=&quot;https://web.archive.org/web/20260311035952/http://www.gotw.ca/publications/c_family_interview.htm&quot;&gt;occasional interview&lt;/a&gt; of him, since he never said anything outrageous or self-aggrandizing.&lt;/p&gt;
&lt;p&gt;My second thought was, his impact on my life was profound, but in such a different way from the impact on my life by, say, Steve Jobs. Whereas Jobs by personal example and creation of consumer products inspired me to get into computing, Ritchie by his quiet contributions laid the very foundations for the work I actually do.&lt;/p&gt;
&lt;h2&gt;C&lt;/h2&gt;
&lt;p&gt;Ritchie invented the programming language C, for one thing; C grew into the foundation of almost all programming in the computing industry. I was feeling slightly bad about just having recently poked a little bit of &lt;a href=&quot;/blog/2011/10/04/a-blast-from-the-past-c-plus-plus-abuse/&quot;&gt;harmless fun&lt;/a&gt; at the C family of programming languages, given the importance of C, but remembered that Ritchie said it himself: &quot;C is quirky, flawed, and an enormous success&quot;. So succinct, this comment, just like C with its spare syntax!&lt;/p&gt;
&lt;p&gt;C was not so easy for me to learn at first, but mastering it eventually gave me a sense of real power and a basis for understanding and using higher-level languages. I learned how to implement and tune data structures using C. I studied the assembly language generated by C compilers to understand assembly language, as well as understand how compilers work. When learning high-level languages such as &lt;a href=&quot;https://schemers.org/&quot;&gt;Scheme&lt;/a&gt;, I found it particularly useful to study the C code generated by some of the compilers for these languages. C was a &lt;em&gt;lingua franca&lt;/em&gt; for understanding how things worked, a low-level language that was just a step above machine language. The mental model provided by understanding C and how it compiles is surely a required part of a complete education of a programmer!&lt;/p&gt;
&lt;p&gt;C will still be alive a century from now, even if higher-level languages supplant it for most uses.&lt;/p&gt;
&lt;h2&gt;Unix&lt;/h2&gt;
&lt;p&gt;C was not invented in a vacuum. It was developed and refined by Ritchie in order to implement (along with Ken Thompson) the Unix operating system and complete programming environment. The world is profoundly indebted to Unix and its variants, of course. I have used some kind of Unix, happily, during my entire career. I have used a dozen Unix variants, from ULTRIX to SunOS to Apple&apos;s A/UX to NetBSD to Linux, and finally to Apple&apos;s Mac OS X, where my most important permanently open application is arguably Terminal (for the &lt;code&gt;bash&lt;/code&gt; command line)!&lt;/p&gt;
&lt;p&gt;Some form of Unix will still be alive a century from now. Its basic ideas and ideals are timeless.&lt;/p&gt;
&lt;h2&gt;Free and open source software movement&lt;/h2&gt;
&lt;p&gt;Finally, an entirely unintended consequence of Ritchie&apos;s contributions to C and Unix was that they enabled the free software movement and the amazing community and products that developed from that movement. I have not only benefited from the availability of free software, but also I have been inspired by the sharing culture behind it, and live it every day. Even if Ritchie was not a direct part of it, the generous spirit in which he did his work and encouraged the spread of C and Unix outside Bell Labs somehow seems embedded permanently in the movement.&lt;/p&gt;
&lt;p&gt;A century from now, Ritchie will still be remembered. I am sure of that.&lt;/p&gt;
</content:encoded></item><item><title>I Love Trail Running in Frick Park</title><link>https://franklinchen.com/blog/2011/10/12/i-love-trail-running-in-frick-park/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/12/i-love-trail-running-in-frick-park/</guid><pubDate>Wed, 12 Oct 2011 23:44:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;After finishing my road racing &quot;season&quot; for this year a while ago with the &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;Run Shadyside 5K&lt;/a&gt; that, frankly, left me quite exhausted, I returned to my true love, running easy in the trails of &lt;a href=&quot;https://www.pittsburghparks.org/frick&quot;&gt;Frick Park&lt;/a&gt;, just minutes away from where I live.&lt;/p&gt;
&lt;p&gt;On Monday, enjoying the strangely warm and dry weather, I did my usual five-mile route in the morning. The autumn leaves were not yet in full glorious color, but I took along my camera (for the first time ever on a run), to capture some of the experience.&lt;/p&gt;
&lt;p&gt;I began by jogging slowly to the closest entrance of the park, the blue slide playground.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-blue-slide.jpg&quot; alt=&quot;Frick Park: blue slide playground&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I ran past the playground and the meadow area to get to the Riverview Trail. I prefer getting off concrete and asphalt as quickly as possible when running!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-past-blue-slide.jpg&quot; alt=&quot;Frick Park: past the blue slide playground&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I took Riverview Trail to where it meets with the Riverview Extension Trail that sharply goes downhill, but veered off to take the Lower Riverview Trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-riverview-ext.jpg&quot; alt=&quot;Frick Park: off Riverview Ext Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I like the Lower Riverview Trail because it is relatively more isolated here and is a long, winding trail with tree roots and shade that make the terrain feel more natural. This is where at other times of year I see deer crossing my path.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-view-from-lower-riverview.jpg&quot; alt=&quot;Frick Park: view from Lower Riverview Trail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, I reached the Falls Ravine Trail, which descends all the way to Fern Hollow. I enjoy this section of my route because I like to run downhill, and to the sounds of the stream that lies along the trail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-to-falls-ravine.jpg&quot; alt=&quot;Frick Park: to Falls Ravine Trail down&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-on-falls-ravine.jpg&quot; alt=&quot;Frick Park: on Falls Ravine Trail down&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Reaching the bottom, at Fern Hollow, this is the point at which I use the water fountain (if it is turned on), and then (if I am doing my five mile run and not a longer one) reverse course to return home.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-fern-hollow.jpg&quot; alt=&quot;Frick Park: on Falls Ravine Trail at Fern Hollow&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Dogs&lt;/h2&gt;
&lt;p&gt;I always see a lot of dogs when in Frick Park. But this day, while running back uphill, I saw something I don&apos;t usually see: a guy with his dog high up climbing up well off trail!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-guy-dog-climbing.jpg&quot; alt=&quot;Guy and his dog climbing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s a video I took while running along one of my favorite windy sections of the Lower Riverview Trail (warning: very choppy footage).&lt;/p&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;-0KAzjUZ4bQ&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Finally, on the way back to the blue slide playground entrance to the park, I saw my last set of dogs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/frick-park-woman-dogs.jpg&quot; alt=&quot;Frick Park: woman walking four dogs&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Shoes&lt;/h2&gt;
&lt;p&gt;Off road, I always run in my &lt;a href=&quot;https://web.archive.org/web/20150511191701/http://www.vibramfivefingers.com:80/products/Five-Fingers-KSO-Trek-Mens.htm&quot;&gt;Vibram FiveFingers KSO Trek&lt;/a&gt; shoes. I love these shoes. They are comfortable, breathe well, do not give me blisters, and protect my feet quite sufficiently against rocks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-kso-trek.jpg&quot; alt=&quot;Franklin wearing KSO Trek&quot; /&gt;&lt;/p&gt;
&lt;p&gt;These are my favorite &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/&quot;&amp;gt;FiveFingers&amp;lt;/span&amp;gt; shoes. The other two models I wear, the &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;Bikila LS&lt;/a&gt; and the &lt;a href=&quot;/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/&quot;&gt;KSO&lt;/a&gt;, are less comfortable for me.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I love trail running, I love Frick Park, and I feel blessed to live in Pittsburgh, and near such a park!&lt;/p&gt;
</content:encoded></item><item><title>Communicating Through Dialogue</title><link>https://franklinchen.com/blog/2011/10/11/communicating-through-dialogue/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/11/communicating-through-dialogue/</guid><pubDate>Tue, 11 Oct 2011 22:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I attended a &lt;a href=&quot;https://web.archive.org/web/20131015144011/http://www.cmu.edu:80/hr/learning/&quot;&gt;&quot;Learning and Development&quot; seminar at CMU&lt;/a&gt; that I had signed up for several weeks ago. I&apos;ve enjoyed attending many of these seminars in the past years. The one I attended today was &quot;Communicating Through Dialogue&quot;, by Ron Placone (many of whose seminars on other topics I&apos;ve attended).&lt;/p&gt;
&lt;p&gt;By sheer coincidence, this seminar, which I had registered for just out of curiosity long ago, was just what I needed at this very moment in my life!&lt;/p&gt;
&lt;p&gt;It turns out that right now, there is a situation in which I need to know how to communicate well to work effectively with someone toward a common goal. Our collaboration in the past has left something to be desired, and this time we want to move forward in a clear way. We are going to talk on Thursday.&lt;/p&gt;
&lt;h2&gt;Dialogue&lt;/h2&gt;
&lt;p&gt;In the seminar, I learned that a fundamental barrier in effective communication is taking a &quot;debate&quot; attitude, in which we not only believe we are absolutely right, but also try to force the other side to adopt our point of view and implement it; the entire goal of anything that we say is to put forth arguments, probe for weaknesses, and try to win.&lt;/p&gt;
&lt;p&gt;We all know this combative attitude can lead to defensiveness and deadlock, yet it is a very obvious way in which we often function. Is there a different way?&lt;/p&gt;
&lt;p&gt;Apparently, some people in the business world have created a whole discipline devoted to something specifically called &quot;dialogue&quot;. &quot;Dialogue&quot; differs from &quot;discussion&quot; in that &quot;discussion&quot; has the intentions of telling, persuading, and figuring out who is right and settling on that, while &quot;dialogue&quot; has the intentions of learning, discovering, and integrating perspectives. It is not aimed at immediately making a decision.&lt;/p&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;p&gt;In the seminar we received many handouts from various sources concerning this whole notion of &quot;dialogue&quot;. Curiously, I could find no comprehensive web site online from these sources. Our longest handout was printed off the web in 2005 (!) from a web site that no longer exists and was an excerpt from writings by Glenna Gerard and Linda Ellinor. I looked up these authors and found their book &lt;a href=&quot;https://www.amazon.com/Dialogue-Rediscover-Transforming-Power-Conversation/dp/0471174661&quot;&gt;&quot;Dialogue: Rediscover the Transforming Power of Conversation&quot;&lt;/a&gt;, published in 1998 and now apparently out of print.  (By the way, thanks to the &lt;a href=&quot;https://web.archive.org/web/20120106022010/http://clpgh.org/usingthelibrary/technology/widgets/ff_plugins.html&quot;&gt;Firefox plug-in for Amazon.com&lt;/a&gt;, I was able to see that my &lt;a href=&quot;/blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;favorite library&lt;/a&gt; has this book, so I clicked directly from the Amazon page to put it on hold!)&lt;/p&gt;
&lt;p&gt;A web search for the text in the handout for &quot;the six basic rules of dialogue&quot; turned up this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.lelendinglibrary.com/news_dialoguearticle.aspx&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.lelendinglibrary.com/news_dialoguearticle.aspx&quot;&amp;gt;page by Robert Rosell&amp;lt;/span&amp;gt;. Here are the six rules in the handout and on that web site:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Be open and suspend judgment; don&apos;t disparage other points of view.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep dialogue and decision-making separate; dialogue precedes decision-making, negotiation or action.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Speak for yourself, not as a representative, and treat all participants as peers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listen with empathy; acknowledging you have heard others and that you care.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Look for common ground; identifying areas where you agree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Search for and disclose hidden assumptions; especially in yourself.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;My reaction&lt;/h2&gt;
&lt;p&gt;I have to confess that a lot of the material we received seemed very &lt;a href=&quot;https://en.wikipedia.org/wiki/New_Age&quot;&gt;New Agey&lt;/a&gt;. Maybe that&apos;s why it seems no longer in vogue in the business world since first introduced, and I couldn&apos;t find a lot of prominent web search hits on the topic.&lt;/p&gt;
&lt;p&gt;Nevertheless, I don&apos;t discount something just because it&apos;s New Agey. I am totally an opportunist in my life. Over the years, I have cherry-picked ideas and techniques for everything in life from whatever sources, and if they work, I keep and use them, and if they don&apos;t, I just throw them away. (I&apos;ve thrown quite a few away.)&lt;/p&gt;
&lt;p&gt;All I know is that just reflecting on the &quot;six basic rules of dialogue&quot;, and how easily I can break all six rules without even knowing it, I felt calmer and more ready to prepare for and be committed to a win-win dialogue for Thursday.&lt;/p&gt;
&lt;p&gt;Thank you, Ron, for introducing me to this fascinating approach to communication!&lt;/p&gt;
</content:encoded></item><item><title>Is Mormonism a Cult?</title><link>https://franklinchen.com/blog/2011/10/10/is-mormonism-a-cult/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/10/is-mormonism-a-cult/</guid><pubDate>Mon, 10 Oct 2011 21:48:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, Robert Jeffress, a pastor at a Baptist church, and supporter of Rick Perry for the Republican primary race for 2012, referred to Mitt Romney&apos;s faith, Mormonism, as a &quot;cult&quot;. This caused a lot of rebukes by various conservatives and a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.foxnews.com/politics/2011/10/09/baptist-pastor-defends-cult-description-mormonism-still-backs-romney-over-obama/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.foxnews.com/politics/2011/10/09/baptist-pastor-defends-cult-description-mormonism-still-backs-romney-over-obama/&quot;&amp;gt;clarification&amp;lt;/span&amp;gt; by Jeffress, who tried to distinguish between a &quot;sociological&quot; and a &quot;theological&quot; cult.&lt;/p&gt;
&lt;p&gt;That&apos;s a load of crap.&lt;/p&gt;
&lt;h2&gt;Subjectivity&lt;/h2&gt;
&lt;p&gt;Jeffress knows as well as anyone else that regardless of whatever specialized academic meaning &quot;cult&quot; might have (or had), he was relying on the popular notion of &quot;cult&quot; to incite fear, disgust, and hatred.&lt;/p&gt;
&lt;p&gt;In fact, the popular notion of &quot;cult&quot; has no substantive meaning, really, other than &quot;something I&apos;m afraid of, think is bizarre, and hate&quot;. Often it even means &quot;something that so freaks me out I wouldn&apos;t mind if they were jailed or exterminated from the face of the earth&quot;.&lt;/p&gt;
&lt;p&gt;In this sense, almost anything could be called a &quot;cult&quot;, if enough people want to call it that. It is unfortunate when disagreement results in nothing more substantial than name-calling. We all know that different religions and sects have strong disagreements about many things. And those disagreements are fair game for discussion and criticism. Who was Jesus? Who are true prophets? Different answers lead to all the different forms of Judaism, Christianity, and Islam.&lt;/p&gt;
&lt;p&gt;Ironically, I find it unconvincing when someone like Rick Santorum, a Catholic, goes out of his way to &lt;a href=&quot;https://cnsnews.com/news/article/santorum-every-mormon-he-knows-shares-his-values-except-harry-reid&quot;&gt;avoid calling Mormonism a cult&lt;/a&gt;, and claiming that Romney is Christian, and has &quot;great moral values&quot;. I suspect that Santorum may actually believe that Romney is in a &quot;theological&quot; cult and that he is doomed to eternal damnation, but believes there are too many Mormons who are useful to enlist as allies for political purposes of conservative politics. And that&apos;s fine. In other words, withholding the term &quot;cult&quot; has nothing to do with theology, but everything to do with defining who you want to be on friendly terms with. (I&apos;m sure Santorum would refer to every form of Islam as a &quot;cult&quot;.)&lt;/p&gt;
&lt;p&gt;Maybe as a Catholic, he&apos;s more sensitive to these terms because, of course, a lot of Protestants believe Catholicism is a cult, and historically, being Catholic was not easy for quite some time in the Protestant-dominated United States.&lt;/p&gt;
&lt;p&gt;In the end, I am completely uninterested in labeling anything a &quot;cult&quot;, attaching the subjective baggage of that word to it.&lt;/p&gt;
&lt;h2&gt;Objectivity&lt;/h2&gt;
&lt;p&gt;What if we genuinely wanted to reclaim some technical, academic definition of &quot;cult&quot;?  Would that help?  I don&apos;t think so.  Because any such definition would have to face unpleasant facts of history. When John the Baptist was going around baptizing and doing truly weird things, and then Jesus came on the scene, you bet the Jews thought Christianity was a cult. Furthermore, I&apos;m sure no shortage of Jews still think that Christianity is a cult, but just keep their mouths shut because being pointlessly offensive to a majority Christian population would not exactly help prevent another Holocaust.&lt;/p&gt;
&lt;h2&gt;The answer&lt;/h2&gt;
&lt;p&gt;So the answer to the question &quot;Is Mormonism a cult&quot; is &quot;Yes, if you want to call it that, and No, if you don&apos;t want to call it that&quot;.&lt;/p&gt;
&lt;p&gt;Also, I have a prediction: if a century from now, the Mormon population of the United States has grown significantly, and wields political and economic power, very few Christians will be openly calling Mormonism a cult. They might even start using the Mormons&apos; own terminology and stop using the term &quot;Mormonism&quot; and instead say &quot;The Church of Jesus Christ of Latter-Day Saints&quot;.&lt;/p&gt;
</content:encoded></item><item><title>Only in Pittsburgh: Lord of the Fries</title><link>https://franklinchen.com/blog/2011/10/10/only-in-pittsburgh-lord-of-the-fries/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/10/only-in-pittsburgh-lord-of-the-fries/</guid><pubDate>Mon, 10 Oct 2011 09:34:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/primantis-roast-beef.jpg&quot; alt=&quot;Primanti&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fries&lt;/em&gt;.  Cole slaw.  &lt;a href=&quot;https://www.primantibros.com/&quot;&gt;Primanti&apos;s&lt;/a&gt; roast beef sandwich.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://onlyinpgh.com/2011/10/the-one-and-only/&quot;&gt;Only in Pittsburgh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;(More &lt;a href=&quot;/blog/2011/09/22/pizza-with-fries/&quot;&gt;fries&lt;/a&gt;, if you haven&apos;t already seen them.)&lt;/p&gt;
</content:encoded></item><item><title>Success Always Starts With Failure</title><link>https://franklinchen.com/blog/2011/10/09/success-always-starts-with-failure/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/09/success-always-starts-with-failure/</guid><pubDate>Sun, 09 Oct 2011 20:26:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been reading a fascinating book, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://timharford.com/books/adapt/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://timharford.com/books/adapt/&quot;&amp;gt;Adapt: Why Success Always Starts with Failure&amp;lt;/span&amp;gt;, by Tim Harford, an &quot;economic journalist&quot;. The book is surprisingly readable and impressive in the breadth of its case studies. His thesis is that in a complex world (which we in fact live in and is getting even more complex), succeeding at a project requires adaptation to changing circumstances and our failures.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20160801051528/http://timharford.com/wp-content/themes/timharford-v4/img/bookcover-adp-us.png&quot; alt=&quot;Adapt book cover&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Harford discusses with clarity issues such as how the Iraq war was carried out, the financial crisis of 2008, how to help people in developing nations, and a whole lot more.&lt;/p&gt;
&lt;p&gt;In the end, of course, I was most interested in how to apply his insights to my own life.  The last chapter of his book, &quot;Adapting and you&quot;, gave ideas:&lt;/p&gt;
&lt;p&gt;The main goal is to be able to recover from failures. Since we cannot anticipate everything and are going to encounter failure in one form or another anyway, we might as well plan to make use of it. Not all of us are superhuman and can endure large humiliating failures all the time, so Harford discusses tips to avoid non-recoverable failures.&lt;/p&gt;
&lt;h2&gt;Failures of the mind&lt;/h2&gt;
&lt;p&gt;Harford starts with noting that we human beings are more frail than we sometimes think, and illustrates with three failures of the human mind. One is &quot;denial&quot;, our not even admitting that we failed. The threat to our ego is too great. But the first step in learning from a failure is to actually admit it.&lt;/p&gt;
&lt;p&gt;Also, we &quot;chase our losses&quot;: after making a decision that turns out badly, we might continue along it hoping that things will magically turn out better eventually. It&apos;s easier to maintain the hope that something bad will end up good, than admit the bad is hopeless and should be abandoned. We all know people who hang on in bad careers, bad financial investments, bad marriages, because it&apos;s easier to hope that one didn&apos;t make a bad decision after all, rather than quickly move on and avoid wasting more time, money, and heartache.&lt;/p&gt;
&lt;p&gt;Finally, there is &quot;hedonic editing&quot;, in which we make ourselves feel better by thinking about gains along with the loss at hand, or convince ourselves that what we got (failure) was actually what we really were OK with all along. Some examples from my own life:&lt;/p&gt;
&lt;h2&gt;Solutions&lt;/h2&gt;
&lt;p&gt;Harford says that since we are too soft on ourselves, we need a critic, such as trusted friends, to tell us honestly when we have not done well.&lt;/p&gt;
&lt;p&gt;We need a safe place to experiment, where if we lose we are not trapped, but can continue on.&lt;/p&gt;
&lt;h2&gt;What this means to me&lt;/h2&gt;
&lt;p&gt;My blog is an experiment. It has been just over two weeks since I started it. I had a lot of anxiety over getting started: &quot;what should I write about&quot;, &quot;for whom&quot;, &quot;how should I style the site&quot;, &quot;will I put up anything good&quot;, and dozens of other random anxieties. To get started on this blog, I had to come up with a plan to stay the course, learn from mistakes, and accept honest feedback. I perceive my blog as a fairly &quot;safe&quot; place to experiment. I am committed to learning from my failures here!&lt;/p&gt;
</content:encoded></item><item><title>My God It&apos;s Full of Stairs! Pittsburgh Step Trek 2011</title><link>https://franklinchen.com/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/08/my-god-its-full-of-stairs-pittsburgh-step-trek-2011/</guid><pubDate>Sat, 08 Oct 2011 17:50:00 GMT</pubDate><content:encoded>&lt;p&gt;Today was a beautiful, sunny, warm day, as promised earlier by the weather forecasts.  Abby and I did the 11th annual &lt;a href=&quot;https://www.southsideslopes.org/steptrek&quot;&gt;Pittsburgh Step Trek&lt;/a&gt; for the first time. I wish I&apos;d known about this event in earlier years! It was a truly unique event, an urban hike of the Pittsburgh &lt;a href=&quot;https://web.archive.org/web/20160927104501/http://www.wqed.org/tv/sebak/neighborhoods/so_side.php&quot;&gt;South Side Slopes&lt;/a&gt;, with all its many staircases, zig-zagging streets, historic buildings, and great views of the city.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-stairs-down.jpg&quot; alt=&quot;?&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We did about six miles of fantastic sightseeing (and got a pretty good workout while at it):&lt;/p&gt;
&lt;p&gt;We arrived at the registration area in South Side Park, and immediately, people started asking about the &lt;a href=&quot;www.vibramfivefingers.com/&quot;&gt;Vibram FiveFingers&lt;/a&gt; shoes that Abby and I were wearing: Abby was wearing her &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/products/Five-Fingers-Sprint-Womens.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/products/Five-Fingers-Sprint-Womens.htm&quot;&amp;gt;Sprint&amp;lt;/span&amp;gt; and I was wearing my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/products/Five-Fingers-KSO-Mens.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/products/Five-Fingers-KSO-Mens.htm&quot;&amp;gt;KSO&amp;lt;/span&amp;gt;. Throughout the Step Trek we would get asked about them by many other curious trekkers! We always got the same kinds of questions: &quot;Are they comfortable?&quot; and &quot;Do they provide enough protection/support?&quot; The answer is yes, they are pretty comfortable, and yes, they are sufficiently protective and supportive, if you learn to walk more carefully, and develop your foot and leg muscles; and there are different models we use for different terrains and activities.  For example, I have mentioned &lt;a href=&quot;/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/&quot;&gt;in&lt;/a&gt; &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/&quot;&gt;posts&lt;/a&gt; my running on the roads in Bikila LS, and running and hiking off road in KSO Trek shoes.&lt;/p&gt;
&lt;p&gt;After we checked in with our tickets (pre-registered earlier) and were given a booklet for the self-guided tour for the Step Trek, we started our trek. There were two looping routes outlined, the Black route (3.02 miles, with 1,250 steps) and the Gold route (2.89 miles, with 1,222 steps). We decided to do one route first and then the other immediately following.&lt;/p&gt;
&lt;p&gt;We started off with the Gold route, entering South Side Park and immediately taking the 72 serpentine steps up.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-first-steps.jpg&quot; alt=&quot;Serpentine steps at South Side Park&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;Below is just a minuscule sample of what else we saw. You&apos;d have to do the Step Trek to experience it yourself!&lt;/p&gt;
&lt;p&gt;Here&apos;s a nice view of Pittsburgh during the trek:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-view-of-pittsburgh.jpg&quot; alt=&quot;Nice view of Pittsburgh&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s another one:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-view-of-pittsburgh-2.jpg&quot; alt=&quot;Another nice view of Pittsburgh&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Paper_street&quot;&gt;paper street&lt;/a&gt;, Caesar Way, which is actually a staircase rather than an actual street! Pittsburgh has a number of these I have encountered before.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-caesar-way.jpg&quot; alt=&quot;Caesar Way (paper street)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A typical staircase leading connecting areas of different elevation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-some-steps.jpg&quot; alt=&quot;A staircase&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A beautiful view while descending on a road. The old St. Josaphat church is visible down the road:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-descent.jpg&quot; alt=&quot;Descent on road&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the bi-level streets we saw, with fencing separating the two levels:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-lower-level-street.jpg&quot; alt=&quot;One of the bi-level streets&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Me just enjoying a little break at the Eleanor Street parklet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/step-trek-franklin-swing.jpg&quot; alt=&quot;Franklin on swing at the Eleanor Street parklet&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Done&lt;/h2&gt;
&lt;p&gt;After we returned from finishing both the Gold and Black routes, we enjoyed watermelon slices, oranges, and bananas. Because it was so sunny, we were both slightly sunburned.&lt;/p&gt;
&lt;p&gt;Earlier, we enjoyed the official rest stops that provided beverages, bite-sized candy bars, and port-a-johns. A very nicely organized event, with clear signs posted periodically along the routes and friendly crossing guards at fast-moving roads.&lt;/p&gt;
&lt;p&gt;One thing we particular enjoyed after finishing was looking at the gallery of historic photos in one of the tents. It was eerie seeing those black and white photos of streets we had walked that were once dirt roads for horses, construction of bridges and staircases, old homes that are still standing now (and renovated). I wish there were more of the before/after photos. Maybe decades from now we&apos;ll see YouTube time-lapse videos of how things are now in our neighborhoods and how things will be then!&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-06)&lt;/h2&gt;
&lt;p&gt;The following year, sadly, I did not do the Pittsburgh Step Trek again, because of a schedule conflict with &lt;a href=&quot;/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/&quot;&gt;the Fineview Stepathon that I did instead&lt;/a&gt;. We&apos;ll have to see what the schedules are for 2013.&lt;/p&gt;
&lt;h2&gt;(Update of 2013-9-25)&lt;/h2&gt;
&lt;p&gt;Unfortunately, because of schedule conflicts again, Abby and I will not able to attend Step Trek. It seems that everything in Pittsburgh happens on the weekend of Step Trek.&lt;/p&gt;
&lt;p&gt;But I attended a special preview tour that enabled me to &lt;a href=&quot;/blog/2013/09/25/why-you-should-go-out-to-the-pittsburgh-south-side-slopes-step-trek/&quot;&gt;catch up on changes and also promote the event&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Staying Excited About Learning By Being Flexible</title><link>https://franklinchen.com/blog/2011/10/07/staying-excited-about-learning-by-being-flexible/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/07/staying-excited-about-learning-by-being-flexible/</guid><pubDate>Fri, 07 Oct 2011 19:36:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s easy to get into a slump when trying to learn something or improve skill at something. I use a variety of tricks to stay excited and productive when that happens. I&apos;ll use, as an example, a few details about my &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;daily&lt;/a&gt; recorder practice, as it has unfolded this week so far. (In the future I&apos;ll discuss how I apply similar tricks to other activities as well.)&lt;/p&gt;
&lt;p&gt;The main key is &lt;em&gt;flexibility&lt;/em&gt;.  Here is how flexibility made this week pretty good for me, through combining each of these themes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;feedback&lt;/li&gt;
&lt;li&gt;novelty&lt;/li&gt;
&lt;li&gt;resting&lt;/li&gt;
&lt;li&gt;trust&lt;/li&gt;
&lt;li&gt;variety&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Monday: feedback&lt;/h2&gt;
&lt;p&gt;On Monday, I was in a competitive mood, wanting to continue to work on being able to play some exercises faster, and start new exercises, using the &lt;a href=&quot;/blog/2011/09/29/a-musicians-best-friend/&quot;&gt;musician&apos;s best friend&lt;/a&gt;. I spent all my time on technical exercises for soprano and alto recorders, monitoring how far I was able to kick up the metronome from the previous day or days.&lt;/p&gt;
&lt;p&gt;Feedback makes learning exciting because it always feels good to know that one has progressed, and to uncover areas of weakness to continue improving in the future.&lt;/p&gt;
&lt;h2&gt;Tuesday: novelty&lt;/h2&gt;
&lt;p&gt;On Tuesday, I was still in the mood to get faster, and did so again with the metronome. But I started feeling bored. So I sight read brand new exercises for soprano and alto, not caring how slow or botched up my play was going to be. There&apos;s no shame in screwing things up the first time. After all, failing only means that there is a new opportunity for success in the future!&lt;/p&gt;
&lt;h2&gt;Wednesday: resting&lt;/h2&gt;
&lt;p&gt;On Wednesday, I was feeling tired. So guess what? I made it a &lt;strong&gt;no metronome&lt;/strong&gt; practice. No taskmaster watching over me. No endless scales and intervals. Instead, I got out a bunch of light music and just played through it for fun. For that purpose, I use this nice site of &lt;a href=&quot;https://web.archive.org/web/20150929000837/http://www.altorecorder.com:80/SheetMusicIndex.htm&quot;&gt;transcriptions for recorder&lt;/a&gt;. My focus was on being relaxed, playing my alto with nice tone and phrasing, and plain enjoyment. No speed contests.&lt;/p&gt;
&lt;p&gt;I deserve a rest day now and then!&lt;/p&gt;
&lt;h2&gt;Thursday: trust&lt;/h2&gt;
&lt;p&gt;On Thursday, I started my day feeling rather crappy. I hadn&apos;t slept well because of the news the previous night of &lt;a href=&quot;/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/&quot;&gt;Steve Jobs&apos; death&lt;/a&gt;. I really did not feel like practicing &lt;em&gt;at all&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But I knew that I should, so I did a short practice in which I took out my soprano, played over some easy pieces, trying to enjoy them, and starting to sight read a piece for alto. I tried the metronome but it was telling me I wasn&apos;t doing so well, so I put it away.&lt;/p&gt;
&lt;p&gt;I didn&apos;t make any breakthroughs, but I put in the time, and trusted that I would get over my energy slump. It is vital to trust that one will get over periods of low energy and low performance.&lt;/p&gt;
&lt;h2&gt;Friday: variety&lt;/h2&gt;
&lt;p&gt;On Friday, I was very eager to return to my brand new &lt;a href=&quot;/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/&quot;&gt;bass recorder&lt;/a&gt;. I had temporarily put it aside for a while out of frustration with getting used to holding the instrument, feeling and blowing into it differently, reading bass clef, and remembering to use some mandatory different fingerings (versus alto).&lt;/p&gt;
&lt;p&gt;Sure enough, as I returned to the bass, I was much better than I had been the last time I had practiced it. (Yes, my friend the metronome was back!)&lt;/p&gt;
&lt;p&gt;For me, there are two big benefits of incorporating variety into learning. One is that boredom is terrible and reduces learning, and so it is worth switching context and moving off one of my instruments to another if I start feeling bored with one. The second is that learning takes time to consolidate in the brain: I felt saturated with the bass recorder earlier in the week and realized that I needed to wait to be ready to do more with the instrument. So actually, the tools of &lt;em&gt;resting&lt;/em&gt; and &lt;em&gt;variety&lt;/em&gt; go together quite well, enabling a kind of &quot;concurrency&quot; of learning.&lt;/p&gt;
&lt;p&gt;I admit there is always the risk of falling into &lt;a href=&quot;https://www.npr.org/templates/story/story.php?storyId=95256794&quot;&gt;ineffective multitasking&lt;/a&gt;, but I try to avoid that by not context-switching too quickly. For example, I did a lot of work on soprano and alto before switching to bass this week, and once on bass stayed on bass for the whole day&apos;s session.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;By varying my practice, based on how I feel, but within certain boundaries that I set for myself, I feel that I am improving my playing of recorders pretty effectively.&lt;/p&gt;
&lt;h2&gt;Questions for you&lt;/h2&gt;
&lt;p&gt;What other techniques do you use to stay motivated and effective in your learning?&lt;/p&gt;
</content:encoded></item><item><title>Pittsburgh Ruby: Building a Compiler in JRuby</title><link>https://franklinchen.com/blog/2011/10/06/pittsburgh-ruby-building-a-compiler-in-jruby/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/06/pittsburgh-ruby-building-a-compiler-in-jruby/</guid><pubDate>Thu, 06 Oct 2011 22:29:00 GMT</pubDate><content:encoded>&lt;p&gt;Tonight I attended the meeting of the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://pghrb.heroku.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://pghrb.heroku.com/&quot;&amp;gt;Pittsburgh Ruby group&amp;lt;/span&amp;gt; at Vivisimo. It&apos;s been a year now since I first discovered the Pittsburgh Ruby group and finally attended my first meeting as an initial non-Rubyist on November 4, 2010, at the encouragement of Bruce, who said it was a friendly group.&lt;/p&gt;
&lt;h2&gt;Presentation&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.chrisumbel.com/&quot;&gt;Chris Umbel&lt;/a&gt; gave a talk, &quot;Building a compiler in JRuby&quot;. Basically, he was inspired by Ian Dee&apos;s work with a toy language &lt;a href=&quot;https://github.com/undees/thnad&quot;&gt;Thnad&lt;/a&gt; at JRubyConf 2011 to illustrate writing a simple compiler, and decided to do similarly, inventing &quot;sucklang&quot;, a &quot;language that sucks&quot;.&lt;/p&gt;
&lt;p&gt;The room was totally packed! Clearly there was great interest in this topic.&lt;/p&gt;
&lt;p&gt;The main tools used were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://kschiess.github.com/parslet/&quot;&gt;Parslet&lt;/a&gt;, a parser combinator library for Ruby&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/headius/bitescript&quot;&gt;Bitescript&lt;/a&gt;, a Java bytecode generation library for Ruby&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The interesting thing to me was how both these tools involved internal &lt;a href=&quot;https://en.wikipedia.org/wiki/Domain-specific_language&quot;&gt;domain-specific languages (DSLs)&lt;/a&gt;, really showcasing how easy it is to create internal DSLs for Ruby. The down side, of course, is that not having been familiar with these tools before the talk, I was totally bewildered as Chris sped through overviews of them! I did make a note to investigate the libraries later.&lt;/p&gt;
&lt;p&gt;It is definitely cool that with these DSLs, you can get up and going quickly to implement a toy language.&lt;/p&gt;
</content:encoded></item><item><title>Singing Through Traffic</title><link>https://franklinchen.com/blog/2011/10/06/singing-through-traffic/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/06/singing-through-traffic/</guid><pubDate>Thu, 06 Oct 2011 20:57:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, I had a brutal drive of almost fifty minutes after work to attend a &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/&quot;&gt;Pittsburgh JavaScript Developers&lt;/a&gt; meeting about &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/events/34568402/&quot;&gt;AMD and CommonJS modules&lt;/a&gt;, where &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://briancavalier.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://briancavalier.com/&quot;&amp;gt;Brian Cavalier&amp;lt;/span&amp;gt; gave a nice &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://briancavalier.com/presentations/pgh-js-amd-10-2011/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://briancavalier.com/presentations/pgh-js-amd-10-2011/&quot;&amp;gt;presentation&amp;lt;/span&amp;gt; on module systems for JavaScript and comparing their strengths and weaknesses.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mcknight-construction-traffic.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I survived the drive the same way I survived it &lt;a href=&quot;/blog/2011/09/27/when-jquery-attacks/&quot;&gt;last week&lt;/a&gt;, which was actually not as bad as yesterday&apos;s was!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-singing-in-car.jpg&quot; alt=&quot;Franklin singing in car&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What I can&apos;t stand about driving for half an hour or an hour, regardless of traffic situations, is being physically immobilized and mentally trapped. I have a backup plan in case I have to do such driving. I always have in my car&apos;s CD player a CD of &quot;Voice Lessons To Go&quot; by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://voicelessonstogo.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://voicelessonstogo.com/&quot;&amp;gt;Ariella Vaccarino&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://web.archive.org/web/20150920214850/http://www.voicelessonstogo.com/cart/images/volume_one.gif&quot; alt=&quot;Volume 1 of Voice Lessons To Go&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So not only do I avoid wasting time and stay mentally alert and active, but it is also pretty physically intense, with all the breathing. I got a pretty good singing workout yesterday. Ariella&apos;s guidance on the CD is very clear and friendly. I love it! I&apos;m thinking of getting more volumes of this series.&lt;/p&gt;
</content:encoded></item><item><title>I Cannot Imagine My Life Without the Influence of Steve Jobs</title><link>https://franklinchen.com/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/05/i-cannot-imagine-my-life-without-the-influence-of-steve-jobs/</guid><pubDate>Wed, 05 Oct 2011 21:39:00 GMT</pubDate><content:encoded>&lt;p&gt;Steve Jobs is gone, tonight.&lt;/p&gt;
&lt;p&gt;But he&apos;s not really gone. Everything he did is with us. With me.&lt;/p&gt;
&lt;p&gt;I&apos;m typing this blog post on an early 2008 model MacBook.&lt;/p&gt;
&lt;p&gt;I don&apos;t like eulogies. But I have a few emotions right now.&lt;/p&gt;
&lt;p&gt;Omitting mention of a couple of generations of other Macs I&apos;ve owned: I became a programmer largely because his work showed that computers could be beautiful, useful, and liberating to ordinary human beings.&lt;/p&gt;
&lt;p&gt;Steve Jobs altered my direction in life. I wrote my first Kernighan and Ritchie &lt;code&gt;hello world\n&lt;/code&gt; C program on a Mac Classic. I learned C++ on a Mac SE/30. I got my first job writing my resume on the SE/30.&lt;/p&gt;
&lt;p&gt;Before that, I wrote my first Pascal program using MacPascal on the original 128K Macintosh in school.&lt;/p&gt;
&lt;p&gt;Before that, I wrote BASIC programs on an Apple IIe, my first computer.&lt;/p&gt;
&lt;p&gt;Skipping forward: at one point I bought an early PowerMac, but it was uninspiring: Apple had lost its way without Steve Jobs. I cursed Apple and abandoned it, bought a PC, and ran Linux for years. I never touched a Mac again until OS X came out. Steve Jobs was back!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Steve Jobs was a programmer, an artist, a businessman, a philosopher, a psychologist, a salesman, a speechwriter, a fighter. He cared about beauty, about consistency, stuck to his visions, failed and succeeded and failed and succeeded. I live because humanity produces men like Steve Jobs.&lt;/p&gt;
&lt;p&gt;That is all. Tomorrow is another day.&lt;/p&gt;
&lt;h2&gt;Update (2011-10-25)&lt;/h2&gt;
&lt;p&gt;I write this short update to note that I never did get around to writing my intended in-depth discussion of Steve Jobs, but will do so at some point. For example, it was too close in time for me to launch into a personal exploration of the dark, negative sides of his legacy.&lt;/p&gt;
</content:encoded></item><item><title>A Blast From the Past: C++ Abuse</title><link>https://franklinchen.com/blog/2011/10/04/a-blast-from-the-past-c-plus-plus-abuse/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/04/a-blast-from-the-past-c-plus-plus-abuse/</guid><pubDate>Tue, 04 Oct 2011 21:23:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately I&apos;ve been seeing a lot of mention of the online book &lt;a href=&quot;https://c.learncodethehardway.org/&quot;&gt;&quot;Learn C the Hard Way&quot;&lt;/a&gt;, and how it quickly introduces and uses &lt;a href=&quot;https://valgrind.org/&quot;&gt;Valgrind&lt;/a&gt;. That brought back memories of the 1990s when I programmed in C, and then C++, and &lt;a href=&quot;https://en.wikipedia.org/wiki/SIGSEGV&quot;&gt;&lt;code&gt;SIGSEGV&lt;/code&gt;&lt;/a&gt; and &lt;code&gt;core&lt;/code&gt; were part of my daily life, as well as &lt;a href=&quot;https://en.wikipedia.org/wiki/Dbx_(debugger)&quot;&gt;&lt;code&gt;dbx&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://www.gnu.org/s/gdb/&quot;&gt;&lt;code&gt;gdb&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My most important tool, however, was Purify of &lt;a href=&quot;https://en.wikipedia.org/wiki/Pure_Software&quot;&gt;Pure Software&lt;/a&gt;. We were such good customers of Pure Software, using also Quantify, Pure Link, and Pure Coverage, that we got sent mugs, of which I still have one and drink water from daily!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/pure-software-mug.jpg&quot; alt=&quot;Pure Software mug&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the spirit of reminiscence about C and C++ programming, I hereby share my first code excerpt of this blog.&lt;/p&gt;
&lt;p&gt;&amp;lt;script is:inline src=&quot;https://gist.github.com/FranklinChen/1263372.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;I wrote up with this monstrosity (in less obfuscated form, admittedly) while learning C++ coming from a background of C (in conjunction with assembly language) and inspecting the output of &lt;code&gt;Cfront&lt;/code&gt;(https://en.wikipedia.org/wiki/Cfront)-based compilers we used (especially when the compilers failed with internal fatal errors or generated incorrect code, which sometimes happened).&lt;/p&gt;
&lt;p&gt;If you are a seasoned C++ programmer, you can determine what this code does and why. Also, if you are a truly passionate C++ programmer, you may have wisdom about on which platforms this code actually works, and on which platforms it does not, etc. I welcome all clarifications and refutations!&lt;/p&gt;
&lt;p&gt;If this code doesn&apos;t make any sense to you, no matter: we are living in the age of Java, Python, Perl, Ruby, JavaScript, Clojure, Haskell, OCaml, Erlang, PHP, C#, and a hundred other languages in which you never have to deal with this kind of code.&lt;/p&gt;
&lt;p&gt;I have to admit, though, that there was something cool about knowing how to do this kind of tinkering, just as it was useful to me once to know how to mess around with bit fields, little-endian versus big-endian, etc. Surely, if the world collapsed, &lt;a href=&quot;https://en.wikipedia.org/wiki/Duff&apos;s_device&quot;&gt;Duff&apos;s device&lt;/a&gt; would still be a thing of beauty.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;According to the book&apos;s &lt;a href=&quot;https://c.learncodethehardway.org/book/learn-c-the-hard-waych5.html#x10-290005%5D&quot;&gt;section on Valgrind&lt;/a&gt;, &quot;As of Sep 4, 2011 there&apos;s this bug in Valgrind on OSX Lion. It might take a little while for them to fix it, so be patient.&quot;&lt;/p&gt;
&lt;p&gt;So, if I were a beginner to C and wanted to work through this book, and used Mac OS, I would be stuck now! That reminds me of what life was like on a daily basis back in the day when I had to develop applications that were to run on ULTRIX, SunOS, Solaris, HP-UX, AIX, and VMS. Something somewhere was always broken at any given time and needed a workaround!&lt;/p&gt;
</content:encoded></item><item><title>My New Bass and Sopranino Recorders and Having Fun</title><link>https://franklinchen.com/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/03/my-new-bass-and-sopranino-recorders-and-having-fun/</guid><pubDate>Mon, 03 Oct 2011 21:03:00 GMT</pubDate><content:encoded>&lt;p&gt;My recorder practice (focused on alto and soprano) has continued to go very well since my last post on &lt;a href=&quot;/blog/2011/09/29/a-musicians-best-friend/&quot;&gt;efficient practice&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, a friend of mine has been wondering whether I am too competitive or driven in my quest for excellence in recorder playing, and asks whether I am having &lt;em&gt;fun&lt;/em&gt;, so I thought I&apos;d answer that question here.&lt;/p&gt;
&lt;p&gt;First, some eye candy: today I finally got the new bass recorder that I ordered last week:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/brand-new-yamaha-bass-recorder.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I also got a Yamaha sopranino recorder as well as a Yamaha case that allows me to put all four of my sopranino, soprano, alto, and tenor recorders into it without having to disassemble them (the alto and tenor, anyway) and stick them into their own cases. Having had to do that when taking my instruments somewhere has been very annoying and time-consuming. Reapplying joint grease and aligning everything properly is not pleasant.&lt;/p&gt;
&lt;p&gt;I expect to hardly play the sopranino. Let&apos;s just say that it is very shrill. I got it just for kicks, to fill out a complete collection of the Yamaha plastic recorder series.&lt;/p&gt;
&lt;h2&gt;Excellence versus fun?&lt;/h2&gt;
&lt;p&gt;In pursuit of my hobbies, I sometimes encounter the implicit sentiment that being serious about getting good is the opposite of fun. That somehow, being serious means being &quot;professional&quot;, and that&apos;s no fun, and being an &quot;amateur&quot; means not having to work so hard, and therefore, somehow I am working too hard, in a way not befitting a non-professional.&lt;/p&gt;
&lt;p&gt;I&apos;m pretty confused by that. I like doing things well. I like the process of learning, of mastery, of novelty. I also like the hard-earned fruits of dedication.&lt;/p&gt;
&lt;p&gt;I train to run fast not because of the time or because of some prize, but because I enjoy the feeling of flying down a hill, the wind whistling through my hair. I enjoy running slower too, but there is a joy that comes only from going as fast as I can.&lt;/p&gt;
&lt;p&gt;I enjoy being able to play musical instruments more fluidly and confidently, and with fewer wrong notes, because then I can bring out beauty of the music and the expression. And the better I get, the more I can play with good musicians, and it&apos;s fun to play with good musicians and being able to keep up with them, and be part of something bigger than myself. It is particularly nice, as a wind instrument player, to create harmonies as part of a quartet or larger group.&lt;/p&gt;
&lt;p&gt;I&apos;ve had the opportunity to enjoy playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Giovanni_Pierluigi_da_Palestrina&quot;&gt;Palestrina&lt;/a&gt; with others, and being inspired to try to generate the most beautiful tone and attentiveness to the other lines that I can muster. Pursuit of excellence is not only fun; it is &lt;em&gt;sacred&lt;/em&gt;.&lt;/p&gt;
</content:encoded></item><item><title>I Love Music but Rarely Listen to It Now</title><link>https://franklinchen.com/blog/2011/10/02/i-love-music-but-rarely-listen-to-it-now/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/02/i-love-music-but-rarely-listen-to-it-now/</guid><pubDate>Sun, 02 Oct 2011 17:15:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday there was a concert, &lt;a href=&quot;https://web.archive.org/web/20111113151101/http://www.post-gazette.com/pg/11272/1178247-388.stm&quot;&gt;much-anticipated&lt;/a&gt;, part of the current season of the &lt;a href=&quot;https://www.rbsp.org/&quot;&gt;Pittsburgh Renaissance &amp;amp; Baroque&lt;/a&gt;, that I didn&apos;t attend. I felt slightly sad because I&apos;m sure it was interesting, and also because fellow members of the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local chapter&lt;/a&gt; of the American Recorder Society had been talking about going and urging me to come along.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.post-gazette.com/pg/images/201109/renbar0929_juilliard_baroqu_330.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.post-gazette.com/pg/images/201109/renbar0929_juilliard_baroqu_330.jpg&quot;&amp;gt;[image: Juilliard Baroque Ensemble]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;This was not the only concert in the past couple of years that I have chosen not to attend. So why have I chosen to skip these opportunities?&lt;/p&gt;
&lt;p&gt;Once upon a time I listened to a lot of music. I listened to the radio, I bought a lot of LPs, cassette tapes, and finally, CDs. I went to concerts. It&apos;s not as though I have completely lost interest in listening to music.&lt;/p&gt;
&lt;p&gt;What happened was simply that I ran out of time.&lt;/p&gt;
&lt;p&gt;Time is &lt;a href=&quot;https://web.archive.org/web/20250925160117/https://www.my168hours.com/&quot;&gt;limited to 168 hours a week&lt;/a&gt;. Therefore, the phrase &quot;I don&apos;t have time for X&quot; is usually a euphemism for, &quot;I do have time for Y and Z, but not for X&quot;. Example translations of &quot;don&apos;t have time&quot; language that people use:&lt;/p&gt;
&lt;p&gt;&amp;lt;dl&amp;gt;
&amp;lt;dt&amp;gt;&amp;lt;strong&amp;gt;I don&apos;t have time to exercise.&amp;lt;/strong&amp;gt;&amp;lt;/dt&amp;gt;
&amp;lt;dd&amp;gt;I chose to spend an hour watching sports on TV rather than playing a sport myself.&amp;lt;/dd&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;dt&amp;gt;&amp;lt;strong&amp;gt;I don&apos;t have time to talk with my children.&amp;lt;/strong&amp;gt;&amp;lt;/dt&amp;gt;
&amp;lt;dd&amp;gt;I do have time to work crazy hours at the office and play golf with my boss in order to make a lot of money.&amp;lt;/dd&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;dt&amp;gt;&amp;lt;strong&amp;gt;I don&apos;t have time to cook.&amp;lt;/strong&amp;gt;&amp;lt;/dt&amp;gt;
&amp;lt;dd&amp;gt;I don&apos;t like to cook or clean up, and therefore instead of whipping up a 15-minute stir-fry, I would rather commute to a restaurant, wait, order, wait, eat, wait, pay, wait, and return home hours later.&amp;lt;/dd&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;dt&amp;gt;&amp;lt;strong&amp;gt;I don&apos;t have time to get good at salsa dancing.&amp;lt;/strong&amp;gt;&amp;lt;/dt&amp;gt;
&amp;lt;dd&amp;gt;I have time to spend hours going to clubs to dance, and prefer to spend vast amounts of time being social and having fun than perfecting my basic technique.&amp;lt;/dd&amp;gt;
&amp;lt;/dl&amp;gt;&lt;/p&gt;
&lt;h2&gt;Scarcity and decision making&lt;/h2&gt;
&lt;p&gt;In other words, time management is all a matter of &lt;em&gt;priorities&lt;/em&gt;. Time is a scarce resource. We &lt;em&gt;choose&lt;/em&gt; how to work within constraints of scarcity. (Note that some people like to make a lot of judgments about how we &lt;em&gt;should&lt;/em&gt; be spending our time, but that is not the topic at hand; time management is.) In the end, I make my choices, and you make your choices. And we can and do change our choices over our lifetime, based on either our preferences or information about what is required to achieve various goals.&lt;/p&gt;
&lt;p&gt;Earlier in life, I was more of a spectator of life than I am now. I watched a lot of TV and movies, listened to a lot of music, went to concerts and lectures. It just happens that now, I prefer to be more &lt;em&gt;active&lt;/em&gt;. Not that listening to music is necessarily &lt;em&gt;passive&lt;/em&gt;: you can&apos;t call it passive that I collected probably two dozen recordings of my favorite symphony, Beethoven&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Symphony_No._3_(Beethoven)&quot;&gt;Eroica&lt;/a&gt;, listened to them repeatedly, compared them, hummed along to them (I was not quite as obsessive as &lt;a href=&quot;https://web.archive.org/web/20251005213349/http://www.grunin.com/eroica/&quot;&gt;Eric Grunin&lt;/a&gt;, however). But eventually I made a decision to more or less stop listening when I could be playing, and also to seek out what is new to me rather than continue with the old.&lt;/p&gt;
&lt;p&gt;Last night, instead of sitting in a concert hall listening to music, I stayed home, practiced &lt;a href=&quot;/categories/recorder/&quot;&gt;recorder&lt;/a&gt;, started reading some &lt;a href=&quot;blog/2011/09/30/free-to-the-people-since-1895/&quot;&gt;library books&lt;/a&gt;, and spent time with Abby. This is what I preferred to do with my evening hours yesterday instead of attending a concert. Life is good when you know your priorities, make your choices, act accordingly, and don&apos;t go around in &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://psychcentral.com/blog/archives/2011/04/14/fomo-addiction-the-fear-of-missing-out/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://psychcentral.com/blog/archives/2011/04/14/fomo-addiction-the-fear-of-missing-out/&quot;&amp;gt;fear of missing out&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;h2&gt;Postscript&lt;/h2&gt;
&lt;p&gt;Of course, now and then I still watch a movie or pull out a CD or attend a concert, and enjoy it. Just not so often.&lt;/p&gt;
&lt;p&gt;And since the Eroica symphony is a permanent and profound part of my psyche, sometimes I find myself humming it to myself from memory. This tends to happen when it&apos;s a nice sunny day and I&apos;m on a run in the woods and feeling in a &quot;heroic&quot; mood. The music then fits perfectly because I will then run at a decent stride rate of &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://runningtimes.com/Article.aspx?ArticleID=11419&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://runningtimes.com/Article.aspx?ArticleID=11419&quot;&amp;gt;180 steps per minute&amp;lt;/span&amp;gt;, corresponding exactly to &lt;a href=&quot;https://www.marathonguide.com/training/coachmindy/everybreath.cfm&quot;&gt;breathing in a 3-3 rhythm&lt;/a&gt; and following Beethoven&apos;s infamous (but I believe appropriate) metronome marking of 60 for the first movement! Great running music, 15 minutes of genius.&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://www.dlib.indiana.edu/variations/scores/adh1166/large/sco10001.gif&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://www.dlib.indiana.edu/variations/scores/adh1166/large/sco10001.gif&quot;&amp;gt;[image: Beethoven]&amp;lt;/span&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Run Shadyside 5K: Outrunning Mickey Mouse and Lending a Trumpet</title><link>https://franklinchen.com/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/10/01/run-shadyside-5k-outrunning-mickey-mouse-and-lending-a-trumpet/</guid><pubDate>Sat, 01 Oct 2011 09:47:00 GMT</pubDate><content:encoded>&lt;p&gt;import { YouTube } from &apos;@astro-community/astro-embed-youtube&apos;;&lt;/p&gt;
&lt;p&gt;My alarm starts blaring at 6:30 AM on a cold, dark Saturday morning, and I&apos;m tired and sleepy, and briefly wonder why I preregistered on Wednesday to run today&apos;s &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.runshadyside.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.runshadyside.com/&quot;&amp;gt;Run Shadyside 5K&amp;lt;/span&amp;gt; race. But a commitment is a commitment, so I get, check the weather forecast, get dressed, eat something, and head off.&lt;/p&gt;
&lt;p&gt;Little do I know that today I will just manage to outrun Mickey Mouse, far exceed my race time goal, and lend someone my trumpet that has been lying around unused!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-and-mickey-mouse-eric.jpg&quot; alt=&quot;Franklin and Eric after the race&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Pre-race&lt;/h2&gt;
&lt;p&gt;Since it was cold, in the 40s, and there was a possibility it could rain (although things looked clear), I wore a long-sleeve shirt and gloves and a hat along with my shorts and Bikila LS shoes (this was the third race in which I used these shoes).&lt;/p&gt;
&lt;p&gt;After my successful &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;Great Race 10K&lt;/a&gt; toughened me up, I was ready to run a &quot;fast&quot; 5K race. I had run a 5K in August in 24:36, and another in September in 24:36, but these were mostly off-road and hilly, so I expected that I should definitely go under 24:00 in this mostly flat road race, I targeted 23:30 as an ambitious goal.&lt;/p&gt;
&lt;p&gt;One thing you have to realize is that I hadn&apos;t run a decent 5K in years, so my goal was to really gut it out in this one. My fastest 5K was in 2003, in 20:37. I slowed down gradually to 22:04 in 2007, but later in 2007, as my life entered turmoil, I slowed to 23:30, then 24:39 in 2008, 25:20 in 2009, and 26:41 in 2010. So I have been using races this year as a gauge of my gradual &quot;comeback&quot; to my former level of fitness (taking aging into account, of course).&lt;/p&gt;
&lt;h2&gt;The race&lt;/h2&gt;
&lt;p&gt;&amp;lt;YouTube id=&quot;QslAbd-_TsA&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;The gun went off and the race played out for me as most largish races do: I took care not to go out too fast, but a lot of people always act otherwise and pass me like crazy during the first minutes of the race. I just &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://sethgodin.typepad.com/seths_blog/2011/09/run-your-own-race.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://sethgodin.typepad.com/seths_blog/2011/09/run-your-own-race.html&quot;&amp;gt;run my own race&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;After a mile, things were mostly settled down. I noticed a guy ahead of me wearing a hat with Mickey Mouse ears.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/mickey-mouse-ears-hat-profile.jpg&quot; alt=&quot;Mickey Mouse ears hat&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Furthermore, the gap between the guy and me was ever so slowly increasing. I decided at that moment that with two miles to go, I was going to do what I could to beat this guy. This goal was going to be the single purpose of my life for the next 15 minutes (approximately).&lt;/p&gt;
&lt;p&gt;To motivate myself even further, I used the mind trick of publicly proclaiming my goal. I know this technique is &lt;a href=&quot;https://web.archive.org/web/20140220062432/http://www.ted.com:80/talks/derek_sivers_keep_your_goals_to_yourself.html&quot;&gt;controversial&lt;/a&gt; and can backfire, but I think it depends on context. Every time I found myself running side by side with someone (whether someone I was passing or someone who had caught up to me), I told him that I was going to catch Mickey Mouse. Somehow saying that always gave me a bit of energy each time, and I would pass the guy I just talked with and not look back.&lt;/p&gt;
&lt;p&gt;Anyway, I pushed really hard but for the whole second mile had still not yet closed the gap with Mickey Mouse. Sometimes I could not even see him, but I always made sure to find him.&lt;/p&gt;
&lt;p&gt;Around halfway through the third mile, I started closing on Mickey Mouse. For the first time in the race, I was totally confident that I had what it took to beat him. I finally overtook him when the finish line was in sight.&lt;/p&gt;
&lt;h3&gt;Final sprint&lt;/h3&gt;
&lt;p&gt;But that was not all. I saw the clock and was surprised to find that I was going to come in well under 23:00!  In the excitement, I decided to go wild.  I &lt;strong&gt;screamed&lt;/strong&gt;, as though I were dying, as I launched into a big sprint to pass probably a dozen people as I stumbled over the finish line in something like 22:46.&lt;/p&gt;
&lt;p&gt;Man, that was cathartic. This is only the second time I have ever screamed in a race (and I have run in well over a hundred in the past decade). I had let out a scream during a sprint finish at the Pretty Good Race 5K in September, but it was a short scream, not this prolonged seconds-long one that I let out today. I supposed that in the past decade I used to be too shy to do a thing like that, but it felt so good today that I may do it in the future.&lt;/p&gt;
&lt;p&gt;I was reminded of how in karate class I was instructed on how important it was to use the &lt;a href=&quot;https://en.wikipedia.org/wiki/Kiai&quot;&gt;kiai&lt;/a&gt; shout as a projection of energy. But then I reflected, my scream was not objectively the best way to end a race. If I had enough energy to scream, then I should have been able to run faster before that point, so a smarter race would have been to push even harder before the somewhat wasteful sprint. Nevertheless, at the very moment today, the scream seemed the thing to do, for psychological reasons, at least.&lt;/p&gt;
&lt;h2&gt;Post-race&lt;/h2&gt;
&lt;p&gt;Mickey Mouse came in seconds later. I went up to him and shook his hand, then grabbed some water and food and started walking back to my car (parked almost a mile away), since I needed to cool down from the race, and wanted to get my camera and warm clothing to bring back to the post-race party.&lt;/p&gt;
&lt;p&gt;On the way back from my car, I saw Mickey Mouse, but without the ears. He was walking with his family and I approached him and had his mother take a photo of us. His name is &lt;a href=&quot;https://ericbrockmeyer.com/&quot;&gt;Eric&lt;/a&gt; and he said he wasn&apos;t the only one with Mickey Mouse ears: a bunch of Disney Research people were all wearing them.&lt;/p&gt;
&lt;p&gt;I got back to the post-race party and happened to see a guy I know from lots of previous races in the past decade, Ron Romanoff, and had him take a photo of me:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-shadyside-2011-franklin.jpg&quot; alt=&quot;Franklin after Run Shadyside 5K 2011&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Bumping into Ben Paul&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-shadyside-2011-festivities.jpg&quot; alt=&quot;Festivities after Run Shadyside 5K 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-shadyside-2011-pancakes.jpg&quot; alt=&quot;Pancakes after Run Shadyside 5K 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I saw a sign for pancakes, and suddenly realized that I had totally forgotten about the post-race pancake breakfast. I put away the half-eaten bagel I was munching on and headed toward the pancakes, and whom did I see but &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://blog.communiteach.com/post/10818529188&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://blog.communiteach.com/post/10818529188&quot;&amp;gt;Ben Paul&amp;lt;/span&amp;gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/run-shadyside-2011-ben-paul.jpg&quot; alt=&quot;Ben Paul with coffee after Run Shadyside 5K 2011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I had first met and talked with Ben at &lt;a href=&quot;/blog/2011/09/22/starting-a-new-web-site/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt;, although I had heard his name much earlier since he was one of the founders of &lt;a href=&quot;https://web.archive.org/web/20251216170126/http://communiteach.com/&quot;&gt;CommuniTeach&lt;/a&gt;. CommuniTeach is a really great concept, providing a way for people who want to learn stuff, or teach it, or both, to get together. Back in June, Abby and I had attended a CommuniTeach session on &lt;a href=&quot;https://web.archive.org/web/20240301230427/http://communiteach.com/learnitss.php?glid=151&quot;&gt;fermentation&lt;/a&gt;. We learned to make kefir and sauerkraut and experiment with various fermented veggie combinations involving radishes, carrots, zucchini, onion, fennel seeds, you name it. Since July (when our first batch was ready), we&apos;ve been enjoying tasty fermented veggies to complement our meals.&lt;/p&gt;
&lt;p&gt;If you are curious about teaching or learning anything in the Pittsburgh area, I highly recommend that you sign up on &lt;a href=&quot;https://web.archive.org/web/20251216170126/http://communiteach.com/&quot;&gt;CommuniTeach&lt;/a&gt; and check it out! I also find the &lt;a href=&quot;https://twitter.com/#!/CommuniTeach&quot;&gt;@CommuniTeach&lt;/a&gt; very useful to follow, and there is also a &lt;a href=&quot;https://www.facebook.com/pages/CommuniTeach/99389138220&quot;&gt;Facebook site&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Music&lt;/h3&gt;
&lt;p&gt;I mentioned to Ben that I&apos;d been reading about him from the links that he&apos;s posted. I&apos;d just learned that he played melodica, and I said that I have a melodica too, but have not been playing it. I said I was also learning accordion recently. I asked him about ukulele, since he had mentioned it somewhere, and he suggested that a bunch of us find a way to teach ourselves together. I pointed out that unfortunately, I was already focusing a lot of my musical time on playing recorder and for now my ukulele goals are on hold. He couldn&apos;t believe I played recorder, since he hates the sound, ha! I happened to mention that I had too many instruments I didn&apos;t play, such as a trumpet. He got excited, because he needs a trumpet to play, and I offered to lend him mine. So we decided that he could meet up at my place to pick it up.&lt;/p&gt;
&lt;p&gt;We looked at the posted race results and Ben couldn&apos;t find himself listed. He was pretty bummed about that. It was his first race! It turned out that he had not attached the race chip to his shoe, but it was still attached to his race number on his shirt. Oops. Nevertheless, in case anyone ever doubts it: I hereby declare myself as a witness to Ben Paul having run his first race today in Shadyside!&lt;/p&gt;
&lt;h2&gt;Trumpet finally finds a happy player!&lt;/h2&gt;
&lt;p&gt;Here&apos;s Ben with my trumpet. Enjoy playing it, Ben!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ben-paul-with-franklins-trumpet.jpg&quot; alt=&quot;Ben Paul with Franklin&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Rain&lt;/h2&gt;
&lt;p&gt;It started raining outside just as Ben left with the trumpet. I am &lt;em&gt;so&lt;/em&gt; grateful that it did not rain during the race! I was prepared to deal with it (I have run cold half marathons during which it rained the whole time), but it would not have been so much fun.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-10-06)&lt;/h2&gt;
&lt;p&gt;The following year, sadly, I did not do Run Shadyside again, because of a schedule conflict with &lt;a href=&quot;/blog/2012/10/06/the-fineview-stepathon-2012-pittsburghs-grueling-urban-trail-race/&quot;&gt;the Fineview Stepathon that I did instead&lt;/a&gt;. We&apos;ll have to see what the schedules are for 2013.&lt;/p&gt;
</content:encoded></item><item><title>Free to the People: Since 1895</title><link>https://franklinchen.com/blog/2011/09/30/free-to-the-people-since-1895/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/30/free-to-the-people-since-1895/</guid><pubDate>Fri, 30 Sep 2011 20:36:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I made my regular &quot;pilgrimage&quot; to one of the most special places in Pittsburgh. I never tire of going there, and I stop by usually around once a week to refresh and illuminate my soul. Yet the future of this repository of wisdom and joy is always in doubt.&lt;/p&gt;
&lt;p&gt;What can we do to safeguard our community resource?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/clpgh.jpg&quot; alt=&quot;Carnegie Library of Pittsburgh, Oakland&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.clpgh.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.clpgh.org/&quot;&amp;gt;Carnegie Library of Pittsburgh&amp;lt;/span&amp;gt; is, of course, not really &quot;free to the people&quot;, despite those words in stone above the entrance celebrating this &lt;a href=&quot;https://en.wikipedia.org/wiki/Public_good&quot;&gt;public good&lt;/a&gt;. It is paid for by tax dollars, and when money is tight, as it has been for Pittsburgh and many other American cities, there are reductions of hours, closing of small branches, etc.&lt;/p&gt;
&lt;p&gt;I remember many years of my life during which buying books was simply not affordable, and I used libraries everywhere I lived, and was grateful for the access to knowledge. I don&apos;t think access to books, magazines, and other useful and uplifting information should simply remain the privilege of the wealthy who can afford to buy it.&lt;/p&gt;
&lt;p&gt;Abby and I proudly support the Carnegie Library by contributing to it and receiving a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.clpgh.org/about/DonorPlus/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.clpgh.org/about/DonorPlus/&quot;&amp;gt;Donor Plus Card&amp;lt;/span&amp;gt; as a sign of appreciation. We have also donated our own books to the library when we no longer need them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/clpgh-books-checked-out.jpg&quot; alt=&quot;Picking up books on hold for me&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;How to help&lt;/h2&gt;
&lt;p&gt;We are among the over 10,000 who have pledged our support, through &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.ourlibraryourfuture.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.ourlibraryourfuture.org/&quot;&amp;gt;Our Library, Our Future&amp;lt;/span&amp;gt;, for a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/pg/11207/1163032-100.stm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/pg/11207/1163032-100.stm&quot;&amp;gt;referendum on a library tax&amp;lt;/span&amp;gt;. I certainly wouldn&apos;t mind paying extra tax per year (that amounts to the cost of a single meal out) to help the Carnegie Library to run smoothly.&lt;/p&gt;
&lt;p&gt;If you are a Pittsburgh voter, please think about whether you pay too much property tax &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.post-gazette.com/pg/11159/1152094-53-0.stm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.post-gazette.com/pg/11159/1152094-53-0.stm&quot;&amp;gt;as our mayor Luke Ravenstahl believes&amp;lt;/span&amp;gt; and cannot be bothered to pitch in for our community.&lt;/p&gt;
&lt;p&gt;Election day, November 8, is coming in just a month!&lt;/p&gt;
</content:encoded></item><item><title>A Musician&apos;s Best Friend</title><link>https://franklinchen.com/blog/2011/09/29/a-musicians-best-friend/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/29/a-musicians-best-friend/</guid><pubDate>Thu, 29 Sep 2011 21:07:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;../../assets/images/alto-recorder-practice.jpg&quot; alt=&quot;Franklin practicing alto recorder some days ago&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On June 1 this year, just over three months since first starting to play the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.courtlymusicunlimited.com/Recorders/YRA-31x.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.courtlymusicunlimited.com/Recorders/YRA-31x.html&quot;&amp;gt;alto recorder&amp;lt;/span&amp;gt;, I made a new friend who has helped me considerably with my musical &lt;a href=&quot;/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/&quot;&gt;practice&lt;/a&gt;, my improvement, my motivation. My best friend is steadfast, objective, non-judgmental, and always there for me; never complaining, never tired of pointing out where I need to improve and when I am ready to progress to the next level. This friend even makes challenges fun and addictive!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Who is this amazing friend of mine?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Meet my favorite &lt;a href=&quot;https://en.wikipedia.org/wiki/Metronome&quot;&gt;&lt;em&gt;metronome&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/metIcon.png&quot; alt=&quot;Metronome app for Mac OS&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have a bunch of different metronomes, but the one I use most is actually a free &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://members.ozemail.com.au/~ronfleckner/metronome/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://members.ozemail.com.au/~ronfleckner/metronome/&quot;&amp;gt;Mac OS application&amp;lt;/span&amp;gt;. I usually practice these days near my laptop, so that I can use this metronome program and conveniently change the tempo and volume.&lt;/p&gt;
&lt;p&gt;I can&apos;t believe I never used a metronome until June 1 this year!&lt;/p&gt;
&lt;p&gt;Well, I had my reasons. One was that I was still traumatized by memories of old mechanical metronomes, the ones with swinging arms that clicked loudly and harshly. It was also not so convenient to change the tempo, and the fixed increments did not allow for fine adjustments in tempo. But mostly, I had the stubborn, &quot;romantic&quot; idea that metronomes were &quot;robotic&quot; and would encourage &quot;soulless&quot; playing rather than the &quot;expressive&quot; playing I have always idealized and aspired to.&lt;/p&gt;
&lt;p&gt;Digital metronomes remove the limitations of the mechanical ones, of course.&lt;/p&gt;
&lt;p&gt;But aren&apos;t they still fundamentally robotic?&lt;/p&gt;
&lt;h2&gt;Why I started using the metronome&lt;/h2&gt;
&lt;p&gt;In May this year, it became harder and harder for me to gauge exactly how much I was improving when practicing exercises and pieces, because I didn&apos;t know exactly how fast I was able to play passages without stumbling, and in my music log, comments such as &quot;played exercise 27 better than yesterday&quot; were losing their meaning. For the first three months of play, improvement was so fast that I didn&apos;t need more precise self-assessment, but then when no longer playing easy stuff, I needed fine-tuned practice.&lt;/p&gt;
&lt;p&gt;I started using the metronome app and started recording each day the fastest tempo at which I could play an exercise &quot;honestly&quot;: without terrible execution, missed notes, squeaky notes, etc. This was quite humbling. I learned that to actually completely get an exercise right, I often had to go at a much slower tempo than I had thought initially I could handle. In fact, I was so humbled that I was tempted many times to &quot;cheat&quot;, by recording in my music log a tempo faster than I could really handle! The temptation is always there.&lt;/p&gt;
&lt;h2&gt;Examples&lt;/h2&gt;
&lt;p&gt;Since late June, I have been working through &lt;a href=&quot;https://web.archive.org/web/20111206052939/http://courtlymusicunlimited.com:80/Note-page.htm&quot;&gt;&quot;The Charlton Method for the Recorder: A Manual for the Advanced Recorder Player&quot;&lt;/a&gt;, a very challenging method recommended on a very useful list of &lt;a href=&quot;https://www.aswltd.com/adultmet.htm&quot;&gt;recorder methods&lt;/a&gt;. I used it to start learning the C-based recorders (soprano and tenor), after first getting the F-based alto to a sufficiently stable proficiency in four months (using other methods).&lt;/p&gt;
&lt;p&gt;Exercise 36 in the Charlton method is a little piece in D major that I started working on in June. Here is my progression of metronome tempo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;June 28 (120)&lt;/li&gt;
&lt;li&gt;July 1 (126)&lt;/li&gt;
&lt;li&gt;July 2 (132)&lt;/li&gt;
&lt;li&gt;July 3 (138)&lt;/li&gt;
&lt;li&gt;July 4 (144)&lt;/li&gt;
&lt;li&gt;September 3 (148)&lt;/li&gt;
&lt;li&gt;September 4 (150)&lt;/li&gt;
&lt;li&gt;September 5 (160)&lt;/li&gt;
&lt;li&gt;September 8 (164)&lt;/li&gt;
&lt;li&gt;September 29 (168)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, there are gaps in time during which I either did not practice this particular exercise or did not make progress worth noting. That is intentional. I learned through trial and error that sometimes I get stuck and it&apos;s best to move on and try to improve at some other exercise (after all, there are hundreds of exercises I work on, and time is limited), or, now that I am practicing soprano, alto, tenor, and bass, a different instrument to work on for a while. Being stuck is time wasting and morale crushing, so when I am genuinely stuck (as opposed to just lazy or ineffective), I move on.&lt;/p&gt;
&lt;p&gt;Another example is exercise 51, which I found very frustrating for a long period of time, during which I felt I was stagnating and needed to master this exercise eventually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;June 30 (120)&lt;/li&gt;
&lt;li&gt;September 3 (126)&lt;/li&gt;
&lt;li&gt;September 4 (128)&lt;/li&gt;
&lt;li&gt;September 5 (132)&lt;/li&gt;
&lt;li&gt;September 8 (133)&lt;/li&gt;
&lt;li&gt;September 26 (134)&lt;/li&gt;
&lt;li&gt;September 27 (135)&lt;/li&gt;
&lt;li&gt;September 29 (137)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recently I have been making real progress on this exercise. During all of July, every time I visited this exercise, I ended up stumbling sufficiently badly that I felt it wise to do something else. Note how useful it is to be able to click the Mac app metronome to increase the tempo by just one beat per minute (the app also supports fractional increases, but I have not felt the need to use that level of granularity).&lt;/p&gt;
&lt;p&gt;Here&apos;s exercise 66G, for alto, that I&apos;ve been finding surprisingly tricky to improve further on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;September 2 (62)&lt;/li&gt;
&lt;li&gt;September 3 (74)&lt;/li&gt;
&lt;li&gt;September 4 (88)&lt;/li&gt;
&lt;li&gt;September 8 (91)&lt;/li&gt;
&lt;li&gt;September 10 (114)&lt;/li&gt;
&lt;li&gt;September 26 (115)&lt;/li&gt;
&lt;li&gt;September 28 (116)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that sometimes there are jumps. These happen for two reasons. One is that often, when first attempting an exercise, I am very slow, and therefore I improve quickly from the initial attempt. The other is that sometimes I am stuck at just one particular section of an exercise, and I am already able to play the rest of it much faster, but just not that one section. Once that one section falls into place, then all is good.&lt;/p&gt;
&lt;p&gt;The numbers are particularly amusing when just learning a new instrument, of course. I started learning the &lt;a href=&quot;https://web.archive.org/web/20101214011234/http://courtlymusicunlimited.com/Recorders/YRB-302B.html&quot;&gt;bass recorder&lt;/a&gt; only last week (I borrowed it from someone to try out, and this week I ordered a new one for myself that I expected to receive on Monday). The trickiest thing about the bass recorder is that you have to read the music off bass clef. (Also, there are some alternate fingerings, such as for E-flat, that are required for this Yamaha bass.) So the past week has been mainly getting my fingers and brain matching up with bass clef reading.  Exercise 3 in Charlton for bass recorder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;September 20 (92)&lt;/li&gt;
&lt;li&gt;September 22 (106)&lt;/li&gt;
&lt;li&gt;September 24 (110)&lt;/li&gt;
&lt;li&gt;September 25 (130)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I rather enjoying using the metronome. It &lt;a href=&quot;https://en.wikipedia.org/wiki/Gamification&quot;&gt;&quot;gamifies&quot;&lt;/a&gt; my music practice, giving me concrete and reliable goals for improving technique for speedy and stable execution of notes.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There is nothing &quot;romantic&quot; about avoiding the use of a metronome to improve one&apos;s skill at playing an instrument, but it is actually relieving to have a steady friend who can keep you on track while you try to master the elements of playing so that you can eventually play expressively and beautifully. The metronome is a means to the goal. Just because there is huge amount of help the metronome is &lt;em&gt;not&lt;/em&gt; able to give (improving tone, breathing, dynamics, rubato, phrasing are of course part of my practice as well!) does not mean that it does not have a place in a serious amateur&apos;s practice.&lt;/p&gt;
</content:encoded></item><item><title>Staring at the Wall With Nowhere to Go</title><link>https://franklinchen.com/blog/2011/09/28/staring-at-the-wall-with-nowhere-to-go/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/28/staring-at-the-wall-with-nowhere-to-go/</guid><pubDate>Wed, 28 Sep 2011 20:48:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s 4:30 PM, and I scramble to finish up my work early for this day, and rush over to a little room across campus, where every Wednesday I embark on an adventure in which I don&apos;t know exactly what I will find.&lt;/p&gt;
&lt;p&gt;There may be six other people in the room. Or there may be fifteen. Or just three. It doesn&apos;t matter how many. In this room, our main mission is to line up facing the wall and sit down on &lt;a href=&quot;https://en.wikipedia.org/wiki/Zafu&quot;&gt;cushions&lt;/a&gt; on the floor and remain silent, and just see what the heck happens.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-zafu.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Welcome to the world of Zen meditation, aka &lt;a href=&quot;https://en.wikipedia.org/wiki/Zazen&quot;&gt;zazen&lt;/a&gt;. Carnegie Mellon University is truly lucky to have an arrangement to offer free weekly meditation sessions on campus, held by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://citydharma.wordpress.com/author/jisen3/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://citydharma.wordpress.com/author/jisen3/&quot;&amp;gt;Rev. Jisen Coghlan&amp;lt;/span&amp;gt; of the &lt;a href=&quot;https://deepspringzen.org/&quot;&gt;Zen Center of Pittsburgh&lt;/a&gt;. These meditation sessions, offered to all CMU students, faculty, and staff, began in January of 2011, after much positive response to her keynote address in June 2010 at the &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://events.web.cmu.edu/ecal/event/127446959876236137&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://events.web.cmu.edu/ecal/event/127446959876236137&quot;&amp;gt;&quot;Pathways to Health&quot;&amp;lt;/span&amp;gt; event offered at CMU to staff.&lt;/p&gt;
&lt;p&gt;I have been attending this event since the second week it was offered (I missed the initial meeting because I had not heard about it in time). I have been very grateful for the opportunity to sit with others, since for a couple of years I had periodically meditated privately at home, but never with other people, and felt I missed something as a result.&lt;/p&gt;
&lt;p&gt;Typically we have a short orientation for those new to meditation (almost every week someone new joins us to try it out), and then we sit for 20-30 minutes, do walking meditation (aka &lt;a href=&quot;https://en.wikipedia.org/wiki/Kinhin&quot;&gt;kinhin&lt;/a&gt;) for 10 minutes, then sit for another 20 minutes (prefaced by a short reading from a text), then have a brief open discussion.&lt;/p&gt;
&lt;p&gt;We&apos;ve had a good mix of students, staff, and faculty come to the sessions.&lt;/p&gt;
&lt;p&gt;It&apos;s hard to describe what happens, for me, when I meditate. First of all, physically, sitting meditation is physically tough for me (I find walking meditation much easier; others find the opposite). I&apos;m perpetually trying to adopt a &quot;relaxed&quot; but upright posture. My legs get sore and used to fall asleep. I wonder whether my arms and hands are in the right place and relaxed. I may feel an itch on my face and wonder whether to scratch it. I may wonder whether my breathing is too loud and annoying my sitting neighbor. Etc.&lt;/p&gt;
&lt;p&gt;The physical discomfort is nothing compared to the mental discomfort. I may feel anxious about things I need to do, or conflicts in my life. I may worry about whether other people are sitting better than me. I may have random thoughts about my childhood, or about the future. I may feel very sleepy and start nodding off and slumping on the cushion. We are instructed to observe our thoughts non-judgmentally and let them go. Therefore, the most annoying thought to come up during meditation is the thought that I&apos;m not letting my annoying thoughts go! It&apos;s a riddle. Yet, after a while, things usually do settle down a bit. A bit.&lt;/p&gt;
&lt;p&gt;I would never call meditation &quot;fun&quot; or &quot;relaxing&quot;, although sometimes it is calming. Other times it is an ordeal and makes me frustrated or angry. In any case, I keep on going, week after week. I get the sense that it is beneficial for me. But mainly, it is a &lt;em&gt;practice&lt;/em&gt; for me. It is something I do.&lt;/p&gt;
</content:encoded></item><item><title>When jQuery Attacks</title><link>https://franklinchen.com/blog/2011/09/27/when-jquery-attacks/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/27/when-jquery-attacks/</guid><pubDate>Tue, 27 Sep 2011 21:07:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s Tuesday night. After spending the day at work testing and debugging a new feature for a &lt;a href=&quot;https://java.com/&quot;&gt;Java&lt;/a&gt; program of mine that parses and transforms data using &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://antlr.org/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://antlr.org/&quot;&amp;gt;ANTLR&amp;lt;/span&amp;gt;, what do I have to look forward to?&lt;/p&gt;
&lt;p&gt;Apparently, the answer must be that I look forward to a &lt;em&gt;hellish&lt;/em&gt; 30 minute drive at 6:30 PM in the opposite direction of home (which is only two miles away), taking a planned detour to avoid an insane &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.dot.state.pa.us/PENNDOT/Districts/district11.nsf/befa2937349a7160852570a70047899a/1cf78bf5840af8b8852578c5006741a3?OpenDocument&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.dot.state.pa.us/PENNDOT/Districts/district11.nsf/befa2937349a7160852570a70047899a/1cf78bf5840af8b8852578c5006741a3?OpenDocument&quot;&amp;gt;I-579 construction-caused backup&amp;lt;/span&amp;gt;, then weaving through a horrible &lt;a href=&quot;https://northhills.patch.com/articles/mcknight-road-construction-creates-headache-for-many&quot;&gt;&lt;em&gt;McKnightmare&lt;/em&gt; construction zone&lt;/a&gt;, in order to meet up with a handful of fellow &lt;a href=&quot;https://en.wikipedia.org/wiki/JavaScript&quot;&gt;JavaScript&lt;/a&gt; geeks, for another hour or so of more staring at computer code!&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://o1.aolcdn.com/dims-shared/dims3/PATCH/resize/600x450/https://hss-prod.hss.aol.com/hss/storage/patch/ff1b44dbd49a2a149de987454f154ba1&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://o1.aolcdn.com/dims-shared/dims3/PATCH/resize/600x450/https://hss-prod.hss.aol.com/hss/storage/patch/ff1b44dbd49a2a149de987454f154ba1&quot;&amp;gt;[image: McKnight Road construction]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;The title &quot;When &lt;a href=&quot;https://jquery.com/&quot;&gt;jQuery&lt;/a&gt; attacks&quot; is actually not mine, but stolen from the title of today&apos;s session by &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.fusioncube.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.fusioncube.net/&quot;&amp;gt;Steven Brownlee&amp;lt;/span&amp;gt;, the gracious founder and host at &lt;a href=&quot;https://www.smithmicro.com/&quot;&gt;Smith Micro&lt;/a&gt; of the &lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/&quot;&gt;Pittsburgh JavaScript meetup group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.meetup.com/Pittsburgh-JavaScript-Developers/events/31718282/&quot;&gt;&lt;img src=&quot;../../assets/images/pittsburgh-javascript-meetup.jpg&quot; alt=&quot;Today&apos;s meeting of the Pittsburgh JavaScript meetup group&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Around eight or nine of us showed up tonight, and shared pizza Steve had ordered for us.&lt;/p&gt;
&lt;p&gt;Steve briefly presented an overview of basic jQuery features, then we all just informally chatted about various topics that we brought up, from the coming impact of &lt;a href=&quot;https://www.html5rocks.com/&quot;&gt;HTML5&lt;/a&gt;, the rise of JavaScript and its future, the decline of such technologies as Flash and JBoss, different JavaScript engines such as &lt;a href=&quot;https://code.google.com/p/v8/&quot;&gt;v8&lt;/a&gt; and &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.mozilla.org/rhino/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.mozilla.org/rhino/&quot;&amp;gt;Rhino&amp;lt;/span&amp;gt;, client-side vs. server-side use of JavaScript (especially &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node&lt;/a&gt;, which we have had meetups about already), and the controversy over Google&apos;s &lt;a href=&quot;https://en.wikipedia.org/wiki/Google_Dart&quot;&gt;Dart&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;My own use of JavaScript&lt;/h2&gt;
&lt;p&gt;I have to confess that although I have used jQuery to prototype a web application I am developing, I have become uncomfortable with using just jQuery and adding layers on top of it using jQuery&apos;s own bare-bones systems for &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://api.jquery.com/jQuery.template/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://api.jquery.com/jQuery.template/&quot;&amp;gt;templates&amp;lt;/span&amp;gt; and &lt;a href=&quot;https://web.archive.org/web/20121014075301/http://api.jquery.com/link/&quot;&gt;data binding&lt;/a&gt; to cleanly structure the application rather than have it be a horrible tangled-spaghetti mess of DOM hacking.&lt;/p&gt;
&lt;p&gt;I am currently evaluating full-blown &lt;a href=&quot;https://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC&lt;/a&gt; types of frameworks such as &lt;a href=&quot;https://documentcloud.github.com/backbone&quot;&gt;Backbone&lt;/a&gt; and &lt;a href=&quot;https://www.sproutcore.com/&quot;&gt;Sproutcore&lt;/a&gt; and &lt;a href=&quot;https://www.sencha.com/products/extjs/&quot;&gt;Sencha Ext JS 4&lt;/a&gt;. Stay tuned for my investigations of all that on this blog sometime.&lt;/p&gt;
</content:encoded></item><item><title>I Don&apos;t Feel Like Practicing; but I&apos;m Gonna Do It Anyway</title><link>https://franklinchen.com/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/26/i-dont-feel-like-practicing-but-im-gonna-do-it-anyway/</guid><pubDate>Mon, 26 Sep 2011 19:07:00 GMT</pubDate><content:encoded>&lt;p&gt;This morning I felt pretty tired, still recovering from yesterday&apos;s &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;race&lt;/a&gt;, so the thought crossed my mind, &quot;Maybe I should take a little break, and skip recorder practice today&quot;. Also, I hadn&apos;t improved as much during the past week as I had planned and felt frustrated.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/s-a-t-recorders.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No effing way!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thanks to a lot of great web sites and books out there on &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://lifehacker.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://lifehacker.com/&quot;&amp;gt;productivity&amp;lt;/span&amp;gt; and psychology, and advice from &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://zenhabits.net/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://zenhabits.net/&quot;&amp;gt;wise people&amp;lt;/span&amp;gt; from all walks of life, I&apos;ve learned to watch very carefully for signs of loss of self-discipline and direction.&lt;/p&gt;
&lt;p&gt;Jerry Seinfeld said, &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://lifehacker.com/281626/jerry-seinfelds-productivity-secret&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://lifehacker.com/281626/jerry-seinfelds-productivity-secret&quot;&amp;gt;&quot;Don&apos;t break the chain&quot;&amp;lt;/span&amp;gt;. If you want to get good at something and achieve a tough goal, you have to work at it every day, even if only a little bit a day. It is easy for our minds to wander and make up excuses to skip one day, to skip one practice. This applies to every aspect of life, not just matters such as music practice. It applies to whether to exercise every day, whether to write a blog post every day, whether to avoid eating cookies for a week.&lt;/p&gt;
&lt;p&gt;Now, I don&apos;t necessarily kick myself if in fact I really have to alter my planned schedule. Sometimes I&apos;m sick and it&apos;s better to sleep than to try to go for a run, or I have a respiratory ailment and don&apos;t want to blow into a wind instrument.&lt;/p&gt;
&lt;p&gt;But too many times I&apos;ve seen people (including myself) make up excuses to not do something, and become so creative as to put off a &quot;plan&quot; for years at a time. Maybe there&apos;s that book I always meant to read, but it&apos;s yellow now since college and somehow I have &quot;no time&quot; for it. Or maybe I wanted to learn to draw, but kept on &quot;needing&quot; fancy paper and pencils. Or maybe I wanted to lose weight, but every day I make an &quot;exception&quot; and eat a side of fries or cup of ice cream. Or maybe I always &quot;wanted&quot; to learn to dance the samba, but mysteriously, my leg seems to be &quot;injured&quot; remarkably often every time I&apos;m not eating ice cream and looking for pencils to buy.&lt;/p&gt;
&lt;p&gt;What it comes down to is, you have to decide what is important, and act accordingly. What is important may not be what your friends think is important. It may not be what your spouse thinks is important. It may not be what your society thinks is important. But if you truly believe, then you have a stark choice: go ahead anyway, or quit. Do not go halfway. A &lt;a href=&quot;https://en.wikipedia.org/wiki/Yoda&quot;&gt;wise sage&lt;/a&gt; said:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Do or do not. There is no try.
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span class=&quot;image-defunct&quot; data-url=&quot;https://upload.wikimedia.org/wikipedia/en/9/96/CGIYoda.jpg&quot; data-verified=&quot;2026-04-15&quot; title=&quot;image defunct 2026-04-15: https://upload.wikimedia.org/wikipedia/en/9/96/CGIYoda.jpg&quot;&amp;gt;[image: Yoda with light saber]&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;Why waste time aimlessly practicing recorder only maybe once a week, and not getting anywhere at all, if I could spend that one hour doing something that I could find that I cared more about?&lt;/p&gt;
&lt;h2&gt;Applying the lessons to my life&lt;/h2&gt;
&lt;p&gt;So, the day I really committed to playing recorder, March 7 of 2011 (after starting to play the alto recorder on February 19 and informally practicing every day until the initial excitement wore off), I printed out a music practice log/journal, and vowed to practice every single day, indefinitely (as far as this was reasonable). I had decided to join the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;Pittsburgh chapter&lt;/a&gt; of the American Recorder Society, whose next meeting was March 20. I had two weeks to teach myself as much alto recorder as I could before the meeting. I attended, was warmly welcomed as a newcomer, and have continued to attend and participate in group playing, while getting lots of helpful advice from everyone there. The group is not too big, and is informal and friendly: I love how the communities for different hobbies of mine in Pittsburgh are so inviting. This city is just the right size for me. I&apos;d feel lost living in New York or something, where there are a lot more things to do, more polish, more glamour, more hotshots, but also more distance.&lt;/p&gt;
&lt;p&gt;I have missed probably an average of one day of recorder practice every two weeks. I can live with that. &lt;em&gt;The point of the planned schedule is not, paradoxically, to rigidly stick to it.&lt;/em&gt; The point is to set a personal standard, a mind set, a reference point, an &lt;a href=&quot;https://en.wikipedia.org/Anchoring&quot;&gt;anchor&lt;/a&gt;. When I was twelve years old, I was struck by this &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://en.wikiquote.org/wiki/Robert_Browning&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://en.wikiquote.org/wiki/Robert_Browning&quot;&amp;gt;quote&amp;lt;/span&amp;gt;:&lt;/p&gt;
&lt;p&gt;&amp;lt;blockquote&amp;gt;
Ah, but a man&apos;s reach should exceed his grasp,
Or what&apos;s a heaven for?
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;p&gt;I immediately interpreted this as meaning, if I want to achieve something, I must aim beyond it.&lt;/p&gt;
&lt;p&gt;When I was learning &lt;a href=&quot;https://web.archive.org/web/20120117210826/http://www.andrew.cmu.edu:80/user/shotokan/pska.org/CMU.shtml&quot;&gt;karate&lt;/a&gt; several years ago, I was taught that when punching someone, aim to punch through him, and not just to hit the surface.&lt;/p&gt;
&lt;p&gt;Because of inevitable uncertainties and setbacks, it is necessary to aim beyond where one wants to go, in order to get there.&lt;/p&gt;
&lt;p&gt;So I picked up my recorder and &lt;a href=&quot;https://musiciansway.com/&quot;&gt;practiced&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Namaste&quot;&gt;Namaste&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/alto-recorder-practice.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Running My Ninth Pittsburgh Great Race 10K: Blistered but Blissful in the &apos;Burgh</title><link>https://franklinchen.com/blog/2011/09/25/blistered-but-blissful-in-the-burgh/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/25/blistered-but-blissful-in-the-burgh/</guid><pubDate>Sun, 25 Sep 2011 15:28:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m temporarily using a walking stick right now, because of bad blisters I got on my right foot this morning. But I am very happy today, and it was a &lt;a href=&quot;https://rungreatrace.com/&quot;&gt;Great&lt;/a&gt; day in the &apos;Burgh.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-finishing-great-race-10k-2011.jpg&quot; alt=&quot;Franklin finishing Great Race 10K (photo by Abby)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2011-official/0020.jpg&quot; alt=&quot;Franklin giving it all he has&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2011-official/0093.jpg&quot; alt=&quot;Franklin crossing finish line&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2011-official/0094.jpg&quot; alt=&quot;Franklin over finish line&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2011-official/0072.jpg&quot; alt=&quot;Franklin stopping his watch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I have now run the Pittsburgh &lt;a href=&quot;https://rungreatrace.com/&quot;&gt;Great Race&lt;/a&gt; 10K nine times now, beginning in 2000: I have only missed 2003 (the year it was canceled), 2009, and 2010. I have run it in all kinds of conditions (both in terms of weather and my physical state). There is no other race I have run for so many years, so it is always special to me.&lt;/p&gt;
&lt;p&gt;But beyond that, today&apos;s race was special because Abby participated in it, for the first time. She did not run the 10K, but did run the 5K (and took the photo of me above nearing the finish line). She just started running in races with me this year, and I am very proud of her for getting into running! Having once been a non-runner, it gives me great pleasure to encourage others to take up this wonderful form of exercise.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/abby-before-great-race-5k-2011.jpg&quot; alt=&quot;Abby in Oakland before Great Race 5K start&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Of course, right after catching my breath and finding Abby, my first instinct was to ask her, &quot;Where are the &lt;a href=&quot;https://www.eatnpark.com/smiley.asp&quot;&gt;Smiley Cookies&lt;/a&gt;?&quot; I limped over to pick one up, even as sweat was still dripping down my face, and eagerly gobbled it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/franklin-great-race-2011-smiley-cookie.jpg&quot; alt=&quot;Franklin with Smiley Cookie after race&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Tradition&lt;/h2&gt;
&lt;p&gt;The Great Race is a wonderful Pittsburgh tradition. It is not only thrilling to be on the Boulevard of the Allies heading downtown getting a fine view of our city (although the uphill during mile 5 of the race is admittedly tough), but the sight of so many people participating in this event is heartwarming.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2011-crowd.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;../../assets/images/great-race-2011-crowd-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;My Great Race stats&lt;/h2&gt;
&lt;p&gt;I was also very happy about my finish time. I had a plan to break 48:00 this year, and I succeeded handily (all times mentioned are &quot;chip times&quot;, not &quot;gun times&quot;). My time was, of course, not one of my fastest times in this race (my fastest time was 42:49 nine years ago), but it was faster than my time in 2008. The last three years of my life have been very tough for me physically, so I have enjoyed starting to get back into shape this year.&lt;/p&gt;
&lt;p&gt;Here&apos;s my record in the Great Race 10K over the years:
&amp;lt;table style=&quot;border: 1px solid black; padding: 15px&quot;&amp;gt;
&amp;lt;thead&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Year&amp;lt;/th&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Chip time&amp;lt;/th&amp;gt;
&amp;lt;th style=&quot;border: 1px solid black; padding: 3px; font-size: 1.1em&quot;&amp;gt;Comment&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/thead&amp;gt;
&amp;lt;tbody&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2000&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;53:53&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;First time ever ran more than 3 miles continuously at all!&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2001&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;45:02&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Lost weight, trained seriously.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2002&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;42:49&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Trained really hard.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2003&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;(not held)&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2004&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;45:36&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Very sick, but was preregistered, and didn&apos;t want to break tradition.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2005&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;46:49&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Was too busy to train.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2006&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;46:55&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Again untrained. Slower and slower.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2007&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;47:11&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Not trained at all; extreme pain halfway, but kept going.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2008&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;49:12&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Not trained at all, left shin hurting, unmotivated.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2009&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;(did not run)&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Too untrained to even think of running.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2010&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;(did not run)&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Too untrained to even think of running.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;2011&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;47:46&amp;lt;/td&amp;gt;
&amp;lt;td style=&quot;border: 1px solid black; padding: 3px&quot;&amp;gt;Lightly trained, but put in a genuine effort on race day.&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;h2&gt;Details of the race&lt;/h2&gt;
&lt;p&gt;My splits (for each mile, then the final 0.22 mile) are below. I tried to run an even effort (till the final mile, when I simply tried to keep going hard despite the pain), accounting for the changes in elevation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7:40.73&lt;/li&gt;
&lt;li&gt;7:07.52&lt;/li&gt;
&lt;li&gt;8:09.14&lt;/li&gt;
&lt;li&gt;7:23.90&lt;/li&gt;
&lt;li&gt;8:24.08&lt;/li&gt;
&lt;li&gt;7:29.08&lt;/li&gt;
&lt;li&gt;1:31.03&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One trick I try to use in a race is to pick someone ahead of me who is running just a bit faster than what I feel I can hold, and see if I can slowly catch up (and maybe overtake eventually). In the Great Race, this is hard to do because there are so many runners, and people starting at different times, so there is always a lot of passing and slowing down going on, unlike in smaller races where things get spread out and you know people are basically running at the pace they can hold.&lt;/p&gt;
&lt;p&gt;I have to work harder in these big races to maintain my own sense of pace. I do this by &quot;feel&quot;: having run in races from a mile up to the marathon, I know what a sustainable pace feels like. 5K pace gives me a burning, pukey sensation, for example, while half-marathon pace is not at all pukey. 10K pace is in between: uncomfortable but tolerable, till the final mile when I just do whatever I can without completely falling apart.&lt;/p&gt;
&lt;h3&gt;Don Slusser&lt;/h3&gt;
&lt;p&gt;I think it was after around two miles that I noticed ahead of me &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.newsandsentinel.com/page/content.detail/id/538234.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.newsandsentinel.com/page/content.detail/id/538234.html&quot;&amp;gt;Don Slusser&amp;lt;/span&amp;gt;, a local legend in the running scene. OK, he is not at all what he used to be, and has had a lot of knee surgeries, but still, I felt it was an honor to be see him out there still running.&lt;/p&gt;
&lt;p&gt;As long as Don was still ahead of me, he was going to be my target. He pulled away from me slightly over the next three miles, but was always in my sight. So in the final mile, I finally blasted past him. Then somehow he passed me at one point downtown, and that pushed me to pick up the pace again and finish ahead of him.&lt;/p&gt;
&lt;p&gt;After he finished, I went up to him and shook his hand. He probably has no idea who I am or why I respect him or how he helped provide focus for me in my own attempt to run as well as I could today, but what can I say, it was a spontaneous gesture on my part. I salute you, Don: you and your wife Tammy have done much for the Pittsburgh running community and I am grateful for that.&lt;/p&gt;
&lt;h2&gt;A note on shoes&lt;/h2&gt;
&lt;p&gt;This is the second race in which I&apos;ve run in my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/products/Five-Fingers-BikilaLS-Mens.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/products/Five-Fingers-BikilaLS-Mens.htm&quot;&amp;gt;Bikila LS&amp;lt;/span&amp;gt; shoes (the first race was &lt;a href=&quot;/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/&quot;&gt;three days ago&lt;/a&gt;). Unfortunately, these shoes tend to give me blisters if I run over three miles and fast. I&apos;ve run a slow eight miles before without blisters, but going fast, and in warm weather, my feet sweat and chafing happens. These shoes are nice but have a ventilation problem. I have never had any problems with my &lt;a href=&quot;https://web.archive.org/web/20150511191701/http://www.vibramfivefingers.com:80/products/Five-Fingers-KSO-Trek-Mens.htm&quot;&gt;KSO Trek&lt;/a&gt; shoes that I use for trail running and hiking.&lt;/p&gt;
&lt;p&gt;You can see in the photo above that Abby wore her &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/products/five-fingers-komodo-sport-ls-mens.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/products/five-fingers-komodo-sport-ls-mens.htm&quot;&amp;gt;KomodoSport LS&amp;lt;/span&amp;gt; shoes in the race. Wearing &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/&quot;&amp;gt;Vibram FiveFingers&amp;lt;/span&amp;gt; shoes for walking, hiking, and running has really improved our lives. (More on that in a later blog post.)&lt;/p&gt;
&lt;h2&gt;Photo update on September 28, 2011&lt;/h2&gt;
&lt;p&gt;Some official photos from Island Photography have appeared online. I have to confess that my original plan was to try to spot the cameras and try to look good for any photos of me that might be taken. Unfortunately, I was in such pain in the final mile of the race that I had tunnel vision and could not really perceive anything.&lt;/p&gt;
&lt;p&gt;I&apos;ve added some of these photos to the beginning of this blog post.&lt;/p&gt;
&lt;h2&gt;(Update of 2012-09-30)&lt;/h2&gt;
&lt;p&gt;The following year, &lt;a href=&quot;/blog/2012/09/30/running-my-10th-great-race-10k-obscene-but-in-a-good-way/&quot;&gt;I ran in the Great Race again&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>What&apos;s a Nice Acorn Squash Like You Doing in a Pot of Spicy Lentils?</title><link>https://franklinchen.com/blog/2011/09/24/whats-a-nice-acorn-squash-like-you-doing-in-a-pot-of-spicy-lentils/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/24/whats-a-nice-acorn-squash-like-you-doing-in-a-pot-of-spicy-lentils/</guid><pubDate>Sat, 24 Sep 2011 18:09:00 GMT</pubDate><content:encoded>&lt;p&gt;A nice acorn squash was sitting on the kitchen counter, lonely since arriving days ago from the &lt;a href=&quot;https://www.kretschmannfarm.com/&quot;&gt;farm&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When some lentils decided to soak in a bowl next to her on the counter, she decided she wanted to join them. Next thing she knew, there was a whole party gathering!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/lentil-acorn-squash-soup-ingredients.jpg&quot; alt=&quot;Ingredients for lentil acorn squash soup&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Trying to use up various ingredients from &lt;a href=&quot;https://www.kretschmannfarm.com/&quot;&gt;Kretschmann Farm&lt;/a&gt;, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Community-supported_agriculture&quot;&gt;CSA&lt;/a&gt; we&apos;ve been subscribing to for years now, I searched the web for ideas, of course.&lt;/p&gt;
&lt;p&gt;We always have a lot of legumes on hand to us (bought in bulk), especially lentils, so I found a &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://eatingplaces.wordpress.com/2011/01/21/acorn-squash-lentil-soup/&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://eatingplaces.wordpress.com/2011/01/21/acorn-squash-lentil-soup/&quot;&amp;gt;simple recipe&amp;lt;/span&amp;gt;, and modified the recipe slightly to make a large batch of soup. We had some for dinner, and will have it for many more meals (we typically freeze some stuff for later when making big batches like this one).&lt;/p&gt;
&lt;p&gt;The acorn squash and the carrots came from Kretschmann. The soup was not vegetarian, since we used a jar of homemade chicken broth from the batch that we had created after roasting a whole chicken (from our subscription to &lt;a href=&quot;https://www.localharvest.org/miseras-organic-farm-M14896&quot;&gt;Misera Farm&lt;/a&gt; through Kretschmann) and using the leftover bones, etc.&lt;/p&gt;
&lt;p&gt;Yummy!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/lentil-acorn-squash-soup-done.jpg&quot; alt=&quot;Cooked lentil acorn squash soup&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Roaring Like a Lion on a Saturday Morning</title><link>https://franklinchen.com/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/24/roaring-like-a-lion-on-a-saturday-morning/</guid><pubDate>Sat, 24 Sep 2011 08:31:00 GMT</pubDate><content:encoded>&lt;p&gt;I woke up today eager to roar like a lion again on a Saturday morning. I hadn&apos;t done that in a couple of months now.&lt;/p&gt;
&lt;p&gt;![&lt;a href=&quot;../../assets/images/3326415463_f9ea763180_m.jpg&quot;&gt;Lion&lt;/a&gt;
(&lt;a href=&quot;https://picturesandbox.com/browse/free-stock-photos/3326415463/-.html&quot;&gt;Source&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I am, of course, referring to the &lt;a href=&quot;https://web.archive.org/web/20140603143251/http://www.yogajournal.com/poses/1705&quot;&gt;&quot;lion&apos;s breath&quot;&lt;/a&gt; performed in yoga.&lt;/p&gt;
&lt;p&gt;![&lt;a href=&quot;https://web.archive.org/web/20140711223833/http://www.yogajournal.com/media/originals/lion_248.jpg&quot;&gt;Lion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abby and I had not gone to the free Saturday morning &quot;Yoga with Phyllis&quot; sessions at the &lt;a href=&quot;https://web.archive.org/web/20191111230019/http://www.clpgh.org/locations/squirrelhill/&quot;&gt;Squirrel Hill Library&lt;/a&gt; for a couple of months now, but we had scheduled it in for this morning, so we arrived at the library early enough to get our favorite spots and set up our mats (we learned the hard way the first time that space gets crowded quickly).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/saturday-yoga.jpg&quot; alt=&quot;[Yoga mats in place]&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The instructor, Phyllis Berkovitz, is great. She has a deep, soothing voice, a perpetual smile, and a twinkle in her eye. She is relaxed and funny, making everyone feel comfortable and happy. Phyllis has been teaching yoga here for three decades, and is a truly valuable contributor to the Squirrel Hill Library&apos;s community programs.&lt;/p&gt;
&lt;p&gt;If you are curious about yoga and don&apos;t yet have a practice, check out her weekly Saturday morning class (or Tuesday evening class)!&lt;/p&gt;
&lt;h2&gt;Pittsburgh as small town&lt;/h2&gt;
&lt;p&gt;When attending this yoga class, we often unexpectedly run into people we know (from other contexts) . Today, for example, we ran into a woman from West Virginia (whose sister is here, and was also at class) whom Abby had borrowed an accordion (named &quot;Bob&quot;) for us to try out in case we wanted to buy it. (I have only begun playing the accordion and have logged maybe two or three hours of practice on &quot;Bob&quot; so far. More on my new musical hobby later.)&lt;/p&gt;
&lt;h2&gt;Addendum&lt;/h2&gt;
&lt;p&gt;By chance, today I saw this feel-good story about how &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.csmonitor.com/World/Making-a-difference/Change-Agent/2011/0923/Ex-convict-teaches-yoga-to-help-calm-violence-in-Mexico-s-prisons&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.csmonitor.com/World/Making-a-difference/Change-Agent/2011/0923/Ex-convict-teaches-yoga-to-help-calm-violence-in-Mexico-s-prisons&quot;&amp;gt;an ex-convict is teaching yoga to help calm violence in Mexico&apos;s prisons&amp;lt;/span&amp;gt; so I felt I should share it here.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/0923FreddieDiazblogpost_full_380.jpg&quot; alt=&quot;[Fredi Díaz]&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Happiness Is: Finishing 39th of 43 Men in a Race!</title><link>https://franklinchen.com/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/23/happiness-is-finishing-39th-of-43-men-in-a-race/</guid><pubDate>Fri, 23 Sep 2011 19:31:00 GMT</pubDate><content:encoded>&lt;p&gt;Yesterday, on a late, muggy afternoon, I ran in a race, and finished 39th of 43 men in the race. I ran as hard as I could, just as I do in every race: my goal is always to run fast and beat as many competitors as I can. I don&apos;t run in a race for &quot;fun&quot; (in the conventional sense of the word): I race to know pain and to stretch my limits. (I save my &quot;fun&quot; running for when I&apos;m not racing.)&lt;/p&gt;
&lt;p&gt;So why was I pretty happy, despite getting my butt totally kicked?&lt;/p&gt;
&lt;p&gt;For amusement, here is an excerpt of the men&apos;s individual results of the &lt;a href=&quot;https://www.cmu.edu/athletics/recreation/intramurals/activities.html&quot;&gt;CMU intramural&lt;/a&gt; XC race yesterday (billed as 2 miles but the course was clearly shorter than that):&lt;/p&gt;
&lt;p&gt;&amp;lt;ol start=&quot;38&quot;&amp;gt;
&amp;lt;li&amp;gt;13:17.3&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;13:27.7 (me)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;14:33.7&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;14:33.71&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;14:33.72&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;14:59.9&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/p&gt;
&lt;p&gt;Well, I was happy for a number of reasons.&lt;/p&gt;
&lt;p&gt;For one thing, this is the first &quot;cross-country&quot; race I have done, so I was just plain excited to do something different.&lt;/p&gt;
&lt;p&gt;Also, my expectations were low. &lt;a href=&quot;https://web.archive.org/web/20140228204900/http://www.ted.com/talks/barry_schwartz_on_the_paradox_of_choice.html&quot;&gt;&lt;em&gt;Low expectations are the secret to happiness.&lt;/em&gt;&lt;/a&gt; I entered the race knowing there was a definite possibility that I would finish last. I knew many of the runners would be undergrads less than half my age, and a self-selected group too, a group that does not include the (sadly numerous) students I see around every day who take the bus down one or two blocks or take the elevator up one floor.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I was one of those students once&lt;/em&gt;. I was not a runner as a child, or in high school, or in college, or even in graduate school. I was sickly as a child, and also I was raised to pay no attention to physical fitness and even to look down on those who were fit (I know, &lt;a href=&quot;https://en.wikipedia.org/wiki/Sour_grapes&quot;&gt;sour grapes&lt;/a&gt;). I started running only after I left graduate school and embarked on several radical life changes (including losing 30 pounds, altering my diet, and taking up competitive ballroom dancing). So in a way, taking advantage of the opportunity (as CMU staff) to take part in the CMU intramural cross-country race was a way to fill in a gap in my collection of novel and exciting lifetime experiences.&lt;/p&gt;
&lt;p&gt;You can bet I&apos;ll be running this race again next year, and with every intention of placing higher.&lt;/p&gt;
&lt;h3&gt;(Update of 2012-09-27)&lt;/h3&gt;
&lt;p&gt;It turned out that &lt;a href=&quot;/blog/2012/09/27/why-i-missed-the-cmu-intramural-xc-race-this-year/&quot;&gt;I ended up not running this race in 2012&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A note on shoes&lt;/h2&gt;
&lt;p&gt;I ran yesterday&apos;s race in my &amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://www.vibramfivefingers.com/products/Five-Fingers-BikilaLS-Mens.htm&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://www.vibramfivefingers.com/products/Five-Fingers-BikilaLS-Mens.htm&quot;&amp;gt;Vibram FiveFingers Bikila LS shoes&amp;lt;/span&amp;gt;, the first time I&apos;d worn this pair of shoes in a race. I will run the Great Race in these shoes also. (More later on this blog about &quot;minimalist shoes&quot; and how they saved my life.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/my-bikila-ls.jpg&quot; alt=&quot;Franklin&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Preview for Sunday&lt;/h2&gt;
&lt;p&gt;On Sunday I will be running the &lt;a href=&quot;https://www.rungreatrace.com/&quot;&gt;Pittsburgh Great Race 10K&lt;/a&gt;. This will be the ninth time I have run the race. Stay tuned for a race report on Sunday!&lt;/p&gt;
&lt;p&gt;Below is a photo of my running it for the first time, in 2000, as the second race I had ever done (and I had never run more than three miles continuously in my life at that time). It was quite an ordeal. The following year I ran the race better prepared, 8:51 faster.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/great-race-2000.jpg&quot; alt=&quot;Franklin nearing the finish of the Great Race in 2000&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;(Update of 2011-09-25)&lt;/h3&gt;
&lt;p&gt;My &lt;a href=&quot;/blog/2011/09/25/blistered-but-blissful-in-the-burgh/&quot;&gt;Great Race 2011 report&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Pizza With Fries</title><link>https://franklinchen.com/blog/2011/09/22/pizza-with-fries/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/22/pizza-with-fries/</guid><pubDate>Thu, 22 Sep 2011 22:54:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;span class=&quot;link-defunct&quot; data-url=&quot;https://rialto-pizza.com/specialtypizza.html&quot; data-verified=&quot;2026-04-15&quot; title=&quot;link defunct 2026-04-15: https://rialto-pizza.com/specialtypizza.html&quot;&amp;gt;Rialto&apos;s ranch steak pizza&amp;lt;/span&amp;gt; is the tastiest pizza ever.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;French fries, yum yum!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/ranch-steak-pizza.jpg&quot; alt=&quot;Rialto&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Only in Pittsburgh?&lt;/p&gt;
</content:encoded></item><item><title>Byron Janis on Overcoming Adversity</title><link>https://franklinchen.com/blog/2011/09/22/byron-janis-on-overcoming-adversity/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/22/byron-janis-on-overcoming-adversity/</guid><pubDate>Thu, 22 Sep 2011 20:57:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Imagine this.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You are an 11-year-old boy who is already an established prodigy at the piano, and you have an accident with your little finger and a glass door. Your finger is shredded, and losing a tendon and nerve in the surgery, and not being able to feel anything in the finger, you are told by the doctor to think of doing something else with your life than continue with piano.&lt;/p&gt;
&lt;p&gt;What do you do?&lt;/p&gt;
&lt;p&gt;If you are &lt;a href=&quot;https://www.byronjanis.com/&quot;&gt;Byron Janis&lt;/a&gt;, you decide to pursue your passion, finding ways to work around the defective finger, using other fingers and using your vision to monitor what the little finger is doing. The world doesn&apos;t even know about your difficulty until you tell them after another sixty years.&lt;/p&gt;
&lt;p&gt;Today, I was privileged to hear Byron Janis speak today and perform a few pieces at the piano at a &lt;a href=&quot;https://www.cmu.edu/news/stories/archives/2011/september/sept12_byronjanis.html&quot;&gt;convocation at Carnegie Mellon University&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/byron-janis-speaking.jpg&quot; alt=&quot;Byron Janis speaking&quot; /&gt;
&lt;img src=&quot;../../assets/images/byron-janis-playing.jpg&quot; alt=&quot;Byron Janis playing piano&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Janis spoke of overcoming not only the problem with his finger, but also the psoriatic arthritis he developed later. At a low point in his life, he ended up beginning to compose, and finding meaning in music through that avenue. &quot;&lt;strong&gt;Passion&lt;/strong&gt; and &lt;strong&gt;perseverance&lt;/strong&gt;!&quot; he repeated again and again.&lt;/p&gt;
&lt;p&gt;I liked how down-to-earth he was in his talk. He grew up in Pittsburgh, after all: he&apos;s one of ours!&lt;/p&gt;
&lt;h2&gt;Why his talk touched me&lt;/h2&gt;
&lt;p&gt;For a long time in my life, I was a musical dilettante, unwilling to put in the truly focused, disciplined effort to play an instrument well (I piddled around with flute and piano). I grew up believing that my hands were &quot;too&quot; small and my fingers &quot;too&quot; short. Also, my left hand&apos;s pinky finger (and less so, my ring finger) got genuinely damaged in elementary school, and my left thumb got damaged in high school. (I do live with the consequences of those accidents every day.)&lt;/p&gt;
&lt;p&gt;Nevertheless, none of that should really have stopped me from doing what I can with what I have, if I care. Only when older and wiser did I realize that in the end, this is all we can do in life, and it is enough!&lt;/p&gt;
&lt;p&gt;This February, I made a decision to seriously practice the &lt;a href=&quot;https://en.wikipedia.org/wiki/Recorder&quot;&gt;recorder&lt;/a&gt;. I joined the &lt;a href=&quot;https://web.archive.org/web/20170223052542/http://www.andrew.cmu.edu:80/user/lukas/pcars/Welcome.html&quot;&gt;local chapter&lt;/a&gt; of the &lt;a href=&quot;https://www.americanrecorder.org/&quot;&gt;American Recorder Society&lt;/a&gt;. For the first time in my life, I have made the effort to practice intelligently and efficiently, and most importantly, &lt;em&gt;regularly&lt;/em&gt; (as in approximately an hour every day of the week). And I believe I have done pretty well in the past eight months. I am continuing to improve my playing, and my enjoyment has deepened.&lt;/p&gt;
&lt;p&gt;I&apos;m not going to lie: every time I pick up my alto or tenor recorder (I also have a soprano and am planning to get a bass), I momentarily wish my hands were bigger, my right pinky longer, and my entire left hand less messed up, but such thoughts disappear quickly, because I am no longer willing to play victim, and instead focus on doing what I need to do to make music.&lt;/p&gt;
&lt;p&gt;I wish Byron Janis well in his current mission to inspire everyone, from disadvantaged youths to injured veterans, to overcome adversity and follow their passion with perseverance!&lt;/p&gt;
</content:encoded></item><item><title>Starting a New Web Site</title><link>https://franklinchen.com/blog/2011/09/22/starting-a-new-web-site/</link><guid isPermaLink="true">https://franklinchen.com/blog/2011/09/22/starting-a-new-web-site/</guid><pubDate>Thu, 22 Sep 2011 01:25:00 GMT</pubDate><content:encoded>&lt;p&gt;I am starting a brand new web site here.&lt;/p&gt;
&lt;p&gt;(Update from 2011-10-21: check out my &lt;a href=&quot;/blog/2011/10/21/one-month-anniversary-of-my-blog/&quot;&gt;one-month retrospective post&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;A big &quot;thank you&quot; to everyone at &lt;a href=&quot;https://podcamppittsburgh.com/&quot;&gt;PodCamp Pittsburgh&lt;/a&gt; who inspired me to finally come up with a plan to start blogging for real!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scarehouse.com/&quot;&gt;&lt;img src=&quot;../../assets/images/scarehouse-zombie.jpg&quot; alt=&quot;ScareHouse zombie at PodCamp Pittsburgh 6 during lunch time&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Me below wearing today the nice T-shirt we got.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/podcamp6-shirt.jpg&quot; alt=&quot;Franklin wearing the PodCamp 6 T-shirt&quot; /&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>