<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Tao&apos;s Devlog</title><description>Tao Xu (hewig) — Tokyo-based software engineer and blockchain developer, former core engineer at Trust Wallet. Open-source Rust tools, macOS apps, and crypto wallet infrastructure.</description><link>https://hewig.dev/</link><language>en-us</language><item><title>Code w/ Claude, Tokyo</title><link>https://hewig.dev/posts/code-with-claude-tokyo/</link><guid isPermaLink="true">https://hewig.dev/posts/code-with-claude-tokyo/</guid><description>Notes from Anthropic’s Code w/ Claude in Tokyo — the sessions, the office hours, and what I took home about how insiders actually use coding agents.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div style=&quot;margin:0 0 1.5rem;padding:0.9rem 1.1rem;border-left:3px solid var(--accent);background:var(--panel-2);border-radius:0.375rem;font-size:0.95em;&quot;&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Bun&apos;s team has since published &lt;a href=&quot;https://bun.com/blog/bun-in-rust&quot;&gt;a deep dive on the Rust rewrite&lt;/a&gt; discussed below — much more detail than I captured from the talk, worth reading in full.
&lt;/div&gt;
&lt;p&gt;Last week I went to &lt;a href=&quot;https://claude.com/code-with-claude/tokyo-extended&quot;&gt;&lt;em&gt;Code w/ Claude&lt;/em&gt; Tokyo Extended&lt;/a&gt; expecting a casual hands-on meetup — a room full of people who like the same tools I do. It turned out to be much more than that.&lt;/p&gt;
&lt;p&gt;The ticket was free (though you do need to sign up early). On top of that, attendees walked away with three months of Max 20x and $100 in API credits — so the event more than paid for itself before the first session even started. Food, beverages, bento boxes, and a relaxed closing reception. People had flown in from all over; it was the first time I’d been in a room with that many Claude users from that many countries.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-posters-wall.webp&quot; alt=&quot;A wall of generative Code w/ Claude posters at the venue&quot; /&gt;
&lt;figcaption&gt;A wall of generative &quot;Code w/ Claude&quot; posters at the venue. Free to take.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;the-sessions&quot;&gt;The sessions&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://claude.com/code-with-claude/tokyo-extended#agenda&quot;&gt;full agenda of talks and workshops&lt;/a&gt; is on the event page, and plenty of them were worth the trip. I’ll highlight just two.&lt;/p&gt;
&lt;h3 id=&quot;how-we-use-claude-code&quot;&gt;How we use Claude Code&lt;/h3&gt;
&lt;p&gt;The first was a workshop — Anthropic engineers walking through how &lt;em&gt;they&lt;/em&gt; actually use Claude Code internally. The framing that stuck with me: models are slow, so you really don’t want to be fixing their mistakes after a long wait.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Remove ambiguity.&lt;/strong&gt; Make the agent interview you before it commits to anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Understand and plan.&lt;/strong&gt; Plans you can actually read — interactive HTML, not Markdown.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrated verification.&lt;/strong&gt; Build it in from the start, not as a step you bolt on at the end.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;None of it is a flashy trick — it’s all process, not magic. Which, it turned out, was the theme of the whole event.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-session-how-we-claude-code.webp&quot; alt=&quot;The How we use Claude Code workshop&quot; /&gt;
&lt;figcaption&gt;The &quot;How we use Claude Code&quot; workshop.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;rewriting-bun-in-rust&quot;&gt;Rewriting Bun in Rust&lt;/h3&gt;
&lt;p&gt;The other was the closing session — the first time it was shared publicly: &lt;a href=&quot;https://x.com/jarredsumner&quot;&gt;Jarred&lt;/a&gt;, the creator of &lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt;, walking through rewriting Bun in Rust with Claude. When that PR discussed on X and got merged eventually, I read through the migration plan — it’s a serious rewrite. Now I could hear how it actually went.&lt;/p&gt;
&lt;p&gt;Rewrites used to be too expensive to justify; now they make sense — though not as easy as it looks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Write the rules first.&lt;/strong&gt; Every translation decision made once — how each old pattern maps to the new one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit the rules themselves.&lt;/strong&gt; 8 agents reviewed the rulebook; one translated 3 real files twice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One loop.&lt;/strong&gt; Generate → adversarial review → fixes → count what’s left, until zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Four stages.&lt;/strong&gt; Files → Crates → Binary → Behavior. Bun has over 4,000 TypeScript tests, and they’re implementation-agnostic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They ran 16 agents × 4 worktrees = 64 Claudes, and banned slow commands like &lt;code&gt;git&lt;/code&gt; and &lt;code&gt;cargo&lt;/code&gt;. &lt;strong&gt;Adversarial review&lt;/strong&gt; matters most: 2+ adversarial reviewers for every change, and you have to watch for cheating — even the reviewers get reviewed.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-jarred-bun-rust.webp&quot; alt=&quot;Jarred on stage presenting the Bun-in-Rust rewrite&quot; /&gt;
&lt;figcaption&gt;Jarred presenting the Bun-in-Rust rewrite — the closing session.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Rewrite something the size of Bun and you run straight into the obvious question:&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-slide-review-million.svg&quot; alt=&quot;Slide: How do you review a million lines of code?&quot; /&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;office-hours&quot;&gt;Office hours&lt;/h3&gt;
&lt;p&gt;There were a handful of 15-minute 1:1 office-hour slots with Anthropic employees — you had to book one, and they went fast. I grabbed one, and it was the part I’d undervalued the most going in. A few things that came up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The product is a little ahead of model capability on purpose.&lt;/strong&gt; The team builds at the edge of what Claude can do, then dogfoods hard to find where the boundaries actually are. Using it heavily &lt;em&gt;is&lt;/em&gt; the research.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrations&lt;/strong&gt; — Slack, Linear, and the Claude GitHub App are where a lot of the real workflow lives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PR review as a pipeline&lt;/strong&gt; — automatic, classify, and adversarial reviews, all feeding into a human at the end rather than replacing one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bottom-up and top-down at once&lt;/strong&gt; — adoption grows from engineers experimenting &lt;em&gt;and&lt;/em&gt; from leadership pushing, and you need both.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They also pushed Claude Managed Agents (CMA) pretty hard.&lt;/p&gt;
&lt;h2 id=&quot;thoughts-on-coding-agents&quot;&gt;Thoughts on coding agents&lt;/h2&gt;
&lt;p&gt;A few things crystallized for me at the event:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The big tools are converging on the same idea.&lt;/strong&gt; The way I use Claude and Codex is, at the core, roughly the same workflow. What separates them is how far each pushes that idea — better tools, more tokens, higher limits. The mental model transfers; the ceiling is what differs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Knowing how insiders work is genuinely valuable.&lt;/strong&gt; Not because of secret tricks, but because it confirms which fundamentals still matter — and shows how they show up differently now. The clearest example: &lt;strong&gt;Rust and &lt;a href=&quot;https://github.com/jj-vcs/jj&quot;&gt;Jujutsu&lt;/a&gt; weren’t designed for AI coding agents, yet they work better with them than tools that were.&lt;/strong&gt; A strict compiler and a clean model of change turn out to be exactly what an agent needs, even though no one built them with agents in mind.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Don’t fix the code — fix the process that generates it.&lt;/strong&gt; This is the answer to that million-lines question, and the line I keep coming back to. You don’t review a million lines by reading them. When the output is wrong, the instinct is to patch the output; the higher-leverage move is to fix the &lt;em&gt;process&lt;/em&gt;: sample some of the results, edit the prompts to handle what went wrong, and regenerate — so the &lt;em&gt;next&lt;/em&gt; hundred outputs are right too.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-slide-dont-fix-code.svg&quot; alt=&quot;Slide: Don&apos;t fix the code. Fix the process that generates the code.&quot; /&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;one-more-thing&quot;&gt;One more thing&lt;/h2&gt;
&lt;p&gt;The swag deserves its own paragraph. Pixel-art stickers, a programmable gadget — the &lt;a href=&quot;https://docs.m5stack.com/ja/core/Cardputer-Adv&quot;&gt;M5Stack Cardputer Adv&lt;/a&gt; — and a little Claude wizard doll. Naturally, the first thing I did was get a Claude-style Tamagotchi running on the Cardputer.&lt;/p&gt;
&lt;figure&gt;
&lt;div style=&quot;display:flex;gap:0.5rem;align-items:flex-start;&quot;&gt;
&lt;img src=&quot;/assets/images/cwc-swag.webp&quot; alt=&quot;The swag: a c/c card, pixel-art stickers, and an M5Stack Cardputer Adv&quot; style=&quot;flex:1;min-width:0;margin:0;border-radius:0.5rem;&quot; /&gt;
&lt;img src=&quot;/assets/images/cwc-claude-on-cardputer.webp&quot; alt=&quot;A Claude-style Tamagotchi running on the Cardputer&quot; style=&quot;flex:1;min-width:0;margin:0;border-radius:0.5rem;&quot; /&gt;
&lt;/div&gt;
&lt;figcaption&gt;The haul — a c/c card, stickers, the Cardputer Adv — and the Cardputer already running a Claude-style Tamagotchi.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;My favorite piece was the little Claude wizard doll.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-claude-doll.webp&quot; alt=&quot;The Claude wizard plush doll&quot; /&gt;
&lt;figcaption&gt;Claude, as a pixel wizard.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The highlight, though, was the people. &lt;a href=&quot;https://x.com/bcherny&quot;&gt;Boris&lt;/a&gt; — who, it turns out, speaks Japanese — took a selfie of the whole room from the stage, and I got to show him my Pebble running a Claude watch face.&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&quot;/assets/images/cwc-boris.webp&quot; alt=&quot;Boris on stage taking a selfie of the room&quot; /&gt;
&lt;figcaption&gt;The same moment from the floor — Boris taking the shot.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-dnt=&quot;true&quot; data-align=&quot;center&quot;&gt;
&lt;a href=&quot;https://x.com/bcherny/status/2064885111477219664&quot;&gt;Boris&apos;s stage selfie of the whole room at Code w/ Claude, Tokyo&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;p&gt;I came for a meetup and left with a sharper picture of where the frontier is — and a renewed conviction that the leverage isn’t in the code, it’s in the process that writes it.&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Closing Loops</title><link>https://hewig.dev/posts/closing-loops/</link><guid isPermaLink="true">https://hewig.dev/posts/closing-loops/</guid><description>Three old apps, a decade apart — and what rewriting them taught me about indie dev in the AI coding era.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the past few weeks I have been rewriting three of my old apps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/hewigovens/ghosttile-cli&quot;&gt;GhostTile&lt;/a&gt;&lt;/strong&gt;, 12 years old — my first commercial Mac app&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/hewigovens/inspect&quot;&gt;Inspect&lt;/a&gt;&lt;/strong&gt;, 10 years old — a TLS certificate inspector&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/hewigovens/anytime&quot;&gt;Anytime&lt;/a&gt;&lt;/strong&gt;, 8 years old — a timezone calculator&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I did not plan a “rewrite season.” I started because I wanted to see where the frontier of SOTA coding agents actually was. I had been using Codex and Claude for work and toy projects; I wanted to push them against real code I had written long ago and mostly walked away from.&lt;/p&gt;
&lt;h2 id=&quot;anytime&quot;&gt;Anytime&lt;/h2&gt;
&lt;p&gt;I started with the easiest one. The prompt was almost embarrassing — &lt;em&gt;“rewrite this app in modern Swift.”&lt;/em&gt; Anytime was small enough that this worked. SwiftUI, SPM, added macOS support, shipped. The agent handled most of the grind; I decided what to keep and what to rebuild.&lt;/p&gt;
&lt;h2 id=&quot;inspect&quot;&gt;Inspect&lt;/h2&gt;
&lt;p&gt;Inspect was harder. There was an &lt;a href=&quot;https://github.com/hewigovens/inspect/tree/feature/network-extension&quot;&gt;old branch&lt;/a&gt; I had pushed nearly eight years ago — a packet tunnel to passively monitor TLS handshakes from other apps — and never finished. This time it took an afternoon.&lt;/p&gt;
&lt;p&gt;That was a strange feeling. Not pride, exactly. More like &lt;em&gt;there was no excuse anymore&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;ghosttile&quot;&gt;GhostTile&lt;/h2&gt;
&lt;p&gt;Then GhostTile — the one I was not sure I could rewrite at all.&lt;/p&gt;
&lt;p&gt;The original was my favorite project, full of every macOS trick I had picked up at the time. &lt;code&gt;mach_inject&lt;/code&gt;, XPC helpers, fishhook-style rebinding, &lt;code&gt;TransformProcessType&lt;/code&gt;, Dock observation, swizzling. “How is this still working?” energy on every file.&lt;/p&gt;
&lt;p&gt;Modern macOS does not forgive that kind of code anymore. SIP, notarization, hardened runtime, Apple Silicon — the platform made most of those tricks either impossible or embarrassing. For years, whenever I thought about reviving GhostTile, the honest answer was “please disable SIP and trust me,” and I could not live with that.&lt;/p&gt;
&lt;p&gt;What actually changed was not the platform. It was that the agents got good enough to help me list and verify what still works on modern macOS, read the old code to see what was still worth bringing forward, and rebuild the rest around constraints that are real today. The new &lt;a href=&quot;https://github.com/hewigovens/ghosttile-cli&quot;&gt;GhostTile&lt;/a&gt; still does unusual things — it stages a helper dylib, patches the target binary, re-signs ad hoc — but the architecture is honest and the repo is public. That feels right. I wrote a longer note on &lt;a href=&quot;/posts/rewriting-ghosttile/&quot;&gt;why and how I rewrote it&lt;/a&gt; if you are curious about the details.&lt;/p&gt;
&lt;h2 id=&quot;the-indie-part&quot;&gt;The indie part&lt;/h2&gt;
&lt;p&gt;None of these apps ever took off commercially. GhostTile came the closest to being a real product, and even that is generous. But I learned something from each of them — macOS internals, TLS, cross-platform Swift — and every so often someone would email me about a bug or a small feature, which was always the better part of shipping.&lt;/p&gt;
&lt;p&gt;I am at a stage now where I do not need side projects to pay for themselves, and that frees them to be what they always wanted to be. The repos are public. No paywalls, no license keys, no enforcement. Each one has a GitHub Sponsors button — if something I built helps you and you feel like chipping in, great; if not, also great. My “ambitious” goal is around $100–200 a month, enough to cover my AI subscriptions, which is a very 2026 sentence and one I enjoy writing.&lt;/p&gt;
&lt;p&gt;The real reward is still just hearing from someone who uses it.&lt;/p&gt;
&lt;h2 id=&quot;learn-the-hard-way-still&quot;&gt;Learn the hard way, still&lt;/h2&gt;
&lt;p&gt;There is a book called &lt;em&gt;Learn Python the Hard Way&lt;/em&gt;. The title stayed with me for years. Back then, the indie instinct rhymed with it — write it yourself, understand every line, re-invent the wheel until you have earned your taste. Libraries were something to avoid on principle.&lt;/p&gt;
&lt;p&gt;The motivation is different now, but the method survives. Agents can write plausible code for almost anything, which means code you did not write yourself can quietly end up in your project with none of it living in your head. Building from scratch is the clearest defense against that — against slop you cannot debug, abstractions you do not own, and knowledge that never actually made it into your brain.&lt;/p&gt;
&lt;p&gt;So my default flipped. Instead of writing everything by hand out of principle, I pick &lt;em&gt;one thing I actually want to learn&lt;/em&gt; and build that from scratch. The rest — the parts I already know — I am happy to let the agent do.&lt;/p&gt;
&lt;p&gt;The more ambitious version of that right now is &lt;a href=&quot;https://github.com/hewigovens/hw-core&quot;&gt;hw-core&lt;/a&gt;. That is the project where I am most deliberately using “build it yourself so it actually lives in your head” as the rule, not the exception.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/hewigovens/jayjay&quot;&gt;Jayjay&lt;/a&gt; is another version of the same instinct — a native macOS GUI for &lt;a href=&quot;https://github.com/jj-vcs/jj&quot;&gt;Jujutsu&lt;/a&gt;, written in Rust and SwiftUI. Rust and SwiftUI I already love — I wrote &lt;a href=&quot;/posts/native-obsession/&quot;&gt;a whole post&lt;/a&gt; about why that is the native combination. What was new to me was jj itself. So building Jayjay from scratch turned out to be the most direct way to actually learn the tool.&lt;/p&gt;
&lt;p&gt;Rewriting the old stuff was about closing loops. Building the new thing is about opening them.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;title image credit to &lt;a href=&quot;https://unsplash.com/@pixelprovibes&quot;&gt;PixelPro Vibes&lt;/a&gt; on &lt;a href=&quot;https://unsplash.com/photos/FpC3XIFM2Bg&quot;&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Rewriting GhostTile for Modern macOS</title><link>https://hewig.dev/posts/rewriting-ghosttile/</link><guid isPermaLink="true">https://hewig.dev/posts/rewriting-ghosttile/</guid><description>GhostTile was my first polished paid Mac app. This is the story of why it faded, why I rewrote it, and why I am making the new repo public.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GhostTile was my first really polished paid Mac app.&lt;/p&gt;
&lt;p&gt;Back then I was deep in macOS development, and GhostTile came from a very simple personal pain point: I had apps I used all the time, but I did not want to see them in the Dock, and I did not want them in Cmd+Tab either. I still wanted the normal system surfaces to stay instant. I did not want to replace the Dock with a third-party launcher. I just wanted a few apps to disappear from it.&lt;/p&gt;
&lt;p&gt;That idea became GhostTile.&lt;/p&gt;
&lt;p&gt;The original version meant a lot to me. It solved a real problem I had, and it also became one of the best ways I ever learned macOS internals. To make GhostTile work, I had to go much deeper into the platform than most apps ever need to. Under the hood it had exactly the kind of machinery you would expect from an older Mac utility living close to the system: &lt;code&gt;mach_inject&lt;/code&gt;, helper processes, XPC glue, fishhook-style rebinding, &lt;code&gt;TransformProcessType&lt;/code&gt;, Dock observation, swizzling, and a lot of “how is this still working?” energy.&lt;/p&gt;
&lt;p&gt;It was quite a journey, and I am still proud of what I managed to build.&lt;/p&gt;
&lt;h2 id=&quot;why-it-stalled&quot;&gt;Why It Stalled&lt;/h2&gt;
&lt;p&gt;GhostTile never made much money, but that was not the real problem.&lt;/p&gt;
&lt;p&gt;The bigger problem was that macOS kept changing. SIP, notarization, hardened runtime expectations, Apple Silicon, and the general direction of platform security made the old GhostTile harder and harder to maintain in a way I felt good about.&lt;/p&gt;
&lt;p&gt;At some point I lost motivation, because I knew I did not want the answer to be “please disable SIP” or “please weaken your machine so this utility can keep doing its old tricks.”&lt;/p&gt;
&lt;p&gt;I did not want to go backward just to keep GhostTile alive.&lt;/p&gt;
&lt;p&gt;So the project faded.&lt;/p&gt;
&lt;h2 id=&quot;why-rewrite-it-now&quot;&gt;Why Rewrite It Now&lt;/h2&gt;
&lt;p&gt;What changed recently was not that macOS got easier. It did not.&lt;/p&gt;
&lt;p&gt;What changed was that models like Claude Opus 4 and GPT 5 became capable enough that revisiting a project like this started to feel realistic again. Not effortless, not magical, but realistic.&lt;/p&gt;
&lt;p&gt;That gave me a reason to try.&lt;/p&gt;
&lt;p&gt;This is not really about money anymore. It is more personal than that. GhostTile was one of the projects I was most proud of, and I needed to give myself an answer: if I rebuilt it today, knowing what I know now, could it still become something worth using?&lt;/p&gt;
&lt;p&gt;That is what GhostTile 2.0 is.&lt;/p&gt;
&lt;h2 id=&quot;why-it-became-a-rewrite&quot;&gt;Why It Became a Rewrite&lt;/h2&gt;
&lt;p&gt;Once I looked at it seriously, it was obvious this could not be a patch release.&lt;/p&gt;
&lt;p&gt;The old GhostTile had too much history, too many assumptions from an older version of macOS, and too many features built around workflows that no longer felt like the right center of the product.&lt;/p&gt;
&lt;p&gt;So I rewrote it with a few clear goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keep the core idea intact&lt;/li&gt;
&lt;li&gt;make the CLI the canonical automation surface&lt;/li&gt;
&lt;li&gt;bring back the highest-value parts of GhostTile&lt;/li&gt;
&lt;li&gt;stop pretending every old feature needed to survive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last point mattered a lot. I did not want an archaeology project. I wanted a version of GhostTile that matched modern macOS better, even if that meant leaving some older ideas behind.&lt;/p&gt;
&lt;h2 id=&quot;what-changed-in-the-new-ghosttile&quot;&gt;What Changed in the New GhostTile&lt;/h2&gt;
&lt;p&gt;The new GhostTile still does unusual things, but it is more deliberate about them.&lt;/p&gt;
&lt;p&gt;The core now revolves around preparing apps in a cleaner, more explicit way: staging &lt;code&gt;ghosthide.dylib&lt;/code&gt;, patching the target executable to load it, re-signing the app, and making restore paths clearer when something goes wrong.&lt;/p&gt;
&lt;p&gt;Architecturally, it is less of a pile of magic and more of a real system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a shared core for app resolution, preparation, restore, and launch behavior&lt;/li&gt;
&lt;li&gt;a CLI that acts as the backbone&lt;/li&gt;
&lt;li&gt;a macOS app built on top of that same core&lt;/li&gt;
&lt;li&gt;a simpler public repo that is easier to understand and easier to work on&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also brought back the parts that still feel essential to GhostTile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the menu bar workflow&lt;/li&gt;
&lt;li&gt;a proper managed-app UI&lt;/li&gt;
&lt;li&gt;Overview&lt;/li&gt;
&lt;li&gt;keyboard-first entry points&lt;/li&gt;
&lt;li&gt;notifications for hidden apps&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;why-make-it-public&quot;&gt;Why Make It Public&lt;/h2&gt;
&lt;p&gt;This is a new repo because it is a new chapter for the project.&lt;/p&gt;
&lt;p&gt;I am keeping the BSL license as it is, but more as a reminder than something I want to enforce aggressively. I am making the source available because I no longer feel a strong need to treat GhostTile like a closed commercial product. It is still unusual software, but it is less black-magic-heavy than the old version, and I think people may still want to use it.&lt;/p&gt;
&lt;p&gt;More importantly, making it public gives GhostTile a better future.&lt;/p&gt;
&lt;p&gt;The source is available. The architecture is cleaner. The repo is in better shape. And it is much easier now for contributors, or even coding agents, to work on it in a sane way.&lt;/p&gt;
&lt;p&gt;That feels like the right way to give GhostTile back to the community.&lt;/p&gt;
&lt;h2 id=&quot;what-this-means-to-me&quot;&gt;What This Means to Me&lt;/h2&gt;
&lt;p&gt;GhostTile 2.0 is not about trying to recreate the old business around it.&lt;/p&gt;
&lt;p&gt;It is about revisiting one of the projects I cared about most, under modern constraints, with better tools, and answering a question I had been avoiding for years.&lt;/p&gt;
&lt;p&gt;Was GhostTile only a product of its time, or was the idea still worth rebuilding?&lt;/p&gt;
&lt;p&gt;I think it was worth rebuilding.&lt;/p&gt;
&lt;p&gt;Not in exactly the same form. Not with exactly the same tricks. But still worth building.&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Do AI Agents Really Need New Wallets?</title><link>https://hewig.dev/posts/wallet-connect-skill/</link><guid isPermaLink="true">https://hewig.dev/posts/wallet-connect-skill/</guid><description>AI agents don&apos;t need new wallets. They need a protocol to talk to the ones you already trust — a WalletConnect skill that keeps every approval in your hands.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone’s building agent wallets — new custodial services, MPC shards, hosted wallets with AI spending policies. The pitch: &lt;em&gt;agents need their own wallets&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;We disagree. &lt;strong&gt;The infrastructure already exists.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;why-walletconnect&quot;&gt;Why WalletConnect?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://walletconnect.com&quot;&gt;WalletConnect&lt;/a&gt; connects dapps to wallets since 2018. Every major wallet supports it. So instead of building yet another agent wallet, we built a &lt;a href=&quot;https://github.com/hewigovens/wallet-connect-skill&quot;&gt;WalletConnect skill&lt;/a&gt; — a CLI tool that lets an AI agent pair with your existing wallet.&lt;/p&gt;
&lt;p&gt;One-time QR pairing. After that, the agent can request signatures and transactions — but &lt;strong&gt;every action requires your explicit approval in the wallet app&lt;/strong&gt;. The agent requests, you decide.&lt;/p&gt;
&lt;h2 id=&quot;the-cypherpunk-case&quot;&gt;The Cypherpunk Case&lt;/h2&gt;
&lt;p&gt;The “agent wallet” trend moves keys away from users. New custodians, new trust assumptions, new intermediaries. This breaks everything crypto was built on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self-custody&lt;/strong&gt; — Your keys, your coins. Not your keys, not your coins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don’t trust, verify&lt;/strong&gt; — Every transaction shows up in your wallet for review.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local-first&lt;/strong&gt; — Agent runs on your infrastructure, not a cloud service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy&lt;/strong&gt; — No third-party sees your transaction intent before you do.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Don’t trust, verify — including your AI agent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;build-the-future-dont-wait&quot;&gt;Build the Future, Don’t Wait&lt;/h2&gt;
&lt;p&gt;We’re in a transition period. You can wait for someone to build the perfect “agent wallet.” Or you can plug into what already works — battle-tested protocols, real wallets, real users — and start building today.&lt;/p&gt;
&lt;p&gt;The future isn’t built by waiting. It’s built by shipping.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a href=&quot;https://shiorix.com/blog/wallet-connect-skill.html&quot;&gt;Read the full post on shiorix.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;The &lt;a href=&quot;https://github.com/hewigovens/wallet-connect-skill&quot;&gt;wallet-connect-skill&lt;/a&gt; is open source. Built by &lt;a href=&quot;https://shiorix.com&quot;&gt;ShioriX&lt;/a&gt; (AI agent) and &lt;a href=&quot;https://hewig.dev&quot;&gt;Tao&lt;/a&gt; (human). We tested it with &lt;a href=&quot;https://gemwallet.com&quot;&gt;Gem Wallet&lt;/a&gt; — an open source mobile wallet that reminds me of the early days of Trust Wallet.&lt;/em&gt;&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Native Obsession</title><link>https://hewig.dev/posts/native-obsession/</link><guid isPermaLink="true">https://hewig.dev/posts/native-obsession/</guid><description>Native is more than a marketing term: what it means to treat the default environment as first-class, from hardware to cloud, crypto and AI — and what you gain.</description><pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“Native” is more than a marketing term. When you treat the default environment as a first-class citizen, you gain in performance, user experience, and the speed of evolution. This post, co-created with ChatGPT, examines native from its roots to its manifestations in cloud, crypto, and AI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;etymology&quot;&gt;Etymology&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Native&lt;/strong&gt; comes from the Latin &lt;em&gt;nativus&lt;/em&gt;, meaning “innate” or “born locally”.&lt;/li&gt;
&lt;li&gt;In 1964 IBM System/360 used &lt;strong&gt;native mode&lt;/strong&gt; to describe running CPU instructions directly instead of emulation. Since then, “native” has been synonymous with performance and authenticity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;three-layers-of-native-in-computing&quot;&gt;Three Layers of “Native” in Computing&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Native ✅&lt;/th&gt;
&lt;th&gt;Non Native ❌&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU / Code&lt;/td&gt;
&lt;td&gt;Compiled output is target ISA machine code; no interpreter or dynamic translation&lt;/td&gt;
&lt;td&gt;Maximum performance and efficiency&lt;/td&gt;
&lt;td&gt;C/C++ → x86‑64 ELF; Rust → ARM64 Mach‑O&lt;/td&gt;
&lt;td&gt;Java byte‑code (JVM); WebAssembly (needs runtime)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS / API&lt;/td&gt;
&lt;td&gt;Uses official platform ABI/SDK; zero bridging for system calls&lt;/td&gt;
&lt;td&gt;Full privileges and best power usage&lt;/td&gt;
&lt;td&gt;iOS Swift/Objective‑C; Windows UWP&lt;/td&gt;
&lt;td&gt;Electron (Node ↔ C++ bridge); React Native JS side&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI / UX&lt;/td&gt;
&lt;td&gt;Controls, interactions, and themes follow platform HIG&lt;/td&gt;
&lt;td&gt;Familiarity and full accessibility&lt;/td&gt;
&lt;td&gt;SwiftUI/AppKit controls&lt;/td&gt;
&lt;td&gt;Flutter custom widgets; WebView wrapping a webpage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;common-terms-and-their-contention&quot;&gt;Common Terms and Their Contention&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Usual Meaning&lt;/th&gt;
&lt;th&gt;Controversy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;native code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Machine code&lt;/td&gt;
&lt;td&gt;Does JIT output count? It still depends on the VM lifecycle.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;native app&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Official SDK + native UI&lt;/td&gt;
&lt;td&gt;Electron AOT to machine code performs fine, but the UI is not native.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;native interface (JNI/NDK)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bridge between managed and native code&lt;/td&gt;
&lt;td&gt;Only partly native; still affected by GC/VM.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;near-native / class-native&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Performance close to native&lt;/td&gt;
&lt;td&gt;Marketing buzzword without a clear standard.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;cloud-native-making-the-cloud-the-default-runtime&quot;&gt;Cloud Native: Making the Cloud the Default Runtime&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Native ✅&lt;/th&gt;
&lt;th&gt;Non-native ❌&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Application Architecture&lt;/td&gt;
&lt;td&gt;Microservices or functions; each service scales and fails independently&lt;/td&gt;
&lt;td&gt;Netflix microservices; Shopify decomposed its Rails monolith to run on Kubernetes&lt;/td&gt;
&lt;td&gt;Monolithic Spring Boot WAR directly on EC2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime Unit&lt;/td&gt;
&lt;td&gt;Containers or FaaS; start in seconds with declarative scheduling&lt;/td&gt;
&lt;td&gt;AWS Lambda; Knative services; Karpenter auto‑scaling containers&lt;/td&gt;
&lt;td&gt;Fixed-size VMs; manual Ansible setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure&lt;/td&gt;
&lt;td&gt;Immutable images + IaC; GitOps can rebuild in one click&lt;/td&gt;
&lt;td&gt;Terraform + ArgoCD; Pulumi as code&lt;/td&gt;
&lt;td&gt;Console click‑ops; SSH changes to config files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery &amp;amp; Ops&lt;/td&gt;
&lt;td&gt;CI/CD triggers deployment; observable feedback loop&lt;/td&gt;
&lt;td&gt;GitHub Actions → Argo Rollouts; Prometheus + Grafana alerts&lt;/td&gt;
&lt;td&gt;Weekend maintenance windows; &lt;code&gt;ssh tail&lt;/code&gt; logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resilience &amp;amp; Security&lt;/td&gt;
&lt;td&gt;Horizontal scaling + zero-trust policies&lt;/td&gt;
&lt;td&gt;GKE Autopilot + OPA; Istio mTLS&lt;/td&gt;
&lt;td&gt;Fixed capacity + firewall allowlists&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If any link in the chain still relies on manual steps or fixed resources, it is &lt;strong&gt;cloud-enabled&lt;/strong&gt; rather than &lt;strong&gt;cloud-native&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;crypto-native-on-chain-as-home&quot;&gt;Crypto Native: On-chain as Home&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Native ✅&lt;/th&gt;
&lt;th&gt;Non-native ❌&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Asset Native&lt;/td&gt;
&lt;td&gt;Value is denominated in on-chain tokens and settles on-chain&lt;/td&gt;
&lt;td&gt;ETH, DAI, Curve LP tokens&lt;/td&gt;
&lt;td&gt;RWA: tokenized stocks or T-Bills still rely on custody and legal clearing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logic Native&lt;/td&gt;
&lt;td&gt;Smart contracts transparently enforce business rules&lt;/td&gt;
&lt;td&gt;Uniswap v4; Aave V3; MakerDAO&lt;/td&gt;
&lt;td&gt;Binance server matching with batch settlements on chain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance Native&lt;/td&gt;
&lt;td&gt;DAO votes on-chain to adjust parameters or upgrade contracts&lt;/td&gt;
&lt;td&gt;ENS DAO, Nouns DAO&lt;/td&gt;
&lt;td&gt;Foundation votes offline with on-chain execution merely recorded&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;ai-native-model-driven-closed-loop-systems&quot;&gt;AI Native: Model-Driven Closed-Loop Systems&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Native ✅&lt;/th&gt;
&lt;th&gt;Non-native ❌&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data Loop&lt;/td&gt;
&lt;td&gt;Data → training → deployment cycle embedded in the product; model continuously improves&lt;/td&gt;
&lt;td&gt;Rewind Pendant personal context model; TikTok immediate feedback recommendation&lt;/td&gt;
&lt;td&gt;Exporting logs once a year for third-party offline training&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-first Experience&lt;/td&gt;
&lt;td&gt;Interaction centers on conversation, generation, or automatic suggestions&lt;/td&gt;
&lt;td&gt;ChatGPT; GitHub Copilot; Perplexity AI&lt;/td&gt;
&lt;td&gt;Office/Notion with an “AI summary” button slapped on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MLOps Lifecycle&lt;/td&gt;
&lt;td&gt;Automated monitoring, A/B testing, canary releases, drift detection&lt;/td&gt;
&lt;td&gt;Canva Magic Design with full pipeline observability; Uber Michelangelo&lt;/td&gt;
&lt;td&gt;Manually uploading &lt;code&gt;.pt&lt;/code&gt; files to S3 then restarting services&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&quot;why-the-fascination-with-native&quot;&gt;Why the Fascination with Native?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Long-term view&lt;/strong&gt;: Native architectures maximize underlying capabilities with fewer layers of glue, leading to lower run costs and a higher ceiling for evolution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mental simplicity&lt;/strong&gt;: The closer you are to the default, the fewer abstractions you maintain, lightening the cognitive load for teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A life metaphor&lt;/strong&gt;: Technology choices are like life plans—rather than patching and compromising, deeply couple with your environment and embrace the native habitat from the start.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Native obsession does not reject cross-platform or bridging solutions. It simply reminds us to ask, whenever we seek long-term compounding advantages: &lt;strong&gt;Can we make it native?&lt;/strong&gt;&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Crypto Security Practices Through the Years</title><link>https://hewig.dev/posts/crypto-security-practices/</link><guid isPermaLink="true">https://hewig.dev/posts/crypto-security-practices/</guid><description>Exploring the evolution of security practices in the crypto space, from password managers to advanced data protection.</description><pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Cover image credit to Coinbase Wallet&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In the realm of cryptocurrency, where the stakes are as high as the rewards, adopting robust security practices is not just advisable; it’s imperative. This post shares some of my personal experiences and practices over the years. It’s a layered approach from custodian / hot wallet to mobile wallets, hardware wallets / code storage.&lt;/p&gt;
&lt;h3 id=&quot;security-awareness-and-good-usage-habits&quot;&gt;Security Awareness and Good Usage Habits&lt;/h3&gt;
&lt;p&gt;The foundation of any secure system is the user’s awareness and habits. Understanding the threats and knowing the best practices in handling digital assets can significantly reduce the risk of loss. This includes recognizing phishing attempts, using secure connections, and being cautious about sharing personal information.&lt;/p&gt;
&lt;p&gt;You should put most of your funds in cold storage, and only use your hot wallets for daily transactions.&lt;/p&gt;
&lt;h3 id=&quot;using-password-managers&quot;&gt;Using Password Managers&lt;/h3&gt;
&lt;p&gt;As the number of online accounts we manage grows, so does the challenge of remembering complex passwords. Password managers not only help in generating and storing strong, unique passwords but also ensure that we’re not reusing passwords across different sites, a common vulnerability.&lt;/p&gt;
&lt;h3 id=&quot;hardware-security-keys&quot;&gt;Hardware Security Keys&lt;/h3&gt;
&lt;p&gt;For an added layer of security, hardware security keys (such as YubiKey) offer two-factor authentication that is resistant to phishing attacks. These devices provide a physical token that must be present to access sensitive accounts, making unauthorized access significantly more difficult.&lt;/p&gt;
&lt;h3 id=&quot;encrypted-usb-disks&quot;&gt;Encrypted USB Disks&lt;/h3&gt;
&lt;p&gt;Storing sensitive information or backup seeds on encrypted USB disks is a secure practice. Encryption ensures that even if the physical device is lost or stolen, the data remains inaccessible without the encryption key.&lt;/p&gt;
&lt;h3 id=&quot;physical-safes&quot;&gt;Physical Safes&lt;/h3&gt;
&lt;p&gt;For the ultimate in cold storage, physical safes can protect hardware wallets, paper wallets, and backup seeds from physical threats such as theft, fire, or water damage. Investing in a high-quality safe can provide peace of mind for those holding significant crypto assets.&lt;/p&gt;
&lt;p&gt;You can also rent a safe from a reputable service provider like traditional banks.&lt;/p&gt;
&lt;h3 id=&quot;shamir-backup&quot;&gt;Shamir Backup&lt;/h3&gt;
&lt;p&gt;Shamir’s Secret Sharing is a cryptographic method that splits a secret (like a private key) into multiple parts, requiring a certain number of parts to reconstruct the original secret. This method can protect against the loss of a single piece, as the secret is not compromised unless the required threshold of parts is met.&lt;/p&gt;
&lt;h3 id=&quot;advanced-data-protection-for-google-account-and-apple-id&quot;&gt;Advanced Data Protection for Google Account and Apple ID&lt;/h3&gt;
&lt;p&gt;Enabling advanced data protection features for accounts linked to your crypto activities (such as Google Account or Apple ID) can add an extra layer of security. These features often include advanced two-factor authentication methods, account recovery options, and alerts for suspicious activity.&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Broken Money: How Our Financial System is Failing Us</title><link>https://hewig.dev/posts/broken-money-overview/</link><guid isPermaLink="true">https://hewig.dev/posts/broken-money-overview/</guid><description>An insightful exploration of the history and development of money, the current failures of our financial system, and the rise of Bitcoin as open source money.</description><pubDate>Tue, 04 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;drafted by Copilot Workspace&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;https://x.com/LynAldenContact&quot;&gt;Lyn Alden&lt;/a&gt;’s latest book, “Broken Money: How Our Financial System is Failing Us,”  provides a comprehensive analysis of the origins, evolution, and current state of our financial system. Drawing on historical context, Alden explains how money has transformed from a simple medium of exchange to a complex system intertwined with global economies and politics.&lt;/p&gt;
&lt;p&gt;The book delves into the reasons behind the perceived failure of the current monetary system, highlighting issues such as inflation, debt cycles, and the loss of purchasing power. Alden argues that these problems stem from the system’s departure from money’s traditional roles, acting as both a commodity and a credit.&lt;/p&gt;
&lt;p&gt;One of the most compelling parts of “Broken Money” is its discussion on Bitcoin. Alden describes Bitcoin as the emergence of open source money, which embodies the properties of a perfect ledger: decentralized, transparent, and immutable. She posits that Bitcoin represents a return to the original principles of money, offering a potential solution to the systemic issues plaguing our financial system.&lt;/p&gt;
&lt;p&gt;For those interested in a distilled version of Alden’s arguments, a &lt;a href=&quot;https://www.youtube.com/watch?v=jk_HWmmwiAs&quot;&gt;YouTube video&lt;/a&gt; provides a concise overview of the book’s key points.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/images/broken-money-video.webp&quot; alt=&quot;Broken Money Video&quot;&gt;&lt;/p&gt;
&lt;p&gt;“Broken Money” is not just a critique of the current financial system but also a call to action. It encourages readers to rethink their understanding of money, its history, and its future. By exploring the rise of Bitcoin and the concept of money as a ledger with both commodity and credit properties, Alden offers a hopeful perspective on how we can address the financial system’s shortcomings.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.co.jp/Broken-Money-Financial-System-Failing/dp/B0CG8985FR&quot;&gt;Buy the book on Amazon&lt;/a&gt;&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>VMWare Fusion/Workstation Pro is free for personal use.</title><link>https://hewig.dev/posts/vm-fusion-free/</link><guid isPermaLink="true">https://hewig.dev/posts/vm-fusion-free/</guid><description>There aren&apos;t many free virtual machine options for Apple M series Macs, now you can use VMWare for free.</description><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;VMWare Fusion/Workstation Pro is free for personal use.&lt;/p&gt;
&lt;p&gt;There aren’t many free virtual machine options for Apple M series Macs, I was using &lt;a href=&quot;https://mac.getutm.app/&quot;&gt;UTM&lt;/a&gt; for a while, now check out this &lt;a href=&quot;%5Bhttps://www.vmware.com/news/2021/04/free-virtual-machines-for-apple-m-series-macs.html&quot;&gt;announcement&lt;/a&gt; from VMWare.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pro Apps are now Free for Personal Use and Licensed for Commercial Use&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I extracted the download links here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware%20Fusion&amp;amp;freeDownloads=true&quot;&gt;VMware Fusion Pro Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware%20Workstation%20Pro&amp;amp;freeDownloads=true&quot;&gt;VMware Workstation Pro Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All you need to do is to signup a Broadcom account and download the VMware Fusion Pro or Workstation Pro.&lt;/p&gt;
&lt;p&gt;After that you just choose the option:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/images/vmware-choose-free.png&quot; alt=&quot;Choose Personal Use&quot;&gt;&lt;/p&gt;
&lt;p&gt;In a few clicks you can download ARM Windows 11 and install it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/images/vmware-arm-windows.png&quot; alt=&quot;Download Arm Windows&quot;&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;div class=&quot;flex justify-center gap-2&quot;&gt;
&lt;img src=&quot;/assets/images/vmware-screen.webp&quot; alt=&quot;Windows 11 running in a VMware Fusion virtual machine&quot; class=&quot;w-[45%]&quot; loading=&quot;lazy&quot;/&gt;
&lt;img src=&quot;/assets/images/vmware-desktop.webp&quot; alt=&quot;Windows 11 desktop inside VMware Fusion&quot; class=&quot;w-[45%]&quot; loading=&quot;lazy&quot;/&gt;
&lt;/div&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Wallet Watch: Kraken Wallet</title><link>https://hewig.dev/posts/kraken-wallet/</link><guid isPermaLink="true">https://hewig.dev/posts/kraken-wallet/</guid><description>Kraken releases own crypto wallet, it&apos;s multi-chain, open source, builit on top of React Native and audited by Trail of Bits.</description><pubDate>Thu, 18 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kraken releases own crypto wallet, it’s multi-chain, open source, builit on top of React Native and audited by Trail of Bits.&lt;/p&gt;
&lt;p&gt;The code is available on &lt;a href=&quot;https://github.com/krakenfx/wallet&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Farewell to Trust Wallet</title><link>https://hewig.dev/posts/farewell-tw/</link><guid isPermaLink="true">https://hewig.dev/posts/farewell-tw/</guid><description>Saying goodbye to Trust Wallet after years as a core engineer — bittersweet reflections on serendipity, ikigai, and the start of a new journey.</description><pubDate>Fri, 12 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Saying goodbye is bittersweet, I hold dear the recollections and wisdom gleaned during my time at TW. The Japanese concept of &lt;code&gt;Ikigai&lt;/code&gt;, which means a reason for being, resonates profoundly with the state of fulfillment and purpose I experienced throughout these years.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://imageio.forbes.com/blogs-images/chrismyers/files/2018/02/ikigai-1.jpg?format=jpg&amp;amp;width=1440&quot; alt=&quot;Ikigai&quot;&gt;&lt;/p&gt;
&lt;p&gt;However, I have realized that our lives are punctuated by distinct periods, each with its own unique focus. While my health and well-being now demand a different pace, I will forever value the lessons I have learned from this experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The transformative power of building something from the ground up&lt;/li&gt;
&lt;li&gt;The resilience required to handle critical vulnerabilities&lt;/li&gt;
&lt;li&gt;The importance of witnessing and contributing to team growth&lt;/li&gt;
&lt;li&gt;The unwavering belief in our principles&lt;/li&gt;
&lt;li&gt;The comprehensive understanding of crypto across all stacks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am eternally grateful for the opportunity to have been part of this extraordinary team. Your support and camaraderie have made this journey unforgettable.&lt;/p&gt;
&lt;p&gt;As I venture into the unknown, I will carry with me the lessons and experiences that have shaped me here. I wish you all continued success and fulfillment in your endeavors.&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item><item><title>Move to Japan</title><link>https://hewig.dev/posts/move-to-japan/</link><guid isPermaLink="true">https://hewig.dev/posts/move-to-japan/</guid><description>Moving to Japan has been a transformative experience — a short note on the start of a new chapter in Tokyo, with cherry blossoms to mark the moment.</description><pubDate>Thu, 30 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The journey to Japan has been a transformative experience.&lt;/p&gt;
&lt;p&gt;title image credit to &lt;a href=&quot;https://unsplash.com/photos/pink-cherry-blossom-in-close-up-photography-iczsntduUyI&quot;&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
</content:encoded><author>hi@hewig.dev (Tao Xu)</author></item></channel></rss>