<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MacOS | Zhu Xuelin</title><link>https://linstats.github.io/tags/macos/</link><atom:link href="https://linstats.github.io/tags/macos/index.xml" rel="self" type="application/rss+xml"/><description>MacOS</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 25 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://linstats.github.io/media/icon_hu15689388221013369737.png</url><title>MacOS</title><link>https://linstats.github.io/tags/macos/</link></image><item><title>ArrowTrainer: Badminton Footwork &amp; Reaction Trainer</title><link>https://linstats.github.io/badminton/arrow-trainer/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid>https://linstats.github.io/badminton/arrow-trainer/</guid><description>&lt;p>
is a lightweight app I built for indoor badminton footwork and reaction training. It gives a random movement cue at a chosen interval, so a player can practise seeing the cue, starting quickly, moving in the right direction, and returning to base.&lt;/p>
&lt;h2 id="interface-preview">Interface preview&lt;/h2>
&lt;div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; margin: 24px 0;">
&lt;figure style="flex: 1 1 300px; max-width: 380px; margin: 0;">
&lt;img src="images/arrowtrainer-start.png" alt="ArrowTrainer before a session begins, with a play button and 1.5-second interval field" style="width: 100%; border-radius: 12px;">
&lt;figcaption style="margin-top: 8px; text-align: center;">Set an interval, then tap the circle to start.&lt;/figcaption>
&lt;/figure>
&lt;figure style="flex: 1 1 300px; max-width: 380px; margin: 0;">
&lt;img src="images/arrowtrainer-training.png" alt="ArrowTrainer displaying the left-front movement cue during a training session" style="width: 100%; border-radius: 12px;">
&lt;figcaption style="margin-top: 8px; text-align: center;">A random direction cue appears during training.&lt;/figcaption>
&lt;/figure>
&lt;/div>
&lt;h2 id="how-it-works">How it works&lt;/h2>
&lt;p>Set the interval between direction changes, then tap the central circle to begin. The app randomly displays one of the six common movement directions:&lt;/p>
&lt;ul>
&lt;li>left front and right front&lt;/li>
&lt;li>left and right&lt;/li>
&lt;li>left rear and right rear&lt;/li>
&lt;/ul>
&lt;p>Tap the circle again during a session to pause; tap once more to continue. On macOS, hovering over the circle during training also reveals the pause control.&lt;/p>
&lt;h2 id="designed-for-simple-focused-practice">Designed for simple, focused practice&lt;/h2>
&lt;p>ArrowTrainer is intended for individual, no-shuttle training sessions. It can be used for:&lt;/p>
&lt;ul>
&lt;li>indoor shadow-footwork practice&lt;/li>
&lt;li>pre-session warm-ups&lt;/li>
&lt;li>reaction-speed and directional-awareness drills&lt;/li>
&lt;/ul>
&lt;p>The interface is deliberately minimal: a large circular control, a clear direction cue, and one interval setting. It automatically follows the system light or dark appearance and supports both macOS and iOS.&lt;/p>
&lt;h2 id="project">Project&lt;/h2>
&lt;p>The first version is built with SwiftUI and &lt;code>Timer&lt;/code>. Its source code and setup instructions are available on GitHub:&lt;/p>
&lt;p>
&lt;/p>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>Potential future additions include a start countdown, configurable session duration, sound or voice cues, training statistics, and more difficulty levels.&lt;/p></description></item></channel></rss>