<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vincent Ping (English)</title><description>Vincent Ping&apos;s blog (English posts) — Tech, Health, and more.</description><link>https://vincentping.com/</link><atom:link href="https://vincentping.com/feeds/en.atom.xml" rel="self" type="application/atom+xml"/><item><title>The AI Business Through a Crypto Miner&apos;s Eyes</title><link>https://vincentping.com/en/ai-business-through-miner-eyes/</link><guid isPermaLink="true">https://vincentping.com/en/ai-business-through-miner-eyes/</guid><description>From chips to infrastructure to models to apps, tracing where the money flows in the AI industry pyramid — and asking when this business can sustain itself instead of surviving on round after round of investment.</description><pubDate>Thu, 25 Jun 2026 22:27:00 GMT</pubDate><content:encoded>&lt;p&gt;In the last piece, &lt;a href=&quot;/en/nvidia-through-miner-eyes&quot;&gt;NVIDIA Through a Crypto Miner’s Eyes&lt;/a&gt;, I looked at NVIDIA through the lens of my mining years and saw two things. One was its fragility: value is shifting from training to inference, from general-purpose chips to custom silicon, and the segment NVIDIA is counting on most is exactly the one being hollowed out from within — while the company itself has started investing in its own customers, adding leverage to its own demand. The other was more fundamental: even if NVIDIA is the hardest pick-and-shovel play of this AI wave, that doesn’t prove today’s price is rational. Whether a technology is real and whether its stock price makes sense are two different lines on two different charts.&lt;/p&gt;
&lt;p&gt;This time I want to look higher up the stack — not just NVIDIA, but the entire AI industry.&lt;/p&gt;
&lt;p&gt;The AI business is red-hot right now. The four major tech giants’ combined capital expenditure for 2026 tops $700 billion, up roughly 80% from last year. Bonds, venture rounds, and stock prices are all riding the same wave. The business is “running” — people are paying, the ChatGPTs of the world have real subscription revenue. But revenue is just revenue. I want to ask a simpler question: when does this business actually turn a profit? Meaning: out of all that money pouring in, is there any layer in this stack that can earn enough from end users to sustain itself, justify today’s valuations — and not just create the appearance of prosperity through round after round of investment?&lt;/p&gt;
&lt;h2 id=&quot;the-base-of-the-pyramid-chips&quot;&gt;The Base of the Pyramid: Chips&lt;/h2&gt;
&lt;p&gt;To see where the money actually lands, start with an honest admission: someone in this chain is making real money — right at the bottom, in the chip layer.&lt;/p&gt;
&lt;p&gt;NVIDIA, TSMC, and the high-bandwidth memory suppliers like SK Hynix — these are the people genuinely cashing in. Their shared advantage is simple: regardless of whether infrastructure, models, or applications above them ever turn a profit, as long as this arms race keeps going, everyone has to buy their chips, their fab capacity, their memory. The chip layer is the one tier that’s reliably profitable today. NVIDIA’s gross margins are absurdly high. The HBM memory suppliers are minting money on tight supply.&lt;/p&gt;
&lt;p&gt;But notice two things.&lt;/p&gt;
&lt;p&gt;First, this windfall isn’t as stable as it looks. On the NVIDIA side, I covered this in the last piece: inference — the segment NVIDIA has the biggest hopes for — is being eaten from the inside by custom chips. The bar for building an inference-specific chip isn’t that high, so the largest buyers are designing their own, and new entrants keep piling in. This territory will be hard to monopolize.&lt;/p&gt;
&lt;p&gt;On the memory side, it’s a different kind of instability. Memory is a notoriously cyclical industry. The script repeats every few years: supply gets tight, prices spike, capacity floods in, prices crash 50%, margins go negative. It’s played out this way for three decades.&lt;/p&gt;
&lt;p&gt;Here’s the interesting part. This round, as memory makers rake in record profits, they’re all saying the same thing: this time is different — AI demand is structural, it has “ended the cycle,” and prices can stay elevated indefinitely. But every time a bubble nears its peak, the loudest chorus is always “this time is different.” Cisco was justified at more than 200x earnings with the same line: “the old rules don’t apply anymore.” An industry that has convinced itself the cycle has been abolished is usually standing right on top of one.&lt;/p&gt;
&lt;p&gt;So the memory windfall, as I see it, is riding the cycle — not transcending it. When it turns is hard to say, but the louder “this time is different” gets, the closer the turn usually is.&lt;/p&gt;
&lt;p&gt;The second point matters more: the chip layer’s profits don’t appear out of thin air. They’re extracted from the layers above — infrastructure buys its GPUs, models pay infrastructure rent, applications foot the bill for all of it. The harder chips squeeze, the tighter every layer above gets squeezed.&lt;/p&gt;
&lt;p&gt;In other words, the chip layer’s profit is everyone else’s cost. So “someone is making money” doesn’t refute “this business isn’t really making money yet” — it &lt;em&gt;is&lt;/em&gt; the problem. All the money sinks to the very bottom, and the higher you go — the closer you get to where value is supposed to originate — the worse things look. And don’t forget: trace the chip layer’s revenue all the way up, and most of it isn’t coming from end users willingly paying for an AI product. It’s coming from the tech giants’ own reserves, their venture rounds, their debt — money they’re pouring into the arms race. The one layer that’s reliably profitable is profiting from &lt;em&gt;investment&lt;/em&gt;, not &lt;em&gt;revenue&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;infrastructure-a-hole-waiting-to-be-fed&quot;&gt;Infrastructure: A Hole Waiting to Be Fed&lt;/h2&gt;
&lt;p&gt;One layer up from chips sits infrastructure — compute, data centers. Wall Street’s dominant narrative right now is “sell picks and shovels at the gold mine”: nobody knows which model wins, but everyone needs compute, so investing in infrastructure is a sure thing.&lt;/p&gt;
&lt;p&gt;Infrastructure is actually the most worrying layer of all.&lt;/p&gt;
&lt;p&gt;I mentioned in the last piece that a mining rig is a cash-burning heavy asset — power bills, depreciation, maintenance, every single day. An AI data center is the same thing, only heavier. It has to buy the most expensive GPUs from the layer below — cards that get outclassed by the next generation in two or three years and get their lifespan cut short by 24/7 full-throttle operation. Then it has to keep buying electricity. Compute’s endgame is power. Every training run and every inference call burns watts. The big players are signing multi-decade, multi-billion-dollar power purchase agreements just to lock in stable supply. GPUs, power, cooling, maintenance — all cash out the door. The GPU bill flows down to the chip layer and becomes its monopoly profit. The rest — power, cooling, maintenance — is operating cost that vanishes the moment it’s spent. Bleeding from both ends.&lt;/p&gt;
&lt;p&gt;And infrastructure isn’t the destination. It produces compute, but someone has to use that compute &lt;em&gt;and actually make money from it&lt;/em&gt; before infrastructure can break even. Whether it recoups its investment depends entirely on whether the models and applications running on top of it can earn enough to feed it. The problem is right here: the money feeding infrastructure today is still mostly investment from above, not revenue earned from end users.&lt;/p&gt;
&lt;p&gt;How hungry is this hole? One number tells the story. Alphabet, Google’s parent company, had over $73 billion in free cash flow in 2025. According to analyst projections, AI infrastructure spending will drain that to roughly $8 billion in 2026. Most of the money went to buying GPUs, feeding this layer. Alphabet even started issuing bonds to fill the gap — a company that prints cash like a mint, forced to borrow because infrastructure is sucking it dry.&lt;/p&gt;
&lt;p&gt;And even the profits that show up on infrastructure’s books are inflated. These GPUs become obsolete in two or three years, but they’re often depreciated over five or six on the balance sheet — the gap quietly turns into better-looking profits on the income statement. This isn’t speculation: over the past two years, the major tech companies have been quietly stretching the depreciation schedules for AI chips to five or six years. Did the actual useful life of the hardware change? No. But the reported profits got a boost anyway. Even Michael Burry — “The Big Short” — has publicly questioned this practice: using extended depreciation to make profits look better than they are. In other words, infrastructure isn’t just bleeding cash constantly — even the presentable numbers on its financial statements are dressed up by accounting choices.&lt;/p&gt;
&lt;h2 id=&quot;models-and-applications-a-layer-that-hasnt-split-yet&quot;&gt;Models and Applications: A Layer That Hasn’t Split Yet&lt;/h2&gt;
&lt;p&gt;One more layer up, we get to the large language models running on all that compute. Will this be the layer that makes sustainable money? Intuitively, it should be — this entire AI breakthrough &lt;em&gt;is&lt;/em&gt; a breakthrough in large models.&lt;/p&gt;
&lt;p&gt;As things stand, large models will have a hard time earning monopoly profits.&lt;/p&gt;
&lt;p&gt;One reason is competition from Chinese models and the progress of open source. Companies like DeepSeek are producing near-frontier performance at a fraction of the cost — and open-sourcing it. Open-source models keep closing the gap on closed ones. You’re ahead this month; open source catches up by next month, and the distance keeps shrinking. When something of comparable quality is available for free, the logic of “my technology is superior, so I can charge a premium” stops working.&lt;/p&gt;
&lt;p&gt;Models have another trait: user loyalty is extremely low. Whichever one works better this month gets the traffic. Switching costs are essentially zero. This is nothing like Facebook or social networks — you can’t leave those because everyone you know is on them. Models aren’t sticky. People use whichever is best and jump without a second thought. Anthropic briefly overtaking OpenAI is a case in point.&lt;/p&gt;
&lt;p&gt;Look more closely and you find that the model layer isn’t just “not profitable” — it’s bleeding money at scale. Take OpenAI, the front-runner: annualized revenue for 2026 is somewhere north of $20 billion, which sounds impressive, until you see the projected $14 billion loss in the same year. For every dollar coming in, roughly 70 cents is going out the other side. Out of hundreds of millions of users, only a small fraction pay. Over 90% use it for free — and every free API call’s compute cost comes out of OpenAI’s pocket. The hole gets filled by round after round of fundraising. So the model layer works the same way as infrastructure: the money it burns is overwhelmingly investor capital, not revenue earned from end users. What it brings in from customers doesn’t cover the cost.&lt;/p&gt;
&lt;p&gt;What about applications? At the very top of the pyramid, there should be a layer where apps make money. But try to isolate that layer today and you’ll find it barely exists. The most usable applications — ChatGPT, Claude — are built by the model companies themselves. Models and applications haven’t separated yet. Beyond those, a wave of smaller players are building image generators, voice tools, video tools — but they’re either burning cash training their own models or relying on the big players’ APIs, and they can’t get costs down. The market looks busy on the surface, but it’s miles from ordinary people’s daily lives. Most people play with it and move on. Watch the media cycle: one model drops a new version, a crowd rushes over to test it; next week another company ships a new feature, and the crowd rushes over there. Any stickiness at all? No must-have use case, no moat, all of them surviving on transfusions.&lt;/p&gt;
&lt;p&gt;Truly independent third-party applications — ones not tethered to a big-model company — are still rare. That’s a sign the market is just getting started, nowhere near mature. A revolutionary technology breakthrough, without broad creative participation from society at large, relying on a handful of model companies tinkering by themselves — that’s not how killer apps get born.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260625/ai-profit-pyramid.jpg&quot; alt=&quot;AI industry pyramid: investment pours in from the top like milk, leaks down layer by layer — the chip layer overflows, infrastructure catches a little, models and applications are left almost dry&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-assumption-that-got-priced-in-as-fact&quot;&gt;The Assumption That Got Priced In as Fact&lt;/h2&gt;
&lt;p&gt;Connect all these layers and something interesting emerges.&lt;/p&gt;
&lt;p&gt;The staggering valuations across the AI industry today — triple-digit P/E ratios, market caps that have priced in years of future expectations — all of them rest on a single assumption: &lt;strong&gt;this business will eventually earn long-term, sustainable, monopoly-level profits.&lt;/strong&gt; Only monopoly profits can justify multiples like these.&lt;/p&gt;
&lt;p&gt;But walk through the pyramid layer by layer. The only tier actually earning monopoly profits is chips, at the very bottom — and those profits are extracted from every layer above, while the monopoly itself is likely to be eroded by custom inference chips. One layer up, infrastructure is a hole waiting to be fed. Above that, models can’t hold a monopoly and are hemorrhaging cash. And the topmost layer, where applications are supposed to make money? It hasn’t even emerged yet.&lt;/p&gt;
&lt;p&gt;The assumption underpinning every sky-high valuation — “this will produce long-term monopoly profits” — fails at every link. Each one is either already broken or far from proven.&lt;/p&gt;
&lt;p&gt;Here’s a simple way to sum up the present: &lt;strong&gt;the market has priced in something that is far from certain, as though it were already certain.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Google makes a good illustration. Google designs its own TPUs, builds its own data centers, runs Gemini, and stuffs AI into Search and every product it has — it’s a miniature of the entire AI supply chain in one company. Can that AI supply chain feed itself? No. It still survives on the cash its old search-advertising business earns every day, constantly transfusing it into the new one.&lt;/p&gt;
&lt;p&gt;What does that tell you? After all this money poured in, even Google hasn’t grown a single new, self-sustaining, must-have application out of AI. What about everyone else?&lt;/p&gt;
&lt;p&gt;The truth is, for this AI business to become self-sustaining at this stage, &lt;strong&gt;what’s missing isn’t just money. What’s most missing is time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For the AI industry to stand on its own, it needs the creative energy of society at large — widespread experimentation, from which a generation of killer apps can emerge and grow into genuine necessities, the kind people truly can’t live without. Only then can we say AI is a business with a future. Until that happens, AI is an infant that needs to be fed constantly.&lt;/p&gt;
&lt;p&gt;Growth takes time. Time to bring down the cost of the technology. Time to educate and onboard the public. Time for applications to seep into daily life and habits. You can’t rush it.&lt;/p&gt;
&lt;p&gt;But time is the one thing capital has the hardest time giving. Money can be deployed all at once. It can’t sit patiently while something grows for years.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Sequoia Capital, David Cahn, “AI’s $600B Question” (sustaining current capex requires ~$600B in annual revenue; December 2025 update notes end-user revenue still “tens of billions per year” while infrastructure investment is “trillions over the next five years”): &lt;a href=&quot;https://www.sequoiacap.com/article/ais-600b-question/&quot;&gt;https://www.sequoiacap.com/article/ais-600b-question/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CNBC: Major cloud companies’ combined 2026 capex ~$700B; Alphabet’s free cash flow projected to plunge ~90% from $73.3B (2025) to ~$8.2B; multiple bond issuances, long-term debt quadrupled in one year to $46.5B (Pivotal Research et al.): &lt;a href=&quot;https://www.cnbc.com/2026/02/06/google-microsoft-meta-amazon-ai-cash.html&quot;&gt;https://www.cnbc.com/2026/02/06/google-microsoft-meta-amazon-ai-cash.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CoinDesk: Public Bitcoin miners pivoting en masse to AI data centers, $70B+ in AI/HPC contracts signed, AI projected to account for ~70% of their revenue by end of 2026: &lt;a href=&quot;https://www.coindesk.com/markets/2026/03/27/bitcoin-miners-are-becoming-ai-companies-and-selling-their-btc-to-fund-the-transition&quot;&gt;https://www.coindesk.com/markets/2026/03/27/bitcoin-miners-are-becoming-ai-companies-and-selling-their-btc-to-fund-the-transition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On cloud companies extending server/GPU depreciation from 3–4 years to 5–6 years, inflating reported profits (including Michael Burry’s criticism): &lt;a href=&quot;https://www.cnbc.com/2025/11/14/ai-gpu-depreciation-coreweave-nvidia-michael-burry.html&quot;&gt;https://www.cnbc.com/2025/11/14/ai-gpu-depreciation-coreweave-nvidia-michael-burry.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Goldman Sachs on AI infrastructure spending scale and GPU depreciation schedules (“industry commonly depreciating over 4–6 years, mismatched with NVIDIA’s annual upgrade cadence”): &lt;a href=&quot;https://www.goldmansachs.com/insights/articles/tracking-trillions-the-assumptions-shaping-scale-of-the-ai-build-out&quot;&gt;https://www.goldmansachs.com/insights/articles/tracking-trillions-the-assumptions-shaping-scale-of-the-ai-build-out&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On Google TPU, Amazon Trainium/Inferentia, Microsoft Maia, Meta MTIA and custom inference chips eroding general-purpose GPU market share: &lt;a href=&quot;https://www.stanleylaman.com/signals-and-noise/gpus-how-long-do-they-really-last&quot;&gt;https://www.stanleylaman.com/signals-and-noise/gpus-how-long-do-they-really-last&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CNBC: Memory industry’s cyclical boom-bust history (Micron et al. — prices halved, margins turning negative, stocks dropping 50–60%), current “AI has ended the memory cycle” optimism, and peak-risk indicators; top three manufacturers control ~95% of global DRAM capacity: &lt;a href=&quot;https://www.cnbc.com/2026/05/25/memory-stocks-cyclical-boom-bust-samsung-sk-hynix.html&quot;&gt;https://www.cnbc.com/2026/05/25/memory-stocks-cyclical-boom-bust-samsung-sk-hynix.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;This article was written in June 2026. All figures are publicly available estimates as of that date; sources and methodologies vary, and numbers will change over time. Please verify against the latest primary disclosures before citing. This is personal observation and analysis, not investment advice.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Tech</category><category>AI</category><category>Investment</category><category>Bubble</category><category>NVIDIA</category><category>Infrastructure</category><category>Cryptocurrency</category></item><item><title>NVIDIA Through a Crypto Miner&apos;s Eyes</title><link>https://vincentping.com/en/nvidia-through-miner-eyes/</link><guid isPermaLink="true">https://vincentping.com/en/nvidia-through-miner-eyes/</guid><description>From the 2017 ETH mining boom to today&apos;s AI compute frenzy, a former crypto miner examines NVIDIA through hard-won experience — real vs. phantom demand, the general-purpose trap, circular investment, old players at a new table, and Cisco&apos;s 25-year mirror.</description><pubDate>Sun, 21 Jun 2026 15:24:00 GMT</pubDate><content:encoded>&lt;p&gt;For the past two years, watching people scramble for NVIDIA cards and the AI frenzy run hotter every quarter, I keep getting a strange flicker of recognition. I’ve seen this before. Roughly ten years ago, through my own stint as a miner, I lived the whole arc once.&lt;/p&gt;
&lt;p&gt;I’m not here to analyze NVIDIA. I want to talk about a few things those mining years left me — and the lens they hand me for looking at the world’s most valuable company.&lt;/p&gt;
&lt;p&gt;Up front: &lt;strong&gt;this is personal observation, not investment advice&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let me start with my rigs. I’ll keep it short — it’s only the setup.&lt;/p&gt;
&lt;h2 id=&quot;the-setup-my-mining-rigs&quot;&gt;The Setup: My Mining Rigs&lt;/h2&gt;
&lt;p&gt;At the peak of the 2017 ETH mining craze, GPUs weren’t just expensive — they were gone. China was still the world’s crypto mining capital back then, and every mining-capable card got swept up domestically first. I bought over twenty cards, mostly NVIDIA, a few AMD. Some I fought for locally; others I ordered from the UK through Amazon, shipped in batches over weeks. The last batch spent a month on a cargo ship before reaching Shanghai. Once I had them all, I assembled six-card rigs, set them up in my attic, and let them hum. A big standing fan pointed at them. In summer, I ran the air conditioning too. Electricity ran several thousand RMB a month. Sometimes the house circuit couldn’t handle it — tripped the breaker more than once.&lt;/p&gt;
&lt;p&gt;I put up with all of it because the money was genuinely good.&lt;/p&gt;
&lt;p&gt;I stopped because of the late-2018 ETH crash. As Ethereum’s price kept falling, there came a point where what I mined couldn’t even cover the power bill. Mining rigs aren’t like stocks — if a stock drops, you can hold and wait, it costs you nothing. A mining rig burns real money every single day it’s running. The moment revenue dips below cost, your money-making asset becomes a hole that bleeds cash. So I shut them down.&lt;/p&gt;
&lt;p&gt;I never sold a single one of those twenty-plus cards. Anyone in the GPU world knows mining cards are untouchable — running 24/7 destroys the VRAM, and nobody wants them. They sat in my attic for years until I moved house and finally scrapped them. From hunting them down across the globe to disposing of them as junk — about seven years.&lt;/p&gt;
&lt;p&gt;That’s the setup. I dwell on it because the GPUs that ate my power bill back then were mostly NVIDIA’s — and the GPUs eating the world’s data-center power today are still NVIDIA’s. Nearly a decade apart, same protagonist; only the label changed, from “gaming” to “AI.” Those years handed me a pair of glasses: with any capital-heavy asset, ask a few questions before anything else. Below, I aim those questions at NVIDIA.&lt;/p&gt;
&lt;h2 id=&quot;how-much-of-the-demand-is-real&quot;&gt;How Much of the Demand Is Real?&lt;/h2&gt;
&lt;p&gt;NVIDIA’s quarterly earnings are staggering right now — each one better than the last. But impressive earnings and real demand have never been the same thing. The mining boom taught me that.&lt;/p&gt;
&lt;p&gt;During that scramble, how many buyers were real gamers, and how many were miners like me? This isn’t hindsight. A big slice of NVIDIA’s revenue in those years was actually mining money — booked under gaming, and counted as genuine growth in gaming demand. In 2022 the SEC found that NVIDIA had failed to tell investors mining was a “significant” reason its gaming revenue surged across several quarters of fiscal 2018, and the company settled with a fine. A class action is still grinding on, alleging more than a billion dollars in mining-related sales were buried inside “gaming.” Then the mining crash hit, that demand evaporated overnight, and the earnings were exposed for what they were: inventory piled up, the stock halved. Demand that looked bottomless had a huge chunk that could vanish in an instant — and at the time almost no one, NVIDIA included, was willing to mark it off on its own.&lt;/p&gt;
&lt;p&gt;Today’s AI compute demand is the same setup. How much of it comes from applications that actually make money, and how much is pure arms race — “everyone else is buying, so I can’t afford not to”? On the books, both kinds look identical. You can only tell them apart after the tide goes out. And right now, a hard-to-ignore fact: end-user revenue across the entire AI industry is still in the tens of billions per year, while the big tech companies’ combined capital expenditure is heading toward $700 billion in 2026 and projected to break $1 trillion in 2027. Sequoia Capital did the math back in 2024: to justify spending at that scale, the industry needs $600 billion in annual revenue. Actual revenue is nowhere close. The enormous gap in between is held up by one thing — the not-yet-proven expectation that “AI will change the world.”&lt;/p&gt;
&lt;h2 id=&quot;versatility-moat-and-achilles-heel&quot;&gt;Versatility: Moat and Achilles’ Heel&lt;/h2&gt;
&lt;p&gt;When I was getting into mining, a friend advised me: buy GPUs — they’re insurance. If ETH goes south, you can mine other coins. Worst case, you can game on them. Sounded reasonable. Versatility. If one road closes, there’s always another. That’s the biggest seduction of a general-purpose tool: it makes you feel like you’ve kept a fallback open.&lt;/p&gt;
&lt;p&gt;But crypto mining’s history drew a very precise boundary around that “fallback.”&lt;/p&gt;
&lt;p&gt;Start with Bitcoin. BTC’s algorithm is extremely friendly to specialized chips (ASICs). Once ASICs arrived, GPUs got crushed — orders of magnitude difference. Same kilowatt-hour, but a dedicated mining machine produced hundreds to thousands of times more hashpower. GPUs were instantly unviable for BTC. Entire fleets got pushed out.&lt;/p&gt;
&lt;p&gt;Ethereum was different. ETH’s algorithm was deliberately designed to be memory-hard — specifically to resist ASICs. Result: even when ETH-specific mining machines eventually appeared, the memory bandwidth bottleneck kept their edge over GPUs modest. Not an order-of-magnitude gap. So GPUs survived on the ETH track — barely.&lt;/p&gt;
&lt;p&gt;Put the two threads together and you get the real origin of the 2017 ETH boom: GPU miners, driven out of Bitcoin by ASICs, poured into ETH — the one algorithm ASICs couldn’t crack. The refuge I ran into was itself a refugee crisis, made by an earlier round of “specialized crushing general-purpose.” My friend’s “you can always mine something else” did keep GPUs alive for a while — not because versatility is dependable, but because ETH’s algorithm happened to shrug ASICs off. Whether a fallback exists was never my call. It belonged to the other side’s chip, and to the algorithm.&lt;/p&gt;
&lt;p&gt;And once specialization is proven viable in a domain, it spreads and iterates terrifyingly fast. The moment an algorithm is shown to be ASIC-able, dedicated machines flood the market. They start on cheap mature process nodes to prove the concept, then sprint toward faster, more power-efficient versions — each generation more ruthless. “It’s not strong enough yet” is never a reason for comfort. It’s weak now precisely because it just started.&lt;/p&gt;
&lt;p&gt;Now put that lens on NVIDIA.&lt;/p&gt;
&lt;p&gt;NVIDIA’s cards are valuable precisely because they can compute anything. But over the past two years, AI’s center of gravity has been shifting from training to inference. You train a model once; after that, it gets called for inference by hundreds of millions of users, countless times a day. The two demand curves aren’t symmetric: training compute will eventually plateau as models grow and training cadence stabilizes. Inference is different — it scales with users. More users, more calls, no ceiling. Inference will inevitably overtake training as the bulk of AI compute.&lt;/p&gt;
&lt;p&gt;Inference is high-volume, repetitive, algorithm-fixed — exactly the scenario where specialized chips excel and general-purpose GPUs are at their weakest. So Google’s TPUs, Amazon, Microsoft, Meta — NVIDIA’s biggest customers — are all building chips purpose-built for inference.&lt;/p&gt;
&lt;p&gt;NVIDIA currently holds roughly 85–90% of the AI chip market. But that number hides a structural detail: it’s above 90% in training, only 60–70% in inference. Multiple analysts project its overall share could fall from ~90% to ~70% within two or three years, with inference being where the ground is lost. Custom chip shipment growth this year is nearly 3x that of general-purpose GPUs. Even NVIDIA is alarmed — it recently spent $20 billion acquiring Groq’s technology and team, a company specializing in high-speed inference chips. That move alone tells you: the fattest piece of its territory is being eyed.&lt;/p&gt;
&lt;p&gt;So the real question isn’t whether NVIDIA is versatile. It’s whether AI inference turns out to be more like BTC or more like ETH. Can specialized chips beat it by an order of magnitude and shove NVIDIA off the richest ground — or is there something about inference that lets general-purpose GPUs hold on a while longer? I don’t have the answer. What I do know is that every current trend points to custom silicon closing in on inference fast — and the part of NVIDIA’s future that carries the highest hopes is sitting right on top of inference.&lt;/p&gt;
&lt;h2 id=&quot;the-shovel-seller-digs-for-gold&quot;&gt;The Shovel-Seller Digs for Gold&lt;/h2&gt;
&lt;p&gt;There’s a business pattern in crypto I know well: mining hardware manufacturers almost always mine themselves. They sell machines and build their own mining farms — taking profit from both sides. And they mine with structural advantages: their machines cost less because they built them; each new chip generation gets run internally first to extract the cream of profits before “last-gen” models go on sale to outside miners. Same industry, vastly different economics — not competition on a level field, but an asymmetric advantage.&lt;/p&gt;
&lt;p&gt;NVIDIA is running the same playbook now. Only the scale and complexity dwarf anything those mining hardware companies ever attempted.&lt;/p&gt;
&lt;p&gt;Its private equity investments went from roughly $3.4 billion a year ago to over $22 billion at the start of this year — more than a 6x increase. The money flows into AI infrastructure up and down the stack, and a significant portion goes to companies that buy its chips, or buy them indirectly through cloud providers. The loop is simple: NVIDIA invests money so these companies can afford to buy its GPUs. Those companies rent out the compute, earn revenue, service their debt, and their valuations rise — which makes NVIDIA’s equity stakes appreciate. The money goes around in a circle and comes back to NVIDIA’s pocket. Analysts have been blunt about it: these deals “fit squarely within the circular investment theme.” Jensen Huang isn’t hiding it either — at a conference this year he said NVIDIA “has truly become an infrastructure company, not just a GPU company.” The goal is to control the entire stack: networking, compute, software, data centers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260621/circular-investment.jpg&quot; alt=&quot;NVIDIA’s circular investment loop&quot;&gt;&lt;/p&gt;
&lt;p&gt;And the data center companies it invests in enjoy the same advantages as those mining hardware manufacturers who ran their own farms: they’re first in the supply queue, they get the latest generation cards, and pricing and allocation decisions sit in NVIDIA’s hands. The shovel-seller doesn’t just want to dig for gold — it digs with better shovels than anyone else can buy.&lt;/p&gt;
&lt;p&gt;But the flip side of that advantage is risk. This entire structure is leveraged. Mining hardware companies building farms worked the same way — partnering with local operators in regions with cheap electricity, putting up machines while partners handled site, power, cooling, and connections. At the height of it, many were pledging their existing BTC — or even future BTC — as loan collateral. NVIDIA’s version: its investments lever up downstream companies’ debt, secured against future compute contracts. Add leverage, and the whole operation scales up and up.&lt;/p&gt;
&lt;p&gt;When the market rises, leverage makes the wins spectacular — GPU sales profit on one side, equity appreciation on the other. But the other edge of the blade is always there. If those multi-billion-dollar compute contracts can’t be fulfilled on schedule, the chain unwinds bottom-up: the debt-laden companies default first, then the $22 billion in equity on NVIDIA’s books shrinks with them. In good times, leverage amplifies profits. In bad times, it amplifies destruction.&lt;/p&gt;
&lt;h2 id=&quot;old-players-new-table&quot;&gt;Old Players, New Table&lt;/h2&gt;
&lt;p&gt;If everything above is just “similar shapes,” there’s one thing where even the people haven’t changed.&lt;/p&gt;
&lt;p&gt;Over the past two years, the crypto mining industry has collectively rebranded itself as AI data centers. Core Scientific, IREN, TeraWulf, Hut 8, Riot — these are all old mining names. Listed mining companies sold a record 30,000+ BTC in Q1 2026 — more than during the 2022 crash — liquidating core assets they’d been hoarding, just to fund their pivot into AI. Hut 8 said on its earnings call that Bitcoin is no longer the company’s “long-term strategic focus.”&lt;/p&gt;
&lt;p&gt;But look closely at how they pivoted, and not all of them were pushed out by mining. A good number saw it coming early and left on their own terms — selling their crypto while prices were still high, betting that AI was worth more than mining. And their exit, in turn, pushed crypto prices down, squeezing the holdouts into selling at a loss just to survive. The early movers were shrewd. The late movers were desperate. But they all ended up at the same new table.&lt;/p&gt;
&lt;p&gt;That rush toward whatever’s hottest — I know it too well. Every boom’s workforce comes from the last boom’s bust. This time, the bust is mining and the boom is AI. The table is new. The players are old. Even the urgency they bring is old.&lt;/p&gt;
&lt;p&gt;And full circle: these rebranded old players end up right back in front of NVIDIA. In that circular investment loop I described earlier, the data center companies NVIDIA funds include their names — IREN and others were mining farms just yesterday. NVIDIA sells them cards on one side and invests money so they buy more cards on the other. And they are a crowd that just arrived from the last gold rush, chasing the wave. Every link in this chain radiates the same familiar heat — the same people, rushing toward the hottest thing, again.&lt;/p&gt;
&lt;h2 id=&quot;a-pair-of-glasses&quot;&gt;A Pair of Glasses&lt;/h2&gt;
&lt;p&gt;I need to be clear about something, so I’m not misread: I am not bearish on AI.&lt;/p&gt;
&lt;p&gt;Quite the opposite. I believe AI is this generation’s Industrial Revolution — call it the Information Revolution if you prefer. But that’s a completely separate matter from everything I’ve said above.&lt;/p&gt;
&lt;p&gt;When the dot-com bubble burst in 2001, nobody could say the internet was useless. Email was in use then and is still in use today — never stopped for a single day. The internet genuinely changed the world. That didn’t stop the NASDAQ from collapsing that year, didn’t stop a wave of companies going to zero. The technology can be as real as it gets. The bubble pops anyway.&lt;/p&gt;
&lt;p&gt;Within that bubble, one company’s story reads like a mirror today — Cisco. It sold “internet plumbing”: routers, switches, the backbone hardware of the entire internet. The narrative back then was word-for-word identical to today’s: nobody knows who wins at the application layer, but everyone has to buy Cisco. It became the world’s most valuable company then. P/E ratio above 200. Then the bubble burst, and its stock dropped nearly 90%. Note: Cisco wasn’t a fraud. It never went bankrupt. It remained profitable. Networking equipment is still essential today. But even a company that solid — its stock took twenty-five years to climb back to its 2000 peak. Meaning: even if you correctly called “the internet will change the world” and you correctly picked the hardest shovel-seller, buying at a price set by mania meant waiting a quarter century to break even.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260621/cisco-stock-25-years.jpg&quot; alt=&quot;Cisco stock: 25 years to return to its peak&quot;&gt;&lt;/p&gt;
&lt;p&gt;Swap “Cisco” for “NVIDIA” and that sentence works almost unchanged. Same ecological niche — one sold network plumbing, the other sells compute. Same “nobody knows who wins, but everyone has to buy it” positioning. Same title of world’s most expensive company. I’m not saying NVIDIA is the next Cisco. History doesn’t repeat that simply. I’m saying: the Cisco mirror tells us that &lt;strong&gt;technology being real, the company being good, the product being essential — all three together still can’t prevent a price set by mania from spending two decades paying off&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Some will say that bubble at least left fiber optic cables in the ground, which got used later — a “good bubble.” Fair point, but it may not apply today. Even Morgan Stanley flagged the difference: fiber lasts twenty years. Today’s GPUs are obsolete in two or three. When the fiber bubble burst, the pipes stayed buried, waiting for the next wave. If these GPUs don’t earn back their cost within their lifespan, they leave nothing behind when they’re retired — just like my mining cards, which ended up sold as scrap for 2 RMB per kilogram.&lt;/p&gt;
&lt;p&gt;That’s what those mining years really left me: a pair of glasses that lets me hold two things at once — that a thing can be real, useful, even world-changing, and at the same time be inflated by frenzy into an enormous bubble. So “AI is a genuine revolution,” however true, says nothing about whether NVIDIA’s price today makes sense. The truth of a technology and the fate of its price have always run as two separate lines.&lt;/p&gt;
&lt;p&gt;The technology line, I can still read a bit. The price line — where it goes from here, I can’t call. I never called coin prices either; I didn’t step off at the top, the power bill pushed me off. Predicting was never my job. Setting down what I saw and what I made of it — that is.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This piece focused on NVIDIA alone. Where the profits actually land when all this money pours into AI — I follow that thread in the next one, &lt;a href=&quot;/en/ai-business-through-miner-eyes&quot;&gt;The AI Business Through a Crypto Miner’s Eyes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SEC 2022 settlement with NVIDIA for failing to disclose mining’s material impact on gaming revenue ($5.5M): &lt;a href=&quot;https://www.sec.gov/newsroom/press-releases/2022-79&quot;&gt;https://www.sec.gov/newsroom/press-releases/2022-79&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CNN reporting on the settlement (NVIDIA “omitted material information, was misleading”): &lt;a href=&quot;https://www.cnn.com/2022/05/06/tech/nvidia-sec-settlement-crypto-mining&quot;&gt;https://www.cnn.com/2022/05/06/tech/nvidia-sec-settlement-crypto-mining&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sequoia Capital’s David Cahn, “AI’s $600B Question” (estimating ~$600B annual revenue needed to justify current capex; his Dec 2025 update notes end-user revenue still “tens of billions/year” vs. “trillions in infra investment over five years”): &lt;a href=&quot;https://www.sequoiacap.com/article/ais-600b-question/&quot;&gt;https://www.sequoiacap.com/article/ais-600b-question/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TrendForce data on custom AI chip share erosion vs. general-purpose GPU and shipment growth differential: &lt;a href=&quot;https://www.spotedcrypto.com/hut-8-cipher-digital-ai-data-center-pivot-2026/&quot;&gt;https://www.spotedcrypto.com/hut-8-cipher-digital-ai-data-center-pivot-2026/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Morgan Stanley comparing this AI capex cycle to the telecom bubble, noting GPU depreciation (2–3 years) vs. fiber (20+ years): &lt;a href=&quot;https://medium.com/@truthbit.ai/the-2-trillion-question-can-ai-revenue-catch-up-to-capex-df8c5c3c52fb&quot;&gt;https://medium.com/@truthbit.ai/the-2-trillion-question-can-ai-revenue-catch-up-to-capex-df8c5c3c52fb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ethereum’s Ethash memory-hard anti-ASIC design; BTC ASIC’s orders-of-magnitude advantage over GPUs (Wikipedia): &lt;a href=&quot;https://en.wikipedia.org/wiki/Ethash&quot;&gt;https://en.wikipedia.org/wiki/Ethash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CNBC: NVIDIA’s private equity investments grew from ~$3.39B to ~$22.25B in one year, covering the full AI infrastructure stack including chip customers (analyst: “fits squarely within circular investment theme”; includes IREN 5GW infrastructure deal): &lt;a href=&quot;https://www.cnbc.com/2026/05/09/nvidia-embraces-ai-investor-topping-40-billion-in-equity-bets-2026.html&quot;&gt;https://www.cnbc.com/2026/05/09/nvidia-embraces-ai-investor-topping-40-billion-in-equity-bets-2026.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bloomberg: NVIDIA invested another $2B in CoreWeave in Jan 2026 (latest circular financing example): &lt;a href=&quot;https://www.bloomberg.com/news/articles/2026-01-26/nvidia-invests-another-2-billion-in-coreweave-offers-new-chip&quot;&gt;https://www.bloomberg.com/news/articles/2026-01-26/nvidia-invests-another-2-billion-in-coreweave-offers-new-chip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Jensen Huang at Computex 2026: “NVIDIA has truly become an infrastructure company, not just a GPU company,” emphasizing full-stack infrastructure strategy: &lt;a href=&quot;https://finance.yahoo.com/sectors/technology/articles/nvidia-become-infrastructure-company-jensen-003249580.html&quot;&gt;https://finance.yahoo.com/sectors/technology/articles/nvidia-become-infrastructure-company-jensen-003249580.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Written in June 2026. All figures are publicly available estimates at the time of writing. Different sources use different methodologies; numbers will change over time. Verify against the latest primary disclosures before citing.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Tech</category><category>NVIDIA</category><category>Cryptocurrency</category><category>Mining</category><category>AI</category><category>Investment</category><category>Bubble</category></item><item><title>Writing and Code: Same Leverage, Different Story</title><link>https://vincentping.com/en/writing-vs-code-leverage/</link><guid isPermaLink="true">https://vincentping.com/en/writing-vs-code-leverage/</guid><description>&quot;Naval Ravikant calls code and media the two forms of permissionless leverage. But writing and code differ fundamentally — writing changes minds, travels independently, never breaks, and ships once. Code depends on environments, rots over time, and demands ongoing maintenance. In the AI era, authentic writing is becoming scarcer and more valuable.&quot;</description><pubDate>Fri, 19 Jun 2026 10:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Naval Ravikant said it in &lt;em&gt;The Almanack of Naval Ravikant&lt;/em&gt;: “Fortunes require leverage.” The modern divide isn’t between the rich and the poor. It’s between people who use leverage and people who don’t.&lt;/p&gt;
&lt;p&gt;He broke leverage into four types: labor, capital, code, and media. Of these, he singled out code and media as the only two forms of &lt;strong&gt;permissionless leverage&lt;/strong&gt; — the only two that don’t require anyone’s permission to use. Labor needs people willing to work for you. Capital needs you to already have money, or someone willing to give you theirs. But code and media? One person, one laptop. Once it’s built, it works for you while you sleep.&lt;/p&gt;
&lt;p&gt;Naval’s “media” covers writing, podcasts, video — all of it. But today I want to focus on just one slice: &lt;strong&gt;writing, and how it compares to code as a form of leverage&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I largely agree with Naval’s framework, especially on code. I’ve made my living writing code for a long time now. I understand code leverage well: build something once, copy it at near-zero marginal cost. With web-based software, you don’t even need to distribute — people open a browser and it’s there. Software has direct utility, too. Plenty of people rarely read, but everyone uses software every day: WhatsApp, TikTok, Apple Pay, Amazon. From that angle, code has broader reach — users don’t need to want to read, they just need to use.&lt;/p&gt;
&lt;p&gt;But lately I’ve been rethinking the comparison. The more I look at it, the more I think that as two forms of permissionless leverage, writing and code are far more different than they first appear.&lt;/p&gt;
&lt;h2 id=&quot;what-writing-can-do&quot;&gt;What Writing Can Do&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;First, the nature of influence is different.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Code is a tool. A user opens an app, completes a task, closes it. Who coded it doesn’t matter. The user doesn’t know, doesn’t care, doesn’t need to. Code’s influence is functional — it changes what you can do, but it rarely changes how you think.&lt;/p&gt;
&lt;p&gt;Writing is different. A good piece of writing demands reading, sometimes re-reading. It requires understanding, internalization. Writing enters the reader’s mind. It changes how they think.&lt;/p&gt;
&lt;p&gt;A good essay might shift how you see something. It might open a window during a moment of confusion. It might make you smile in recognition: “Someone else thinks the way I do.” That kind of influence is cognitive. It’s a real connection between writer and reader.&lt;/p&gt;
&lt;p&gt;A software user finishes and moves on. A reader sometimes carries an essay for life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Second, the independence of distribution is different.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Code must live inside a complete runtime environment — operating system, dependencies, servers, databases. It can’t exist on its own. It needs infrastructure to run. That means code distribution has a high barrier: users need to install, configure, learn, sometimes need specific hardware and systems. This is partly why many developers prefer building standalone apps over web services — fewer dependencies.&lt;/p&gt;
&lt;p&gt;Writing is different. An essay is a complete, self-contained unit. One article, one link — it can go anywhere, and anyone who opens it can read it. No screen? Print it out. Carry it in your pocket. It doesn’t need a runtime, an installation, an account, or a manual. That lightness is something code rarely achieves. Naval’s “works for you while you sleep” is purer with writing — it truly exists independently, with no preconditions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Third, the shelf life is different.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Technology iterates fast. Code written ten years ago often can’t run today — not because anything is wrong with the code itself, but because the environment changed. The things it depends on moved too fast. I’ve seen plenty of projects like this: the code is fine, but a single deprecated dependency kills the whole system. Software has a peculiar kind of rot. It doesn’t change, but the world around it does, and that’s enough to break it.&lt;/p&gt;
&lt;p&gt;Writing ages differently. An essay can become outdated — the data, the references, the specific context it discusses may all expire over time. But it doesn’t “break.” An essay you wrote twenty years ago still opens, still reads, still looks the same. No one needs to maintain it for it to continue existing. And the best writing doesn’t go stale at all — explorations of worldview, ways of thinking, observations about the human condition. These sometimes hit harder decades or centuries later, strengthened by the weight of time.&lt;/p&gt;
&lt;p&gt;Paul Graham is a good example. Few people remember the software he wrote in the early days. But the essays he wrote in the same period — on startups, on thinking, on programming languages — are still circulating, still cited, still shaping each new generation of founders and engineers.&lt;/p&gt;
&lt;p&gt;The half-life of an essay’s influence is something most software products can’t match.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260619/writing-vs-code-infographic.jpg&quot; alt=&quot;Code vs Writing: Same Leverage, Different Story&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;writing-as-a-durable-asset&quot;&gt;Writing as a Durable Asset&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Once an essay is finished, it’s a complete product.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That sounds simple, but think about it — software rarely works this way. Launching an app isn’t the end. It’s just the beginning. Then comes user feedback, bug fixes, feature iterations, version upgrades, security patches. The developer is tied to the product. As long as the product lives, the developer has to keep up. In a real sense, this is a hidden long-term liability.&lt;/p&gt;
&lt;p&gt;Writing doesn’t have this problem. Publish it, and it’s done. Readers might comment. You can respond or not. The essay itself doesn’t need your continued investment to continue existing. That “ship it and it’s done” cleanliness is an outright luxury in software development.&lt;/p&gt;
&lt;p&gt;There’s another difference. &lt;strong&gt;When a user uses an app, they experience the product, not the person.&lt;/strong&gt; But when someone reads an essay, they experience the writer — how they think, what they’ve seen, where they’ve been. The author’s voice, judgment, even personality live in the words. Writing is a bridge between reader and writer. It builds something code never can: a relationship between people, not just between a person and a tool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Finally, there’s the meaning of recording.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I once wrote on my &lt;a href=&quot;/en/about&quot;&gt;About page&lt;/a&gt;: what isn’t recorded ceases to exist. In the context of code versus writing, that line takes on a specific meaning.&lt;/p&gt;
&lt;p&gt;Code records functionality — a solution to a problem. It’s useful, but it captures “how it was done,” not “who I am.” Writing records the person — my judgment at a particular point in time, the path I walked, what I saw, how I thought, my doubts and realizations. Over time, this accumulates into an archive that belongs only to you. Your own history.&lt;/p&gt;
&lt;h2 id=&quot;ai-is-changing-the-comparison&quot;&gt;AI Is Changing the Comparison&lt;/h2&gt;
&lt;p&gt;One more thing has been shifting in the last couple of years: the impact of AI.&lt;/p&gt;
&lt;p&gt;AI’s ability to write code is improving fast. Describe a feature clearly, and AI builds it — faster, better, every month. Code as leverage is becoming less scarce. That doesn’t mean code is unimportant. It means “being able to write code,” as a personal competitive edge, is diluting. When AI can produce code faster and better than most of us, where does my leverage as a coder come from?&lt;/p&gt;
&lt;p&gt;Writing is different. AI writing capabilities are also advancing rapidly, but there’s a fundamental distinction: AI-generated writing can be mass-produced, but it has no real experience, no authentic voice, no perspective that belongs to one specific person. AI can produce fluent, well-structured articles. But it can’t write “It started around 1999, writing weekly columns on internet marketing for a newspaper. I remember always procrastinating until the last minute” — or capture the texture behind that kind of detail.&lt;/p&gt;
&lt;p&gt;In an era flooded with AI-generated content, writing with real experience and an authentic voice is becoming scarcer. Which means it’s becoming more valuable.&lt;/p&gt;
&lt;p&gt;That’s roughly everything I can think of right now about how code and writing differ as leverage. I’ve been emphasizing writing’s strengths here, mostly because I come from the code side — I’ve written code for a living for years, and while I’ve occasionally jotted things down along the way, I’d never really stopped to think about how these two forms of leverage actually compare. This is a small summary of that recent reflection.&lt;/p&gt;
&lt;p&gt;One thing I want to emphasize: code and writing are absolutely the two forms of permissionless leverage of our era. Whenever possible, we should make full use of both.&lt;/p&gt;
&lt;p&gt;And to my fellow developers: whenever you get the chance, write things down. Because one day you’ll realize that your essays outlasted your code.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Thanks to everyone who read and left a comment — you’ve kept this piece growing. I’ll record some of the discussion that followed here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026-06-19, from V2EX user &lt;a href=&quot;https://www.v2ex.com/member/canyue7897&quot;&gt;canyue7897&lt;/a&gt; (&lt;a href=&quot;https://www.v2ex.com/t/1221589&quot;&gt;comment&lt;/a&gt;)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;He raised an angle I hadn’t considered. With code, he pointed out, you just need the interface defined — whatever happens inside, even if the AI produces garbage, it’ll probably still run. The compiler has your back. Writing has no such safety net. It demands logical coherence from start to finish, and the moment it breaks down or drifts off course, a reader can see it instantly.&lt;/p&gt;
&lt;p&gt;That got me to a more fundamental difference. Code chases correctness. It converges — give the same function to a hundred people and they’ll write roughly the same thing, all drifting toward the same optimal solution. So code can be “correct without personality.”&lt;/p&gt;
&lt;p&gt;Writing chases the opposite. It diverges — give the same topic to a hundred people and you get a hundred different pieces. The personality and the logic &lt;em&gt;are&lt;/em&gt; the value. Strip them out and nothing’s left.&lt;/p&gt;
&lt;p&gt;He made another point that hit home: a bad essay, you can spot in a glance. Bad code, as long as it runs, can fake its way through for now. A bad essay can’t — the moment the logic rings hollow or the feeling rings false, the reader feels it. Writing can’t hide how much thought went into it. It can’t bluff.&lt;/p&gt;
&lt;p&gt;Code can fall back on being correct without personality. Writing can’t. Which is probably why AI keeps getting smoother at mass-producing code, while writing with a real human behind it only gets harder for AI to replace.&lt;/p&gt;
</content:encoded><category>Others</category><category>Writing</category><category>Leverage</category><category>Naval Ravikant</category><category>Code</category><category>AI</category></item><item><title>AI Is Killing Jobs — and Creating New Ones</title><link>https://vincentping.com/en/ai-creating-new-jobs/</link><guid isPermaLink="true">https://vincentping.com/en/ai-creating-new-jobs/</guid><description>AI is eliminating information-processing roles while creating massive demand for people who can actually use it. Claude Corps — a $150M fellowship by Anthropic — is a case in point.</description><pubDate>Tue, 16 Jun 2026 20:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Over the past two years, layoff headlines from Big Tech have been relentless. Meta, Google, Amazon — the reason is always the same: AI. But while AI is eliminating jobs, it’s also generating demand for entirely new roles.&lt;/p&gt;
&lt;p&gt;It’s not just coders. Copywriters, translators, image editors, audio engineers, video producers — any information-processing job that can be broken into clear steps is getting automated fast.&lt;/p&gt;
&lt;p&gt;The flip side: AI lets one person do the work of an entire team, and that’s causing demand for information products to explode. A promo video that used to take a month now ships in a week — three of them. Output goes up, demand follows. The result is that &lt;strong&gt;people who can actually use AI are in short supply&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The shift isn’t “jobs are disappearing.” It’s “jobs are changing shape.” New roles aren’t organized by skill — writer, designer, editor — they’re organized by problem. Can you use AI to take this thing from start to finish?&lt;/p&gt;
&lt;p&gt;A few days ago I got an alumni email from Per Scholas about a program called Claude Corps. It caught my attention — this is exactly what these new roles look like in practice.&lt;/p&gt;
&lt;h2 id=&quot;what-is-claude-corps&quot;&gt;What Is Claude Corps?&lt;/h2&gt;
&lt;p&gt;A 12-month, fully paid fellowship that places young people inside nonprofits across the US for a year, helping these organizations actually adopt AI.&lt;/p&gt;
&lt;p&gt;The program is backed by Anthropic — the company behind Claude — with &lt;strong&gt;$150 million&lt;/strong&gt; in funding. On the same day the program launched, Anthropic CEO Dario Amodei published &lt;a href=&quot;https://www.anthropic.com/policy-on-the-ai-exponential&quot;&gt;&lt;em&gt;Policy on the AI Exponential&lt;/em&gt;&lt;/a&gt;, acknowledging that AI could cause mass job displacement and calling for AI companies to be taxed to fund universal basic income. Acknowledging the problem and investing real money to create new opportunities at the same time — that’s an interesting combination.&lt;/p&gt;
&lt;p&gt;Three organizations run it together: Anthropic provides funding and technology, CodePath (a nonprofit focused on tech education) handles recruiting, training, and employment, and Social Finance manages the program.&lt;/p&gt;
&lt;p&gt;The compensation is solid: &lt;strong&gt;$85,000/year&lt;/strong&gt;, full medical, dental, and vision insurance, 401(k), paid time off, and up to $2,500 in Claude API credits. These are full-time employees, not interns.&lt;/p&gt;
&lt;h2 id=&quot;who-can-apply&quot;&gt;Who Can Apply?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;18 or older&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Less than two years of full-time work experience&lt;/strong&gt; (hard requirement)&lt;/li&gt;
&lt;li&gt;US work authorization (no visa sponsorship; F-1 OPT does not qualify)&lt;/li&gt;
&lt;li&gt;Already using AI tools day-to-day&lt;/li&gt;
&lt;li&gt;Has taken real action for a community or cause&lt;/li&gt;
&lt;li&gt;Willing to relocate as needed (relocation assistance provided)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key point: &lt;strong&gt;no coding background required, no college degree required&lt;/strong&gt;. They’re looking for young people who actually use AI, learn fast, communicate well, and care about social issues.&lt;/p&gt;
&lt;h2 id=&quot;what-do-you-do-what-do-you-learn&quot;&gt;What Do You Do? What Do You Learn?&lt;/h2&gt;
&lt;p&gt;Fellows work full-time inside nonprofits for a year, across areas like education, public health, refugee services, food security, community development, and environmental protection. The specific project depends on the organization, but the core mission is the same: use AI to solve real problems — building automation workflows, developing internal tools, creating data dashboards, and helping staff understand and adopt AI.&lt;/p&gt;
&lt;p&gt;In short, it’s a joint training program where Anthropic funds and supports young people working on real projects inside real organizations.&lt;/p&gt;
&lt;p&gt;Training starts before day one: applicants complete two Anthropic online courses (AI Fluency + Claude 101). The first week is an in-person bootcamp in San Francisco. Throughout the fellowship, there’s about five hours of structured training per week. Fellows have an Anthropic technical contact and a CodePath mentor the entire time.&lt;/p&gt;
&lt;p&gt;After a year, you walk away with: hands-on AI project experience, a deliverable you owned end-to-end, Anthropic’s name on your resume, and a nationwide network of fellow alumni.&lt;/p&gt;
&lt;h2 id=&quot;application-process&quot;&gt;Application Process&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Submit an online application with two short-answer questions&lt;/li&gt;
&lt;li&gt;Complete two Anthropic online courses (AI Fluency + Claude 101)&lt;/li&gt;
&lt;li&gt;After passing initial review, complete a take-home skills assessment&lt;/li&gt;
&lt;li&gt;25-minute team interview&lt;/li&gt;
&lt;li&gt;Two final-round interviews&lt;/li&gt;
&lt;li&gt;Interview with 2–3 host organizations for mutual matching&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;timeline-and-locations&quot;&gt;Timeline and Locations&lt;/h2&gt;
&lt;p&gt;Cohort 1 plans to enroll about &lt;strong&gt;100 fellows&lt;/strong&gt;, starting &lt;strong&gt;October 19, 2026&lt;/strong&gt;. &lt;strong&gt;Application deadline: July 17, 2026&lt;/strong&gt;. The full program will run three cohorts totaling 1,000 fellows, with subsequent cohorts starting in January and August 2027.&lt;/p&gt;
&lt;p&gt;Confirmed host organizations span the country: Chicago (Braven), New York (International Rescue Committee), Oakland (Code for America), Boston (Year Up United), and more. Cohort 1 is fully in-person. Later cohorts will offer hybrid and remote options.&lt;/p&gt;
&lt;p&gt;Apply here: &lt;a href=&quot;https://www.anthropic.com/claude-corps&quot;&gt;https://www.anthropic.com/claude-corps&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;other-opportunities-like-this&quot;&gt;Other Opportunities Like This&lt;/h2&gt;
&lt;p&gt;Claude Corps isn’t an isolated case. The AI era is producing more programs like it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bolder Futures Fellowship&lt;/strong&gt;: Sponsored by Micron. Fully remote, 12 weeks, paid. Apply AI skills to nonprofit projects. Deadline: June 30, 2026. &lt;a href=&quot;https://bolderfutures.org/fellowships/ai-for-social-good/&quot;&gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anthropic Fellows Program&lt;/strong&gt;: Anthropic’s own 4-month, fully funded research fellowship focused on AI safety, governance, and ML research. For applicants with a research background. Rolling admissions. &lt;a href=&quot;https://www.anthropic.com/careers&quot;&gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cambridge ERA:AI Research Fellowship&lt;/strong&gt;: Based in Cambridge, UK. 10 weeks, fully funded (including housing and meals). Focused on AI safety and governance research. Starts July 6, 2026. &lt;a href=&quot;https://erafellowship.org/fellowship&quot;&gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI is replacing some jobs, but it’s also creating new demand. People who can put AI to real use will only become more valuable in the years ahead. Claude Corps is a structured starting point with real support and real projects — opportunities like this are rare.&lt;/p&gt;
&lt;p&gt;If you qualify, give it a serious look.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep learning AI, keep using it on real work — more opportunities like this are coming.&lt;/strong&gt;&lt;/p&gt;
</content:encoded><category>Tech</category><category>AI</category><category>Career</category><category>Anthropic</category><category>Fellowship</category><category>Nonprofit</category></item><item><title>From Smart Cards to AI Agents: Why I Built ASys</title><link>https://vincentping.com/en/why-i-built-asys/</link><guid isPermaLink="true">https://vincentping.com/en/why-i-built-asys/</guid><description>The origin story of ASys: from ISO 7816 smart card protocols to a binary system interface for AI Agents, and why AI ops needs a new communication standard.</description><pubDate>Sun, 07 Jun 2026 23:23:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ASys (Agentic System Interface) is an open-source system interface protocol designed specifically for AI Agents — binary instructions instead of text commands, persistent connections instead of per-request handshakes, instruction-level permissions instead of broad session-level access. This is where it came from and why it’s built the way it is.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Last year, using Claude to help write code felt like working with an intern with terrible memory. Context would drift as conversations grew longer. Restarting a session meant spending several rounds just getting back to where we were. Interfaces we’d agreed on earlier would be forgotten later.&lt;/p&gt;
&lt;p&gt;Early this year I tried again. I used Claude Code to build &lt;a href=&quot;/en/built-a-study-tool-while-preparing-for-comptia-a-plus-now-open-source&quot;&gt;ReCall&lt;/a&gt; — a PySide6 desktop flashcard app with config, UI, database, i18n, a theme system, tests, and Windows packaging. Not huge in scope, but it covered everything a real desktop app needs. The experience was completely different. I was still driving, but Claude could keep up. I’d say what needed doing, and it understood accurately. The code mostly worked. When it went off track, a correction pulled it back fast.&lt;/p&gt;
&lt;p&gt;The progress between those two experiences was obvious.&lt;/p&gt;
&lt;p&gt;Looking back, the domains where LLMs have actually shipped: text and code. Both share something: &lt;strong&gt;they’re tasks with a finish line&lt;/strong&gt; — write an article, ship a feature, done. Operations is different. Once a system is live, it’s real-time, stateful, and problems arrive without warning. There’s no “done.” It’s a different world entirely.&lt;/p&gt;
&lt;p&gt;I was studying for CompTIA A+ Core 2 at the time — reviewing during the day, writing code at night. One question kept turning over in my head: &lt;strong&gt;AI assistance for development is maturing fast. What about ops?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;when-the-operator-becomes-an-ai&quot;&gt;When the Operator Becomes an AI&lt;/h2&gt;
&lt;p&gt;Once AI accelerates development to an exponential pace, the accumulation of running systems accelerates with it. Every new service deployed is something that needs maintaining — indefinitely. Systems don’t disappear. Problems pile up. Complexity compounds. Think of it this way: all running systems together form a large lake; all systems under development are rivers flowing into it. As more rivers flow faster, the lake grows faster than anyone expects.&lt;/p&gt;
&lt;p&gt;But human ops scales linearly. One engineer can only maintain so many systems, no matter the tooling. Human ops can’t keep up with exponential accumulation. Looking ahead, only AI ops can take that on.&lt;/p&gt;
&lt;p&gt;For AI ops to work, though, one prerequisite needs solving: the interface.&lt;/p&gt;
&lt;p&gt;From POSIX to SSH, from Ansible to Kubernetes Operators — these tools are battle-tested, widely deployed, and will keep running for years. But every one of them was designed with a human operator in mind. When the operator becomes an AI Agent, several things are worth rethinking from scratch: text parsing fails whenever output format changes; session-level permissions carry serious risk for Agents that can hallucinate; frequent sampling makes per-connection handshakes a real bottleneck.&lt;/p&gt;
&lt;p&gt;Take the cost of “guessing text.” An Agent running &lt;code&gt;ps aux | grep nginx&lt;/code&gt; over SSH gets back free-form text — format varies by OS, locale, and tool version. The Agent has to parse it, and every regex that might break is a potential hallucination entry point. Call ASys’s &lt;code&gt;SYS_PROCS&lt;/code&gt; instead, and you get a fixed 44-byte binary frame: process count, top-5 PIDs, CPU%, memory%, status flags. Typed, unambiguous, identical on every node. Parsing is one line of &lt;code&gt;struct.unpack&lt;/code&gt;. This isn’t just a performance gain. It’s a reliability improvement of a different order. When parsing overhead approaches zero, the Agent can spend nearly all its compute on what actually matters: perception, reasoning, decision.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260607/text-vs-binary-frame.jpg&quot; alt=&quot;Text Parsing vs Binary Frames&quot;&gt;&lt;/p&gt;
&lt;p&gt;ASys isn’t trying to replace any of these tools. It’s exploring one question: if you designed an interface specifically for Agents, from first principles, what would it look like? One more option, that’s all.&lt;/p&gt;
&lt;p&gt;Open source: &lt;a href=&quot;https://github.com/vincentping/asys&quot;&gt;github.com/vincentping/asys&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;where-asys-came-from&quot;&gt;Where ASys Came From&lt;/h2&gt;
&lt;p&gt;From 2010 to 2016, I worked as a developer at a smart card company in Shanghai — SIM cards, bank cards, ID chip cards. The industry had one iron rule: &lt;strong&gt;once a card ships, you can’t take it back.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Smart card development meant writing the spec first, implementing against the spec, testing against the spec: functional tests, failure tests, edge case coverage. After internal testing came on-site testing at the telecom operator. Tedious, long-cycle, no shortcuts. Because if you found a bug after mass production, the recall cost was catastrophic. That’s a completely different philosophy from the move-fast-and-iterate approach of internet development. The deepest thing those six years left me wasn’t any particular technology. It was an instinct: &lt;strong&gt;thinking it through and writing it down matters more than starting fast.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Those six years also made me fluent in protocols. Especially &lt;strong&gt;ISO/IEC 7816&lt;/strong&gt; — the APDU system for smart card communication. A card reader sends binary instructions to a smart card and gets back a fixed-format response, never parsed by human eyes. &lt;code&gt;0x9000&lt;/code&gt; means success. &lt;code&gt;0x6982&lt;/code&gt; means security status not satisfied. Unchanged for decades. This protocol runs on tens of billions of devices — every bank chip card, every e-passport, every SIM card. Every edge case has been validated in the hardest production conditions possible.&lt;/p&gt;
&lt;p&gt;After 2016, I left smart cards and spent the next ten years building web systems of all shapes — frontend JS, backend Python/Go/Java, databases, servers, caches, clouds, various architectures.&lt;/p&gt;
&lt;p&gt;The past year I’ve been deep in AI, building projects with Claude. The more I understand it, the more convinced I am: &lt;strong&gt;AI will reshape humanity the way the Industrial Revolution did.&lt;/strong&gt; After finishing ReCall, I kept asking myself what to build next that was actually AI-related.&lt;/p&gt;
&lt;p&gt;One night in late February — studying late, just lay down, half-asleep — APDU from 7816 flashed into my head. Those elegantly simple binary instructions, fixed-format responses. I sat straight up. &lt;strong&gt;Why not use APDU-style communication between Agents and servers? Why keep human-readable text in the middle at all?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That same night I re-read the 7816 spec, wrote a rough document, got the initial idea down.&lt;/p&gt;
&lt;p&gt;Six years in smart cards, ten years in web systems, one-plus years in AI — take away any one of those, and that half-asleep connection doesn’t happen. Most of my old smart card colleagues are still in embedded systems. My web friends rarely have a background in low-level protocol design. Maybe this is what people mean when they say diversity drives emergence. Once the idea showed up, not trying it felt like a waste.&lt;/p&gt;
&lt;h2 id=&quot;three-months-zero-to-open-source&quot;&gt;Three Months, Zero to Open Source&lt;/h2&gt;
&lt;p&gt;Early March — A+ Core 2 still not done — I started anyway.&lt;/p&gt;
&lt;p&gt;Old habit from smart card days: write the docs first. Interface design philosophy, instruction set encoding, security model, frame format — think each piece through, write it up, realize mid-writing that I hadn’t thought it through, go back. March 16, v0.1 docs done. Same day, first PoC running between a Windows machine and a RHEL server: &lt;code&gt;SYS_HELLO&lt;/code&gt; instruction, response &lt;code&gt;0x9000 OK&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After the exam, progress accelerated. Docs and code alternated. Write code, find a design problem, go fix the spec, continue. Not throwing things away and starting over — just continuous refinement.&lt;/p&gt;
&lt;p&gt;A few decisions in this process each took time to work through.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transport: Why Not mTLS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Transport layer was the first thing that stopped me. Instinct said mTLS — common, widely used, easy to debug. But the more I thought about it, the more wrong it felt.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;asyd&lt;/code&gt; is ASys’s server-side daemon. One of its core use cases is staying reachable during OOM events, full disks, exactly the moments you need it most. If it goes silent because a certificate expired or the CA is unreachable at that moment — an interface that fails during emergencies is more dangerous than no interface at all. And OpenSSL is a heavyweight dependency. That directly conflicts with the zero-external-dependencies design goal.&lt;/p&gt;
&lt;p&gt;I went with &lt;strong&gt;Noise Protocol IK&lt;/strong&gt;, implemented on Monocypher. Pure cryptographic primitives, no certificate dependencies, roughly 2,000 lines of C, fully auditable, 1-RTT handshake. This choice lets &lt;code&gt;asyd&lt;/code&gt; ship as a single static binary. Deploy it on any POSIX environment with no runtime risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permission Model: Making Unauthorized Things Not Exist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The permission model took longer. The intuitive answer was an ACL table — configure which Agent can do what. Simple-looking, but not enough.&lt;/p&gt;
&lt;p&gt;Traditional security models (SSH, sudo) were designed for human operators. Human actions are exploratory; intent is hard to declare upfront. “Broad default permissions plus negative interception” fits how humans work. When the operator is an AI Agent, that assumption breaks. Agent behavior is programmatic. Permission boundaries can be declared precisely at deployment time.&lt;/p&gt;
&lt;p&gt;So ASys flips it. The system is dark to an Agent by default. Only instructions explicitly lit up in the &lt;strong&gt;Capability Map&lt;/strong&gt; “physically exist.” An unauthorized operation isn’t “you don’t have permission” — it’s “this instruction doesn’t exist in your world.” Unregistered instructions are dropped at the decode stage and never enter any execution path.&lt;/p&gt;
&lt;p&gt;Using a bitmap has an additional benefit: side-channel resistance. If you check permissions before checking existence, an attacker can infer which instructions “exist but are disabled” through tiny timing differences in responses. The Capability Map forces existence-check first. All unauthorized operations produce identical response timing. No information leakage surface.&lt;/p&gt;
&lt;p&gt;Least privilege isn’t a configuration option. It’s a physical property of the protocol.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260607/capability-map.jpg&quot; alt=&quot;Capability Map — Making Unauthorized Operations Non-Existent&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instruction Set: How to Organize 256 Slots&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The instruction set structure came together faster, because there was an obvious reference: APDU.&lt;/p&gt;
&lt;p&gt;Frame format borrowed directly: &lt;code&gt;[CLA][INS][P1][P2][Lc][Data][Le]&lt;/code&gt;. The high nibble of the INS byte serves as a logical page index — &lt;code&gt;0x00–0x0F&lt;/code&gt; is Core ISA, the baseline observation instructions, permanently locked; &lt;code&gt;0x20–0x8F&lt;/code&gt; is Standard ISA, seven functional groups; &lt;code&gt;0xC0–0xFF&lt;/code&gt; is Vendor Extensions, open for domain-specific customization.&lt;/p&gt;
&lt;p&gt;Any developer reading an instruction code knows the group at a glance. &lt;code&gt;0x2x&lt;/code&gt; is Process Control, no table lookup needed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260607/ins-byte-layout.jpg&quot; alt=&quot;ASys Instruction Set — INS Byte Layout&quot;&gt;&lt;/p&gt;
&lt;p&gt;More important is the semantic lock on Core ISA: once a core instruction ships, byte offsets never change. New fields can only be appended at the end. Agent parsing code written today is expected to work on some POSIX-compatible system fifty years from now. APDU covers tens of billions of devices precisely because of this long-termism. That’s what ASys is trying to inherit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Closing the OODA Loop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Late May, I ran a complete OODA loop demo on RHEL. The RHEL server ran a CPU hog to trigger a load spike. A Python client on Windows called &lt;code&gt;SYS_STATUS&lt;/code&gt; to detect the anomaly, &lt;code&gt;SYS_PROCS&lt;/code&gt; to locate the process, &lt;code&gt;PROC_THROTTLE&lt;/code&gt; to suppress it, then &lt;code&gt;SYS_STATUS&lt;/code&gt; again to confirm recovery. All &lt;code&gt;0x9000&lt;/code&gt; throughout.&lt;/p&gt;
&lt;p&gt;That moment didn’t feel like “it works.” It felt like “proof of concept confirmed.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260607/ooda-loop.jpg&quot; alt=&quot;OODA Loop — Agent Autonomous Operations Demo&quot;&gt;&lt;/p&gt;
&lt;p&gt;May 27, v0.3.0 released. Three months from idea to open source.&lt;/p&gt;
&lt;h2 id=&quot;where-things-stand&quot;&gt;Where Things Stand&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/vincentping/asys&quot;&gt;github.com/vincentping/asys&lt;/a&gt; is now at v0.3.1.&lt;/p&gt;
&lt;p&gt;Stable today: Core ISA’s four observation instructions (&lt;code&gt;SYS_CAPS&lt;/code&gt; / &lt;code&gt;SYS_HELLO&lt;/code&gt; / &lt;code&gt;SYS_STATUS&lt;/code&gt; / &lt;code&gt;SYS_PROCS&lt;/code&gt;), the first batch of Standard ISA control instructions (&lt;code&gt;PROC_THROTTLE&lt;/code&gt; / &lt;code&gt;SVC_RESTART&lt;/code&gt; / &lt;code&gt;TASK_QUERY&lt;/code&gt;), a complete Noise IK encrypted channel, public key whitelist authentication, and Epoch_ID replay protection.&lt;/p&gt;
&lt;p&gt;The most important next piece is the &lt;strong&gt;Python SDK&lt;/strong&gt; — targeting AI Agent developers, designed to drop into LangChain, AutoGen, and similar frameworks. The core design principle: Agents never touch the byte layer directly. They call structured interfaces (&lt;code&gt;sdk.proc_throttle(pid=1234, action=&quot;stop&quot;)&lt;/code&gt;); the SDK handles parameter validation and binary compilation. LLMs are inherently bad at byte offsets. Having an Agent assemble raw APDU parameters is the wrong abstraction.&lt;/p&gt;
&lt;p&gt;Still planned but not yet implemented: per-Agent fine-grained Capability Maps, an audit black box, chained transport. All in the spec. All coming.&lt;/p&gt;
&lt;h2 id=&quot;honest-thoughts&quot;&gt;Honest Thoughts&lt;/h2&gt;
&lt;p&gt;Building a protocol solo sounds a little crazy.&lt;/p&gt;
&lt;p&gt;Protocols are usually a committee job — they need multi-party consensus, large bodies of real-world input, exhaustive edge case analysis. But the idea showed up. So I tried. Working alone means decisions move fast. It also means no external pressure forces you to think every corner through. My response has been the same as in smart card days: docs before code. White paper, protocol spec, design notes, implementation notes — these took more time than the code itself. Because writing is the best thinking tool I have. If I can’t write it clearly, I don’t actually understand it. If I don’t understand it, the code will collapse eventually.&lt;/p&gt;
&lt;p&gt;ASys is an exploratory project. It’s not a replacement for SSH, not a competitor to Ansible. The gap it’s trying to fill: when an Agent needs to manipulate a system at high frequency, low latency, and with full auditability — while staying reachable in extreme conditions — there’s currently no purpose-built standard for that. Wrapping an LLM around SSH and calling it AI ops doesn’t solve the underlying problem.&lt;/p&gt;
&lt;p&gt;Whether that’s worth solving is for others to judge. But I think as Agents move further into production systems, the question “what should the interface between an Agent and a system actually look like?” deserves serious attention.&lt;/p&gt;
&lt;p&gt;If ASys starts that conversation, that’s enough.&lt;/p&gt;
&lt;p&gt;One last note: ASys listens on port &lt;strong&gt;7816&lt;/strong&gt; by default. A deliberate tribute to ISO/IEC 7816 — the standard number for smart card communication protocols. Every time I see that number, I’m back in front of a stack of specs from a decade ago: 7816, 14443, EMV, PBOC, UICC, RSA. The years I spent with my face in those pages.&lt;/p&gt;
</content:encoded><category>Tech</category><category>ASys</category><category>AI Agent</category><category>Binary Protocol</category><category>System Design</category><category>Smart Card</category><category>Open Source</category></item><item><title>Grant in Lincoln Park</title><link>https://vincentping.com/en/grant-in-lincoln-park/</link><guid isPermaLink="true">https://vincentping.com/en/grant-in-lincoln-park/</guid><description>Lincoln Park was once Chicago&apos;s municipal cemetery. The Grant statue has stood there for over a century — surviving a lightning strike in 1892 and a monuments review committee in 2020. Removing a bronze doesn&apos;t remove history; sometimes it only moves the problem out of sight. One person can be both an instrument of justice and an agent of injustice. The complexity doesn&apos;t resolve.</description><pubDate>Fri, 05 Jun 2026 22:55:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260605/cover.jpg&quot; alt=&quot;Lincoln Park&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; font-style: italic;&quot;&gt;Lincoln Park, Chicago skyline beyond.&lt;/p&gt;
&lt;p&gt;There were once more than thirty thousand bodies buried in Lincoln Park.&lt;/p&gt;
&lt;p&gt;This is not a metaphor. Before the 1850s, this stretch of lakefront green was Chicago’s municipal cemetery. The city expanded. The government decided to move the dead and return the land to the living. Most of the remains were relocated — but no one could guarantee the job was finished. The lawn where joggers run today, where families spread their blankets, where children chase squirrels — beneath it, some nineteenth-century Chicagoans may still be sleeping. Names unknown. The removal orders never found them.&lt;/p&gt;
&lt;p&gt;Lincoln was assassinated in 1865, and the park was renamed in his honor. Death and commemoration. This place never pretended that life was light.&lt;/p&gt;
&lt;p&gt;I came today specifically to see the Grant statue. I’d been cooped up for days wrestling with Claude Code — when it’s cooperative, it makes you want to write code forever; when it isn’t, it’s a wall you can’t get through. After enough of that, a statue seemed like a reasonable destination.&lt;/p&gt;
&lt;p&gt;General Ulysses Grant — who would become president — died in July 1885. In his final months he raced his throat cancer, driving himself to finish his memoirs, hoping to leave his wife some royalty money. Mark Twain published them, and the contract became one of the most lucrative in American publishing history. Grant didn’t live to see the check. Four days after he died, New York held his funeral. A million people lined the streets.&lt;/p&gt;
&lt;p&gt;Chicago decided to build him a monument. Within a month of the announcement, tens of thousands of dollars had come in from every corner of the city, from nearly one hundred thousand donors. When the statue was unveiled in 1891, roughly two hundred thousand people were there. Chicago’s total population was just over a million. One in five.&lt;/p&gt;
&lt;p&gt;I stood in front of the statue and looked up at how Grant sat his horse. No triumphant gesture. No arm sweeping toward the horizon. The horse’s front hooves stayed on the ground. He simply sat there, expression composed, like a man who had nothing left to prove.&lt;/p&gt;
&lt;p&gt;The year after the statue was completed — 1892 — lightning struck. It hit near the arch at the base. Three people sheltering there were killed instantly. The bronze was untouched.&lt;/p&gt;
&lt;p&gt;I don’t know what to do with that detail. But it stays with me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260605/grant1.jpg&quot; alt=&quot;Grant Statue&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; font-style: italic;&quot;&gt;Grant Statue&lt;/p&gt;
&lt;p&gt;There is another structure in the park worth mentioning, though most visitors walk past it without a second glance. The Carlson Cottage, built in 1888, was originally a public restroom — segregated by sex, brick and stone, designed by the architect Joseph Lyman Silsbee. Silsbee’s office once employed a young apprentice named Frank Lloyd Wright, who went on to become one of the most consequential architects of the twentieth century.&lt;/p&gt;
&lt;p&gt;A public toilet. From the office that shaped a century of building.&lt;/p&gt;
&lt;p&gt;In 2008, the federal government funded the cottage’s restoration through the Save America’s Treasures program. Bureaucracies occasionally do surprising things — they decided to restore an 1888 outhouse because it was history. That logic, I accept.&lt;/p&gt;
&lt;p&gt;But once restored, it was no longer used as a restroom. It became an event space, and most days it sits quietly locked. The history was preserved; the function died. It’s a strange outcome — like maintaining a body in perfect condition after removing everything it was ever for.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260605/carlson_cottage.jpg&quot; alt=&quot;Carlson Cottage&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; font-style: italic;&quot;&gt;Carlson Cottage&lt;/p&gt;
&lt;p&gt;In 2020, Mayor Lori Lightfoot, amid a nationwide reckoning with public monuments, formed the Chicago Monuments Project. The proximate cause was the Columbus statue — toppled by protesters, or quietly removed by the city before protesters could topple it, depending on which account you read. The committee’s mandate was to review the city’s monuments and public art: what should stay, what should go, whose stories had been left out of the official memory.&lt;/p&gt;
&lt;p&gt;There is nothing inherently wrong with this. A city periodically examining what it has chosen to memorialize is ordinary civic practice. Public monuments are not neutral. Each one is a decision, made by a particular group of people in a particular era, telling everyone who passes: &lt;em&gt;this person, this event, deserves to be remembered.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Grant’s statue was on the review list.&lt;/p&gt;
&lt;p&gt;The argument against him: he had signed policies that were unjust to Native Americans, and the westward expansion of his presidency brought forced removal and cultural destruction to tribal nations. These are facts.&lt;/p&gt;
&lt;p&gt;But Grant was also the Union general who defeated the Confederacy — the man whose military pressure compelled Lee’s surrender at Appomattox, the moment slavery’s military defense collapsed. During Reconstruction, he was among the rare presidents who genuinely tried to protect the civil rights of Black Americans, deploying federal force against the Ku Klux Klan. The memoirs he finished while racing toward death were later called by Hemingway the best account of war he had ever read.&lt;/p&gt;
&lt;p&gt;One person can be both of these things at once: an instrument of one justice, and an agent of another injustice.&lt;/p&gt;
&lt;p&gt;I have no objection to the Monuments Project’s existence. Scrutinizing history is not the same as erasing it. But I’ve always had a fundamental skepticism toward the logic that removing a bronze statue can repair a historical wound.&lt;/p&gt;
&lt;p&gt;The thirty thousand bodies once buried under Lincoln Park did not change their position when the park changed its name. Removing a monument does not remove history. Sometimes it only creates a feeling of cleanliness — the problem seems handled, when really it has simply moved out of sight.&lt;/p&gt;
&lt;p&gt;The Grant statue was ultimately not removed. The report recommended keeping it, with an interpretive panel added to provide fuller historical context. That seems like the right call, or close enough to it — not because it satisfies everyone, but because it acknowledges that historical complexity cannot be resolved by a piece of bronze, or by taking a piece of bronze away. For what it’s worth, I walked around the base of that arch today, all the way around, and found no interpretive panel. Perhaps it’s still being made.&lt;/p&gt;
&lt;p&gt;I sat near the statue for a long time. Wind off Lake Michigan. A man walking his dog. Kids on bikes. In the distance, by the smaller pond, someone was getting married. Laughter carried over.&lt;/p&gt;
&lt;p&gt;Grant sat on his horse, Lake Michigan to his left, facing the city to the south. Some say the orientation is deliberate — the general keeping watch over the former Confederacy, a symbol of union and victory. But the expression I described earlier as composed — I want to change that word now. It’s the tiredness of someone who has seen too much. Not a defeated tiredness, but the kind that no longer needs to explain itself to anyone.&lt;/p&gt;
&lt;p&gt;The lightning of 1892 killed three people. It didn’t touch him.&lt;/p&gt;
&lt;p&gt;I don’t know what that means. But when something a city built in one month with money from a hundred thousand people is still standing a hundred and thirty years later — I’m willing to sit beside it a while longer.&lt;/p&gt;
&lt;p&gt;There may still be some nineteenth-century Chicagoans underfoot who were never moved. That doesn’t seem like a bad arrangement.&lt;/p&gt;
&lt;p&gt;The dead and the bronze are more patient than we tend to think.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260605/grant2.jpg&quot; alt=&quot;Grant Statue&quot;&gt;&lt;/p&gt;
</content:encoded><category>Others</category><category>Chicago</category><category>Lincoln Park</category><category>history</category><category>public memory</category><category>monuments</category><category>essay</category></item><item><title>Plywood Over Bed Slats: A Better Alternative to Bunkie Boards</title><link>https://vincentping.com/en/plywood-bed-slats-bunkie-board-alternative/</link><guid isPermaLink="true">https://vincentping.com/en/plywood-bed-slats-bunkie-board-alternative/</guid><description>Bed frame slats spaced 3.5 inches apart — exceeding Simmons warranty requirements. After ruling out a Box Spring, Bunkie Board, and Foundation one by one, I solved the problem with two sheets of plywood from Home Depot for $108. Includes cut dimensions, kerf details, and exactly what to say at the cutting station.</description><pubDate>Mon, 01 Jun 2026 11:40:00 GMT</pubDate><content:encoded>&lt;p&gt;I needed a new bed after moving.&lt;/p&gt;
&lt;p&gt;For the frame, I ordered a King Size solid wood bed frame with storage drawers from Bob’s Discount Furniture.&lt;/p&gt;
&lt;p&gt;The mattress came from Wayfair — a Simmons Beautyrest Silver BRS900, Extra Firm, with individually pocketed coil springs. Fun fact: the Simmons brand name is the origin of “席梦思” (Xí Mèng Sī), the generic term Chinese consumers use for spring mattresses.&lt;/p&gt;
&lt;p&gt;I like a firm feel — solid, supportive under the back, no sinking when you roll over. Extra Firm was exactly what I was after.&lt;/p&gt;
&lt;p&gt;When the delivery crew from Bob’s brought the frame in, both white-glove installers said the same thing unprompted: “This bed is really heavy.” Once it was set up, I could confirm — solid and sturdy.&lt;/p&gt;
&lt;p&gt;But the slats on top of the frame were spaced too far apart. I measured: each slat was 2.5 inches wide and 0.6 inches thick, with gaps of nearly 3.5 inches between them.&lt;/p&gt;
&lt;p&gt;Putting the mattress directly on that wasn’t going to work. A pocketed coil mattress has each spring individually wrapped in fabric — there’s no interconnecting steel wire forming a grid. Based on the spring count for my model, each coil pocket is roughly 2.1 inches in diameter. With gaps that wide, every spring would be affected:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Springs sitting directly over a gap lose their support entirely, sag downward, and stop doing their job.&lt;/li&gt;
&lt;li&gt;Springs partially over a gap bear uneven loads and are prone to twisting out of shape.&lt;/li&gt;
&lt;li&gt;Even springs that land squarely on a slat end up carrying disproportionate weight, causing them to wear out and lose tension faster.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This doesn’t just mean an uneven sleeping surface and internal damage over time — Simmons will also void the warranty outright if the gap exceeds 2 inches. Their official Warranty Instructions are explicit: gaps between slats must not exceed 2 inches.&lt;/p&gt;
&lt;p&gt;So what to do?&lt;/p&gt;
&lt;h2 id=&quot;american-beds-vs-chinese-beds&quot;&gt;American Beds vs. Chinese Beds&lt;/h2&gt;
&lt;p&gt;Back in China, mattress support was never something I thought about.&lt;/p&gt;
&lt;p&gt;Beds there were simple: a frame with a solid wood board on top, a cotton mattress pad, a sheet, done. I also slept on palm fiber mattresses for a while — rock hard. The elders always said that was good for your bones and spine. These days everyone uses mattresses, but the solid board base is still standard. Support was never a problem; it never crossed anyone’s mind.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260601/chinese_bed_system.jpg&quot; alt=&quot;How Chinese bed frames are typically set up&quot;&gt;&lt;/p&gt;
&lt;p&gt;Coming to America, I found things work completely differently. The standard American bed has three layers: frame + Box Spring + mattress.&lt;/p&gt;
&lt;p&gt;The frame itself is just a border with legs and a few sparse slats running across.&lt;/p&gt;
&lt;p&gt;Because that alone can’t support a mattress properly, a Box Spring goes in between. Originally, a box spring was literally a box filled with springs — essentially a simple spring mattress in a box shape, designed to add bounce and raise the overall bed height. Today, nearly all box springs have no springs at all. They’ve been replaced by a layer of closely spaced slats on top of a wooden frame, wrapped in the familiar knit fabric — but still built in the same boxy shape.&lt;/p&gt;
&lt;p&gt;That’s why American beds tend to sit so high — raising the height was part of the box spring’s original purpose.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260601/us_bed_system.jpg&quot; alt=&quot;How American bed frames are typically set up&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-options&quot;&gt;The Options&lt;/h2&gt;
&lt;p&gt;So what were my choices?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Box Spring — ruled out&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;My first thought was to just add a box spring. But the slats inside modern box springs are spaced roughly 2–3 inches apart as well, so adding one would accomplish nothing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Bunkie Board — ruled out&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I asked an AI for suggestions, and it recommended a Bunkie Board.&lt;/p&gt;
&lt;p&gt;After researching extensively, I could see the idea: it’s designed to go between the frame and mattress to solve exactly this kind of support problem. But after looking at a lot of products on the market, I wasn’t convinced.&lt;/p&gt;
&lt;p&gt;Bunkie boards come in two types. The first uses internal slats with a fabric cover — the slats are a bit closer together (1–2 inches), slightly better than the bed frame, but still gapped. The second type uses a solid panel inside with a fabric cover.&lt;/p&gt;
&lt;p&gt;The solid panel type sounds right, but on closer inspection the materials are almost universally particleboard or MDF — both prone to off-gassing, moisture warping, and a lifespan of only 5–10 years.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Foundation — ruled out&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The AI also suggested a foundation. Looking at what’s actually sold, a foundation is essentially the same thing as a modern springless box spring: same height, fabric-wrapped exterior, wooden frame inside, no springs, slats spaced about 1–2 inches apart — and priced at $200–$400. Pass.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Adding more slats — ruled out&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This was the DIY angle: add more slats between the existing ones to bring the spacing down to 1–2 inches. Theoretically workable, but a King Size frame has an interior width of 76 inches, which isn’t a standard dimension, so the slats would need custom cutting. Then each one would have to be installed and spaced evenly. More effort than it’s worth, with too much room for error.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;The actual solution: plywood&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cut a few sheets of plywood to the bed’s dimensions, lay them flat on the existing slats, put the mattress on top. Solid, 100% even support. It’s the same logic as the traditional Chinese bed board — just a different material.&lt;/p&gt;
&lt;h2 id=&quot;at-home-depot--what-to-say&quot;&gt;At Home Depot — What to Say&lt;/h2&gt;
&lt;p&gt;I went to the Home Depot on North Ave in Chicago. Weekdays between 10am and 2pm are the best time — the cutting station is least busy and wait times are short.&lt;/p&gt;
&lt;p&gt;I picked up two sheets of SANDEPLY 12mm Sande Plywood, 1/2 in. x 4 ft. x 8 ft., sanded surface finish, at $53.73 each. Two sheets for a King Size comes to $107.46. Home Depot cuts for free. I also grabbed a roll of black Duct Tape to hold the panels together.&lt;/p&gt;
&lt;p&gt;My frame has 13 slats spaced fairly evenly, and with a 3.5-inch span between them, 1/2-inch plywood is thick enough — no sagging.&lt;/p&gt;
&lt;p&gt;Load the sheets onto a flat cart and wheel them to the cutting station. Here’s what to say:&lt;/p&gt;
&lt;p&gt;Please cut these TWO 4x8 sheets into FOUR pieces total. Each piece should be 38 inches by 40 inches. Please account for the kerf so the final combined width equals 76 inches. Discard the remaining scraps.&lt;/p&gt;
&lt;p&gt;One important detail: always ask them to account for the kerf. The saw blade itself has thickness — each cut removes about 1/8 inch of material. If you ignore this, the two panels won’t quite add up to 76 inches when placed side by side. Let the staff handle the math; they do this all day and will get it right.&lt;/p&gt;
&lt;p&gt;A King Size is 76 × 80 inches. Two 4×8 sheets, each cut into two 38×40-inch pieces, gives you four panels total.&lt;/p&gt;
&lt;h2 id=&quot;transport-and-installation&quot;&gt;Transport and Installation&lt;/h2&gt;
&lt;p&gt;The reason to cut into four pieces rather than two 38×80-inch panels is simple: my car isn’t big enough for an 80-inch panel. With four pieces, I folded down the rear seats and stacked them flat in the back. Each panel is 38×40 inches — about a meter long — so nothing pushed against the front passenger seat or blocked the right mirror. Perfectly manageable. If you have a pickup truck, two panels are enough.&lt;/p&gt;
&lt;p&gt;Pad the edges with an old blanket to avoid scratching the car’s interior trim.&lt;/p&gt;
&lt;p&gt;Back home, I rinsed the panels off and left them outside to air out for a bit — plywood does have a smell.&lt;/p&gt;
&lt;p&gt;Installation was fast: starting from the headboard, lay all four panels flat, working toward the foot. They’ll naturally leave about a 1-inch gap around the perimeter, which is actually good for airflow. Run Duct Tape over the cross-shaped seam in the center to keep the panels from shifting.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260601/my_bed.jpg&quot; alt=&quot;The finished setup&quot;&gt;&lt;/p&gt;
&lt;p&gt;When the mattress arrived, I set it straight on top.&lt;/p&gt;
&lt;h2 id=&quot;how-it-feels&quot;&gt;How It Feels&lt;/h2&gt;
&lt;p&gt;Rock solid.&lt;/p&gt;
&lt;p&gt;The Extra Firm feel comes through completely — no localized sinking anywhere. Rolling over, getting up, the entire surface holds. Two people sleeping doesn’t affect the other side at all.&lt;/p&gt;
&lt;p&gt;Exactly what I wanted.&lt;/p&gt;
&lt;p&gt;On airflow: a solid panel does restrict circulation underneath compared to slats, but the bed frame is open on all four sides, so air can come in from the edges. If you live somewhere humid or tend to sleep hot, drill 1/2-inch holes every 6 inches across the panels — airflow improves dramatically with almost no effect on structural rigidity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bunkie boards and foundations are, at their core, fabric-wrapped thin panels or slat assemblies. You’re paying for the packaging. Plywood is thicker, stronger, more durable, and costs less than half the price. If your bed is a platform frame that was never designed for a box spring, this is the most practical solution I’ve found.&lt;/p&gt;
&lt;p&gt;Cost comparison: Bunkie Board $100–$300, Foundation $200–$400, two sheets of Sande Plywood $108, Home Depot cutting free.&lt;/p&gt;
&lt;p&gt;None of this is a new idea. It’s just the logic of the traditional Chinese bed board, applied in America. Went the long way around, and ended up back at a solid surface.&lt;/p&gt;
</content:encoded><category>Others</category><category>DIY</category><category>Home</category><category>Bed</category><category>Plywood</category><category>Bunkie Board</category><category>Mattress</category><category>Home Depot</category><category>King Size</category></item><item><title>WSL2 Under the Hood: One VM, One File, One IP That Never Stays the Same</title><link>https://vincentping.com/en/wsl2-under-the-hood/</link><guid isPermaLink="true">https://vincentping.com/en/wsl2-under-the-hood/</guid><description>Once WSL2 is up and running, some strange things start to happen: you delete gigabytes of files in Linux and Windows disk usage doesn&apos;t budge; cross-system file access is painfully slow; a network script that worked fine yesterday suddenly breaks after a wsl --shutdown. None of this is a bug. It all traces back to three things at the core of WSL2&apos;s design — a special kind of VM, a single file that holds your entire Linux system, and an IP address that changes every time you restart.</description><pubDate>Fri, 27 Feb 2026 22:10:00 GMT</pubDate><content:encoded>&lt;p&gt;The previous article “&lt;a href=&quot;https://vincentping.com/en/install-a-linux-in-windows-11-in-5-minutes&quot;&gt;Install Linux on Windows 11 in 5 Minutes&lt;/a&gt;” covered how to install WSL2 and get it running. Once you’ve had it going for a while, the quirks start to show.&lt;/p&gt;
&lt;p&gt;You delete a bunch of files inside Linux — Windows disk space doesn’t move. You try to access Windows files from inside WSL2 — painfully slow. A network script that worked fine yesterday stops connecting after a &lt;code&gt;wsl --shutdown&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;None of this is a bug. It all comes directly from how WSL2 is designed under the hood. Once you understand the key design decisions, these problems become easy to diagnose.&lt;/p&gt;
&lt;h2 id=&quot;what-kind-of-vm-is-it-exactly&quot;&gt;What Kind of VM Is It, Exactly?&lt;/h2&gt;
&lt;p&gt;There are two types of hypervisors. Type 1 (Bare Metal) runs directly on hardware and hosts multiple operating systems — no host OS in between. Type 2 runs on top of an existing OS, like VirtualBox or VMware on your Windows desktop.&lt;/p&gt;
&lt;p&gt;Type 1 is more efficient, suited for data center servers. Type 2 is more flexible, better for developer workstations.&lt;/p&gt;
&lt;p&gt;So where does WSL2 fit?&lt;/p&gt;
&lt;p&gt;At first glance, it looks like Type 2 — Linux is running inside Windows, it can’t run standalone, and we’re using it on a client machine. But the performance is surprisingly good, almost like running on bare metal.&lt;/p&gt;
&lt;p&gt;The reality is it’s neither. Or rather, it has the efficiency of Type 1 and the flexibility of Type 2.&lt;/p&gt;
&lt;p&gt;WSL2 runs a &lt;strong&gt;real Linux kernel&lt;/strong&gt; inside Windows.&lt;/p&gt;
&lt;p&gt;But this “VM” isn’t like VirtualBox or VMware. It’s called a &lt;strong&gt;Utility VM&lt;/strong&gt;, running on Microsoft’s own &lt;strong&gt;Hyper-V Hypervisor&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A regular VM has to simulate an entire hardware stack: motherboard, BIOS, GPU drivers, storage controllers — all of it. WSL2’s Utility VM skips all of that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No BIOS emulation&lt;/li&gt;
&lt;li&gt;No virtual hardware drivers&lt;/li&gt;
&lt;li&gt;No fixed memory reservation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It only exposes what the Linux kernel actually needs: CPU time, memory pages, and I/O channels. The result is fast startup and near-zero memory use when idle.&lt;/p&gt;
&lt;p&gt;If we had to put a label on it: &lt;strong&gt;Type 1.5&lt;/strong&gt; — Hyper-V underneath, but far lighter than a traditional VM.&lt;/p&gt;
&lt;p&gt;One thing worth clarifying: Hyper-V actually has two layers. The first is the &lt;strong&gt;Hypervisor itself&lt;/strong&gt;, loaded directly by the Windows 11 bootloader at startup — it runs &lt;em&gt;below&lt;/em&gt; the OS at Type 1 level, and it’s always on. That’s the layer WSL2 uses. The second layer is the &lt;strong&gt;Hyper-V management services&lt;/strong&gt; — the “Hyper-V xxx” entries you see in services.msc. Those are for Hyper-V Manager and traditional VM management. WSL2 doesn’t use them at all, so it’s completely normal for those services to be stopped.&lt;/p&gt;
&lt;h2 id=&quot;from-wsl1-to-wsl2-why-the-design-changed&quot;&gt;From WSL1 to WSL2: Why the Design Changed&lt;/h2&gt;
&lt;p&gt;Why is WSL2 designed this way? We need to look back at the history — starting with how WSL1 worked and where it broke down.&lt;/p&gt;
&lt;p&gt;WSL1, released in August 2016, was built around &lt;strong&gt;syscall translation&lt;/strong&gt;: when you ran &lt;code&gt;ls&lt;/code&gt; or &lt;code&gt;make&lt;/code&gt; inside it, WSL1 intercepted those Linux kernel calls and translated them into Windows API calls in real time. Clever idea — but it fell apart under real workloads.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem 1: Translation itself has a cost.&lt;/strong&gt; Every syscall — reading a file, spawning a process, checking permissions — goes through three steps: intercept, translate, execute. This isn’t something that happens occasionally. A running program can trigger thousands of syscalls per second. The overhead adds up fast.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem 2: The file systems are fundamentally incompatible.&lt;/strong&gt; Linux uses ext4, built around inodes. Windows uses NTFS, with a completely different permission model. WSL1 had to do real-time mapping between the two — but Linux concepts like symlinks, permission bits, and case-sensitive filenames either have no equivalent in Windows or behave differently. The translation cost was high, and the results weren’t always correct.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem 3: Some things simply can’t be translated.&lt;/strong&gt; This was WSL1’s real breaking point. Containers (Docker) depend deeply on two Linux kernel mechanisms: namespaces, which isolate what a process can see, and cgroups, which limit resource usage. These are native Linux kernel capabilities — Windows has no equivalent. There’s nothing to translate to. So Docker in WSL1 never worked, period.&lt;/p&gt;
&lt;p&gt;WSL2’s solution was direct: &lt;strong&gt;stop translating. Put a real Linux kernel in there instead.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With that, Linux syscalls go straight into the kernel — no middle layer. The ext4 file system runs natively inside the VM with no NTFS mapping. Namespaces and cgroups actually exist, so Docker just works.&lt;/p&gt;
&lt;p&gt;The performance gain wasn’t a tweak. It was a fundamental rethink.&lt;/p&gt;
&lt;h2 id=&quot;your-entire-linux-lives-in-one-file&quot;&gt;Your Entire Linux Lives in One File&lt;/h2&gt;
&lt;p&gt;Let’s see what Linux actually looks like inside the Windows file system.&lt;/p&gt;
&lt;p&gt;Open File Explorer and navigate to &lt;code&gt;C:\Users\[username]\AppData\Local\wsl\&lt;/code&gt;. You’ll find a subfolder with a GUID name (something like &lt;code&gt;{445ca81a-6e98-4e8d-aa7b-da5591a61d49}&lt;/code&gt;). Inside it is a file called &lt;code&gt;ext4.vhdx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;(Older versions of WSL2 used the distro name as the folder name, like &lt;code&gt;Ubuntu&lt;/code&gt;. Newer versions switched to GUIDs.)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260228/linux_files_in_windows.png&quot; alt=&quot;Linux in the Windows file system&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your entire Linux system is that one file.&lt;/strong&gt; Every package installed, every repo cloned, every line written to a log — it’s all in there.&lt;/p&gt;
&lt;p&gt;Here’s a counterintuitive trap: &lt;code&gt;.vhdx&lt;/code&gt; is dynamically expanding, so it grows as you add data. But &lt;strong&gt;deleting files inside Linux does not shrink the &lt;code&gt;.vhdx&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Delete 20 GB of dependencies? Windows disk usage won’t budge. After a few months, the &lt;code&gt;.vhdx&lt;/code&gt; ballooning to several hundred GB is common — even if the actual Linux content is much smaller.&lt;/p&gt;
&lt;p&gt;The fix is Windows’ built-in &lt;code&gt;diskpart&lt;/code&gt;. Close all WSL windows, run &lt;code&gt;wsl --shutdown&lt;/code&gt;, then:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;diskpart&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt; select vdisk file=&quot;C:\Users\[username]\AppData\Local\wsl\{your-GUID}\ext4.vhdx&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt; attach vdisk readonly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt; compact vdisk&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt; detach vdisk&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt; exit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This compresses the empty space inside the virtual disk and gives it back to Windows. Anyone maintaining a WSL environment long-term should run this periodically.&lt;/p&gt;
&lt;h2 id=&quot;why-is-cross-system-file-access-so-slow&quot;&gt;Why Is Cross-System File Access So Slow?&lt;/h2&gt;
&lt;p&gt;This is WSL2’s most common performance complaint: accessing Windows files from inside Linux (anything under &lt;code&gt;/mnt/c/&lt;/code&gt;) is painfully slow. Restarting WSL or switching commands doesn’t help.&lt;/p&gt;
&lt;p&gt;What about the other direction? Opening Linux files from Windows Explorer (the penguin icon in the left sidebar) — just as slow.&lt;/p&gt;
&lt;p&gt;Same reason: both directions go through the same channel.&lt;/p&gt;
&lt;p&gt;WSL2 runs two completely separate file systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ext4&lt;/strong&gt;, inside the Linux Utility VM (paths like &lt;code&gt;~/projects/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NTFS&lt;/strong&gt;, on the Windows side (accessed from Linux as &lt;code&gt;/mnt/c/&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whichever direction you’re crossing, every request goes through: the Hyper-V virtualization layer → tunneled via the &lt;strong&gt;9P protocol&lt;/strong&gt; → reaches the other side → data comes all the way back. Every single file operation makes that round trip.&lt;/p&gt;
&lt;p&gt;(9P is a network file-sharing protocol. WSL2 runs a 9P server internally — it essentially treats the other side’s file system like a network share on a LAN.)&lt;/p&gt;
&lt;p&gt;For anything that reads and writes lots of small files frequently, each operation is a 9P round trip through the virtualization layer — 10 to 50× slower is completely normal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The rule is simple: keep files where you use them.&lt;/strong&gt; Files you work on in WSL2 go in the Linux file system (&lt;code&gt;~/&lt;/code&gt;). Windows projects stay in NTFS. Don’t make files cross the boundary repeatedly — no configuration can work around this physical constraint.&lt;/p&gt;
&lt;h2 id=&quot;the-ip-that-keeps-changing&quot;&gt;The IP That Keeps Changing&lt;/h2&gt;
&lt;p&gt;When WSL2 starts, Windows builds a small internal virtual LAN: Linux gets a virtual network card, the Windows host gets one too, and they talk through this private network using addresses in the &lt;code&gt;172.x.x.x&lt;/code&gt; range.&lt;/p&gt;
&lt;p&gt;The problem: &lt;strong&gt;every time WSL2 restarts via &lt;code&gt;wsl --shutdown&lt;/code&gt;, this virtual LAN gets rebuilt and IPs are reassigned&lt;/strong&gt;. It might be &lt;code&gt;172.28.80.1&lt;/code&gt; one time, &lt;code&gt;172.19.32.1&lt;/code&gt; the next.&lt;/p&gt;
&lt;p&gt;This creates two distinct issues — worth separating:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows connecting to Linux services&lt;/strong&gt;: Say you’re running a web server inside Linux and want to open it in a Windows browser — don’t worry about the IP. Just use &lt;code&gt;localhost&lt;/code&gt;. Microsoft handles automatic forwarding on the Windows side. Nothing to configure here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux connecting to Windows services&lt;/strong&gt;: This direction is trickier. If a script needs to call an endpoint on the Windows host, or connect to a database running on Windows, Linux needs to know the current Windows host IP to get there.&lt;/p&gt;
&lt;p&gt;And that IP is exactly the one that changes every restart.&lt;/p&gt;
&lt;p&gt;The good news: every time WSL2 starts, it automatically writes the current Windows host IP into &lt;code&gt;/etc/resolv.conf&lt;/code&gt; on the Linux side:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /etc/resolv.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# nameserver 172.28.80.1  ← this is the Windows host IP right now&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Any script that needs to reach back to Windows should &lt;strong&gt;read this value dynamically&lt;/strong&gt; — never hardcode a specific IP. Hardcode it, and after the next restart it silently stops working. No error, no warning — just mysterious failures that take a long time to trace.&lt;/p&gt;
&lt;h2 id=&quot;keeping-wsl2-from-eating-all-your-memory&quot;&gt;Keeping WSL2 From Eating All Your Memory&lt;/h2&gt;
&lt;p&gt;Let’s talk about resource limits. By default, WSL2 can use up to 50% of system memory and all CPU cores. On a 32 GB machine running heavy workloads, that noticeably squeezes Windows-side applications.&lt;/p&gt;
&lt;p&gt;How do we configure it? Windows now includes a built-in GUI tool called &lt;strong&gt;WSL Settings&lt;/strong&gt; — just search for it and open it. Memory limit, CPU core count, and swap size are all right there. Adjust and save.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260228/wsl_settings.png&quot; alt=&quot;WSL Settings&quot;&gt;&lt;/p&gt;
&lt;p&gt;If you prefer editing manually, create or edit &lt;code&gt;.wslconfig&lt;/code&gt; in &lt;code&gt;C:\Users\[username]\&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[wsl2]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;memory&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=8GB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;processors&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;swap&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=2GB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Both approaches work the same way. Run &lt;code&gt;wsl --shutdown&lt;/code&gt; after saving — changes take effect on the next start. Tune the numbers to your machine; there’s no universal right answer.&lt;/p&gt;
&lt;h2 id=&quot;why-did-microsoft-build-this&quot;&gt;Why Did Microsoft Build This?&lt;/h2&gt;
&lt;p&gt;Some people wonder — why would Microsoft go to all this trouble to run Linux inside Windows? Weren’t they worried about it cutting into their business?&lt;/p&gt;
&lt;p&gt;There’s a clear business logic behind it. Three reasons, actually.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reason 1: Win back developers.&lt;/strong&gt; Between 2010 and 2018, a massive number of developers moved from Windows to MacBooks — because macOS natively supports Unix toolchains, while Windows developers were fighting Cygwin, path escaping, and permission incompatibilities. Microsoft saw the pattern: control the developer experience, control the ecosystem. WSL2 was the counterpunch — make Windows a platform developers actually want to use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reason 2: A beachhead for the cloud.&lt;/strong&gt; Every major cloud platform runs Linux. Developers who use WSL2 locally — learning shell, apt, systemd — build skills that transfer directly to cloud environments. When they’re ready to move workloads up, the path of least resistance leads straight to Azure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reason 3: A prerequisite for the container era.&lt;/strong&gt; Docker and Kubernetes require a real Linux kernel. Without WSL2, Docker Desktop on Windows needed a much heavier standalone VM. WSL2 made containers feel natural on Windows — and comfortable Docker users are one step closer to Azure.&lt;/p&gt;
&lt;p&gt;WSL2 isn’t a product. It’s a layer of strategic infrastructure. A company that once called Linux “a cancer” spent years building what is arguably the most polished Linux environment on any platform. Once the business logic clicks, everything makes sense.&lt;/p&gt;
&lt;h2 id=&quot;quick-reference-things-thatll-bite-you&quot;&gt;Quick Reference: Things That’ll Bite You&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;wsl --unregister&lt;/code&gt; is a hard delete.&lt;/strong&gt; The &lt;code&gt;.vhdx&lt;/code&gt; file disappears instantly — no confirmation, no Recycle Bin, no recovery. Always run &lt;code&gt;wsl --export [distro-name] [backup.tar]&lt;/code&gt; before using it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The &lt;code&gt;.vhdx&lt;/code&gt; silently bloats.&lt;/strong&gt; Disk space freed inside Linux doesn’t return to Windows automatically. On long-running WSL machines, run &lt;code&gt;diskpart compact vdisk&lt;/code&gt; periodically — otherwise one day you’ll suddenly find the C drive full.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where files live affects performance.&lt;/strong&gt; Files that need frequent access inside WSL2 should live in the Linux file system (&lt;code&gt;~/&lt;/code&gt;), not &lt;code&gt;/mnt/c/&lt;/code&gt;. Making this clear resolves most “why is WSL2 so slow” complaints.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kernel errors: update before reinstalling.&lt;/strong&gt; WSL2’s Linux kernel is maintained by Microsoft separately from your distro. For mysterious crashes, run &lt;code&gt;wsl --update&lt;/code&gt; first — reinstalling the distro almost certainly won’t fix a kernel-level issue.&lt;/p&gt;
&lt;p&gt;Installing WSL2 is the first step. Understanding how it actually behaves is what makes you comfortable using it.&lt;/p&gt;
</content:encoded><category>Tech</category><category>Linux</category><category>WSL2</category><category>Windows</category><category>Architecture</category><category>SysAdmin</category></item><item><title>Install Linux on Windows 11 in 5 Minutes</title><link>https://vincentping.com/en/install-a-linux-in-windows-11-in-5-minutes/</link><guid isPermaLink="true">https://vincentping.com/en/install-a-linux-in-windows-11-in-5-minutes/</guid><description>A practical guide to building a native Linux environment on Windows 11 using WSL2, bypassing the resource overhead of traditional virtual machines. Covers enabling BIOS virtualization, one-command deployment with `wsl --install`, file system mapping, and a warning about the irreversible data erasure caused by `--unregister`.</description><pubDate>Thu, 26 Feb 2026 16:10:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently started training for the CompTIA A+ certification at Per Scholas. Core 2 covers a substantial amount of Linux-specific content.&lt;/p&gt;
&lt;p&gt;To get more comfortable with Linux — especially command-line operations — I needed a Linux system to practice on. Since my machine runs Windows 11 Pro, my first instinct was to set up a virtual machine using VirtualBox or VMware. But that approach demands a lot of system resources. After some back-and-forth with AI, I discovered that modern Windows ships with &lt;strong&gt;WSL2 (Windows Subsystem for Linux 2)&lt;/strong&gt; built in. Once installed, you can launch a Linux system directly inside Windows.&lt;/p&gt;
&lt;h2 id=&quot;quick-installation&quot;&gt;Quick Installation&lt;/h2&gt;
&lt;p&gt;No fluff — let’s get started.&lt;/p&gt;
&lt;p&gt;Run CMD as Administrator on Windows, open the command line, and enter the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wsl --install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;After pressing Enter, Windows will begin downloading the default Linux distribution — Ubuntu. Once the download finishes, installation starts automatically. You’ll then be prompted to create a user account (the default username matches your current Windows username) and set a password. Note: password input is invisible — just type and press Enter. You’ll be asked to confirm it once more.&lt;/p&gt;
&lt;div style=&quot;text-align: center; margin: 20px 0;&quot;&gt;
  &lt;video controls width=&quot;100%&quot; 
         poster=&quot;/images/20260226/01_wsl_install.png&quot; 
         style=&quot;max-width: 850px; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);&quot;&gt;
    &lt;source src=&quot;https://vincentping.com/images/20260226/wsl_install.mp4&quot; type=&quot;video/mp4&quot;&gt;
    Your browser doesn&apos;t support HTML5 video playing. You could &lt;a href=&quot;/images/20260226/wsl_install.mp4&quot;&gt;download the video&lt;/a&gt; to watch。
  &lt;/video&gt;
  &lt;p style=&quot;font-size: 0.9em; color: #666; margin-top: 8px;&quot;&gt;Install Linux with &lt;code&gt;wsl --install&lt;/code&gt; command in Windows&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Once everything completes successfully, congratulations — you now have a Linux/Ubuntu system inside Windows, natively.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;WSL2 is supported on all Windows 11 editions (Home, Pro, and Enterprise). For Windows 10, make sure your build is &lt;strong&gt;2004 (Build 19041)&lt;/strong&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WSL2 relies on hardware virtualization. If installation keeps failing, check whether hardware virtualization is enabled.
Open &lt;strong&gt;Task Manager&lt;/strong&gt;, click the &lt;strong&gt;Performance&lt;/strong&gt; tab, and select &lt;strong&gt;CPU&lt;/strong&gt;. Look for &lt;strong&gt;Virtualization&lt;/strong&gt; in the lower-right corner to see whether it’s enabled.
&lt;img src=&quot;https://vincentping.com/images/20260226/02_taskmanager.png&quot; alt=&quot;Check Virtualization&quot;&gt;
If Virtualization shows as &lt;strong&gt;Disabled&lt;/strong&gt;, restart your computer and repeatedly press &lt;code&gt;F2&lt;/code&gt; or &lt;code&gt;Del&lt;/code&gt; to enter &lt;strong&gt;BIOS/UEFI&lt;/strong&gt; settings. Locate the &lt;code&gt;Intel VT-x&lt;/code&gt; or &lt;code&gt;AMD-V&lt;/code&gt; option and set it to &lt;code&gt;Enabled&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If nothing happens after installation completes, try restarting Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;basic-usage&quot;&gt;Basic Usage&lt;/h2&gt;
&lt;p&gt;Once installation is done and Windows has restarted, open &lt;strong&gt;File Explorer&lt;/strong&gt;. At the very bottom of the left navigation panel, you’ll be pleasantly surprised to find a &lt;strong&gt;Linux penguin icon&lt;/strong&gt;. Click it to see a list of your installed Linux distributions. If you followed the command above, you’ll see an Ubuntu directory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260226/03_linux_in_explorer.png&quot; alt=&quot;Linux in File Explorer&quot;&gt;&lt;/p&gt;
&lt;p&gt;Click that directory and you’re taken straight to the root of your Ubuntu filesystem. You can drag files from your Windows desktop into it, or pull files out from Ubuntu back to Windows. This drag-and-drop file exchange is more convenient than anything a traditional virtual machine offers.&lt;/p&gt;
&lt;p&gt;Another change shows up in the CMD terminal. In the dropdown next to the title bar, you’ll now see an &lt;strong&gt;Ubuntu&lt;/strong&gt; option. Click it and a new tab opens running Ubuntu directly — extremely convenient.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260226/04_cmd_droplist.png&quot; alt=&quot;CMD Droplist&quot;&gt;&lt;/p&gt;
&lt;p&gt;There are other ways to launch Linux/Ubuntu as well — for example, press &lt;code&gt;Ctrl+R&lt;/code&gt;, type &lt;code&gt;wsl&lt;/code&gt;, and hit Enter. Or simply type &lt;code&gt;wsl&lt;/code&gt; in CMD and press Enter.&lt;/p&gt;
&lt;p&gt;Launching Linux/Ubuntu this way is fast — nearly as instant as opening any Windows app — and uses very little resources. Traditional virtual machines simply can’t compare.&lt;/p&gt;
&lt;p&gt;To exit Linux and return to Windows, just type &lt;code&gt;exit&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;other-wsl-commands&quot;&gt;Other WSL Commands&lt;/h2&gt;
&lt;p&gt;We used &lt;code&gt;wsl --install&lt;/code&gt; to install Ubuntu, but there are other WSL options worth knowing.
(&lt;strong&gt;The following commands are run in Windows CMD — not inside Linux.&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wsl --list&lt;/code&gt;: Lists all currently installed Linux distributions.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wsl --list --online&lt;/code&gt;: Lists all Linux distributions available for download from Microsoft.&lt;/p&gt;
&lt;p&gt;To install a different Linux distribution (e.g., Kali Linux):
&lt;code&gt;wsl --install --Kali-linux&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you have multiple distributions installed, launch a specific one by name:
&lt;code&gt;wsl -d Kali-linux&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wsl --status&lt;/code&gt;: Displays current WSL status information.&lt;/p&gt;
&lt;p&gt;To remove a Linux distribution (e.g., Kali Linux):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wsl --unregister Kali-linux&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is a &lt;strong&gt;physical-level wipe!&lt;/strong&gt; Once executed, the corresponding Linux folder and all its data vanish instantly with no recovery possible. BACKUP your DATA!&lt;/p&gt;
&lt;h2 id=&quot;additional-tips&quot;&gt;Additional Tips&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;After closing all Linux windows, Linux is still running in the background on standby. To fully release those resources, run:
&lt;code&gt;wsl --shutdown&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you get an error on startup one day, don’t rush to uninstall. Try this command first:
&lt;code&gt;wsl --update&lt;/code&gt;
It works like a phone OS update — automatically fetching the latest Linux kernel patches from the cloud.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Desktop Shortcut&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To create a desktop shortcut that launches Linux with a single click, right-click the desktop and select &lt;strong&gt;New → Shortcut&lt;/strong&gt;. Set the target to &lt;code&gt;wsl -d Ubuntu&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To use the Ubuntu icon for the shortcut, right-click it → &lt;strong&gt;Properties&lt;/strong&gt; → &lt;strong&gt;Change Icon&lt;/strong&gt;, then navigate to &lt;code&gt;C:\Users\[YourUsername]\AppData\Local\wsl\&lt;/code&gt; and select the native Ubuntu icon.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content:encoded><category>Tech</category><category>Linux</category><category>WSL2</category><category>Windows</category></item><item><title>I Built a Study Tool While Preparing for CompTIA A+ — Now It&apos;s Open Source</title><link>https://vincentping.com/en/built-a-study-tool-while-preparing-for-comptia-a-plus-now-open-source/</link><guid isPermaLink="true">https://vincentping.com/en/built-a-study-tool-while-preparing-for-comptia-a-plus-now-open-source/</guid><description>I was studying for CompTIA A+ when I got frustrated with reviewing wrong answers in a plain document. So I built a tool — and now it&apos;s open source.</description><pubDate>Sun, 22 Feb 2026 17:30:00 GMT</pubDate><content:encoded>&lt;p&gt;In December 2025, I enrolled in Per Scholas’ IT Support training program in Chicago, with the goal of earning both the CompTIA A+ and Google IT Support certifications by the end of March 2026.&lt;/p&gt;
&lt;p&gt;The schedule is intense — five days a week, 9am to 4pm in class, plus two to three hours of homework every evening. It’s demanding, but the full-time structure keeps me fully immersed, and I can feel myself improving every single day.&lt;/p&gt;
&lt;p&gt;The coursework involves a lot of hands-on practice: labs, unit quizzes, cumulative tests, and more. These exercises don’t just reinforce concepts — they simulate real-world IT scenarios that sharpen problem-solving skills.&lt;/p&gt;
&lt;p&gt;Of course, mistakes are part of the process. I needed a way to capture the questions I got wrong so I could come back and review them intentionally, not just hope I’d remember.&lt;/p&gt;
&lt;p&gt;I started by copying wrong answers into a document. It worked at first, but as the list grew, the limitations became obvious. It was passive — I could only review questions in the order I wrote them down, with no way to quiz myself interactively or filter by topic.&lt;/p&gt;
&lt;p&gt;So I built a tool. Using Python and the PySide6 framework, I put together a simple wrong-answer practice app and started entering questions one by one. That gave me the ability to draw random questions, flag ones that needed extra attention, and actually practice rather than just re-read.&lt;/p&gt;
&lt;p&gt;The tool made a real difference during my Core 1 exam prep, and I passed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260222_main.jpg&quot; alt=&quot;ReCall - Home Page&quot;&gt;&lt;/p&gt;
&lt;p&gt;For Core 2 — which covers even more ground — I kept improving it based on how I was actually using it. Here’s where it stands now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multiple exam databases&lt;/strong&gt; — Core 1 and Core 2 can be managed separately, each with its own modules and chapters&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question management&lt;/strong&gt; — Add questions manually or batch-import from a Markdown file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two practice modes&lt;/strong&gt; — Learning mode gives instant feedback after each question; Exam Simulation is timed and graded at the end, just like the real thing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progress tracking&lt;/strong&gt; — The home screen shows overall accuracy, per-module mastery, and automatically flags weak areas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilingual interface&lt;/strong&gt; — English and Chinese, with light and dark themes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/20260222_practice.jpg&quot; alt=&quot;ReCall - Practice Mode&quot;&gt;&lt;/p&gt;
&lt;p&gt;I named it &lt;strong&gt;ReCall&lt;/strong&gt; — &lt;em&gt;Know it when it counts.&lt;/em&gt; It’s now open source on GitHub, free to download and use:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/vincentping/recall&quot;&gt;https://github.com/vincentping/recall&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows users can download the pre-built executable directly from the &lt;a href=&quot;https://github.com/vincentping/recall/releases&quot;&gt;Releases&lt;/a&gt; page — no Python installation required, just unzip and run.&lt;/p&gt;
&lt;p&gt;This project will be further improved in the future, and I hope to add the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Richer analytics&lt;/strong&gt; — error trends, progress curves across sessions, and a clearer picture of how your mastery improves over time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-assisted review&lt;/strong&gt; — using AI to explain weak areas in depth, or to intelligently recommend what to study next based on your performance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you’re preparing for an IT certification — or just need a better way to practice what you’re getting wrong — feel free to download and try it out. If you run into any bugs or have ideas for improvement, I’d love to hear from you on &lt;a href=&quot;https://github.com/vincentping/recall/issues&quot;&gt;GitHub Issues&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Tech</category><category>IT</category><category>Python</category><category>Comptia-A+</category></item><item><title>Remove Category and Article ID from URL in Joomla 3</title><link>https://vincentping.com/en/remove-category-article-id-from-url-in-joomla-3/</link><guid isPermaLink="true">https://vincentping.com/en/remove-category-article-id-from-url-in-joomla-3/</guid><description>Joomla is a very professional content management system (CMS), but there&apos;re some minor shortcoming within the SEO URL Mapping.</description><pubDate>Thu, 01 Oct 2015 17:13:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This site has moved to a web site static generator to manage the content, and here is just a backup for reference.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;problem&quot;&gt;Problem&lt;/h1&gt;
&lt;p&gt;I installed Joomla 3.4.4 on my vincentping.com site.&lt;/p&gt;
&lt;p&gt;After created some categories and articles, I just wanna try the “SEO Settings” in the “Global Configuration”.&lt;/p&gt;
&lt;p&gt;I set the options to: Search Engine Friendly URLs - Yes, use URL Rewriting - Yes, Adds Suffix to URL - Yes, just as following:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://vincentping.com/images/seo-setting.png&quot; alt=&quot;seo setting&quot;&gt;&lt;/p&gt;
&lt;p&gt;When I viewed the site, the article URL is like this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.vincentping.com/9-blog/2-remove-category-article-id-from-url-in-joomla-3.html&quot;&gt;http://www.vincentping.com/9-blog/2-remove-category-article-id-from-url-in-joomla-3.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It’s ok comparing with the original URL like this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.vincentping.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=2:remove-category-article-id-from-url-in-joomla-3&amp;amp;catid=9&quot;&gt;http://www.vincentping.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=2:remove-category-article-id-from-url-in-joomla-3&amp;amp;catid=9&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But the id numbers before the categoriy(here it’s 9) and article(2) are not very nice. Obviously these numbers are some database item number, with them the scripts could fetch data from backend database more efficiently. But to visitors they’re a little strange. So I googled the web and tried lots of suggestions from web, finally here is the solution I used.&lt;/p&gt;
&lt;h1 id=&quot;the-solution&quot;&gt;The Solution&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the php file under the Joomla root “components/com_content/router.php“,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Search for the code:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$advanced = $params-&amp;gt;get(&apos;sef_advanced_link&apos;, 0);&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Just change the “0” to “1”, the output is as this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$advanced = $params-&amp;gt;get(&apos;sef_advanced_link&apos;, 1);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There’re two lines of code in the file should be changed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Find below section of code in the router.php file and comment it out:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt; if (strpos($segments[0], &apos;:&apos;) === false)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      $vars[&apos;view&apos;] = &apos;article&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      $vars[&apos;id&apos;] = (int) $segments[0];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      return $vars;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;comment to&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt; /* if (strpos($segments[0], &apos;:&apos;) === false)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      $vars[&apos;view&apos;] = &apos;article&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      $vars[&apos;id&apos;] = (int) $segments[0];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      return $vars;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  } */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And all the job is DONE!&lt;/p&gt;
&lt;p&gt;After that, the url for the page is now:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.vincentping.com/en/remove-category-article-id-from-url-in-joomla-3.html&quot;&gt;http://www.vincentping.com/en/remove-category-article-id-from-url-in-joomla-3.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Remember: every time you upgrade your Joomla system, you should modify the code again.&lt;/p&gt;
&lt;h1 id=&quot;other-suggestions-you-can-try&quot;&gt;Other Suggestions You can Try&lt;/h1&gt;
&lt;p&gt;From the research online, I know that the id number issues are a problem for Joomla User Groups for near 10 years. And there’s lots of extensions and other methods we could try.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use SEF extensions such as Sh404SEF, JoomSEF, SEF Advance etc, you can search “SEF” on &lt;a href=&quot;http://extensions.joomla.org/&quot;&gt;JED(Joomla! Extensions Directory)&lt;/a&gt; and try them, but most of them are paid extensions.&lt;/li&gt;
&lt;li&gt;If you’re familar with regex rules, you may try to add some rules to the .htaccess and try to rewrite the URL. But as we know, the .htaccess gets some overhead.&lt;/li&gt;
&lt;li&gt;When you just have a very small site, there’s limited articles there, you could create one menu item for each article, and the id issues are solved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to research more, I recommend the post “&lt;a href=&quot;http://forum.joomla.org/viewtopic.php?f=712&amp;amp;t=826165&quot;&gt;Remove article id from url for joomla 3.0&lt;/a&gt;” on the Offical Joomla Forum.&lt;/p&gt;
</content:encoded><category>Tech</category><category>Joomla</category></item></channel></rss>