<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Lin's Blog</title><link>https://coder.tw/en/</link><description>Recent content on Lin's Blog</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 20 Oct 2026 07:59:50 +0800</lastBuildDate><atom:link href="https://coder.tw/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploy an iOS App from Xcode Even When Your iPhone Is Away from Home</title><link>https://coder.tw/en/posts/ios-remote-deploy-over-wireguard/</link><pubDate>Tue, 20 Oct 2026 07:59:50 +0800</pubDate><guid>https://coder.tw/en/posts/ios-remote-deploy-over-wireguard/</guid><description>&lt;p&gt;In the age of AI, many of us control our home computers remotely and let AI write code while we are out. Web development is easy: connect the computer to Tailscale or WireGuard, and you can open the page and debug from anywhere. Apps are different. App Store review takes days, and even TestFlight takes about half an hour before you can install a build on your phone. No matter how fast AI writes code, you get stuck here.&lt;/p&gt;</description></item><item><title>Same AI Model, Suddenly Dumber? Provider Differences on OpenRouter</title><link>https://coder.tw/en/posts/openrouter-ai-model-provider-differences/</link><pubDate>Mon, 19 Oct 2026 22:20:15 +0800</pubDate><guid>https://coder.tw/en/posts/openrouter-ai-model-provider-differences/</guid><description>&lt;p&gt;I recently used DeepSeek V4.1 Flash on OpenRouter and ran into a frustrating problem: the same model was sometimes smart and sometimes clearly dumb. When it was dumb, it even got the tool call format wrong, or kept repeating the same step without making progress. The model name never changed, yet it felt like a different model. This made me notice something that is easy to overlook: &lt;strong&gt;besides choosing a model, which provider actually runs the model also affects the experience.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>OpenSearch Memory Alert Fires, Then Recovers: Is It Really Out of Memory?</title><link>https://coder.tw/en/posts/opensearch-memory-alert-old-generation/</link><pubDate>Mon, 19 Oct 2026 22:19:33 +0800</pubDate><guid>https://coder.tw/en/posts/opensearch-memory-alert-old-generation/</guid><description>&lt;p&gt;I manage close to a hundred OpenSearch clusters. A while ago, the heap alert started firing, but only on a few clusters, not all of them. The alert fires when heap usage goes above 75%. On those few clusters, it would recover by itself a few minutes later, and then fire again.&lt;/p&gt;
&lt;p&gt;At first I was worried that a node was in trouble, so I checked the cluster for problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster status&lt;/strong&gt;: Green, no unassigned shards&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Writes are healthy&lt;/strong&gt;: Fluentd&amp;rsquo;s buffer was not piling up and it was not retrying constantly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No OOM kills&lt;/strong&gt;: the pod restart count did not increase, and &lt;code&gt;Last State&lt;/code&gt; was not OOMKilled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All three were fine, so I opened the heap metric. Heap usage was a sawtooth: it kept climbing, dropped, then climbed again. The alert fired right when it reached the peak, and recovered a few minutes later when it dropped.&lt;/p&gt;
&lt;p&gt;My first thought was to raise the 75% threshold. But since not every cluster fired, it did not look like a threshold problem alone. What confused me more: the other clusters had the same sawtooth, but they dropped at around 60%, while this one climbed to 80% before dropping. Was its configuration different? Was it busier and short on memory?&lt;/p&gt;
&lt;p&gt;To answer these questions, I first had to understand how the JVM reclaims memory, especially Young GC.&lt;/p&gt;</description></item><item><title>About</title><link>https://coder.tw/en/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://coder.tw/en/about/</guid><description>&lt;p&gt;Hi, I&amp;rsquo;m &lt;strong&gt;Karl Lin&lt;/strong&gt; (林熙哲), also known online as linroex. I&amp;rsquo;m a software engineer who likes using technology to solve real-world problems while always keeping business viability in mind. I founded &lt;strong&gt;MoMoKa Studio&lt;/strong&gt;, built MICEPLUG, an event management platform that has supported events with tens of thousands of attendees, and worked as a data engineer at 17 Media handling hundreds of millions of records a day. Along the way I have led engineering teams of more than ten people and delivered nearly ten client projects in two years, for clients including CTS News and Seekertech.&lt;/p&gt;</description></item></channel></rss>