{"lang":"en","count":12,"issues":[{"title":"276. Trees and Buildings","link":"https://weekly.tw93.fun/en/posts/276/","pubDate":"Mon, 03 Aug 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27646.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27646.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27646.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4899\" data-pswp-height=\"3674\" style=\"aspect-ratio: 1.3334;\" width=\"800\">\n<p><small>The cover was shot on an overcast day. I’ve always felt that glossy glass buildings look a bit harsh if you drop them bare into a city, but if they’re surrounded by lots of trees, they look much more comfortable.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Kaset: a solid Mac YouTube Music client</strong><br>\n<a href=\"https://github.com/sozercan/kaset\">https://github.com/sozercan/kaset</a><br>\nI’ve tried a lot of Mac YouTube Music clients, and Pake had one too, but this one feels carefully made and the experience is really good. Worth a try.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/jHmQi002.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/jHmQi002.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/jHmQi002.png\" loading=\"lazy\" data-pswp-width=\"3052\" data-pswp-height=\"2014\" style=\"aspect-ratio: 1.5154;\" width=\"800\"></p>\n<p><strong>You don’t need to mess with format conversion anymore</strong><br>\nFollowing the video above: I was going to build a small format converter for myself. I needed to turn MOV videos from my iPhone into MP4. I used to download some big converter app for that, then it hit me that I could just tell my AI, and it finished the conversion very quickly. Next time you need any kind of format conversion, it’s worth trying this way.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/SCR-20260802-trxd10.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/SCR-20260802-trxd10.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/SCR-20260802-trxd10.png\" loading=\"lazy\" data-pswp-width=\"3384\" data-pswp-height=\"1878\" style=\"aspect-ratio: 1.8019;\" width=\"800\"></p>\n<p><strong>If you use tmux, try this new thing called herdr</strong><br>\n<a href=\"https://herdr.dev/\">https://herdr.dev/</a><br>\nLooks pretty good. If you’re a hardcore tmux fan, give it a try: more AI-friendly, cleaner, and from what I’ve seen, well made.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/1gevLE01.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/1gevLE01.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/1gevLE01.png\" loading=\"lazy\" data-pswp-width=\"3972\" data-pswp-height=\"2296\" style=\"aspect-ratio: 1.7300;\" width=\"800\"></p>\n<p><strong>img2threejs: turn images into 3D</strong><br>\n<a href=\"https://github.com/img2threejs/img2threejs\">https://github.com/img2threejs/img2threejs</a><br>\nThis image-to-threejs tool is nicely done and cuts the cost of writing threejs a lot.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/84PezB26.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/84PezB26.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/84PezB26.png\" loading=\"lazy\" data-pswp-width=\"5344\" data-pswp-height=\"3044\" style=\"aspect-ratio: 1.7556;\" width=\"800\"></p>\n<p><strong>This 3D organ viewer is well done</strong><br>\n<a href=\"https://anatomy-livid.vercel.app/\">https://anatomy-livid.vercel.app/</a><br>\nWorth a look if you’re in biology or medicine, or just into biology. Feels professional and educational.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/uVLcvk48.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/uVLcvk48.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/uVLcvk48.png\" loading=\"lazy\" data-pswp-width=\"5344\" data-pswp-height=\"3044\" style=\"aspect-ratio: 1.7556;\" width=\"800\"></p>\n<p><strong>UU Remote: this remote tool is seriously good</strong><br>\n<a href=\"https://uuyc.163.com/\">https://uuyc.163.com/</a><br>\nUU Remote. I’d call it the best free iPhone app for side support in the AICoding era. Remote speed, clarity, and latency are all handled really well. Paired with Claude / Codex on mobile, it’s genuinely useful.<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" controls muted><source src=\"https://cdn.tw93.fun/uPic/uuremote48.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Four aha moments Mole Mac gave me</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nCongrats to Mole CLI on hitting 60K stars. Since last National Day, when I wrote a few hundred lines by a pool in Sanya and open-sourced it, it has shipped 55 releases total, and 112 real developers from around the world have contributed a lot of code. Later I built Mole Mac, the Pro version with a native GUI and more capabilities. Here are 4 aha moments from my own use.</p>\n<p>First: one afternoon I got a notification that my AirPods were low and needed charging. That feature genuinely surprised me. The AI added it proactively while working on battery health. Mole reminds you when Bluetooth battery devices linked to your Mac are low and need charging. I never hit that scenario until I did, and it felt thoughtful without being noisy.</p>\n<p>Second: as someone who uses it every day, I still managed to free 86G. An earlier version added cleanup for clearly useless build output inside projects. My Rust projects had piled up a lot of target directories, and clearing that much at once was very satisfying.</p>\n<p>Third: the keep-awake feature. After users asked for it, 3 different keep-awake behaviors were added. I still prefer the mode that keeps the screen on. For example, if you head out on a weekend, you can control your AICoding solidly from the phone client and keep it working. Very stable, and it’s saved me a lot of async time.</p>\n<p>Fourth: Mole’s battery display can show your iPhone battery too. That used to be hard to implement, but it was done cleverly. Now you can clearly see battery levels for the devices that matter to you in the status area, quietly, but with peace of mind.</p>\n<p>Even better: none of these 4 features started as my idea. Early Mole users asked for them, I added them, and they’ve helped me a lot. Thank you. If Mole Mac has surprised you somewhere, or you have a feature you really want Mole to add, tell me.</p>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/XyR6MX25.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/XyR6MX25.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/XyR6MX25.png\" loading=\"lazy\" data-pswp-width=\"3598\" data-pswp-height=\"2019\" style=\"aspect-ratio: 1.7821;\" width=\"800\">\n<p><strong>A few notes on investing</strong><br>\nMarket swings educate everyone who thinks they’re a stock god, and reward everyone who can stay calm. Keeping cash matters, and picking a sound value-investing direction matters more. Buy low when the market is gloomy, and when enthusiasm is high and everyone is piling in, calmly sell at good exits and recycle cash as bullets. Trade only a few times a year, only buy stocks you can sleep well holding, skip China concept stocks, and spend the rest of your time on things you like. That may be my long-iterated investing rule.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"275. Blue Dusk","link":"https://weekly.tw93.fun/en/posts/275/","pubDate":"Mon, 27 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27534.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27534.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27534.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5413\" data-pswp-height=\"4060\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover was shot on Friday evening while I was out for dinner. I looked up and saw this blue dusk sky. I really like this blue, the kind that feels comfortable to look at.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Bento: stuff an online slide deck into a single file</strong><br>\n<a href=\"https://github.com/nyblnet/bento\">https://github.com/nyblnet/bento</a><br>\nThe idea and the execution here are both nice. Animations, video, web design, all of it goes into one HTML file, and that file is at the same time your document, your editor, and your player. It’s also a good fit for letting AI keep editing and iterating on it. Worth a try if you’re curious.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/zHKfAj50.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/zHKfAj50.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/zHKfAj50.png\" loading=\"lazy\" data-pswp-width=\"3974\" data-pswp-height=\"2020\" style=\"aspect-ratio: 1.9673;\" width=\"800\"></p>\n<p><strong>peek-cli: let your coding agent see web pages properly</strong><br>\n<a href=\"https://github.com/puffinsoft/peek-cli\">https://github.com/puffinsoft/peek-cli</a><br>\npeek-cli lets an agent grab a screenshot of any tab you already have open in your browser, which suits those frontend design loops where you keep iterating until the result looks right.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/qa3wJh33.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/qa3wJh33.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/qa3wJh33.png\" loading=\"lazy\" data-pswp-width=\"3054\" data-pswp-height=\"1778\" style=\"aspect-ratio: 1.7177;\" width=\"800\"></p>\n<p><strong>clawk: give your coding agent a disposable Linux VM</strong><br>\n<a href=\"https://github.com/clawkwork/clawk\">https://github.com/clawkwork/clawk</a><br>\nIf you’re worried that what your AI coding agent runs could damage your machine, or you really love <code>--dangerously-skip-permissions</code> but don’t want to leak your keys, give this a try. It automatically spins up a disposable Linux VM so nothing goes wrong while things are running.<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo47.gif\" width=\"800\"></p>\n<p><strong>It’s been a while since I shared a Kaku update</strong><br>\n<a href=\"https://kaku.fun\">https://kaku.fun</a><br>\nKaku is the open-source Mac terminal I built over Chinese New Year by heavily customizing WezTerm: AI friendly, good looking by default, and fast. It’s up to 23 releases now. It started out very simple, and it still looks very simple, but it keeps getting nicer to use. I also added an official site and friendly docs.</p>\n<p>I use it as my main workstation. Compared to GUIs I still prefer TUIs because they’re simple and direct, so roughly 90% of the code in my open-source projects and in Mole is written through Kaku. I’ve started deploying some of my own things on cloud servers lately, which finally pushed me to round out the SSH experience, and over the past month I used Fable 5 to optimize a lot of the low-level Rust rendering, so startup is much faster now. I like one tab per project, with a shortcut to split that tab into two panes so I can code on one side and test on the other. Switching and closing tabs works almost exactly like a browser, since I ported a lot of the browser habits you already have over to the terminal.</p>\n<p>On the AI side, Kaku stays out of your way. It usually shows up when a command fails, or when you’ve forgotten a command and just type #plain English, and it tells you the real one. When you don’t feel like opening codex, CMD+L brings up an AI chat panel so you can talk to it right there, which makes the terminal a naturally AI-friendly environment. The last two releases mostly fixed usability issues: AI usage, quick tab closing, Starship compatibility, working over SSH, plus pane navigation, tab renaming, and other details. If you want something simple and fast and you like things that look good, give Kaku a try. Suggestions from actual use are very welcome and help make it better.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/SCR-20260726-sqti21.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/SCR-20260726-sqti21.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/SCR-20260726-sqti21.png\" loading=\"lazy\" data-pswp-width=\"4314\" data-pswp-height=\"2620\" style=\"aspect-ratio: 1.6466;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Andrej Karpathy’s case for dumping one long ramble on the AI</strong><br>\n<a href=\"https://x.com/karpathy/status/2079610838143623371\">https://x.com/karpathy/status/2079610838143623371</a><br>\nHe describes a way of working with an LLM that he finds genuinely useful: lean back in your chair, switch to voice input, and ramble for ten minutes or so, messy, jumping wherever your head goes. He sometimes opens with a note like “I’m on speech recognition, please excuse the typos.” For whatever reason LLMs are very good at pulling the content back out of a long, messy ramble, and the version they hand back to you is often much clearer than the one you just said out loud, so the rest of the conversation goes smoother and there’s less to correct.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mtf8tr09.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mtf8tr09.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mtf8tr09.png\" loading=\"lazy\" data-pswp-width=\"675\" data-pswp-height=\"499\" style=\"aspect-ratio: 1.3527;\" width=\"800\"></p>\n<p><strong>Dan Shipper’s take on Claude Opus 5, which I mostly agree with</strong><br>\n<a href=\"https://x.com/danshipper/status/2080700057892815114\">https://x.com/danshipper/status/2080700057892815114</a><br>\nThey spent a week testing Opus 5 across coding, writing, knowledge work, and their own agents, and their first reaction was that it’s a hard model to like: it works against your instructions, stops before the job is done, and doesn’t fit the skills and plugins they already had. Then they deleted the old skills and rebuilt from scratch, and it got a lot better, so his advice is to not force it into an existing workflow, and to run it at medium or low thinking rather than maxed out. He still sends the hardest work to Fable and everything else to GPT-5.6, and he calls Opus 5 a “poor man’s Fable,” a model with the temperament of a genius but not the ceiling, stuck in an awkward middle spot.</p>\n<p><strong>5 Trends That Defined AI Engineering at World’s Fair 2026</strong><br>\n<a href=\"https://www.latent.space/p/aiewf26trends\">https://www.latent.space/p/aiewf26trends</a><br>\nThis piece ties harnesses, loops, skills, enterprise deployment, and coding agents into one coherent roadmap. Worth a read.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/hnWSbK53.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/hnWSbK53.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/hnWSbK53.png\" loading=\"lazy\" data-pswp-width=\"1456\" data-pswp-height=\"819\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>A random window somewhere in the world, opened for you</strong><br>\n<a href=\"https://www.window-swap.com/Window\">https://www.window-swap.com/Window</a><br>\nThis site is fun. People around the world share the view outside their window, and you can switch randomly and just look around. I had it up as my wallpaper all afternoon, and it looked great.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/kHHhdE31.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/kHHhdE31.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/kHHhdE31.png\" loading=\"lazy\" data-pswp-width=\"2874\" data-pswp-height=\"1710\" style=\"aspect-ratio: 1.6807;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"274. Boundless Sky","link":"https://weekly.tw93.fun/en/posts/274/","pubDate":"Mon, 20 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27453.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27453.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover was shot one evening in Shenzhen, just after the rain, when the sky was especially clear. The building is called Haikuo Tiankong Yaju, and you could even see Baidu in the distance.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>wong2 made a handy tracker for Codex usage limit resets</strong><br>\n<a href=\"https://codex-resets.com/\">https://codex-resets.com/</a><br>\nPretty funny. Codex usage limits seem to reset whenever @thsottiaux announces one on X, almost like he has a button in his hand. There is no fixed schedule and no changelog, so this tool watches his posts and lets you know when a reset happens. Haha. Lately I haven’t been able to use up my Codex allowance at all.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/9zFep508.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/9zFep508.png\" loading=\"lazy\" data-pswp-width=\"3164\" data-pswp-height=\"2228\" style=\"aspect-ratio: 1.4201;\" width=\"800\"></p>\n<p><strong>Trees: a beautiful file tree rendering library</strong><br>\n<a href=\"https://trees.software/\">https://trees.software/</a><br>\nThe file tree rendering looks really good. I like simple, beautiful things like this. If you’re building a file tree for an editor sidebar, this is worth studying.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/lEQhIy33.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/lEQhIy33.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>Bark: an open-source tool for pushing messages to your own iPhone</strong><br>\n<a href=\"https://github.com/Finb/Bark\">https://github.com/Finb/Bark</a><br>\nAn open-source and free notification app built on APNs, so it doesn’t add extra battery drain. It also supports advanced iOS notification features including grouping, custom icons and sounds, time-sensitive notifications, critical alerts, and more.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QMnaYL10.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QMnaYL10.png\" loading=\"lazy\" data-pswp-width=\"2430\" data-pswp-height=\"1934\" style=\"aspect-ratio: 1.2565;\" width=\"800\"></p>\n<p><strong>WhatCable: find out what your USB-C cable can actually do</strong><br>\n<a href=\"https://www.whatcable.uk/\">https://www.whatcable.uk/</a><br>\nThis tool clearly tells you what a USB-C cable can do, including cable speed, charging limits, and connected devices. You can name each cable and have it track real-world performance over time, making it easier to see why a cable charges slowly or can’t drive a display. Nice idea, though fairly niche.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/cQ7ITN19.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/cQ7ITN19.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.2634;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Phistory: see what changed in the system prompts of popular AI coding tools</strong><br>\n<a href=\"https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215\">https://phistory.cc/?agent=claude-code&#x26;from=2.1.141&#x26;to=2.1.215</a><br>\nGreat for anyone curious about how AI coding tools evolve. The site uses diffs to make each change easy to see.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/pgmjjD23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/pgmjjD23.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>A site collecting beautifully designed Mac apps</strong><br>\n<a href=\"https://macapp.supply/\">https://macapp.supply/</a><br>\nThe site itself is nicely designed, and the Mac apps it features all feel polished. There’s a lot here for me to learn from.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/5SlEcC34.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/5SlEcC34.png\" loading=\"lazy\" data-pswp-width=\"3680\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.5385;\" width=\"800\"></p>\n<p><strong>How Anthropic uses Claude Code for large-scale code migrations</strong><br>\n<a href=\"https://claude.com/blog/ai-code-migration\">https://claude.com/blog/ai-code-migration</a><br>\nAn official Claude blog post well worth reading. It covers Bun’s million-line migration from Zig to Rust and offers some useful lessons for large companies moving old, sprawling repositories.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/QZiACS37.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/QZiACS37.png\" loading=\"lazy\" data-pswp-width=\"1109\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.5415;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"273. A Pile of Chairs","link":"https://weekly.tw93.fun/en/posts/273/","pubDate":"Mon, 13 Jul 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27342.JPG\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27342.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5496\" data-pswp-height=\"3911\" style=\"aspect-ratio: 1.4053;\" width=\"800\">\n<p><small>The cover was shot outside a shop in Tianmuli, where a pile of chairs sat with a line written next to them: use objects as the medium, embrace tradition. Compared with the AI world I still like the real world more, and I long for real feelings more too.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>A subway background sound I’ve been loving lately</strong><br>\n<a href=\"https://www.yamanote.fun/\">https://www.yamanote.fun/</a><br>\nThe author blends the Yamanote Line’s station melodies, announcements, door chimes and train sounds into one complete listening experience of Tokyo’s most beloved loop line. It’s really interesting, and I love having it as background music. It feels exactly like when I was riding it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mUuuQu23.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mUuuQu23.png\" loading=\"lazy\" data-pswp-width=\"3106\" data-pswp-height=\"1948\" style=\"aspect-ratio: 1.5945;\" width=\"800\"></p>\n<p><strong>Kill AI slop</strong><br>\n<a href=\"https://killaislop.com/\">https://killaislop.com/</a><br>\nHaha, I also really dislike those ugly things that AI churns out. I found this site made by yetone, which is quite fun. It lays out a lot of the ugly cases for you, and it also gives you a skill to help you clean things up. I used it to check over everything I’ve made, and thankfully nothing got flagged.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/s9fJmu55.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/s9fJmu55.png\" loading=\"lazy\" data-pswp-width=\"3022\" data-pswp-height=\"2200\" style=\"aspect-ratio: 1.3736;\" width=\"800\"></p>\n<p><strong>AppPorts: move your big Mac apps to external storage</strong><br>\n<a href=\"https://appports.shimoko.com/zh\">https://appports.shimoko.com/zh</a><br>\nThis tool suits friends who run their Mac with an external drive, so you might want to give it a try.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/sdXGLY21.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/sdXGLY21.png\" loading=\"lazy\" data-pswp-width=\"3130\" data-pswp-height=\"2250\" style=\"aspect-ratio: 1.3911;\" width=\"800\"></p>\n<p><strong>One command to find out which models your hardware can run</strong><br>\n<a href=\"https://github.com/AlexsJones/llmfit\">https://github.com/AlexsJones/llmfit</a><br>\nA terminal tool that matches LLM models to the right specs based on your system’s RAM, CPU and GPU. It detects your hardware automatically and scores each model across four dimensions, quality, speed, fit and context, telling you which ones will run smoothly on your machine.<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo19.gif\" width=\"800\"></p>\n<p><strong>Some nice loading effects</strong><br>\n<a href=\"https://dotmatrix.zzzzshawn.cloud/\">https://dotmatrix.zzzzshawn.cloud/</a><br>\nAlthough in the AI era this sort of thing has an old-school feel to it, it’s still worth looking at more of these aesthetic-leaning things, which teach you a bit more about design.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/swLiUX17.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/swLiUX17.png\" loading=\"lazy\" data-pswp-width=\"3346\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3988;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Spent a day rebuilding Mole’s website</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nI’m not pitching the product, I’d rather talk with you all about how I think about this site’s style: quiet, undisturbing, safe, something that feels trustworthy. I then spent a day rebuilding it, and I have to say I prefer Fable 5’s kind of clever, resourceful AI. Feel free to take a look at this video. Haha, the background music is my favorite Ryuichi Sakamoto piano piece, “Merry Christmas, Mr. Lawrence”.<br>\n<video width=\"800px\" preload=\"metadata\" loop controls><source src=\"https://cdn.tw93.fun/uPic/new-mole12.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Git commands you can have your AI run before reading a repo</strong><br>\n<a href=\"https://piechowski.io/post/git-commands-before-reading-code/\">https://piechowski.io/post/git-commands-before-reading-code/</a><br>\nThe original title is The Git Commands I Run Before Reading Any Code. It lists a few commands you can try running, and you’ll come across plenty of interesting findings. That said, I’d rather recommend letting your AI learn them and then read your repo, which is more fun.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/mLwoZF15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/mLwoZF15.png\" loading=\"lazy\" data-pswp-width=\"1600\" data-pswp-height=\"811\" style=\"aspect-ratio: 1.9729;\" width=\"800\"></p>\n<p><strong>Getting started with loops</strong><br>\n<a href=\"https://x.com/ClaudeDevs/status/2074208949205881033\">https://x.com/ClaudeDevs/status/2074208949205881033</a><br>\nA piece on Loop from the official ClaudeDevs X account. It’s well written and worth a read, and it’ll help you better understand this concept in AI.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/c0CBq939.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/c0CBq939.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"819\" style=\"aspect-ratio: 2.5006;\" width=\"800\"></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"272. Endless Lotus","link":"https://weekly.tw93.fun/en/posts/272/","pubDate":"Mon, 06 Jul 2026 00:00:00 GMT","description":"<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/hehua54.mp4\" type=\"video/mp4\" poster=\"https://cdn.tw93.fun/uPic/27209.png\"></video></p>\n<p><small>The cover was shot over the weekend when I went to Xixi Wetland to fly the drone over the lotus flowers. It looked wonderful and was really stunning. Humans look so small beneath nature, and the drone has helped me see so many great things.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Bought a Brother T735DW printer just for this</strong><br>\nTo test Kami’s print layout, I specially bought a Brother T735DW printer. The build quality is really nice and I quite like it, so if you need to buy a printer you might want to look at this brand. The Kami-formatted output prints beautifully too. Of course, I pushed out an update to make Kami support printers better, so you’re all welcome to try it. PS: this was actually the first time I’d ever heard of Brother, but a lot of the old-timers tell me it’s a well-known name.<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/uPic/kami07.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>This wood-chopping simulator site is kind of fun</strong><br>\n<a href=\"https://screen.toys/firewood/\">https://screen.toys/firewood/</a><br>\nThere’s a wood-chopping visualization site that’s pretty fun. It gives you a really realistic sense of chopping firewood, so when you’re tired from AI coding you can give it a go.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/8dIM0035.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/8dIM0035.png\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"3322\" data-pswp-height=\"1988\" style=\"aspect-ratio: 1.6710;\" width=\"800\"></p>\n<p><strong>Glaze: a nice new take on building and shipping Mac apps</strong><br>\n<a href=\"https://www.glaze.app/\">https://www.glaze.app/</a><br>\nIt basically lets you vibe out your own desktop app by talking, to solve your own problems. It runs on your Mac, works offline, and you can distribute it too. It has a bit of a next-generation Mac App Store feel, worth a play.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/YgphuJ15.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/YgphuJ15.png\" loading=\"lazy\" data-pswp-width=\"3424\" data-pswp-height=\"2038\" style=\"aspect-ratio: 1.6801;\" width=\"800\"></p>\n<p><strong>sensory-ui: what if your component library had sound effects?</strong><br>\n<a href=\"https://www.sensory-ui.com/#showcase\">https://www.sensory-ui.com/#showcase</a><br>\nWhat would it feel like if your component library had sound effects? This is really fun and worth playing with, giving your shadcn/ui some audio.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/qs75CX03.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/qs75CX03.png\" loading=\"lazy\" data-pswp-width=\"3314\" data-pswp-height=\"2290\" style=\"aspect-ratio: 1.4472;\" width=\"800\"></p>\n<p><strong>Playwrite Tanzania: a lot like Apple’s handwriting font</strong><br>\n<a href=\"https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn\">https://fonts.google.com/specimen/Playwrite+TZ?preview.script=Latn</a><br>\nThis font really looks a lot like Apple’s boot-up “hello” handwriting style. It’s beautiful and pretty much spot on, so give it a try if you need it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/6s4ew716.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/6s4ew716.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>This book-showcase effect is so great</strong><br>\n<a href=\"https://press.stripe.com/\">https://press.stripe.com/</a><br>\nTry opening it in a desktop web browser. The animations feel really smooth, love it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/GYgAl915.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/GYgAl915.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>Moderate intervention: tuning AI’s presence by user intent</strong><br>\n<a href=\"https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1\">https://mp.weixin.qq.com/s/063MFQz-2Jkktdhpwf-jIw?scene=1</a><br>\nPlenty of AI products have a problem with getting the degree of intervention wrong: pop-ups keep interrupting what you’re doing, and when idle they waste compute. How do you get AI to show up when needed and disappear when idle?<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/4YjJGQ44.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/4YjJGQ44.png\" loading=\"lazy\" data-pswp-width=\"1080\" data-pswp-height=\"789\" style=\"aspect-ratio: 1.3688;\" width=\"800\"></p>\n<p><strong>The visualization for this college-entrance-exam application simulator</strong><br>\n<a href=\"https://agentsfeed.org/app-demo/gaokao/index.html\">https://agentsfeed.org/app-demo/gaokao/index.html</a><br>\nThis works really well, thanks to the person who made it. If a friend of yours needs to fill out their college applications, you can help them take a look together. Picking the right city and the right university really matters.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/jR3BJV07.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/jR3BJV07.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2330\" style=\"aspect-ratio: 1.4738;\" width=\"800\"></p>\n<p><strong>Maybe you should go learn something</strong><br>\n<a href=\"https://www.marginalia.nu/log/a_135_learn/\">https://www.marginalia.nu/log/a_135_learn/</a><br>\nThis article is actually useful. For most of us engineers, it’s worth using our spare time to learn something from other fields, which can be really interesting.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"271. Spiritual Home","link":"https://weekly.tw93.fun/en/posts/271/","pubDate":"Mon, 29 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/27158.jpg\" data-lightense-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" data-pswp-src=\"https://cdn.tw93.fun/uPic/27158.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"4826\" data-pswp-height=\"3619\" style=\"aspect-ratio: 1.3335;\" width=\"800\">\n<p><small>The cover photo was taken over the weekend when I went to my spiritual home, Wang Xiaobo’s bookstore, and sat there for a whole morning, reading “A Maverick Pig” that I’ve read several times, and grabbed a cup of Silver Age coffee on the side, which was really nice. Big thanks to the friend who pointed out that the past few issues of the weekly were a bit shallow, I’d been too absorbed in AI Coding. I take the criticism, and from now on I’ll keep the content more interesting, and strive to make it a spiritual home for everyone.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>claude-tap: a local proxy and trace viewer for AI coding agents</strong><br>\n<a href=\"https://github.com/liaohch3/claude-tap\">https://github.com/liaohch3/claude-tap</a><br>\nLaunch your CLI through it, or have it listen to the local app transcript, and you can see the real API traffic and agent context: system prompt, conversation history, tool schemas, tool calls, streaming responses, token usage, and request diffs. Worth a try for anyone who wants to dig into how it works.<br>\n<img src=\"https://cdn.tw93.fun/uPic/demo_zh37.gif\" width=\"800\"></p>\n<p><strong>VidBee: a nice tool for downloading videos from all kinds of sites</strong><br>\n<a href=\"https://github.com/nexmoe/VidBee\">https://github.com/nexmoe/VidBee</a><br>\nIt uses yt-dlp as its underlying engine, so it can download videos from almost any site in the world, including YouTube, TikTok, Instagram, Twitter, and more. Give it a try if you need it, but mind the copyright.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/S3yAup40.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/S3yAup40.png\" loading=\"lazy\" data-pswp-width=\"3840\" data-pswp-height=\"2072\" style=\"aspect-ratio: 1.8533;\" width=\"800\"></p>\n<p><strong>Witr: helps you see why something is running</strong><br>\n<a href=\"https://github.com/pranshuparmar/witr\">https://github.com/pranshuparmar/witr</a><br>\nWhen something is running on your system, whether it’s a process, a service, or something bound to a port, there’s always a reason. That reason is often indirect, non-obvious, or spread across several layers. Plenty of other tools can tell you what is running; this one does a great job of telling you “why it’s running”, which is pretty interesting.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/TPgQHi39.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/TPgQHi39.png\" loading=\"lazy\" data-pswp-width=\"1232\" data-pswp-height=\"693\" style=\"aspect-ratio: 1.7778;\" width=\"800\"></p>\n<p><strong>Dinky: a file compression tool for Mac</strong><br>\n<a href=\"https://dinkyfiles.com/\">https://dinkyfiles.com/</a><br>\nIt’s quite nicely made, just drag your files in. It supports compressing images, videos, and PDF files, so give it a try if you need it.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/FFAHWB46.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/FFAHWB46.png\" loading=\"lazy\" data-pswp-width=\"3410\" data-pswp-height=\"2496\" style=\"aspect-ratio: 1.3662;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Ranking of LLM cache hit rates</strong><br>\n<a href=\"https://dirac.run/posts/cache-hit-rates-agents\">https://dirac.run/posts/cache-hit-rates-agents</a><br>\nKind of interesting. One reason domestic models keep their high cost-performance, along with the careful penny-pinching of our engineers.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/KyJWeN09.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/KyJWeN09.png\" loading=\"lazy\" data-pswp-width=\"2114\" data-pswp-height=\"2274\" style=\"aspect-ratio: 0.9296;\" width=\"800\"></p>\n<p><strong>Meituan’s AIGC tech innovation and practice for poster generation</strong><br>\n<a href=\"https://tech.meituan.com/2026/06/18/AIGC-poster.html\">https://tech.meituan.com/2026/06/18/AIGC-poster.html</a><br>\nMeituan is actually quite meticulous about how they build things and takes the time to distill methodologies. That said, these days I lean more toward using a more powerful model to solve problems in less time.</p>\n<p><strong>A fairly interesting record</strong><br>\nIt started with an email I received from a Russian teenager, along with a record of our back-and-forth replies, anonymized and then AI-generated. Russia is having a rough time right now, with even international bank cards mostly cut off. I’ve always thought of my products as global, with no political factors, letting everyone enjoy a bit of the fun of engineer tools, which is honestly pretty neat.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/1image49.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/1image49.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/1image49.png\" loading=\"lazy\" data-pswp-width=\"1024\" data-pswp-height=\"1536\" style=\"aspect-ratio: 0.6667;\" width=\"800\"></p>\n<h2 id=\"just-writing\">Just Writing</h2>\n<h3 id=\"walking-ahead-or-being-pushed-along\">Walking ahead, or being pushed along</h3>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/uPic/Group26.png\" data-lightense-src=\"https://cdn.tw93.fun/uPic/Group26.png\" data-pswp-src=\"https://cdn.tw93.fun/uPic/Group26.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\">\n<p>Lately I’ve had a feeling: engineers who have already transformed into AI engineers, versus those in traditional roles at traditional big companies who haven’t yet realized they need to transform, give off a vibe like the software engineers at the dawn of the internet versus the engineers working in the China Mobile / Unicom / Telecom direction at the same time. It’s also a lot like the difference between people using smartphones and people using feature phones around 2011.</p>\n<p>Before, it just felt like a difference in choices. Now it feels like a slowly-boiling-frog situation, and the water has actually gotten a bit scalding.<br>\nEngineers walking ahead of where technology is heading will have far more room to maneuver, while those being pushed along by the tech direction or the organization will have a rough time.</p>\n<p>Looking back through some of my pretty shallow past sharing, I was fairly lucky that after 2019 I basically stopped wanting to be a traditional role-based engineer. Back then I wanted to be more of an engineer who solves all kinds of problems, not limited to the role itself, dabbling in design, product, frontend and backend, and ops, more about solving a product’s problems.</p>\n<p>Looking back now, it’s a good thing I kept at it, otherwise reaching this stage would honestly be pretty rough.<br>\nHonestly, working that way back then wasn’t all that well-liked, it looked unfocused, and I could only rely on the things I did myself to slowly help the engineers around me grow. But at the time I really didn’t overthink it, I just felt that solving problems was way more interesting than guarding my own job, and that I could explore a ton of interesting things, without expecting immediate results, just letting things happen in their own time. I never imagined that, a few years later when AI arrived, it would become a small little moat for me in this wildly tug-of-war world.</p>\n<p>The content of the articles below is pretty disconnected from the rapid development of the current AI era. You can treat them as relics from ancient times, then put yourself back in that era, which should be fairly interesting. You can even read them against the timeline of AI development, which happens to let you see some of my own thinking and changes on the technical side.</p>\n<p>2019-11-25 <a href=\"https://tw93.fun/2019-11-25/product-and-github.html\">Product and Open Source Sharing</a><br>\n2020-03-18 <a href=\"https://tw93.fun/2020-03-18/how-to-do-design.html\">Interaction Design for Admin Dashboards</a><br>\n2022-07-01 <a href=\"https://tw93.fun/2022-07-01/gou.html\">How to Hunker Down and Get Stronger in a Tough Climate</a><br>\n2022-07-29 <a href=\"https://tw93.fun/2022-07-29/pd-code.html\">How to Be a Product Engineer?</a><br>\n2022-12-09 <a href=\"https://tw93.fun/2022-12-09/talk.html\">How Engineers Can Get Things Done Clearly</a><br>\n2023-10-25 <a href=\"https://tw93.fun/2023-10-25/new-fe.html\">The Dilemma and Breakthrough of Next-Gen Frontend</a><br>\n2024-01-12 <a href=\"https://tw93.fun/2024-01-12/open.html\">My Open Source Growth Journey</a><br>\n2024-09-09 <a href=\"https://tw93.fun/2024-09-09/future.html\">Talking About Future Tech Trends</a><br>\n2025-07-17 <a href=\"https://tw93.fun/2025-07-17/money.html\">How Engineers Can Invest Better</a><br>\n2025-08-17 <a href=\"https://tw93.fun/2025-08-17/ai-coding.html\">The Impact of AI Coding on Programmers</a><br>\n2025-12-22 <a href=\"https://tw93.fun/2025-12-22/engineer.html\">The Breakthrough and Growth of Next-Gen Engineers</a><br>\n2026-03-30 <a href=\"https://tw93.fun/2026-03-30/kill.html\">Kill the Hand-Coding Programmer</a></p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"270. Qiao Cun","link":"https://weekly.tw93.fun/en/posts/270/","pubDate":"Mon, 15 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/27034.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/27034.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5691\" data-pswp-height=\"4268\" style=\"aspect-ratio: 1.3334;\" width=\"800\">\n<p><small>The cover photo was taken over the weekend when I went to Qiao Cun for a meal, just a casual snap. Their food is great, the avocado and salmon are really tasty. Whenever a friend visits Hangzhou, I usually take them here or to Zhang’s Mansion.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-recommendation\">New Recommendation</h2>\n<p><strong>If a friend of yours needs to update their resume soon, you have to recommend Kami to them</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nIf a friend of yours needs to update their resume soon, you have to recommend Kami to them. I tuned a dedicated version carefully, so Kami alone makes writing a resume genuinely handy, good-looking, and clear. Have them get their raw source material ready in Markdown, then tell the AI <code>/kami help me produce a resume</code>, tweak it once or twice, and it’s pretty much done. It’s not just layout, it also helps optimize and organize your resume content, looking at the talent profile from the perspective of a technical final-round interviewer.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/9MamaP33.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/9MamaP33.png\" loading=\"lazy\" data-pswp-width=\"1241\" data-pswp-height=\"1754\" style=\"aspect-ratio: 0.7075;\" width=\"800\"></p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Mole’s desktop client 1.7.2 is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nThis release updates a ton of things, including support for users with accessibility needs. Status and the menu bar are faster and more stable, Software, uninstall, and updates are more complete, Clean is more thorough while still keeping review-first, the privacy check is more accurate, quieter, and smarter, Analyze, Doctor, and Clean Screen are more stable too, and there are quite a few optimizations for fan control on Apple silicon.</p>\n<p>It’s been exactly one month since Mole’s Mac version launched, written in my spare time, and the numbers are kind of fun. In total I wrote 110,000 lines of Swift, including 36,000 lines of test code and 1,983 unit tests, shipped 8 releases, added 145 new features, and supported 9 languages. It’s the last day of the early-bird price and MOLEWEEKLY still works, so anyone interested is welcome to give it a try. More surprises to come.</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole318.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Kaku has finally updated to version 0.12 as well</strong><br>\nKaku even has its own little official site now <a href=\"https://kaku.fun/\">https://kaku.fun/</a>, go take a look. This update brings quite a few things: it now restores session history after you reopen a window, supports AI features you can use directly once logged in with the Codex backend, opens PDFs, images, audio and video, archives, and Office documents with the system default app, and when all panels are sitting at the shell prompt, Cmd+Q quits directly, plus other fun features. Go check out the Release.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/8fKF3s43.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/8fKF3s43.png\" loading=\"lazy\" data-pswp-width=\"3116\" data-pswp-height=\"1540\" style=\"aspect-ratio: 2.0234;\" width=\"800\"></p>\n<p><strong>Some fun recent updates to Pake</strong><br>\n<a href=\"http://github.com/tw93/Pake\">http://github.com/tw93/Pake</a><br>\nPake packages a web page into a lightweight desktop app with one command, supporting macOS, Windows, and Linux. Recently it added cmd+f content search, right-click download support, dots in desktop app names, clearer error messages when AppImage builds fail on Linux, a pnpm 11 compatibility fix, and more.<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/pake128.gif\" width=\"800\"></p>\n<h2 id=\"just-chatting\">Just Chatting</h2>\n<p><strong>I’m not an influencer, not a content creator, not a KOL, so what am I</strong><br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/jDQIRZ22.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/jDQIRZ22.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\"><br>\nMy Twitter earnings are only a bit over 100 dollars each time, probably far less than most blue checkmarks, even lower than that friend who got burned twice by Tauri, which is kind of funny. Why so little? Haha, I should reflect on it, and along the way share my failure experience with everyone.</p>\n<p>First off, I’m not an influencer, not a content creator, not a KOL, nothing really, just an ordinary engineer who writes a bit of hobby code. Twitter, to me, is a way to sync the changelogs of my open-source products to everyone, and to share daily life posts about where I went, what I ate, what I watched. There’s no traffic pressure at all, and no pressure to turn traffic into money, so if the earnings are small, so be it. That actually happens to make this an account I like more and more.</p>\n<p>Content creators usually make money by taking ads, and AI companies tend to pay quite well, sharing lots of altruistic products to get more people to follow, earning their due while being helpful, which is honestly pretty nice too. But there’s usually traffic pressure: you have to keep chasing hot topics and obsessing over headlines, and the longer you do it the better you get. I just feel that’s too exhausting, and I can’t pull it off.</p>\n<p>I actually took some ads before, but I haven’t for a long time now. I remember an agency once contacted me and said advertisers don’t like an account like mine, they prefer the kind that constantly posts AI hot takes. When I heard that, I was actually happy, haha. My account hasn’t turned into the high-quality traffic account they see it as, so I guess I’m keeping things pretty well.</p>\n<p>I kept wondering, if I had to describe my account in one word, what would it be? I thought about it for a long time, and finally figured it out today, which is why this casual article exists: my account should be a continuously iterated “Tw93 Engineer Magazine”.</p>\n<p>This magazine has roughly these few columns: Product Notes, recording the updates and interesting ideas behind products like Pake, Mole, and Kaku; a Tech Column, where I write about technical thoughts, thoughts on AI, and learning topics in new tech areas; Good Stuff, all tools I actually use myself, none of the paid-promotion kind; and a Just Looking Around module where you can see my daily life, what I eat, play, and watch.</p>\n<p>Every engineer can flip through it casually, find something they’re interested in, and dive in to play with it. Friends who want to learn can also read through my long articles one by one, then head to my blog and the trending weekly to find more interesting past content.</p>\n<p>This magazine has almost no ads, and won’t say things against my conscience just to promote my own products. Updates are pretty casual too, usually at most two posts a day, just one when I’m too busy, posting whatever comes to mind. At the same time this magazine is a continuously iterating product: through it you can see how I change year by year, like a tech friend who keeps you company, and you can also reach the magazine’s editor via DM.</p>\n<p>The magazine is slowly growing its own side business, Mole. It sells not because the product is so great, but more because of people’s trust in the magazine itself. This made me realize that low-traffic content doesn’t mean it has no value. Not many people read it, but the trust runs deep, and that can actually bring some unexpected conversions, which is pretty magical. It’s just run rather casually, but fairly consistently.</p>\n<p>So what am I really running? It should just be this magazine called Tw93. Whatever kind of person I am, I write that kind of content, and naturally I’ll meet that kind of reader, with no need to worry about what to write. In the end, what I most want to do is let the engineers reading this magazine and me learn from and grow with each other, but without the anxiety.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"269. Tianmu Scenery","link":"https://weekly.tw93.fun/en/posts/269/","pubDate":"Sun, 07 Jun 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_151828.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_151828.JPG\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo was taken at Tianmu Scenery on Mount Tianmu in Lin’an, where I went the weekend before last. A really nice place, super cool in summer with plenty of fresh air. The Liuchun House up the mountain is delicious, highly recommend a visit, way fewer people than Jiuxi Yanshu.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"new-article\">New Article</h2>\n<p><strong>You Don’t Know Embodied AI: From a Tiny Robot Dog to Optimus</strong><br>\n<a href=\"https://tw93.fun/en/2026-06-07/robot.html\">https://tw93.fun/en/2026-06-07/robot.html</a><br>\nNew article is here. Back in April I assembled a little robot dog. I posted a few things about the build on Twitter, you’ve probably seen them. Then I wrote on and off for almost 2 months and finally finished it, the longest article I’ve ever written. Give it a read.<br>\n<img src=\"https://tw93.fun/images/2026/robot/00-perception-space-action-torque.png\" width=\"800\"></p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Mole’s desktop client 1.6.2 is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nI’m working to round out Mole desktop’s nice features as fast as I can. Just shipped 1.6.2, go update. If you haven’t bought it yet and are interested, you’re welcome to grab it. The price is expected to return to normal after June 15.</p>\n<ol>\n<li>Keep Screen On (new): keep your Mac awake from the menu bar, with selectable durations. Restoring on launch now completes quietly, no more sudden admin-permission prompts.</li>\n<li>Privacy Check (new): the menu bar popover shows camera or microphone usage status and sends a local notification, so you can see it without opening the main window.</li>\n<li>Clean Screen (new): switch the screen to a solid color to make wiping the screen and keyboard easier. Press Escape to exit, and you can enable input lock too.</li>\n<li>Software updates cover more apps: Software now checks the Mac App Store, Sparkle, Electron, Homebrew cask/formula, Homebrew catalog, and GitHub Releases, with clearer progress.</li>\n<li>Uninstall finds more leftovers: leftover detection now covers receipts, Launch Items, Group Containers, Darwin temp caches, and more App Support traces.</li>\n<li>Clean is more useful while staying careful: Mole finds large directories like build, dist, target, and node_modules in your projects, but leaves them for you to review by default.</li>\n<li>Analyze scans faster: disk analysis adds concurrent computation, cache reuse, and subdirectory prewarming, so large directories open faster.</li>\n</ol>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2QNwTk40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2QNwTk40.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2027\" style=\"aspect-ratio: 2.0207;\" width=\"800\">\n<p><strong>Kami, where good content deserves good layout, has shipped a bunch of updates</strong><br>\n<a href=\"http://kami.tw93.fun\">http://kami.tw93.fun</a></p>\n<ol>\n<li>Added a landing-page module. The Mole site and Kami’s own site you’ve seen are actually generated by Kami bootstrapping itself. It’s great for your product intro page, and it even thinks through Geo, Sitemap, and Vercel deployment for you, so you can build a site worry-free.</li>\n<li>Finally supports Marp slide mode, back to the days of writing slides in Markdown. One md file exports to HTML, PDF, or PPTX via marp-cli. The theme ships with Kami’s colors and fonts, works out of the box, and stays lightweight.</li>\n<li>Turns out there are quite a few Korean users, so on top of Simplified Chinese, Traditional Chinese, English, and Japanese, Kami now has fine-grained Korean support and multi-template designs. If you’re a friend from Korea, you’re very welcome to try it and send me feedback.</li>\n<li>The one-pager module, portfolio, and slides now all support importing your brand logo and other brand cues, so Kami blends right into your brand style.</li>\n<li>Since we’re engineers, Kami also does automatic syntax highlighting for code, coloring it for you at build time with no external CSS needed.</li>\n<li>One more fun thing: although Kami is also a Skill, it’s actually 70% code rather than Markdown. If you want to learn how to write a Skill that’s obedient and useful by default, you’re welcome to read the code, it might help <a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a></li>\n</ol>\n<p><video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kami04.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Made a nice website for Kaku</strong><br>\n<a href=\"http://kaku.fun\">http://kaku.fun</a><br>\nFinally done, built using the Kami skill, with a lot of docs filled in, and it supports both Chinese and English. Little Kaku finally has its own website, go take a look. Also, Kaku 0.12 is out, remember to update~<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/Jyw4Z940.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/Jyw4Z940.png\" loading=\"lazy\" data-pswp-width=\"3818\" data-pswp-height=\"2562\" style=\"aspect-ratio: 1.4902;\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Come check out my latest desk setup</strong><br>\nReally happy, it arrived over the weekend. Before, I had a thick book plus a slab of mahjong tiles under my monitor, and the height was just right, but my OCD wanted a clean, unobtrusive 30×20×10 block to put underneath. I looked at lots of dedicated monitor risers, all too big, and looked at acrylic boards too, a bit rough, no solution.<br>\nHere’s the kicker: somehow while browsing PDD I stumbled onto these Buddha-statue bases. A perfect fit, ten times cheaper, and they work great!</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"38%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HM8cAV17.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HM8cAV17.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"38%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/2OEw9N23.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/2OEw9N23.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"24%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/nBYIfw31.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/nBYIfw31.png\" loading=\"lazy\" data-pswp-width=\"943\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.4604;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>Can’t believe I only just watched “A Love Letter to Grandma”, highly recommend</strong><br>\nOver the weekend I went to see the film “A Love Letter to Grandma”. It’s about to leave theaters, really good and really moving, the best film I’ve seen in a cinema in the past couple of years. The young actors were cast really well. If you haven’t seen it, definitely go when you have time!<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/HgIK5M29.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/HgIK5M29.png\" loading=\"lazy\" data-pswp-width=\"2048\" data-pswp-height=\"1536\" style=\"aspect-ratio: 1.3333;\" width=\"800\"></p>\n<h2 id=\"just-saying-thanks\">Just Saying Thanks</h2>\n<p><strong>Some trade-offs I’ve made building products</strong><br>\nMore than 20 days after Mole Mac launched, sales hit a small milestone. I want to share some of the trade-offs I made along the way, and why early on I handled every bit of user communication, Q&#x26;A, and refunds entirely by hand. Hopefully it gives some input to folks building their own indie products.</p>\n<p>First, why do I handle user Q&#x26;A, feedback, email replies, refunds, activation-code resets, price-difference refunds, and so on completely by hand, even though they’re less than 1% of users and I could honestly spend half an hour writing an Agent to handle them? This is a common trap for engineers building products, something that looks efficient but isn’t actually great. There are two considerations here. Only by genuinely handling users’ after-sales issues can you feel what users really need, why they want a refund, why something feels hard to use, their real suggestions and feedback. You can even exchange emails to surface more of their real needs, and through this process you get fluent at knowing the best replies and solutions for every kind of problem. That way, once the product gradually grows, bringing in an Agent for efficiency works much better than doing it from the start.</p>\n<p>Second, why I don’t recommend building a so-called after-sales system from day one. This is an important technical-judgment call for a product engineer: prioritize getting the main product features right, rather than standing up all your peripheral support systems up front. AI is fast, but it still pulls your precious time away from improving the product itself. It looks like it costs no time, but it actually costs you a lot. Spending that time improving the product and meeting users’ real needs is far better.</p>\n<p>Next, I want to talk about some common pitfalls when engineers transition to indie product development. First, what’s the difference between a good product and an average one? A good product is better at deciding what not to build, at which stage each feature is best for the product and users, and which features, even if good, don’t belong on the product’s main line and shouldn’t be added, otherwise it easily turns into a mishmash that’s hard to maintain. Another trait of a good product is that you actually hold the next six months of its development in your head, clearly knowing which features each version should add, which are false needs, and which features should sit right where users naturally reach for them. A product that ordinary beginners don’t need a manual for is a good product. That’s also why, when some friends suggested adding nice Mac features to Mole, I apologetically declined, staying restrained and firmly believing in the product view of “don’t add entities unless necessary”.</p>\n<p>Mole’s positioning is the quiet guardian of Mac system optimization, cleanup, and maintenance. Keep that positioning, refine it, and make it the best Mac maintenance software in the world. If 1 in every 100 Mac users worldwide used Mole, then Mole would truly be good, and that’s what I chase as a product maker: letting more non-technical folks enjoy the fun of an engineer’s product. Recently some visually impaired users have been using Mole and ran into a few accessibility issues, which I’m rushing to fix. I’m really looking forward to how it works and feels for them.</p>\n<p>Maybe in the AI era a lot of things have indeed gotten much more convenient, but communicating with people can’t be replaced by AI, otherwise it loses its meaning. AI can boost efficiency, but it can hardly deepen the feeling and trust between people. This might be a good way for products built with AI Coding to keep a human touch going forward.</p>\n<p>Since this is my first paid product, there may be things I haven’t thought through, and I welcome experienced friends to point them out and offer suggestions.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"268. Xiaohe Park","link":"https://weekly.tw93.fun/en/posts/268/","pubDate":"Mon, 25 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26829.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26829.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is of a textured building I shot last weekend at Xiaohe Park. The sunlight happened to be perfect, paired with the green trees, it looked really nice.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>The Mole desktop client is here</strong><br>\n<a href=\"https://mole.fit/\">https://mole.fit/</a><br>\nFinally, finally, Mole’s Mac desktop version is out. The CLI will keep being free and open source forever. The desktop client is for folks who enjoy a more interactive product feel. We recently shipped 1.5, which adds various sprite animations in the menu bar, login-item management, software update management, and the most fun part, fan control, plus more. Head over to the official site for the full rundown. Weekly readers get 20% off with code MOLEWEEKLY. Early-bird price is currently $9.</p>\n<p>If you’ve contributed code to Mole or sponsored me on GitHub, DM me and I’ll send a 100% discount code.</p>\n<p><video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mole206.mp4\" type=\"video/mp4\"></video></p>\n<p><strong>Mole CLI updated to 1.39</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a></p>\n<ol>\n<li>mo clean major hardening: GUI app dotdirs and Gradle DSL caches are no longer wiped by mistake; dry-run now matches actual cleanup so no more false reports; simctl probing retries to fix the first-error-after-restart issue; Trash cleanup no longer triggers blocking macOS warning dialogs; TMPDIR cleanup is roughly an order of magnitude faster; added cache coverage for UTM/Lima/Arc/QQ Browser/Codex CLI/Antigravity/Gemini; VS Code family now cleans leftover extensions by the .obsolete marker.</li>\n<li>mo uninstall: bundle ID matching upgraded to boundary checks so it won’t hit by mistake; leftover login items are now called out with their cleanup paths in the summary. mo purge: hardened with timeout protection and trap handling, any exit path restores the cursor and clears temp files.</li>\n<li>mo analyze: hardlinks are now deduped by inode, so FCP and other managed media no longer report tens of times inflated. mo status: available-memory math now aligns with Activity Monitor.</li>\n<li>mo touchid: PAM writes switched to atomic operations to preserve read-only permissions. mo optimize: removed Bluetooth reset to avoid accidentally kicking devices.</li>\n<li>Global NO_COLOR=1 support. When Trash isn’t available, it now fails closed to prevent silent permanent deletion.\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XjXNoU39.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XjXNoU39.png\" loading=\"lazy\" data-pswp-width=\"1920\" data-pswp-height=\"1080\" style=\"aspect-ratio: 1.7778;\" width=\"800\">\n</li>\n</ol>\n<p><strong>Kami now builds product landing pages</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nKami has shipped a bunch of updates lately. Beyond the original PDF generation, you can now tell it you want a landing page for product XX, and it’ll build something in the same quiet style as the Mole site.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XdDecf51.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XdDecf51.png\" loading=\"lazy\" data-pswp-width=\"4096\" data-pswp-height=\"2201\" style=\"aspect-ratio: 1.8610;\" width=\"800\"></p>\n<p><strong>Waza has had a bunch of updates lately</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a><br>\nWaza (技, わざ), the engineer’s skill collection, has had a bunch of updates recently. Posting a tweet to keep everyone in the loop. If you’re using it, remember to update. I’ve folded in nearly a month of dev best practices, especially a lot of lessons from the recent Mole client work.</p>\n<p>First, Waza finally supports codex end-to-end. One command and you’re done, every capability is supported, because codex has felt really good to use lately.</p>\n<p>The biggest one: the original health skill was just for checking whether Claude config and usage matched best practices, but now it’s evolved into a full Agent Health check. There’s a fun phenomenon with people writing code with AI now, it feels amazing at first, but after a while it becomes unmaintainable and hard to extend. In that case try /health, it’ll check your code, including whether the various capabilities still look ok, whether it’s maintainable, whether things should be split apart, whether dead files should be deleted. Think of it as a scavenger for the bad code AI generates.</p>\n<p>Then /think (Thinking Mode) also has many updates. You can discuss with it whether a feature should be built, and it’ll give you a Kill / Keep / Pivot judgment across multiple dimensions. Honestly, a lot of the time a product is defined by what you choose not to add, not by what else you could add.</p>\n<p>I’ve always felt that adding rules to AI calls for restraint. Every rule you add becomes a ceiling for it. When the model gets stronger, your rules start dragging it down. That’s why I don’t like Superpowers or so-called Spec programming, too verbose, too many rules. That’s also why I wrote Waza, it’s like installing my code-writing avatar onto your computer.</p>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Lightpanda: a headless browser written from scratch in Zig</strong><br>\n<a href=\"https://github.com/lightpanda-io/browser\">https://github.com/lightpanda-io/browser</a><br>\nA headless browser written from scratch in Zig, designed for agents and automation. The pitch is -9x memory and +11x speed vs Chrome, compatible with the CDP protocol (Playwright/Puppeteer). Worth a look as browser infrastructure for the agent era.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/aQKcGc14.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/aQKcGc14.png\" loading=\"lazy\" data-pswp-width=\"1956\" data-pswp-height=\"1124\" style=\"aspect-ratio: 1.7402;\" width=\"800\"></p>\n<p><strong>Mise: Dev tools, env vars, and tasks in one CLI</strong><br>\n<a href=\"https://github.com/jdx/mise\">https://github.com/jdx/mise</a><br>\nA single tool that unifies runtime versions (nvm/asdf) + env vars (direnv) + tasks (make), all managed by a single mise.toml. Lightweight Rust binary. Worth a try if you’re interested.<br>\n<img src=\"https://cdn.tw93.fun/blog/pic/demo34.gif\" width=\"800\"></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>Recommending this lemon-flavored sparkling water</strong><br>\nYou have to chill it first, then it’s really good. Don’t drink the plain one, this lemon one is the best!</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"50%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/XcWaIV34.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/XcWaIV34.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"50%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/PVaCgF40.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/PVaCgF40.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>This eye drop I’ve been using is pretty good</strong><br>\nIf you often lose yourself in AICoding, grab a bottle of Hai-Lu eye drops, and have your watch remind you to stand up and walk around.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/ybMdQk09.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/ybMdQk09.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\"></p>\n<p><strong>Bought a few nice wooden things</strong><br>\nFirst is a shoehorn, no more bending over to put on shoes. Second is a laptop riser, very useful, with anti-slip. Third is a small holder for aroma bottles. Fourth is the little brush I use to sweep up coffee grounds when I make coffee.</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"25%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/gv97iD44.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/gv97iD44.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/UXoeo050.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/UXoeo050.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/NUPl0m57.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/NUPl0m57.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    <td width=\"25%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/j7ICAj15.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/j7ICAj15.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>Some thoughts on the Mole desktop release</strong><br>\nOn the back of the recent Mole Mac release, I want to share the magic moments I’ve had over the past couple days. Thanks to this little toy project I started by the Sanya pool last year, I’ve met many interesting overseas developers from all kinds of countries.</p>\n<p>The Mac client took two weekends to build. Plenty of overseas users had brought it up before, saying their parents and siblings don’t use a CLI but really want this feature, asking if I could put out a simple, easy-to-use desktop version. Back then there was the time issue, plus I didn’t think the Mole CLI was mature enough yet, so it kept getting pushed back until now.</p>\n<p>It’s only been half a year since Mole launched, and somehow it’s over 50K stars, 500 user-submitted cleanup-suggestion issues, 300 high-quality feature PRs, and contributions from 100 developers around the world, delivering cleanup capabilities arguably stronger than tools like CleanMyMac. I even racked up 60T of traffic in one week from just 2 images I hosted on Vercel for the README, which left me owing Vercel $80, that’s when I realized how many people are actually using it, so the desktop version was worth doing.</p>\n<p>A lot of the small clever touches in the Mole desktop client only came to me once I started building. Like using planets to represent each feature, which traces back to my childhood love of watching planets move, plus 10 years ago when I picked up frontend, the very first thing I wanted to learn was WebGL. I started using WebGL to render the planets, and each planet’s character lined up nicely with what Mole does, so I worked that theme in:</p>\n<p>Clean uses Earth, “Rain washes the old soil, dust drifts with the tide”<br>\nUninstall uses Mars, “Red dust covers the old, travel light to journey on”<br>\nOptimize uses Mercury, “Swift along the near orbit, small fixes ring out”<br>\nAnalyze uses Jupiter, “From afar it becomes a map, the smallest details visible”<br>\nStatus uses the Sun, “Light that doesn’t strike the eye, a heartbeat that stays bright”</p>\n<p>Like the little mole’s digging and exploration moving from a small patch to the wide world, but still quiet, not getting in your way.</p>\n<p>Another design touch: I swapped each planet’s texture map more than 10 times, downloading and picking through many from NASA’s site to find the best fit. The rotation direction and axis, the speed, the post-completion flight characteristics of each planet, all reference how the actual planets move. That part was one of the more enjoyable bits of AI Coding. These details might feel only loosely connected to Mole-the-mole, and I could have just built a simple click-to-clean menu bar app, but I didn’t want to. There’s already too much cyber junk being generated by AI. I needed to make something that feels a bit more pleasant, so that my tokens aren’t wasted, and so I’m not polluting your timeline.</p>\n<p>I released it around 10pm that night. So grateful for the many friends who shared it on their own, and especially thankful to all the users who bought it, some folks even bought it purely because of the value the CLI had given them. Lots of European and American users, with French, German, all kinds of currencies coming in, really magical. There’s still a lot to round out on the Mac desktop, and I appreciate everyone’s patience, prepaying $9 for a pretty little toy. I’ll keep working on the features.</p>\n<p>I really like things that come together naturally, I don’t like chasing short-term results. This kind of long-term iteration, continuously meeting new friends, getting so much input and discussion, is the most precious treasure. Really fun.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"267. Westlake Stone Characters","link":"https://weekly.tw93.fun/en/posts/267/","pubDate":"Mon, 11 May 2026 00:00:00 GMT","description":"<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/26722.jpg\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/26722.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"5712\" data-pswp-height=\"4284\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo was taken last weekend. To get a feel for the strokes for my type design project Luo, I went looking for these kinds of stone-carved characters along the road by West Lake and snapped this shot.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"just-writing\">Just Writing</h2>\n<p><strong>You Didn’t Know GEO: AI Visibility Principles, Practices, and Trade-offs</strong><br>\n<a href=\"https://tw93.fun/en/2026-05-01/ai-visibility.html\">https://tw93.fun/en/2026-05-01/ai-visibility.html</a><br>\nA bunch of friends have @-ed me lately saying my open source tools are getting recommended unprompted when they ask AI questions. I hadn’t done anything special, so I figured why not spend an hour structuring the content properly. After doing it I fired off a quick tweet, but the structure was messy. People seemed genuinely interested, so I decided to write it up as a proper article for reference and lookup.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/OMaEoa53.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/OMaEoa53.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/OMaEoa53.png\" loading=\"lazy\" width=\"800\"></p>\n<h2 id=\"trending-tools\">Trending Tools</h2>\n<p><strong>Kami, the typesetting system that gives good content the layout it deserves, has been upgraded</strong><br>\n<a href=\"https://github.com/tw93/Kami\">https://github.com/tw93/Kami</a><br>\nKami has had several upgrades recently, including fixing Chinese garbled text in PPT, speeding up the engineering, expanding doc analogues to 8 categories, polishing many layout details, updating the built-in chart capabilities, and more. Welcome to update and try it out.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/rPlaVb01.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/rPlaVb01.png\" loading=\"lazy\" data-pswp-width=\"3276\" data-pswp-height=\"2392\" style=\"aspect-ratio: 1.3696;\" width=\"800\"></p>\n<p><strong>Waza, the engineer’s 8 skill trees, has been updated</strong><br>\n<a href=\"https://github.com/tw93/Waza\">https://github.com/tw93/Waza</a></p>\n<ol>\n<li>Durable Context: six skills (think, check, hunt, design, write, health) can consume optional memory/preview context. Safety contract: current state always wins, raw conversation reads disabled by default, hardcoded machine paths not allowed.</li>\n<li>Plan Execution Mode: /check executes approved implementation plans step by step, defaults to review-then-ship continuation, document review routes to /write.</li>\n<li>Evaluation Mode: /think now outputs Kill/Keep/Pivot, deciding whether something should be done or kept.</li>\n<li>Validation guardrails: trigger word overlap detection, routing drift checks, attribution leak interception, preventing silent skill conflicts and accidental personal info leaks.</li>\n<li>Design and Write references: added typography traps, design tokens, aesthetic quality, Chinese-English mixed typesetting standards, release-note style guide.\n<img src=\"https://gw.alipayobjects.com/zos/k/qa/waza_repaired_v4.svg\" width=\"800\">\n</li>\n</ol>\n<p><strong>Kaku finally updated to V0.10</strong><br>\n<a href=\"https://github.com/tw93/kaku\">https://github.com/tw93/kaku</a><br>\n🥷 Long wait, everyone. Kaku finally hits V0.10. I held this version back through several minor releases while I kept tuning a really handy in-app Agent assistant. The vibe is a clean, no-nonsense tech buddy. You can summon it with Cmd + L without disturbing any of your existing content, but it’s smart enough to read your context, and I’ve equipped it with a curated set of solid tools. You configure its brain through kaku ai. I highly recommend setting up search capabilities, and pipellm is a nice option.</p>\n<p>AI features are something I’ve always wanted to build but didn’t want to disturb users with. If you’re more of a pure terminal user, I’ve also added plenty of features worth catching up on.</p>\n<p>First, there’s a fun smart window-close intercept. When you haven’t configured whether to intercept window closing in kaku config, if you’re in the middle of AI work it’ll dynamically intercept and ask whether you really want to close, so you don’t accidentally kill it.</p>\n<p>It also finally supports window snapshot. Kaku auto-saves multi-tab and multi-pane layouts. When needed, hit Cmd+Option+Shift+T or use Shell → Restore Previous Window to recover. This nicely solves the pain of accidentally closing a window and wanting to start back up.</p>\n<p>Some folks suggested that the light mode looks great but the dark mode contrast is a bit too strong. Got it. I’ve now tuned a much softer dark mode, dropping the saturation of highlight colors and slightly dimming foreground text, so staring at the screen for a long time is easier on the eyes.</p>\n<p>I’m also obsessive about startup speed, especially cold start. I want to build the fastest terminal. Through Lua bytecode caching, lazy initialization of fonts and config, shell user variable caching, and similar tricks, your Kaku now opens almost instantly. Still a tiny bit behind Alacritty, but I’m working on it.</p>\n<p>Lastly, fixed full-screen crashes and freezes, multi-monitor race conditions, resize gaps, cursor reflow, links, selection, light theme readability, TUI copy, and many other detail issues.</p>\n<p>If this is your first time hearing about Kaku, welcome to give it a try. Still not mature, actively being polished. Any suggestions or bugs, please file an issue and I’ll handle them.<br>\n<video width=\"800px\" preload=\"metadata\" loop data-autoplay=\"\" muted><source src=\"https://cdn.tw93.fun/blog/pic/kaku14.mp4\" type=\"video/mp4\"></video></p>\n<h2 id=\"just-looking-around\">Just Looking Around</h2>\n<p><strong>M5 Pro in black finally arrived. Stunning. Very excited</strong><br>\n16-inch M5 Pro / 48GB / 1TB black with standard glass. I think this config is a great fit for anyone considering a new machine.<br>\n<video width=\"800px\" preload=\"metadata\" controls><source src=\"https://cdn.tw93.fun/blog/pic/mac36.MP4\" type=\"video/mp4\"></video></p>\n<p><strong>Picked up an iPhone SE3 to play with</strong><br>\nHow can such a small phone feel this refined? Just lovely to hold.</p>\n<table style=\"margin-top:-20px\">\n    <tbody><tr>\n        <td width=\"33%\">\n          <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099853.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099853.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_099901.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_099901.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n        <td width=\"33%\">\n            <img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/IMG_100106.JPG\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/IMG_100106.JPG\" loading=\"lazy\" data-pswp-width=\"4284\" data-pswp-height=\"5712\" style=\"aspect-ratio: 0.7500;\" width=\"400\">\n        </td>\n    </tr>\n</tbody></table>\n<p><strong>A neat UI bug debugging trick of mine</strong><br>\nSharing a really useful UI bug debugging approach. Back in my old-school coding days I often used screen-recording with slow-motion playback. AI struggles with this kind of thing, but humans get it instantly. Find the frame with the problem, and you basically know where the issue is. Then hand the screenshot to AI. Way better than logging or guessing.<br>\n<img src=\"https://cdn.tw93.fun/cdn-cgi/image/width=2000,quality=80,format=auto,fit=scale-down/blog/pic/44JbuE11.png\" data-lightense-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" data-pswp-src=\"https://cdn.tw93.fun/blog/pic/44JbuE11.png\" loading=\"lazy\" data-pswp-width=\"3434\" data-pswp-height=\"2314\" style=\"aspect-ratio: 1.4840;\" width=\"800\"></p>\n<p><strong>Somehow it’s been 4 years on Twitter, posted a little reflection</strong><br>\nJoined X 4 years ago already. The journey has been really fun, and it’s also been a great outlet for my urge to share tech and product stuff.</p>\n<p>I was just chatting with a new friend about how I ended up here. Back then it was still called Twitter. MiaoYan had just been written, and I was looking for somewhere to sync update logs. Yes, that simple. So I signed up with Google login and posted MiaoYan’s intro. Magically, it turned out MiaoYan was already being recommended by lots of folks with big followings as a simple and handy markdown-native notes app. Coming over felt like, oh, there are so many friends here. We finally meet. The Twitter environment back then was great. Not so many ads or money-grabbing. More sharing, conversation, pure tech discussion. Sad to say, many of those friends whose output quality was way higher than mine slowly stopped posting much.</p>\n<p>Later I gradually started sharing some good open source products I’d come across each morning, or the latest releases of my own products, and bits of my own thinking. Slowly I met many like-minded friends, and they put a lot of energy into contributing to my open source projects. Friends from Taiwan, Japan, Turkey, Europe, the US, and especially many friends who helped with Pake. That was a kind of pure code-writing era from before AICoding existed.</p>\n<p>When ChatGPT first came out, I immediately registered an account and started playing with 3.5. It really was a magic moment. Back then we shared funny prompts, very fun, but it now reads like ancient literature. I even wrote an article on 2022-12-04 titled “How Ordinary People Avoid Being Replaced by OpenAI.” Haha, you can see how shallow I was. The first deep question I asked was even “give me some online docs to learn Rust.” How AI has developed since then is beyond comparison.</p>\n<p>That was about when I felt all in on AI. At the company, I handed off all my main business support tech to my direct reports, and went looking for a bigger ceiling for my team in AI. I even paid out of pocket with my international credit card to buy official OpenAI API for the team to use, so we could understand the latest stuff. I solved a lot of business problems that had been giving managers headaches with AI. Meanwhile, since I’m good at sketching solutions and product flows, I also pushed AI application R&#x26;D platforms, B-side digital employee solutions, and the deep integration of business efficiency tools with AI. Three years on, much of it is now well-productized and efficiency has improved dramatically.</p>\n<p>Because the results in practice were so clear, in early 2023 I moved all my Chinese ADRs and company-allocated stock all in on AI direction. I sold them very cheaply, but bought what now look like treasures. Like Tesla I love at around 130, NVIDIA at around 90, SMH at around 160, etc. Around then I started intentionally learning to invest, analyzing companies and their underlying value, and read many books to sharpen my thinking. The books didn’t help much operationally, since most were written decades before AI, but the mindset is useful. Investing in AI also can’t follow the old playbook. It gave me an interest outside of programming, which is fun. Maybe one day I’ll build an investing-related AI product.</p>\n<p>Then, as you all know, came Mole, written last National Day during a Sanya pool vacation between swims and rests. Mole introduced me to many overseas developers. My overseas follower count grew sharply because developers from all over the world have been actively spreading the word almost daily. So grateful! Then came Kaku written during this year’s Spring Festival, plus the recently efficiency-boosting Waza and Kami, and now that the new machine is here I’m planning a font called Luo. The journey has been wonderful, and I’m really looking forward to what’s next. New friends are very welcome.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"266. Masked Sculpture","link":"https://weekly.tw93.fun/en/posts/266/","pubDate":"Mon, 27 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/31/266.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2800\" data-pswp-height=\"2100\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is a sculpture of a child wearing a mask, taken on the weekend while running errands over in Gongshu. In a flash, the pandemic already feels like a long time ago, and yet it also feels like just yesterday. Those years are still worth remembering.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"introducing-the-tw93-open-source-family\">Introducing the Tw93 Open Source Family</h2>\n<p><a href=\"https://github.com/tw93\">https://github.com/tw93</a><br>\n<img src=\"https://gw.alipayobjects.com/zos/k/sa/family.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/sa/family.png\" loading=\"lazy\" data-pswp-width=\"1586\" data-pswp-height=\"992\" style=\"aspect-ratio: 1.5988;\" width=\"800\"></p>\n<p>After finishing Kami, I suddenly realized that Kaku, Waza, and Kami feel a lot like a small family. Then I kept thinking, and actually Pake, MiaoYan, and Mole have always been quietly part of this family too. Some of them were even out doing real work before AI showed up. Today let me introduce you to this warm and happy little family.</p>\n<p>Kaku is the dad. He mainly handles writing code, the terminal, and builds. Very reliable and capable in the AI era, he holds the family together well.</p>\n<p>Pake is the mom. She has been quietly packaging, organizing, and delivering apps all along. Gentle and efficient. She is the kids’ favorite in the family.</p>\n<p>MiaoYan is the older brother. Sensible and steady, he likes writing, Markdown, and reflective thinking. A quiet young man who thinks for himself, has his own opinions, shares his views, and never chases trends or follows the crowd.</p>\n<p>Waza is the older sister. Her personality is similar to mom’s, very sharp and capable. As a kid she even practiced taekwondo. She loves learning, and through endless practice and reflection she sharpens her skills until they become instinct.</p>\n<p>Kami is the younger sister. The youngest little sweetheart in the family, generated based on my daughter’s photo. Bright and cheerful, always smiling, very sunny. She has a kind of order-keeping presence at home, loves tidiness, and loves drawing pretty pictures. Small, but very warm.</p>\n<p>Mole is the family’s little pet mole. Brought home one year while swimming by a pool in Sanya. A round little mole with a tiny headlamp and a small shovel. He loves rummaging through corners, finding things you no longer need and helping you throw them away. He loves cleanliness. The moment he spots trash, before you can react, it is already gone. Always there, keeping us company.</p>\n<p>So, which member of the Tw93 Open Source Family did you meet first? Let me introduce the rest of the family to you, hoping they bring a little something good into your life. And of course, feel free to introduce them to your friends too.</p>\n<h2 id=\"product-releases\">Product Releases</h2>\n<p><strong>Kami: A Comfortable Typesetting and Design System for the AI Era</strong><br>\n<a href=\"https://github.com/tw93/kami\">https://github.com/tw93/kami</a><br>\nThe weekend before last I started working on a new Skill called Kami (紙, かみ). You can think of him as the younger sister of Waza (技, わざ) and the daughter of Kaku (書く), focused on Paper typesetting scenarios. Last Monday I finished the open source release. Welcome to give it a try.</p>\n<p>For example, when you need to produce a one-page report, write a white paper, generate a polished slide deck, or build a portfolio PDF to send to someone. Any printing or typesetting scenario works. It auto-generates beautiful PDFs, and even has the ability to draw clear charts automatically.</p>\n<p>Plenty of updates lately. The most fun one: I added support for 12 inline SVG charts, things like stock investment charts and architecture diagrams, all with colors that match Kami. While generating your layout, it automatically decides whether chart capabilities are needed, helping you explain things more clearly.</p>\n<p>I also spent some time supporting English and Japanese scenarios, carefully picking fonts, letter spacing, line heights, and font sizes that I think work well for typesetting. If you have English or Japanese use cases, give it a try.</p>\n<p>The output also supports image and slide deck export, including HTML display. The best output for typesetting is still PDF in my opinion, since it reads very comfortably for others.</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/qr/iCgeq1.png\" loading=\"lazy\" data-pswp-width=\"2992\" data-pswp-height=\"2308\" style=\"aspect-ratio: 1.2964;\" width=\"800\">\n<p><strong>Mole has updates, plus good news: progress on the desktop client</strong><br>\n<a href=\"https://github.com/tw93/Mole\">https://github.com/tw93/Mole</a></p>\n<ol>\n<li>mo uninstall: cleans up leftover LaunchAgent/LaunchDaemon plists after uninstall; recognizes pkg-installed apps under non-standard paths like /usr/local and /opt; nested helper apps no longer block login item cleanup; sudo is dropped before calling brew, avoiding cask uninstall failures from “running as root”; Homebrew bottles now run correctly under prefixes that contain spaces (such as Applite).</li>\n<li>mo clean: Service Worker ScriptCache is no longer cleaned while Chrome / Arc / Brave / Vivaldi / VS Code / Cursor are running, so MV3 extensions stay intact; TCC-protected Group Containers are skipped to avoid repeated privacy prompts.</li>\n<li>Cloud &#x26; Office segments now have timeout and SIGINT handling, no more freezing; Microsoft Office helpers and research software bundles are no longer flagged as orphans (compatible with macOS’s built-in bash 3.2); added Yarn v1 global cache cleanup.</li>\n<li>mo clean: legacy AI coding assistant cleanup adds GitHub Copilot CLI (~/.copilot/pkg/universal/<version>/), handled alongside Claude Code and Cursor Agent.</version></li>\n<li>mo analyze: worker pool cap lowered again to prevent system thread exhaustion in Steam-like fan-out scenarios; uses incremental cache invalidation when deleting files, no full rescan needed; bundle parsing falls back to the filesystem after mdfind timeouts.</li>\n<li>mo optimize: gracefully skips periodic maintenance on macOS 26+ where the underlying tool no longer exists; adds mo optimise alias and completion.</li>\n</ol>\n<h2 id=\"just-writing\">Just Writing</h2>\n<p><strong>The AI Coding You Don’t Know: Onboarding, Scenarios, and Practice for Non-Technical Folks</strong><br>\n<a href=\"https://tw93.fun/en/2026-04-26/ai-coding.html\">https://tw93.fun/en/2026-04-26/ai-coding.html</a><br>\nLast month I gave a session at work for product and business folks on how to get started with AI Coding. Recently I also posted about it on Twitter, and a lot of people brought up that subscription costs prevent them from accessing the top-tier AI Coding tools. The methods and habits can actually be learned for free first, so I decided to write up the onboarding part. To make it easier to grasp, the article includes plenty of simple illustrations, which should make it more direct.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/z1/00.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/z1/00.png\" loading=\"lazy\" data-pswp-width=\"1500\" data-pswp-height=\"600\" style=\"aspect-ratio: 2.5000;\" width=\"800\"></p>\n<p><strong>Video version of “The Agent You Don’t Know: Principles, Architecture, and Engineering Practice”</strong><br>\n<a href=\"https://www.youtube.com/watch?v=Z5If1L3eFtw\">https://www.youtube.com/watch?v=Z5If1L3eFtw</a><br>\nFinally uploaded to YouTube. If you read the article and did not fully follow it, or want a deeper look, the video version is up. New to YouTube here, so please like, subscribe, and share. From now on I will try to record more sessions and share them here.</p>\n<img src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/bp/SCR-20260423-tuzj.jpeg\" loading=\"lazy\" data-pswp-width=\"3288\" data-pswp-height=\"1876\" style=\"aspect-ratio: 1.7527;\" width=\"800\">\n<p>The <a href=\"https://tw93.fun/files/share/agent.html\">slides</a> are also fun. They are the predecessor of Kami. Kami started as a small investment report generator I was tinkering with inside CC. Around the same time I had a session about agents to give, and writing such a long deck felt tedious, so I just used the existing capability to generate and tweak versions until I was satisfied. That is how Kami was born. Welcome to read.</p>\n<p><strong>Moments of Happiness</strong><br>\nA lazy Sunday afternoon coding in the study<br>\nNothing else to deal with<br>\nEndless Claude Code<br>\nCode that works on the first try<br>\nLook up and see the sunset coming through the window<br>\nA very simple kind of happiness<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/pv/PHyc1R.png\" loading=\"lazy\" data-pswp-width=\"1536\" data-pswp-height=\"2048\" style=\"aspect-ratio: 0.7500;\" width=\"400\"></p>\n<p><strong>Some thoughts after sharing, and they have shifted again</strong><br>\nRecently I interviewed a number of 985 university interns for campus recruiting. One strong impression: AI tools are rapidly widening the resource gap between students.</p>\n<p>From what I have seen, the gap can really reach 5x. The students clearly ahead, without exception, all got into Claude Code, Codex, and other top AI Coding tools relatively early, and were willing to pay for subscriptions themselves. They do not just use the tools, they have made them part of their daily learning and development. Talking models, engineering, agents, and code practice, the conversation flows naturally for an hour. In many places they understand things more deeply than I do.</p>\n<p>But there are also quite a few students with great grades and solid CS fundamentals who, because of family conditions or budget limits, can only use domestic relays or cheaper local model packages. That gap is very real. The best domestic models and top international ones still have about half a year of difference in overall capability. Before AI, the resource gap mostly meant slightly different efficiency. Now it directly affects vision, depth of practice, and confidence.</p>\n<p>I have been thinking about this a lot. For students with real potential, missing out on so much just because of a few dozen dollars a month feels like a real shame. It reminds me of when I was in college, also pretty broke most of the time. Lucky for me, in my second year I met some senior developers who pulled me into commercial projects and got me on my feet. I am very grateful to all the friends who patiently taught me technical things back then.</p>\n<p>So I want to try a small experiment: take part of the X posting revenue and sponsor a few students who do well academically, love computer science, but come from less wealthy families. Give them a few months of Claude Code or a similar AI Coding subscription, so they actually experience what good models and dev workflows feel like.</p>\n<p>But I am also pretty busy on my end and cannot personally handle applications, screening, verification, and long-term follow-up alone. So I want to invite some friends with similar interests to do it together. University teachers, student leads, open source community members, or friends already working in education, public welfare, or developer communities. Together we can come up with a more reliable mechanism.</p>\n<p><del>I do not want to make this big or complex for now. Start small, maybe 5 to 6 students per round, 3 to 4 months each, perhaps with short weekly video chats with me. Prioritize recommendations, work portfolios, learning records, and real usage feedback, to avoid turning this into pure cash handouts or a contest of who writes the best application. Of course, college students who are on X probably do not lack this money, so we still need better channels.</del></p>\n<p>If you have reliable channels, or want to help with rule design, recommendations, vetting, or follow-up, please DM me. If we can make this trustworthy, maybe we really can help a few students with real potential.</p>\n<p><strong>Update Reply</strong>:</p>\n<p>After the message went out, I received plenty of suggestions and reminders from friends. I read them all carefully.</p>\n<p>This really cannot be pushed forward on enthusiasm alone. On one side there are tool usage boundaries and compliance risks. On the other, the real needs of the student community, the screening method, and the follow-up feedback all need a more solid mechanism. Some friends mentioned getting badly burned doing similar things in the past, even bitten back in the end. I find that reminder very valuable.</p>\n<p>So the plan now is to first gather more on the actual situation, like the real pain points college students face when using AI Coding tools, budget limits, learning scenarios, and real needs. Then put together a clearer proposal.</p>\n<p>Going forward, I will prioritize working with domestic large model vendors, developer communities, and university teachers to see if there is a more formal and sustainable way to push this small step forward.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"},{"title":"265. Xixi Window View","link":"https://weekly.tw93.fun/en/posts/265/","pubDate":"Mon, 20 Apr 2026 00:00:00 GMT","description":"<img src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/ky/265.jpg\" loading=\"eager\" fetchpriority=\"high\" data-pswp-width=\"2400\" data-pswp-height=\"1800\" style=\"aspect-ratio: 1.3333;\" width=\"800\">\n<p><small>The cover photo is from lunch at Yueya in Xixi Wetland one noon this week. I had not been there in a long time. The place still feels great. The sun was out, short sleeves felt just right, and I took this shot outside the window. Spring moves fast.</small></p>\n<blockquote>\n<p><strong>Recording down-to-earth trending tech I see every week, filtered and published here. Follow this weekly newsletter to get update notifications</strong></p>\n</blockquote>\n<h2 id=\"talking-about-wazas-design-ideas\">Talking About Waza’s Design Ideas</h2>\n<p>I want to write a few pieces introducing the implementation references behind some interesting skills in Waza. Last week I wrote one every morning, so I am collecting them here for everyone.<br>\n<a href=\"https://github.com/tw93/waza\">https://github.com/tw93/waza</a></p>\n<img src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/7o/4OUzkd.png\" loading=\"lazy\" data-pswp-width=\"1200\" data-pswp-height=\"775\" style=\"aspect-ratio: 1.5484;\" width=\"800\">\n<h3 id=\"introducing-the-design-skill\">Introducing the /design Skill</h3>\n<p>I really dislike those AI-generated websites that all look the same, often with emoji and blue-purple gradients. They look ugly to me. Usable, sure, but that is about it.</p>\n<p>So I asked Claude Code to study my tuning notes from all the UI websites I have built recently. It produced a basic set of what I consider best practices and anti-patterns. That became the initial shape. Then I learned the useful parts from the Claude frontend design skill, and a pattern basically came together.</p>\n<p>For concrete rules, I learned quite a bit from pbakaus/impeccable. It contributed many specific rules for me, including banned font lists, color systems, theme styles, forbidden CSS patterns, animation standards, and more. These help give AI some aesthetic knowledge.</p>\n<p>Then I took a capability from getdesign: a nine-part scaffold structure originally from Google Stitch. I simplified it and folded it into /design. At that point, the skill had a proper knowledge system.</p>\n<p>Finally, when I ask you to use this skill, it first asks a few questions: who will use it, what aesthetic direction to choose, what you want users to remember from the page, what you dislike most, and what kind of signature micro-interaction the page should have. With this important context plus /design, Claude Code often gets much better results.</p>\n<h3 id=\"how-i-designed-the-check-code-review-skill\">How I Designed the /check Code Review Skill</h3>\n<p>First, we need to understand that when a model says it is done, it may not actually be done. It may have left behind nonexistent things or problematic details, and issues often stay hidden. In Agent design, my engineering experience is to give the model a checklist to verify whether the work is truly complete. This tends to work far better than simply asking it to check the result.</p>\n<p>From the beginning, /check was not designed as one big all-in-one reviewer. It is an orchestration and division-of-labor system. SKILL.md is the lead reviewer, responsible for review levels and process control. Under agents/, there are independent security and architecture reviewers. Each handles its own area without interfering with the others. Which reviewer gets pulled in, and when, is decided by activation rules rather than the keyword matching people usually use.</p>\n<p>The level logic is also interesting. Code changes under 100 lines get a fast review. Changes between 100 and 500 lines bring in experts as needed. Changes above 500 lines bring in the full set, followed by a round of adversarial testing. The adversarial testing looks for problems from four angles: violated assumptions, possible issues under combined failures, errors across parent-child chains, abuse scenarios, and so on.</p>\n<p>The issues found are handled in four levels. Things that can be safely fixed are fixed directly. Things that are probably right but need confirmation are packaged up for you to approve manually. Things that require judgment are asked about. Reference-only items are also reported, but it will not ask you about every tiny issue, and it will not overstep by changing behavior logic for you.</p>\n<p>There is also a hard requirement: if verification has not finished, the task is not complete. It includes a detection script that can identify project types such as Cargo, TypeScript, and Python, then run the relevant tests. If it cannot detect the project type, it reports an error directly instead of pretending everything passed.</p>\n<p>This makes it feel more like an experienced technical expert applying review judgment to different situations. I happened to distill that experience into Waza’s /check skill in a very simple way.</p>\n<h3 id=\"how-i-designed-the-think-skill\">How I Designed the /think Skill</h3>\n<p>This is already the third part of the Waza skill design notes. Today I want to share how I designed /think, the skill used for planning before writing code.</p>\n<p>I have two very interesting settings when using Claude Code. The first is /model opusplan, which means planning uses the strongest Opus model by default, while execution uses the regular Sonnet model. This helps save my Max quota for places where it matters more.</p>\n<p>The second is that I usually run Claude Code with the alias <code>c=\"claude --dangerously-skip-permissions\"</code>. I do not recommend this for technical beginners. I use it because I know what it is doing, and mainly because I am lazy.</p>\n<p>Back to the main topic: how does /think help the strongest model perform better? It starts with the model itself. Models do not like taking a position, but I prefer engineers who can take a position and recommend the best plan. So the first thing I did was require the model to state its position at the beginning, explain what evidence could overturn that position, and explicitly ban correct but useless filler like “There are many ways to think about this”. Giving 2 or 3 options is fine, but there must be a clear recommendation, and it must include a minimal option.</p>\n<p>A plan is not done just because it has been thought up. The second step asks it to argue against itself: under what conditions would this plan fail? If the issue can be fixed, it adds the fix back into the plan and presents it again. If the issue breaks the plan outright, it directly explains when and why the plan does not work. At least the plan you receive is one you understand clearly.</p>\n<p>It also checks assumptions carefully. First, confirm whether the target directory and code location are correct. I have actually seen it produce a plan against the wrong path. Then it checks old technical design documents to avoid reinventing things. Then it searches GitHub to see whether others have handled similar problems. Only after these three steps does it start thinking about solutions, so the plan is not built on a wrong premise from the start.</p>\n<p>There is also complexity grading. If more than 8 files are involved or a new service is added, it clearly states the scale. If more than 3 components exchange data, it draws an ASCII diagram to look for cycles. All API keys and third-party dependencies are listed during the planning stage, preventing wasted work and unreliable plans.</p>\n<p>Finally, there is a hard rule: the plan cannot contain TBD, TODO, “leave it for later”, or “similar to step N”. This goes back to AI’s behavior. If you leave these openings, execution can easily miss things or improvise too much. Do not give AI any escape route that can lead to poor results.</p>\n<p>The output format is also defined: what to do, what not to do, which option was chosen and why, 3 to 5 decision points, and explicit unknowns. /think never writes code. It waits for user approval before execution.</p>\n<p>When I designed the Think skill, I was also using my idea of how a good technical expert writes a technical plan: detailed analysis and research, a decisive best plan, no loose ends, and immediate plan refinement when challenged.</p>\n<h3 id=\"talking-about-the-hunt-skill-for-engineers\">Talking About the /hunt Skill for Engineers</h3>\n<p>This is finally part 4 of the Waza skill design notes. After this, it is almost complete, because the other two, /read and /learn, were already briefly covered before. This time I will continue with the engineering skills and talk about /hunt, which is the skill for debugging and investigating problems.</p>\n<p>One major difference between superficial AI coding and serious AI coding is visible in how users use AI to investigate problems that have stayed unsolved for a long time. The troubleshooting process shows a clear gap. This is also why experienced engineers can use AI to solve much more complex problems than people who understand less about technology.</p>\n<p>I often ran into this before: Claude Code hits a problem and fixes it with a patch. You say it is wrong, so it gives you another patch. After 4 or 5 rounds, new problems appear. It is easy to keep patching without diagnosing the actual issue, much like junior developers did before AI.</p>\n<p>The core rule of /hunt is interesting: before AI can state the root cause in one sentence, it is not allowed to touch the code. That sentence also has a precision requirement. It needs to clearly explain the cause.</p>\n<p>Then I designed a self-deception checklist to prevent the model from falling into several common patterns of self-justifying thinking. Each pattern has matching rules, and the gotchas include real cases. I summarize and abstract this again based on issues I ran into while debugging over the past month.</p>\n<p>The hypothesis verification stage also has concrete work requirements. For example, add a fresh observation method, teach AI to add logs, add assertions, or run a minimal failing test case. If there are still problems after the fix, it should immediately switch plans. It organizes what it checked, which directions it investigated, and what remains unknown into a handoff for the user to decide how to continue, instead of trying endlessly.</p>\n<p>The output also guides AI to include the root cause at file:line, what changed at file:line, what evidence confirms the fix, and which tests passed. The final state has three options: resolved, resolved with caveats, or blocked.</p>\n<p>You can see that /hunt behaves like an experienced technical expert. When it hits a problem, it does not guess. It slows down, looks for where the problem is, diagnoses the cause clearly, and then fixes it in one pass. This often saves a lot of time.</p>\n<h2 id=\"things-to-browse\">Things to Browse</h2>\n<p><strong>MiaoYan released version 3.2.0, Nargacuga</strong><br>\n<a href=\"http://github.com/tw93/MiaoYan\">http://github.com/tw93/MiaoYan</a></p>\n<ol>\n<li>Faster preview: two-stage rendering shows text immediately, while local images lazy-load in the background. This noticeably reduces the wait for the first preview screen.</li>\n<li>Terminal shortcut: added Cmd+J as a global shortcut to open the terminal for the current folder anytime. The folder right-click menu also has the same entry.</li>\n<li>Copy path: right-click any note to copy its full file path directly.</li>\n<li>Spanish localization: complete Spanish translation coverage for menus, settings pages, and system strings.</li>\n<li>Mermaid upgraded to v11.14.0, fixing subgraph edge rendering issues and adding new chart features.</li>\n<li>Real-time reload fix: notes modified by other tools now correctly trigger reloads, including files inside symlinked directories (closes #502).</li>\n<li>Startup and window fixes: opening .md files directly from Finder no longer shows a blank screen. In single-column mode, notes are no longer lost during startup or exit.</li>\n<li>Export and mode switching: fixed blank previews when switching notes, timing issues when exiting PPT presentation mode, export timeout handling errors, and more.</li>\n<li>Concurrency safety: fixed ExportCache data races, security-scoped URL leaks, and note state confusion after async rendering.\n<img src=\"https://raw.githubusercontent.com/tw93/static/main/miaoyan/miaoyan.gif\" width=\"800px\">\n</li>\n</ol>\n<p><strong>Kaku has an interesting feature coming soon. It should ship in a few days</strong><br>\n<a href=\"https://github.com/tw93/Kaku\">https://github.com/tw93/Kaku</a><br>\nKaku has been developing an interesting feature recently: a real Agent assistant that can move smoothly inside the terminal. It gradually realizes the quiet Kaku AI idea I mentioned during Chinese New Year, and it also helps me move 100% of my coding work fully into Kaku.</p>\n<p>A very convenient context environment, useful CLI tools, models, and a restrained personality make Kaku feel different. It is not cold, and it is not the over-the-top “I have got you” style of GPT either. Kaku AI is positioned as a technically strong, friendly, and concise engineer friend. Once I test it for a few days without bugs, I will release Kaku 0.10 for everyone to try.<br>\n<img src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png?x-oss-process=image/auto-orient,1/resize,w_2000/format,webp\" data-lightense-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" data-pswp-src=\"https://gw.alipayobjects.com/zos/k/hq/bPJ8tk.png\" loading=\"lazy\" data-pswp-width=\"1645\" data-pswp-height=\"1079\" style=\"aspect-ratio: 1.5246;\" width=\"800\"></p>\n<p><strong>My Claude Code Max usage suggestions</strong><br>\nFirst, I add an alias in <code>.zshrc</code>, so every time I press <code>c</code>, it starts dangerous unrestricted mode directly. If you are a beginner, I do not recommend starting this way. Auto mode is enough. Another big suggestion is to set the automatic context window compaction to 400k. Together, the alias below goes into the file, which means the 1m context window starts compacting at 40%. The result feels much better.</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"sh\"><code><span class=\"line\"><span style=\"color:#F97583\">alias</span><span style=\"color:#E1E4E8\"> c</span><span style=\"color:#F97583\">=</span><span style=\"color:#9ECBFF\">'CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000 claude --dangerously-skip-permissions'</span></span></code></pre>\n<p>Then I set /model to opusplan. You can run the hidden command <code>/model opusplan</code> directly inside Claude Code to enable it. If you want it faster, you can turn on <code>/fast</code>, which nicely makes up for the token savings above.</p>\n<p>Finally, someone gave me a really good suggestion: when using opusplan, make sure to set <code>showClearContextOnPlanAccept</code> to <code>true</code> in the Claude config file <code>~/.claude/settings.json</code>. Otherwise, Sonnet can run into serious cache miss issues. Once this is configured, the experience feels much smoother.</p><hr style=\"border:none;border-top:0.5px solid rgba(0,0,0,0.08);margin:26px 0 14px;\" />\n    <p style=\"text-align:left;margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\">\n      <a\n        href=\"https://mole.fit\"\n        style=\"\n          display:inline-block;\n          padding:6px 18px;\n          border-radius:999px;\n          background:#222;\n          color:#fff;\n          font-size:13px;\n          text-decoration:none;\n        \"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n      >❤️ Support me</a>\n    </p>"}]}