<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Yin-Chi Chan</title><link>https://yinchi.dev/posts/</link><description>Recent content in Posts on Yin-Chi Chan</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://yinchi.dev/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Top Spin (revisited)</title><link>https://yinchi.dev/posts/top-spin/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://yinchi.dev/posts/top-spin/</guid><description>&lt;p&gt;&lt;img src="top_spin.png" alt="top spin"&gt;&lt;/p&gt;
&lt;p&gt;In a (much) earlier &lt;a href="https://yinchi.dev/posts/flip-puzzle/"&gt;post&lt;/a&gt; of mine, I discussed a puzzle called &lt;em&gt;Top
Spin&lt;/em&gt; (once made by Binary Arts), in which 20 beads were placed on an oval track with a turntable
that could flip the four beads that occupy it. I showed that it was possible to reverse the order
of the beads, from &lt;code&gt;[1, 2, 3, ..., 19, 20]&lt;/code&gt; to &lt;code&gt;[20, 19, ..., 2, 1]&lt;/code&gt;, even if the beads were
placed on a straight track instead of an oval one.&lt;/p&gt;</description></item><item><title>More Thoughts on CodeCrafters</title><link>https://yinchi.dev/posts/more-thoughts-on-codecrafters/</link><pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate><guid>https://yinchi.dev/posts/more-thoughts-on-codecrafters/</guid><description>&lt;p&gt;In my &lt;a href="https://yinchi.dev/posts/thoughts-on-codecrafters/"&gt;previous post&lt;/a&gt;, I shared some of my thoughts on
the CodeCrafters website and the coding challenges it offers. In particular, I had completed the
&lt;a href="https://app.codecrafters.io/courses/http-server/overview" target="_blank" rel="noopener"&gt;HTTP server&lt;/a&gt; challenge in Rust and
&lt;a href="https://app.codecrafters.io/courses/claude-code/overview" target="_blank" rel="noopener"&gt;Claude Code&lt;/a&gt; challenge beta (notably,
the number of available stages, and the feature set of the &amp;ldquo;completed&amp;rdquo; code, are quite limited)
in Python and was working on the
&lt;a href="https://app.codecrafters.io/courses/interpreter/overview" target="_blank" rel="noopener"&gt;Interpreter&lt;/a&gt; challenge in Rust. I have
since completed the Interpreter challenge, and decided to share some more thoughts on the
experience.&lt;/p&gt;</description></item><item><title>Thoughts on CodeCrafters</title><link>https://yinchi.dev/posts/thoughts-on-codecrafters/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><guid>https://yinchi.dev/posts/thoughts-on-codecrafters/</guid><description>&lt;p&gt;&lt;a href="https://app.codecrafters.io/catalog" target="_blank" rel="noopener"&gt;CodeCrafters&lt;/a&gt; is a site where one can complete a number of
programming challenges. Challenges include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build your own HTTP server&lt;/li&gt;
&lt;li&gt;Build your own Interpreter&lt;/li&gt;
&lt;li&gt;Build your own Shell&lt;/li&gt;
&lt;li&gt;Build your own Claude Code (still in beta)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each challenge is broken into a number of steps, with an extensive test suite triggered by the
command &lt;code&gt;codecrafters submit&lt;/code&gt; which:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pushes your submission to a Git repo on the CodeCrafters server&lt;/li&gt;
&lt;li&gt;Runs the tests for the given step&lt;/li&gt;
&lt;li&gt;Reports results back to the user in the terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Supposedly, this is made possible by Git&amp;rsquo;s &lt;code&gt;post-receive&lt;/code&gt; hook, which runs the test suite and
reports the results back to the user via Git&amp;rsquo;s side-channel communication capabilities (as well
as updating the user status in Codecrafter&amp;rsquo;s database if the step was cleared sucessfully).&lt;/p&gt;</description></item><item><title>A flip puzzle</title><link>https://yinchi.dev/posts/flip-puzzle/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><guid>https://yinchi.dev/posts/flip-puzzle/</guid><description>&lt;p&gt;&lt;em&gt;Top Spin&lt;/em&gt; was a puzzle in which 20 beads were placed on an oval track with a turntable, such
that any four consecutive beads could be flipped. Naturally, I wondered whether it was possible
to reverse the order of the beads, from &lt;code&gt;[0, 1, ..., 19]&lt;/code&gt; to &lt;code&gt;[19, 18, ..., 0]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As it turns out, this is possible even if the beads are placed on a straight track instead of an
oval one.&lt;/p&gt;</description></item><item><title>Automating my publications page</title><link>https://yinchi.dev/posts/automating-my-publications-page/</link><pubDate>Sat, 19 Apr 2025 00:00:00 +0000</pubDate><guid>https://yinchi.dev/posts/automating-my-publications-page/</guid><description>&lt;div class="alert warning"&gt;
&lt;span&gt;&lt;i data-feather="alert-triangle"&gt;&lt;/i&gt;&lt;/span&gt;
&lt;span&gt;&lt;strong&gt;&lt;p&gt;This post refers to a previous version of my personal website, which was built using &lt;a href="https://www.mkdocs.org/" target="_blank" rel="noopener"&gt;MkDocs&lt;/a&gt;. The current version of my website is built using &lt;a href="https://gohugo.io/" target="_blank" rel="noopener"&gt;Hugo&lt;/a&gt;, and the content of this post may not be relevant to the current version.&lt;/p&gt;
&lt;p&gt;A referenced Python package below, &lt;a href="https://pypi.org/project/mkdocs-bibtex/" target="_blank" rel="noopener"&gt;mkdocs-bibtex&lt;/a&gt;, is no longer maintained. In my new Hugo-based website, this package is not necessary — the Taho theme for Hugo providing a built-in solution for displaying publications from a YAML file, which is generated using &lt;a href="https://pybtex.org/" target="_blank" rel="noopener"&gt;pybtex&lt;/a&gt; directly (mkdocs-bibtex used pybtex as a dependency).&lt;/p&gt;</description></item></channel></rss>