<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://tonypark.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://tonypark.dev/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-09-24T23:56:15+00:00</updated><id>https://tonypark.dev/feed.xml</id><title type="html">Tony Park</title><subtitle>Essays and projects by Tony Park on software, AI, investing, startups, and film.</subtitle><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><entry><title type="html">Investment Strategy Memo</title><link href="https://tonypark.dev/2026/09/24/investment-strategy-memo/" rel="alternate" type="text/html" title="Investment Strategy Memo" /><published>2026-09-24T00:00:00+00:00</published><updated>2026-09-24T00:00:00+00:00</updated><id>https://tonypark.dev/2026/09/24/investment-strategy-memo</id><content type="html" xml:base="https://tonypark.dev/2026/09/24/investment-strategy-memo/"><![CDATA[<p><em>This post distills key ideas and investment principles from Jeongsu Han’s Principles of Investment that Change Your Life, along with my own interpretation and perspective. This approach may not be for everyone.</em></p>

<h2 id="i-prologue">I. Prologue</h2>

<p>The Big Short, a film about the 2008 financial crisis, opens with these words. “It ain’t what you don’t know that gets you into trouble. It’s what you know for sure that just ain’t so.”</p>

<p>There is a big difference between thinking you know the future and actually knowing it. The more certain you are that you have found the right answer, the greater the price you pay when that answer turns out to be wrong.</p>

<p>We are surrounded by advice that sounds like the answer to investing. “Stocks are better than real estate. Invest in emerging markets instead of the U.S. Now is the time to hold on to cash. You absolutely have to buy.” The stream of tempting advice never ends. When someone you know makes money in stocks, stocks seem like the answer. When a friend multiplies their money in crypto, crypto seems like the answer. The problem is that these plausible answers contradict one another.</p>

<p>Tolstoy’s Anna Karenina begins like this. “All happy families are alike; each unhappy family is unhappy in its own way.”</p>

<p>In investing, though, people succeed in different ways. Some make money in growth stocks; others in dividend stocks, real estate, or Bitcoin. Some experts tell you to buy stocks now, while others insist that this is absolutely not the time. When Warren Buffett says you should diversify, you nod along. But when someone says Buffett actually built his wealth through concentrated investing, that sounds right too.</p>

<p>None of these people is necessarily wrong. There are real examples of people making money in their own circumstances, in their own times, and in their own ways. So how do we identify the right answer among all these candidates? I think the question itself is wrong. It is not enough to question things that look like the right answer. We need to question the very idea that we can find the answer to investing in someone else’s words.</p>

<p>The right answer in investing varies by era, circumstance, and person. Real estate was a disaster in Japan in the 1990s, but a blessing in Korea during the same period. If you had bought Apple shares in the 2010s and held them until today, you would have become enormously wealthy. But applying the same strategy now might not produce satisfying results.</p>

<p>Buffett’s principles have been tested over decades, but the era when he began investing was different from today. The scale of the assets he manages is also different from that of an individual investor. Even if he is the world’s best investor, there is no guarantee that copying his approach is the best choice for me.</p>

<p>That makes it hard to prescribe an investment approach that works for everyone. Yesterday’s right answer can become tomorrow’s wrong one. <strong>Paradoxically, acknowledging that there is no single right answer in investing is the starting point closest to one.</strong></p>

<h2 id="ii-the-investment-principles-shared-by-people-who-changed-the-world">II. The investment principles shared by people who changed the world</h2>

<p>I decided to study and emulate the people who had made the most money through investing. I started with the list of the world’s richest people. Of the top 10, Warren Buffett was the only one who had become wealthy solely through investing. Most of the others were entrepreneurs like Meta’s Mark Zuckerberg and Amazon’s Jeff Bezos, who had built companies that grew thousands or tens of thousands of times over.</p>

<p>That gave me an important clue. “The people who became the richest in the world were founders who staked their lives on companies driving change!” I thought that if I could follow their approach as an investor, I could improve my chances of becoming wealthy. So I began turning that sentence into an investment strategy.</p>

<p>Split it in two, and you get “companies driving change in the world” and “founders who staked their lives on those companies.” Two principles follow.</p>

<ul>
  <li>First, get on board with the forces changing the world.</li>
  <li>Second, maximize your exposure to those forces (in other words, bet big).</li>
</ul>

<p>To earn returns that change your life, you have to invest heavily in good opportunities. And the changes that produce large returns need time to become reality. The founders who became billionaires were, in effect, both long-term investors who got in early and stayed, and concentrated investors who staked their lives on that change.</p>

<p>Founders have to create change themselves. Investors only need to recognize the people who will lead it and the companies that will benefit. We can participate in the same shift without the burden of running a company ourselves. Investors do not have to stake their entire lives on it the way founders do, either. If your conviction is strong, invest heavily. If you are uneasy, invest only as much as your conviction allows.</p>

<p>If you stake everything, getting one major shift right can make you rich. But the more you diversify, the more things you have to get right at the same time. In that sense, Warren Buffett is clearly an extraordinary investor: he made it onto the list of the world’s richest people without going all in on a single company. Today, few companies are worth more than the money he has, so he has little choice but to spread his investments across many businesses. But Buffett, too, built much of his wealth by concentrating on three to five companies.</p>

<p>Buffett put it this way. “Diversification is protection against ignorance. It makes little sense if you know what you are doing.” Simply put, diversification is a hedge against ignorance, used when you lack conviction.</p>

<p>Warren Buffett’s Berkshire Hathaway has earned 70% of its total returns since 2016 from Apple. Before that, it also grew its wealth by concentrating its investments in, or outright acquiring, a small number of companies such as GEICO, Coca-Cola, and American Express.</p>

<p>The path I found here is clear. Spot change early, find the companies that will lead it, study them until I know them like an expert, then concentrate my investments and hold them for a long time. Put simply: “Pick one well, then sit tight.” That simple sentence became the foundation of the investment principles I have followed ever since. (Once I learned that no one on the list of the world’s richest people had become wealthy through short-term investing, I stopped hopping from stock to stock, buying and selling.)</p>

<p>On the journey to building wealth through investing, I focus on probability rather than speed. The most important ingredient for improving those odds is time. Ultimately, time is also what reduces the role of luck in investing. Set things up so that time works in your favor, and results will inevitably follow. If you are not afraid to give your investments time, they will gradually move out of the realm of luck and closer to the realm of inevitability. People who understand this are bound to become wealthy in the end. These are simplified principles, but if you have not had a clear strategy, even this much of a change can transform your investment results.</p>

<p>Investing is a series of decisions. To put it a little grandly, you could call it “the art of decision-making.” The ability to decide where and how much of your limited time and money to invest, without being swayed by your emotions, is one of the most useful skills you can apply anywhere in life. I believe that becoming better at investment decisions makes you much better at other decisions in life, too. That is why I do not see investing as merely generating returns and making money. There are too many benefits beyond investing itself to define it simply as “committing assets in the hope of future gains.”</p>

<p><strong>We invest to change our lives, but the process of investing changes our lives too.</strong> Investing ultimately means anticipating how the world will change. That inevitably keeps us curious about new things and pushes us to keep learning. It also takes us beyond our familiar, narrow circles and gives us a broader view of what is happening in the world, naturally encouraging us to live with an eye toward the future. Add the financial rewards and control over our time that investment skill can bring, and there is also the joy of shaping our own destiny through our own efforts.</p>

<h2 id="iii-investment-returns-are-not-proportional-to-effort">III. Investment returns are not proportional to effort</h2>

<p>There is a misconception that the market will reward you for working hard to learn about investing and trading diligently. But the market is not a school. It does not care who studied hardest. Before you study, you need to know which subject the market is testing right now. If you fail to notice that the criteria have changed, you become a student diligently studying the wrong subject.</p>

<p>There is a saying: “To someone with only a hammer, every problem looks like a nail.” A student who has studied nothing but computer science cannot understand why their answer on a literature exam is wrong. Unable to understand either the author’s intent or the examiner’s, they conclude that the question is wrong and the market is mistaken.</p>

<p>Once you believe you know the right answer, you keep repeating, “The market is irrational” and “It will eventually return to where it belongs.” As you force a changing world to fit familiar theories, you begin to see only the information that supports your analysis and dismiss everything else as “noise.” Of course, the subject may eventually switch back to computer science, and the market may return to the “right place” that student wants. Even a broken clock is right twice a day. But when the exam switches back to literature, will that student be able to respond?</p>

<p>Market value does not simply mirror an asset’s actual value. It depends on the thoughts and emotions of the people looking at it. From the perspective that “prices should accurately reflect an asset’s actual value,” the market is often wrong. There are certainly severely undervalued assets and excessively overvalued ones. But that does not mean the undervaluation will soon be corrected or the overvaluation will quickly disappear. Some markets, such as Korea’s KOSPI in the past, have remained undervalued for more than a decade. Meanwhile, stocks criticized as overvalued sometimes attract even more money.</p>

<p>The market is not particularly uncomfortable with being “wrong” in this way. In these cases, is the market really wrong, or is our standard for judging right and wrong itself mistaken? The purpose of studying investing is not to accumulate knowledge in a single subject. You need to be able to respond when the subject changes. The world does not follow what you study. The world moves first; your learning follows.</p>

<p>When my analysis stops working, the first thing I need to check is whether the market is temporarily irrational or whether the subject has changed altogether. The market can certainly behave strangely for a few months. But if I keep getting it wrong for years, no matter how much I study, the criteria that market participants consider important may have changed.</p>

<p>When those signs appear, I need to put my pride aside and be ready to revise or abandon my analysis at any time. The purpose of investing is to get on board with where the world is heading, not to prove that I am right. <strong>Even if everyone in the world looks like an idiot, I should not try to beat them. I need to play the game of predicting what those idiots will do next. If I cannot do that, then I am the idiot.</strong></p>

<h2 id="iv-the-scale-of-your-questions-determines-the-scale-of-your-returns">IV. The scale of your questions determines the scale of your returns</h2>

<p>Big returns come from big questions. Before asking, “What should I buy now?” you need to ask why. “Where is the world heading?” To change your life through investing, you need to recognize change early and find the companies that will lead it. If you ask only which stocks to buy without that context, the answers can only be fragmentary.</p>

<p>Even after getting an answer to a small question, a mere 5% drop in the stock price the next day brings you back to the same question. “The stock has fallen. Should I still hold it?” That happens because you started with “what” without first thinking about “why.”</p>

<p>Someone with an answer to a big question, on the other hand, can explain why they own the stock. “The world is moving in this direction, and this company is at the forefront of that change.” Someone who starts from that judgment knows what to check first, whether the stock falls 5% or 50%. “Has the world’s direction changed?”</p>

<p>If the direction has not changed, the decline is an opportunity to buy at a lower price. Being able to explain your “why” means you can withstand volatility as long as that “why” remains intact. And only by withstanding volatility can you turn that understanding into returns. If you look only at individual stocks, daily price movements become a source of confusion and fear. But once you start reading the broader direction of the world, you can let go of the compulsion to attach a plausible explanation to every day’s price movement.</p>

<p>That is why I do not use a bottom-up approach, starting with individual stocks and working up to industries. Instead of analyzing popular stocks one by one, I start with the world’s broad trends. “Where is the world heading now? Which sectors will benefit from this change, and which will decline?” Only at the very last step do I look for specific stocks. This is the “top-down” approach.</p>

<p>What matters here is the company’s role within the changes taking place across its industry. I call this way of reading the context “narrative investing.” A narrative is more than a one-line theme such as “AI is taking off” or “Bitcoin is rising.” It is a broader story that explains why the world is moving in a particular direction. And strong narratives usually emerge at the intersection of three things: technology, social trends, and policy.</p>

<h2 id="v-the-three-pillars-that-move-the-world">V. The three pillars that move the world</h2>

<p>The first pillar is technology. Technology is one of the most powerful forces changing the world. The internet changed the world in the 1990s, smartphones changed it in the 2000s, and AI is changing it now. When technology opens up new possibilities, the companies that use it also grow rapidly. The questions to ask are these. “Which technologies are changing the world right now? Which companies are best at developing or using them?” As demand in a new industry grows, bottlenecks appear wherever supply cannot keep up. Investors need to find the companies that control those bottlenecks.</p>

<p>The second pillar is social trends. Even the most innovative technology cannot find a market unless society adopts it. You need to read how lifestyles, spending habits, and values are changing. When remote work became routine after COVID, cloud companies grew rapidly. It was less that the technology had suddenly improved than that society had started using it every day. So the questions to ask about this pillar are these. “How are people’s lives changing? Which industries will that change bring money into?”</p>

<p>The third pillar is policy, or politics. Even when the technology exists and society wants it, a market struggles to grow if the government blocks it. Conversely, government support accelerates growth. Alibaba and Tencent’s share prices halving during China’s crackdown on big tech, and the surge in related investment following U.S. support for domestic semiconductor production, illustrate this. The questions to examine here are these. “What future does the most powerful authority, the government, want? What policies is it pursuing to bring that future about?”</p>

<p>A field with innovative technology, a society that wants it, and a government that supports it. The moment these three pillars align, money flowing into that field becomes almost inevitable. Conversely, a narrative loses strength when the technology is good but people are not ready to adopt it, when society wants it but the government restricts it, or when the government supports it but people have no interest.</p>

<p>As you become interested in investing, you sometimes get a gut feeling that a particular field is about to take off. Checking these three pillars one by one can help you judge whether that feeling is merely a hope or a judgment grounded in evidence.</p>

<p>Of course, this process is not always right. The narrative itself can change as technology, trends, and policy change. A bottleneck you anticipated may clear much faster than expected, or an entirely different variable may emerge. So, as I said in the previous section, you should not stubbornly insist on your view to the end. You need to be ready to revise your thinking whenever the world moves differently. <strong>Remember that the point of narrative investing is to get on board with where the world is heading, not to prove that you are right.</strong></p>

<h2 id="vi-read-the-seasons-not-the-weather">VI. Read the seasons, not the weather</h2>

<p>There is a historical reason narratives are becoming increasingly important in investing. For a long time, fundamental investing dominated the market. After the Great Depression of 1929, securities regulations were overhauled, and companies began disclosing their financial information. Buffett’s mentor Benjamin Graham systematized discounted cash flow (DCF) analysis, which converts future cash flows into present value. For roughly the next 80 years, the view that a company’s future earnings determine its stock price stood at the center of the market.</p>

<p>Early on, “cigar-butt investing” was popular: analyzing disclosures to find companies trading for less than their net assets. But after decades of rising stock markets, such companies became harder to find. The focus of investing shifted from “buying a fair company at a wonderful price” to “buying a wonderful company at a fair price.” Buffett, too, adapted to the times, moving toward finding wonderful companies rather than insisting on cigar-butt investing.</p>

<p>With stock markets continuing to rise, we now live in an era when “you have to buy wonderful companies at very high prices.” Even so, investors continue to use earnings and numbers to search for companies that are at least a little less overvalued.</p>

<p>The idea that earnings and numbers determine stock prices sounds reasonable. But once you invest, you realize that markets do not always work that way. I think investing is closer to psychology, or more precisely “macropsychology,” than to economics or mathematics. Ultimately, it is people’s psychology that moves prices.</p>

<p>The efficient market hypothesis taught in economics says that “all publicly available information is already reflected in prices.” But this theory fundamentally assumes rational people. The problem is that people are not always rational. More important than the information itself are the people receiving it. In real markets, we cannot ignore the inefficiencies created by human irrationality in interpreting information. The same news can make people cheer one day and panic another. Market prices reflect not only an asset’s intrinsic value but also the thoughts and emotions of the people looking at it at that moment.</p>

<p>This reveals something important about how markets work: asset prices do not directly reflect value. The only thing prices directly reflect is market sentiment. Every fundamental variable, from changes in an asset’s value to economic trends, political conditions, and policy changes, passes through market sentiment before it is reflected in the price. So “prices reflect value” is not quite accurate. A more accurate statement is: “Prices reflect sentiment, and sentiment reflects every variable, including value.” A 10% decline in an asset’s value does not mean its price will fall exactly 10%. If fear grows, the price might fall 30%, then rise 30% again when the mood changes.</p>

<p>Fundamental analysis has long been accepted as the right approach. But because everyone uses the same criteria, it is becoming increasingly difficult to beat the market with those criteria alone. As the 2020s began, the prevailing approach to investing started gradually shifting toward narrative investing. Cases kept emerging that were nearly impossible to explain through the standards of fundamental investing.</p>

<p>Palantir is a prime example. Its price-to-sales ratio (PSR) is 80 times, and its price-to-earnings ratio (PER) ranges from 100 to 200 times. Looking only at the gap between its DCF valuation and its stock price, it seems close to madness. But Palantir has a narrative: it is leading the U.S. government and military’s transition to AI. The technology of its AI platform, the trend of governments and businesses making greater use of data, and the Department of Defense’s AI adoption policies all point in the same direction. As long as that story holds, traditional valuation alone cannot easily explain the stock price.</p>

<p>In his 1936 book, economist John Maynard Keynes compared stock investing to “a beauty contest in which you try to predict whom others will choose as the winner.” Reading the crowd’s next judgment matters as much as a company’s intrinsic value. Perhaps narratives have always been the market’s default, and fundamental investing, which gained influence after the Great Depression, was itself just a passing trend.</p>

<p>“Predicting the weather is hard, but you can predict the seasons.” No one knows whether stock prices will rise or fall tomorrow. That is the weather. But we can read where the world is heading and what future the most powerful people are trying to create. That is the season. The “three pillars that move the world” and narratives are tools for reading these seasons. <strong>People who can read the seasons are not shaken by the weather changing every day.</strong> Instead of riding an emotional roller coaster through daily fluctuations, they can create opportunities for themselves within the broader trends.</p>

<h2 id="vii-the-biggest-risk-is-missing-the-upside">VII. The biggest risk is missing the upside</h2>

<p>Predicting the weather every time is difficult, but anyone can anticipate the changing seasons to some degree. Even in an era of upheaval, some broad trends look like inevitable changes. If you ignore erratic stock price swings and get on board with those inevitable trends, you can change your life without anxiously staring at charts all day. Tomorrow’s stock prices may rise or fall. But over a sufficiently long period, even matching the average return of the asset markets can produce quite good returns. In other words, the shorter the time frame, the closer your odds of winning are to 50%; the longer the time frame, the closer they get to 100%.</p>

<p>Given a choice between a game you might lose (short-term trading) and a game you are guaranteed to win (long-term investing), the latter should be the obvious choice. Yet, surprisingly, many investors pass up the game they are guaranteed to win and jump into the one they might lose. This is partly because they fear losses and want to avoid declines, and partly because the game they are guaranteed to win is more boring than they expect.</p>

<p>Many people think a decline is something to avoid whenever possible. I see it differently. In asset markets that trend upward over time, what we should really fear is missing the upside, not suffering a decline.</p>

<p>J.P. Morgan conducted an interesting study of the U.S. stock market. It compared the returns of someone who stayed invested in the S&amp;P 500, an index of the top 500 U.S. companies, for roughly 20 years from January 2003 through December 2022 with someone who was invested over the same period but missed the 10 best days. The latter ended up with less than half the wealth of the former. In other words, missing just the 10 best days out of 20 years puts your returns below average.</p>

<p>Someone who missed the best 60 days ended up with only about 7% of the wealth of someone who stayed in the market throughout. There are a few days each year when the market rises sharply, and missing even one of them can make it difficult to keep up with the market’s average return. The important point here is that, surprisingly, the sharpest rallies in investment history have always come amid the sharpest market declines. In 2020, when COVID hit, the U.S. stock market’s second-best day of the year came immediately after its second-worst day.</p>

<p>This is where my long-term investment perspective comes from. <strong>The biggest risk is missing the upside, not suffering a decline.</strong> The moment you leave the market, you expose yourself to that risk. That is why I choose to stay invested.</p>

<p>During a downturn, many investors decide, “I should get out of the market entirely now,” afraid that prices might fall further. But saying, “I’ll sell everything now and get back in later,” is essentially saying, “I’ll time the market.” Selling because you are certain “this is the top” and buying because you are certain “this is the bottom” both fall within the realm of short-term trading, where the odds of winning converge on 50%. If you give up reading the seasons, where the odds are close to 100%, and start playing the weather-prediction game of market timing, it is only natural that your odds fall.</p>

<h2 id="viii-include-opportunity-cost-when-weighing-risk-and-reward">VIII. Include opportunity cost when weighing risk and reward</h2>

<p>Risk-Reward Ratio = (L × pL) + (G × pG)</p>

<p>Strictly speaking, this formula is closer to expected value than a ratio. I call it a “risk-reward ratio” as an intuitive way to consider losses and gains together.</p>

<p>To understand risk and reward more fully, consider what Meta founder Mark Zuckerberg said about Meta’s investment in AI infrastructure. In 2025, amid market fears of a bubble and excessive AI spending, Zuckerberg decided to pour more than 100 trillion won into AI infrastructure in a single year. He explained it this way.</p>

<p>“The worst-case scenario if we go ahead with the investment, if AI turns out to be a short-lived fad, is that we have built infrastructure a few years ahead of when we would have used it anyway. Of course, there will be losses from depreciation, but they will be manageable. But the worst-case scenario if we do not invest, if we invest conservatively out of concern for the risks while a competitor pulls decisively ahead in AI and the gap becomes impossible to close, would threaten the company’s survival.”</p>

<p>Risk and reward are relative. Even if my choice looks good, I need to reconsider if another choice is much better. I have to compare not only the upside and downside of investing but also the consequences of not investing. In Zuckerberg’s reasoning, the worst outcome of not investing is not breaking even. It is falling behind the competition permanently, unable to catch up, with the company’s survival at stake. By contrast, the worst outcome of investing is merely some excess investment and temporary depreciation losses. When the worst outcome of doing nothing overwhelmingly exceeds the worst outcome of acting, making the bet can be the rational choice.</p>

<p>Even in the face of a massive shift like AI, many people decide, “I don’t know much about investing, and it looks risky, so I’ll stay out.” But if that shift really changes the world and I am the one who fails to get on board, that is also a loss, in the form of opportunity cost. Doing nothing is a decision too. We need to account for the opportunities missed by not acting, just as we account for the money lost by acting.</p>

<p>It is better to treat the risk-reward formula as a framework for thinking through how to view an asset, rather than a calculator that produces an exact answer. A good outcome does not mean the judgment was sound. It may have been luck. What matters is whether you could explain the asymmetry between upside and downside at the time of the decision. The purpose of weighing risk and reward is not to predict the future precisely. It is to determine whether there is a reason to give this asset a meaningful weight in your portfolio.</p>

<p>To assess risk and reward this way, you first need to understand the upside and downside the market currently sees. At every moment, the market prices in probabilities for various future scenarios. <strong>If there is a large gap between the probabilities the market sees and those I see, the size of that gap is the size of the return opportunity.</strong> So when assessing upside, the important question is not “How large is the future value?” but “How much of that future value does the market not yet recognize or still doubt?” This is precisely what makes investing difficult. You have to push through the market’s doubts and make choices that intuitively feel wrong.</p>

<h2 id="ix-my-principles-for-investment-decisions">IX. My principles for investment decisions</h2>

<p>My first principle is to <strong>concentrate in proportion to what I know and diversify in proportion to what I do not.</strong> Concentration and diversification are not an either-or choice. They are a function of how deeply I understand a particular area. Where I have deep knowledge, I concentrate my investments to make the most of opportunities with asymmetric risk and reward. Where I lack knowledge, I diversify to manage the risk of ignorance. Studying investing is the process of turning areas where I had no choice but to diversify into areas where I can concentrate.</p>

<p>Because nothing in investing is 100% certain, it is also important to take only the risks I can bear. But I must not forget that missing a truly good, rare opportunity for gains is itself a risk. For someone investing to change their life, recognizing a life-changing opportunity and still missing it is a terrible shame.</p>

<p>Opportunities that inspire close to 100% conviction are rare, but so are opportunities large enough to shake the entire world. As shareholders grew more concerned about excessive AI spending, Amazon CEO Andy Jassy wrote this in his annual letter to shareholders in April 2026. “Game changers that upend the playing field usually do not allow for a gradual investment curve. So when you find an inflection point with disproportionately attractive risk and reward, you should invest as aggressively as you responsibly can.”</p>

<p>Some people believe AI will be a passing fad like the metaverse, but the leaders of the global technology industry are convinced that AI’s impact is actually being underestimated. Only the future will tell which side is right. But AI is an opportunity where all three pillars of a narrative discussed in Section V, technology, trends, and policy, align.</p>

<p>The next question is when to buy. My second principle is simple. <strong>Once I decide to buy, I buy as soon as possible.</strong> Many people keep trying to time their purchase even after deciding to buy. When prices rise, they wait for a pullback because it is too expensive. When prices fall, they wait because they fear further declines. How effective is all this waiting, really?</p>

<p>A 2025 Charles Schwab study compared the performance of five hypothetical investors from 2005 to 2024. Each received $2,000 at the beginning of every year, for a total of $40,000. When they invested in stocks, they bought the S&amp;P 500. The difference was when they bought. Perfect bought at the exact low each year. Rotten did the opposite, buying at each year’s high. Monthly divided the money into 12 equal parts and bought at the beginning of each month. Action bought as soon as the money arrived at the beginning of each year. Linger waited for a better time, holding short-term Treasury bills instead of investing in stocks. What were the results after 20 years?</p>

<p>As expected, Perfect came first with $186,077. Action, who bought as soon as the money was available, came second with $170,555. The gap between Action and the investor who caught every annual low was only about $15,500. Monthly accumulated $166,591, and even Rotten, who bought at each year’s peak, accumulated $151,343. Linger, who did nothing but wait, ended up with just $47,357. Even the investor who bought at the worst possible time every year built more than three times the wealth of the person who never invested in stocks.</p>

<p>The insights from this experiment are clear. The gap between buying at the bottom and buying as soon as the money was available was smaller than one might expect. The reward for getting the timing right is not large relative to the effort and stress involved. The investor who entered the market promptly also earned higher returns than the one who bought in monthly installments. It proves the investing adage, “Time in the market beats timing the market.” In terms of risk and reward, staying out of the market while waiting for the right moment and missing the upside can be more dangerous. The cost of delaying action can exceed the cost of bad timing.</p>

<p>Buying is more than acquiring an asset. It means aligning my future with “the future this asset is heading toward.” At its core, then, a buying decision is a bet on the future, not a question of price or timing.</p>

<p>Within an investment worldview where “asset markets in a fiat monetary system trend upward over the long run,” being invested in a growing market is the default, and every day outside the market carries an opportunity cost. If I have already decided to buy because I believe prices are likely to rise over the long term, postponing the purchase without a specific reason is not rational. It is equivalent to believing I can predict short-term rises and falls. As I said in the previous section, reducing bets on unpredictable weather (short-term volatility) and focusing on bets on the seasons (the long-term future) is the key to moving investing out of the realm of luck and into the realm of inevitability.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="investing" /><summary type="html"><![CDATA[My investment principles, organized around narratives, position sizing, and opportunity cost.]]></summary></entry><entry><title type="html">Steal the Aesthetic of Any Image You Find Online</title><link href="https://tonypark.dev/2026/09/07/clone-aesthetic-image-online/" rel="alternate" type="text/html" title="Steal the Aesthetic of Any Image You Find Online" /><published>2026-09-07T00:00:00+00:00</published><updated>2026-09-07T00:00:00+00:00</updated><id>https://tonypark.dev/2026/09/07/clone-aesthetic-image-online</id><content type="html" xml:base="https://tonypark.dev/2026/09/07/clone-aesthetic-image-online/"><![CDATA[<p>I was reading a blog post by <a href="https://www.wafer.ai/blog/kernels-are-still-the-moat">Wafer</a>, and I could not stop looking at the cover image. I wanted my photos to look like that.</p>

<div class="bleed">
<figure>
<img src="/assets/posts/ai-aesthetic/wafer-inspiration.jpg" alt="Painterly ASCII-mosaic panorama of a waterfront castle from Wafer's blog cover art" />
<figcaption>Cover art from the blog post - notice the Gemini logo in the bottom right corner</figcaption>
</figure>
</div>

<p>Actually you can just attach the reference image and your photo and say “make this look like that,” but I extracted the style first for these reasons:</p>

<ul>
  <li><strong>Less risk of hallucination:</strong> A reference image carries its castle and boats along with its palette, and they leak into your photo. The JSON holds zero content and just an aesthetic information, so my photo keeps exactly its own elements.</li>
  <li><strong>Editability:</strong> It’s structured data. You can edit each style factor predictably.</li>
</ul>

<p><strong>Step 1: Steal the style as JSON</strong></p>

<p>Find any image whose look you like. A blog cover, a movie poster, a random wallpaper. Feed it to ChatGPT (or any vision model) with this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Extract the visual style as JSON of the input image: lighting, texture, composition, effects, mood, hex colors, and specific descriptors.
</code></pre></div></div>

<p>What comes back is an aesthetic spec with named palettes with hex codes, lighting scenarios, texture words, a reusable style descriptions. Mine even named itself: “Painterly ASCII Mosaic Panoramas.”</p>

<div class="ai-codefold">
<input type="checkbox" id="aesthetic-json-toggle" class="ai-codefold-toggle" />
<pre><code>{
  "style_name": "Painterly ASCII Mosaic Panoramas",
  "visual_genre": [
    "digital impressionism",
    "ASCII art",
    "pixel mosaic",
    "tapestry-like landscape painting",
    "retro-computational romanticism"
  ],
  "colors": {
    "palette_character": "Muted blue-gray and parchment neutrals with deep ink shadows, weathered earth tones, and restrained amber highlights.",
    "dominant_palette": [
      { "hex": "#10121C", "role": "near-black navy shadows" },
      { "hex": "#1E2830", "role": "deep blue-charcoal silhouettes" },
      { "hex": "#2E3133", "role": "graphite architectural shadows" },
      { "hex": "#434C4D", "role": "dark desaturated teal-gray" },
      { "hex": "#4C626E", "role": "stormy slate blue" },
      { "hex": "#697E88", "role": "weathered blue-gray" },
      { "hex": "#7B868A", "role": "misty steel gray" },
      { "hex": "#919B9C", "role": "cool atmospheric midtone" },
      { "hex": "#ABA99D", "role": "warm gray canvas" },
      { "hex": "#C1BEAF", "role": "aged ivory highlight" },
      { "hex": "#443A32", "role": "dark umber" },
      { "hex": "#7C644F", "role": "weathered brown" },
      { "hex": "#9A8D7B", "role": "muted taupe" },
      { "hex": "#BCAD8C", "role": "antique parchment" }
    ],
    "accent_palette": [
      { "hex": "#C58A42", "role": "burnished amber illumination" },
      { "hex": "#9D5935", "role": "rust-orange roofs and structures" },
      { "hex": "#2B758A", "role": "restrained cyan-blue strokes" },
      { "hex": "#4B516E", "role": "dusky violet" },
      { "hex": "#E5D9AF", "role": "warm luminous sky" }
    ],
    "color_behavior": [
      "low-to-medium saturation",
      "compressed tonal range in distant planes",
      "cool environmental fields contrasted with sparse warm light",
      "dark silhouettes anchor pale atmospheric backgrounds",
      "colors appear optically blended from many small glyphs or cells"
    ]
  },
  "typography": {
    "usage": "Typography functions as image-making texture rather than readable copy.",
    "style": [
      "tiny monospaced terminal glyphs",
      "ASCII characters",
      "numbers and punctuation",
      "repeated character strings",
      "microtext arranged on a strict rectangular grid"
    ],
    "suggested_typefaces": [
      "IBM Plex Mono",
      "JetBrains Mono",
      "Space Mono",
      "OCR-B",
      "Berkeley Mono"
    ],
    "treatment": {
      "case": "mixed and fragmented",
      "weight": "regular to medium",
      "tracking": "tight",
      "line_height": "compressed",
      "alignment": "grid-locked",
      "legibility": "intentionally low",
      "opacity": "variable, approximately 25% to 90%",
      "role": "halftone cells, contour marks, shading units, and architectural surface detail"
    }
  },
  "composition": {
    "format": "ultrawide cinematic panorama",
    "framing": [
      "expansive environmental establishing shot",
      "horizon placed near the middle or lower third",
      "large atmospheric sky or water field",
      "asymmetrical focal mass",
      "foreground silhouettes or terrain used as dark visual anchors"
    ],
    "depth_structure": [
      "dark, tactile foreground",
      "complex middle-ground architecture, boats, or figures",
      "softened distant skyline or landforms",
      "haze progressively reduces contrast with distance"
    ],
    "scale": "Monumental environments contrasted with very small human figures, boats, or structures.",
    "visual_rhythm": [
      "broad painterly masses",
      "dense zones of glyph detail",
      "quiet negative space",
      "repeating vertical architectural forms",
      "horizontal bands of sky, shoreline, water, or reflection"
    ],
    "focal_devices": [
      "isolated silhouetted figure",
      "central tower or clustered skyline",
      "bright opening in clouds",
      "sail shapes",
      "warm illuminated architecture against cool surroundings"
    ]
  },
  "effects": {
    "primary": [
      "ASCII-glyph overlay",
      "pixel-cell mosaic",
      "ordered dithering",
      "halftone grid",
      "scanline-like horizontal banding",
      "painterly underpainting",
      "broken-color optical mixing"
    ],
    "secondary": [
      "selective blur",
      "atmospheric haze",
      "subtle bloom around bright regions",
      "posterized tonal transitions",
      "edge erosion",
      "digital compression-like artifacts",
      "irregular character density",
      "layered transparency"
    ],
    "edge_quality": "Alternates between soft brush-like boundaries and sharply gridded typographic silhouettes.",
    "rendering_logic": "Construct recognizable scenes from large painted value masses, then resolve selected surfaces with dense monospaced glyphs or rounded pixel cells."
  },
  "lighting": {
    "overall": "Diffuse, atmospheric, and cinematic.",
    "common_scenarios": [
      "overcast daylight filtered through luminous clouds",
      "cool marine haze",
      "soft backlighting",
      "late-afternoon amber illumination",
      "city glow reflected in dark water"
    ],
    "contrast": "Moderate globally, with locally deep silhouette contrast.",
    "highlights": "Broad ivory or pale blue patches rather than crisp specular points.",
    "shadows": "Deep navy, charcoal, and umber with limited internal detail.",
    "atmosphere": "Mist, sea spray, cloud diffusion, and distance haze produce layered aerial perspective."
  },
  "texture": {
    "surface": [
      "woven canvas",
      "cross-stitch or beadwork",
      "low-resolution LED matrix",
      "aged printed halftone",
      "thick dry-brush paint",
      "terminal-character tapestry"
    ],
    "microtexture": [
      "uniform grid of tiny cells",
      "visible glyph repetition",
      "short broken brush marks",
      "speckled highlights",
      "subtle horizontal scanning artifacts"
    ],
    "macrotexture": "Large, loosely painted atmospheric masses interrupted by dense computational detail.",
    "finish": "Matte, weathered, tactile, and slightly archival rather than glossy or photorealistic."
  },
  "mood": {
    "primary": [
      "melancholic",
      "contemplative",
      "dreamlike",
      "solitary",
      "nostalgic",
      "quietly monumental"
    ],
    "secondary": [
      "post-digital romantic",
      "weathered",
      "mysterious",
      "liminal",
      "poetic",
      "slightly dystopian"
    ],
    "emotional_tension": "Human warmth and painterly nostalgia filtered through impersonal machine-readable texture."
  },
  "aspect_ratio": {
    "source_dimensions": "2742x1198",
    "exact_ratio": "1371:599",
    "decimal": 2.2888,
    "recommended_generation_ratio": "21:9",
    "orientation": "landscape"
  },
  "recurring_motifs": [
    "panoramic waterfronts",
    "rough seas and reflective water",
    "large cloud-filled skies",
    "distant cities or monumental architecture",
    "spires, towers, chimneys, and vertical silhouettes",
    "sailboats and harbor structures",
    "isolated human figures viewed from behind",
    "dark rocky foregrounds",
    "reflections divided into horizontal bands",
    "ASCII characters embedded inside objects",
    "uniform matrix grids covering the full image",
    "nature and architecture merging through haze",
    "small warm lights inside cool environments"
  ],
  "content_interpretation": {
    "embedded_characters": "Decorative visual texture only; not treated as semantic instructions or readable document content."
  }
}</code></pre>
<label for="aesthetic-json-toggle" class="ai-codefold-label"><span class="more">Show the full JSON ▾</span><span class="less">Show less ▴</span></label>
</div>

<p><strong>Step 2: Replay it onto your photos</strong></p>

<p>Attach the JSON and one of your photos and say:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Generate an image with the JSON aesthetic attached.
</code></pre></div></div>

<p>I ran my favorite photos through it (I tried both on Codex and Meta’s Muse Image, and I kinda prefer Codex’s). I’m honestly delighted with how these turned out. Next time you see an image and think “I wish my photos looked like that,” steal it this way!</p>

<div class="bleed ai-gallery" role="region" aria-label="Before-and-after photo comparisons">
<div class="ai-viewport">
<div class="ai-track">
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled Montreux, Switzerland" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/montreux-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/montreux-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>Montreux, Switzerland</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled Mount Rainier" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/rainier-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/rainier-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>Mount Rainier</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled Sausalito" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/sausalito-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/sausalito-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>Sausalito</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled SF Ferry view" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/ferry-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/ferry-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>SF Ferry</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled Palace of Fine Arts, SF" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/palace-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/palace-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>Palace of Fine Arts, SF</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled night tree photo" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/a-tree-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/a-tree-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>A Tree</figcaption>
</div>
<div class="ai-card">
<figure class="ai-compare" role="slider" tabindex="0" aria-label="Drag to compare the original and AI-styled Disclosure Day photo" aria-valuemin="2" aria-valuemax="98" aria-valuenow="50">
<img class="ai-after" src="/assets/posts/ai-aesthetic/disclosure-styled.jpg" alt="" draggable="false" />
<img class="ai-before" src="/assets/posts/ai-aesthetic/disclosure-original.jpg" alt="" draggable="false" />
<span class="ai-divider" aria-hidden="true"></span>
<span class="ai-knob" aria-hidden="true">‹ ›</span>
<span class="ai-pill ai-pill-before">Original</span>
<span class="ai-pill ai-pill-after">AI</span>
</figure>
<figcaption>The Disclosure Day?</figcaption>
</div>
</div>
</div>
<button class="ai-nav ai-prev" data-ai-prev="" aria-label="Previous photos">‹</button>
<button class="ai-nav ai-next" data-ai-next="" aria-label="Next photos">›</button>
</div>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="dev" /><summary type="html"><![CDATA[How I used AI to study the visual style of a blog cover and apply its painterly ASCII-mosaic aesthetic to my own photos.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tonypark.dev/assets/posts/ai-aesthetic/wafer-inspiration.jpg" /><media:content medium="image" url="https://tonypark.dev/assets/posts/ai-aesthetic/wafer-inspiration.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Investing Is an Exam Where the Subject Keeps Changing</title><link href="https://tonypark.dev/2026/08/15/market-exam-subject-keeps-changing/" rel="alternate" type="text/html" title="Investing Is an Exam Where the Subject Keeps Changing" /><published>2026-08-15T00:00:00+00:00</published><updated>2026-08-15T00:00:00+00:00</updated><id>https://tonypark.dev/2026/08/15/market-exam-subject-keeps-changing</id><content type="html" xml:base="https://tonypark.dev/2026/08/15/market-exam-subject-keeps-changing/"><![CDATA[<p>Investing is an exam where the subject keeps changing. Some days it becomes literature, and narrative is what counts. Other days it becomes math, and fundamentals are what counts. And every so often it becomes a dodgeball game with no logic to it at all, the ball simply flying at wherever people are bunched together.</p>

<p>That is what the recent crash was. Leveraged bets had piled up too heavily on one side, leaving the market brittle, primed for liquidations. A math test that had been running on solid earnings turned, one morning, into a vicious game of dodgeball. Math skills don’t help you in dodgeball. However good your earnings are, if the ball hits you, you’re out.</p>

<p>The player named as throwing hardest is Citadel, the American mega-fund. Last week the hedge fund run by former OpenAI researcher Leopold Aschenbrenner failed to meet a margin call on roughly four times leverage, and handed almost all of its listed holdings to Citadel at fire-sale prices. This was days before his own wedding. As it happened, the moment news of the liquidation broke, every stock he had been forced to disgorge jumped 20 to 30 percent. The instant he was dragged off the court, the barrage stopped.</p>

<p>Aschenbrenner graduated top of his class at Columbia at nineteen, and true to that, he had rarely gotten a question wrong on the investing exam. He had picked out compelling companies early, on both the math of fundamentals and the literature of narrative, and in under two years his fund grew its assets nearly a hundredfold. In the first half of this year alone it returned over 400 percent. But even he did not see the moment the subject switched to gym class. Nor that the reason it switched was to hunt him.</p>

<p>On a dodgeball court, the ball goes to the most visible player. Aschenbrenner’s investment philosophy had been published in a report. His positions were disclosed in filings. Even the rumors of his leverage were everywhere. Bad news and short interest concentrated on the names he held most. And at the point where losses had mounted and a margin call was in sight, Citadel put out a report predicting a surprise rate hike from the Fed — the finishing blow. Whether any of this was a designed hunt, of course, no one can know. What is certain is that all of us are sitting in an exam room where a hunt like that is possible. In this particular match, Korean retail investors were the shrimp caught between fighting whales. Forced liquidations of leveraged positions in the Korean market passed two trillion won between the end of May and the end of July.</p>

<p>Nobody can say precisely when the subject will change, or how long the current one will run. Fortunately, this exam has one rule that never changes: the subjects always come back around. Dodgeball does not go on forever. So for an individual investor with no power to set the terms, the best strategy is to wait until the subject you studied for comes back.</p>

<p>The heart of that is the waiting (the investment of time). However right your direction was, a strategy that cannot wait will not survive the rotation. That is exactly why leveraged products are dangerous. With luck they widen your gains, but when the subject turns out not to be the one you prepared for, they widen your losses past what you can carry. Investing with debt you can service and investing in leveraged products are entirely different things. One slip in the second and you face margin calls and forced liquidation. Aschenbrenner knew the answers to the next math test. He just wasn’t in the room on the day it was given.</p>

<p>So however the subject changes, what matters most is surviving well enough to keep showing up and sitting the exam. Just as there are days when every answer you guess turns out right, a few chances to get rich will find anyone over a lifetime. But holding onto that chance instead of blowing it in one shot, keeping the wealth you’ve protected, and staying in position for the next one — that is not something everyone manages. Getting rich is a question of grades. Staying rich is a question of attendance. We’ll be doing this our whole lives anyway, so aim for the investing that lets you stay rich, not the investing that makes you rich.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><category term="investing" /><summary type="html"><![CDATA[Why investing requires adapting to changing narratives and fundamentals while staying in the market long enough to learn.]]></summary></entry><entry><title type="html">Building a (Mini) Bitcoin: How a Blockchain Actually Reaches Consensus</title><link href="https://tonypark.dev/2026/07/17/building-a-mini-bitcoin/" rel="alternate" type="text/html" title="Building a (Mini) Bitcoin: How a Blockchain Actually Reaches Consensus" /><published>2026-07-17T00:00:00+00:00</published><updated>2026-07-17T00:00:00+00:00</updated><id>https://tonypark.dev/2026/07/17/building-a-mini-bitcoin</id><content type="html" xml:base="https://tonypark.dev/2026/07/17/building-a-mini-bitcoin/"><![CDATA[<p><a href="https://github.com/realtonypark/mini-bitcoin">GitHub Repo →</a></p>

<p>Strip away the price charts and the ideology, and Bitcoin is a surprisingly small idea: a network of machines that don’t trust each other, all converging on the same ordered list of transactions — with no coordinator, no vote, and no way to know how many participants even exist. The entire trick is making agreement <em>emerge</em> from computation.</p>

<p>mini-bitcoin is that trick, implemented from scratch in Rust. It’s a full node: it mines blocks with proof-of-work, signs and validates transactions with Ed25519, maintains an account ledger, gossips with peers over TCP, and follows the longest-chain rule to decide what’s true. Launch three nodes on your laptop, point them at each other, and they behave like a tiny cryptocurrency network — mining independently, forking occasionally, and always converging back to a single chain. A built-in web visualizer lets you watch it happen live.</p>

<p>This post is about what each piece is and how it actually works, at the level of structs and loops.</p>

<h2 id="the-block-a-hash-linked-commitment">The Block: A Hash-Linked Commitment</h2>

<p>Everything in the system reduces to one data structure:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">pub</span> <span class="k">struct</span> <span class="n">Header</span> <span class="p">{</span>
    <span class="k">pub</span> <span class="n">parent</span><span class="p">:</span> <span class="n">H256</span><span class="p">,</span>       <span class="c1">// hash of the previous block</span>
    <span class="k">pub</span> <span class="n">nonce</span><span class="p">:</span> <span class="nb">u32</span><span class="p">,</span>         <span class="c1">// the "lottery ticket" — see mining below</span>
    <span class="k">pub</span> <span class="n">difficulty</span><span class="p">:</span> <span class="n">H256</span><span class="p">,</span>   <span class="c1">// the PoW target this block must satisfy</span>
    <span class="k">pub</span> <span class="n">timestamp</span><span class="p">:</span> <span class="nb">u128</span><span class="p">,</span>    <span class="c1">// milliseconds since epoch</span>
    <span class="k">pub</span> <span class="n">merkle_root</span><span class="p">:</span> <span class="n">H256</span><span class="p">,</span>  <span class="c1">// commitment to this block's transactions</span>
<span class="p">}</span>

<span class="k">pub</span> <span class="k">struct</span> <span class="n">Block</span> <span class="p">{</span>
    <span class="k">pub</span> <span class="n">header</span><span class="p">:</span> <span class="n">Header</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">content</span><span class="p">:</span> <span class="n">Content</span><span class="p">,</span>   <span class="c1">// Vec&lt;Transaction&gt;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>A block’s identity is the SHA-256 hash of its serialized header — not its contents. That works because the header <em>commits</em> to the contents: the <code class="language-plaintext highlighter-rouge">merkle_root</code> is the root of a Merkle tree built over the block’s transactions, so changing any transaction changes the root, which changes the header, which changes the block’s hash. And because each header embeds its parent’s hash, changing any historical block changes every hash after it. That’s the “chain” in blockchain: not a linked list of pointers, but a linked list of <em>commitments</em>, where tampering anywhere is detectable everywhere downstream.</p>

<p>The genesis block is hardcoded: zero parent, zero nonce, empty transaction list. Every node starts from the same genesis, so every node’s chain shares the same root.</p>

<h2 id="mining-a-256-bit-lottery">Mining: A 256-Bit Lottery</h2>

<p>Proof-of-work sounds mystical until you see the actual check. Here it is, in full:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="n">block</span><span class="nf">.hash</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">difficulty</span> <span class="p">{</span>
    <span class="c1">// we mined a block</span>
<span class="p">}</span>
</code></pre></div></div>

<p>That’s it. A block is valid if its hash, interpreted as a 256-bit number, is at most the difficulty target. The default target starts with <code class="language-plaintext highlighter-rouge">0x0f</code>, meaning the top four bits of the hash must be zero — a 1-in-16 chance per attempt. Make the target smaller and valid hashes get exponentially rarer. SHA-256 gives you no way to steer the output, so the only strategy is to try nonces until you get lucky:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">let</span> <span class="n">nonce</span><span class="p">:</span> <span class="nb">u32</span> <span class="o">=</span> <span class="nn">rand</span><span class="p">::</span><span class="nf">random</span><span class="p">();</span>

<span class="k">let</span> <span class="n">header</span> <span class="o">=</span> <span class="n">Header</span> <span class="p">{</span> <span class="n">parent</span><span class="p">,</span> <span class="n">nonce</span><span class="p">,</span> <span class="n">difficulty</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">,</span> <span class="n">merkle_root</span> <span class="p">};</span>
<span class="k">let</span> <span class="n">block</span> <span class="o">=</span> <span class="n">Block</span> <span class="p">{</span> <span class="n">header</span><span class="p">,</span> <span class="n">content</span> <span class="p">};</span>

<span class="k">if</span> <span class="n">block</span><span class="nf">.hash</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">difficulty</span> <span class="p">{</span>
    <span class="n">blockchain</span><span class="nf">.insert_mined</span><span class="p">(</span><span class="o">&amp;</span><span class="n">block</span><span class="p">);</span>
    <span class="n">server</span><span class="nf">.broadcast</span><span class="p">(</span><span class="nn">Message</span><span class="p">::</span><span class="nf">NewBlockHashes</span><span class="p">(</span><span class="nd">vec!</span><span class="p">[</span><span class="n">block_hash</span><span class="p">]));</span>
<span class="p">}</span>
</code></pre></div></div>

<p>One detail worth noticing: the miner samples a <em>random</em> nonce each attempt rather than counting up from zero. For a solo miner it makes no statistical difference — every fresh SHA-256 evaluation is an independent coin flip — but it means two nodes assembling identical candidate blocks won’t grind through the same nonce sequence in lockstep.</p>

<p>Each loop iteration, the miner re-reads the chain tip (someone else may have extended the chain since the last attempt), pulls up to 10 pending transactions from the mempool, rebuilds the Merkle root, and tries again. A <code class="language-plaintext highlighter-rouge">lambda</code> parameter inserts a microsecond-scale sleep between attempts, which lets you dial the effective mining rate of the whole network — useful when you want blocks every few seconds instead of melting your CPU.</p>

<p>The deeper point: proof-of-work is a clock. It doesn’t verify anything about the transactions. It just makes block production <em>expensive and rate-limited</em>, so that the network produces blocks slowly enough to agree on them. Which brings us to the interesting part.</p>

<h2 id="the-longest-chain-consensus-without-a-vote">The Longest Chain: Consensus Without a Vote</h2>

<p>Two nodes will sometimes mine blocks at nearly the same moment, each extending the same parent. Now the network has a fork: two valid, competing versions of history. Nobody is in charge, so who decides?</p>

<p>Nobody decides. Every node independently follows one rule — the chain with the greatest height wins:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">pub</span> <span class="k">fn</span> <span class="nf">insert</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span> <span class="k">self</span><span class="p">,</span> <span class="n">block</span><span class="p">:</span> <span class="o">&amp;</span><span class="n">Block</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">let</span> <span class="n">height</span> <span class="o">=</span> <span class="n">parent_height</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
    <span class="k">self</span><span class="py">.blocks</span><span class="nf">.insert</span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n">block</span><span class="nf">.clone</span><span class="p">());</span>
    <span class="k">self</span><span class="py">.heights</span><span class="nf">.insert</span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n">height</span><span class="p">);</span>
    <span class="k">if</span> <span class="n">height</span> <span class="o">&gt;</span> <span class="k">self</span><span class="py">.tip_height</span> <span class="p">{</span>
        <span class="k">self</span><span class="py">.tip</span> <span class="o">=</span> <span class="n">hash</span><span class="p">;</span>          <span class="c1">// this chain is now the longest — switch to it</span>
        <span class="k">self</span><span class="py">.tip_height</span> <span class="o">=</span> <span class="n">height</span><span class="p">;</span>
    <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Note the strict inequality: a fork of <em>equal</em> length doesn’t displace the current tip. Each node sticks with the branch it saw first and keeps mining on it. The tie breaks when the next block lands on one side — whichever branch gets extended first becomes strictly longer, and every node switches to it. The other branch is abandoned; its blocks are kept in storage but no longer part of anyone’s view of history. Miners mine on the tip, the tip is whichever chain has the most work behind it, and disagreement is self-erasing.</p>

<p>The blockchain isn’t stored as a list. It’s a <code class="language-plaintext highlighter-rouge">HashMap&lt;H256, Block&gt;</code> plus a height index — a <em>tree</em> of every valid block ever seen, with the “chain” just being the path from the current tip back to genesis. Forks aren’t an error condition; they’re the normal state of the data structure.</p>

<h2 id="the-orphan-buffer-handling-out-of-order-arrival">The Orphan Buffer: Handling Out-of-Order Arrival</h2>

<p>A gossip network makes no ordering guarantees. Block 42 can arrive before block 41 — its parent — has ever been seen. The block can’t be validated (validation requires the parent’s ledger state), but throwing it away would be wasteful. So it goes into an orphan buffer, keyed by the hash of the parent it’s waiting for:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cd">/// Blocks whose parent has not been seen yet, keyed by the missing parent hash.</span>
<span class="n">orphan_buffer</span><span class="p">:</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">H256</span><span class="p">,</span> <span class="nb">Vec</span><span class="o">&lt;</span><span class="n">Block</span><span class="o">&gt;&gt;</span><span class="p">,</span>
</code></pre></div></div>

<p>When a block is orphaned, the node also sends the peer a <code class="language-plaintext highlighter-rouge">GetBlocks</code> request for the missing parent — actively backfilling the gap. And when any block is accepted, the node checks whether orphans were waiting on it and feeds them through a worklist:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">bc</span><span class="nf">.insert_received</span><span class="p">(</span><span class="o">&amp;</span><span class="n">block</span><span class="p">,</span> <span class="n">delay</span><span class="p">);</span>
<span class="c1">// Any orphans waiting on this block can now be processed.</span>
<span class="k">for</span> <span class="n">child</span> <span class="k">in</span> <span class="n">bc</span><span class="nf">.take_orphans</span><span class="p">(</span><span class="o">&amp;</span><span class="n">hash</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">worklist</span><span class="nf">.push_back</span><span class="p">(</span><span class="n">child</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The worklist matters: if blocks 41, 42, and 43 all arrived out of order, accepting 41 releases 42, and accepting 42 releases 43 — a whole buffered subtree can cascade into the chain from a single arrival.</p>

<h2 id="transactions-signatures-nonces-and-the-ledger">Transactions: Signatures, Nonces, and the Ledger</h2>

<p>mini-bitcoin uses an account model (like Ethereum) rather than Bitcoin’s UTXOs. The ledger is a map from address to <code class="language-plaintext highlighter-rouge">(nonce, balance)</code>, and a transaction is a signed instruction to move value:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">pub</span> <span class="k">struct</span> <span class="n">RawTransaction</span> <span class="p">{</span>
    <span class="k">pub</span> <span class="n">from_addr</span><span class="p">:</span> <span class="n">H160</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">to_addr</span><span class="p">:</span> <span class="n">H160</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">value</span><span class="p">:</span> <span class="nb">u64</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">nonce</span><span class="p">:</span> <span class="nb">u32</span><span class="p">,</span>
<span class="p">}</span>

<span class="k">pub</span> <span class="k">struct</span> <span class="n">SignedTransaction</span> <span class="p">{</span>
    <span class="k">pub</span> <span class="n">raw</span><span class="p">:</span> <span class="n">RawTransaction</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">pub_key</span><span class="p">:</span> <span class="nb">Vec</span><span class="o">&lt;</span><span class="nb">u8</span><span class="o">&gt;</span><span class="p">,</span>
    <span class="k">pub</span> <span class="n">signature</span><span class="p">:</span> <span class="nb">Vec</span><span class="o">&lt;</span><span class="nb">u8</span><span class="o">&gt;</span><span class="p">,</span>    <span class="c1">// Ed25519 over the serialized raw transaction</span>
<span class="p">}</span>
</code></pre></div></div>

<p>An address is the last 20 bytes of the SHA-256 hash of a public key — the same construction Ethereum uses. Validation checks three things, and each one closes a specific attack:</p>

<ol>
  <li><strong>The Ed25519 signature verifies against the raw transaction bytes.</strong> You can’t forge a transaction from someone else’s account.</li>
  <li><strong>The public key hashes to <code class="language-plaintext highlighter-rouge">from_addr</code>.</strong> You can’t sign with your own key while claiming to spend from someone else’s address — the key and the account are cryptographically bound.</li>
  <li><strong>The balance covers the value, and the transaction’s nonce is exactly the account’s current nonce + 1.</strong> The balance check stops overdrafts. The nonce check stops <em>replay</em>: without it, a merchant who received your signed “pay 10 coins” transaction could re-submit it forever. Each transaction is valid at exactly one point in an account’s history.</li>
</ol>

<p>Block validation applies transactions sequentially against a scratch copy of the parent’s state, so a block containing two transactions that each individually fit the balance — but together overdraw it — is rejected as a whole. Intra-block double-spends die there.</p>

<p>One subtlety: the ledger state is stored <em>per block hash</em>, not globally. Every block in the tree — including blocks on abandoned forks — has its own resulting state snapshot. When the tip jumps from one branch to another, the correct balances are already sitting there under the new tip’s hash. Reorgs don’t require rewinding anything.</p>

<p>There’s no coinbase reward in this implementation; balances are seeded by a deterministic “ICO” at genesis, and a background transaction generator produces a steady stream of signed transfers to keep the mempool full and blocks non-empty.</p>

<h2 id="gossip-how-blocks-travel">Gossip: How Blocks Travel</h2>

<p>The P2P layer is a non-blocking TCP server (built on <code class="language-plaintext highlighter-rouge">mio</code>) speaking an eight-message protocol:</p>

<div class="language-rust highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">pub</span> <span class="k">enum</span> <span class="n">Message</span> <span class="p">{</span>
    <span class="nf">Ping</span><span class="p">(</span><span class="nb">String</span><span class="p">),</span>
    <span class="nf">Pong</span><span class="p">(</span><span class="nb">String</span><span class="p">),</span>
    <span class="nf">NewBlockHashes</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">H256</span><span class="o">&gt;</span><span class="p">),</span>
    <span class="nf">GetBlocks</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">H256</span><span class="o">&gt;</span><span class="p">),</span>
    <span class="nf">Blocks</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">Block</span><span class="o">&gt;</span><span class="p">),</span>
    <span class="nf">NewTransactionHashes</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">H256</span><span class="o">&gt;</span><span class="p">),</span>
    <span class="nf">GetTransactions</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">H256</span><span class="o">&gt;</span><span class="p">),</span>
    <span class="nf">Transactions</span><span class="p">(</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="n">Transaction</span><span class="o">&gt;</span><span class="p">),</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The pattern is announce → request → deliver, and it’s the same for blocks and transactions. When a node mines a block, it doesn’t push the block to its peers — it broadcasts <code class="language-plaintext highlighter-rouge">NewBlockHashes</code>, a list of 32-byte hashes. A peer checks which hashes it doesn’t already have and replies <code class="language-plaintext highlighter-rouge">GetBlocks</code> for just those. Only then does the full block travel, via <code class="language-plaintext highlighter-rouge">Blocks</code>.</p>

<p>Hashes-first is a bandwidth economy: in a gossip network every node hears about every block from many neighbors, and pushing full bodies would mean receiving every block once per peer. Announcing hashes makes the redundant case — “I already have that” — cost 32 bytes instead of a full block.</p>

<p>When a node receives and accepts a block it hasn’t seen, it re-broadcasts the hash to <em>its</em> peers. That’s the “gossip”: each node tells its neighbors, who tell their neighbors, and a block mined anywhere reaches everywhere in a few hops — no routing, no central relay.</p>

<h2 id="watching-consensus-happen">Watching Consensus Happen</h2>

<p>Each node exposes an HTTP API, so a three-node network on one machine is three commands:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cargo run <span class="nt">--release</span> <span class="nt">--</span> <span class="nt">--p2p</span> 127.0.0.1:6000 <span class="nt">--api</span> 127.0.0.1:7000
cargo run <span class="nt">--release</span> <span class="nt">--</span> <span class="nt">--p2p</span> 127.0.0.1:6001 <span class="nt">--api</span> 127.0.0.1:7001 <span class="nt">-c</span> 127.0.0.1:6000
cargo run <span class="nt">--release</span> <span class="nt">--</span> <span class="nt">--p2p</span> 127.0.0.1:6002 <span class="nt">--api</span> 127.0.0.1:7002 <span class="nt">-c</span> 127.0.0.1:6000 <span class="nt">-c</span> 127.0.0.1:6001
</code></pre></div></div>

<p>Start mining on all three (<code class="language-plaintext highlighter-rouge">curl "localhost:7000/miner/start?lambda=2000000"</code>), then poll each node’s <code class="language-plaintext highlighter-rouge">/api/tip</code>. For a moment after startup the tips can differ — each node mining its own blocks — and then they snap together: same hash, same height, on all three nodes. That snap is the longest-chain rule doing its job. Opening <code class="language-plaintext highlighter-rouge">/visualize</code> in a browser shows the block tree growing live, forks and all, and <code class="language-plaintext highlighter-rouge">/blockchain/stats</code> reports each node’s measured block-propagation delay.</p>

<p>The tunable mining rate makes one of the deepest tradeoffs in blockchain design directly observable. Crank the mining rate up until blocks are produced faster than they propagate, and forks multiply — nodes keep extending tips that are already stale, and mining power is wasted on branches that lose. Slow the rate down and forks all but vanish. This is exactly why real Bitcoin targets a block every ten minutes: block time must comfortably exceed network propagation delay, or the network burns its security on orphaned work. Here, that’s not a claim in a whitepaper — it’s a parameter you can turn and a fork rate you can watch change.</p>

<h2 id="whats-deliberately-missing">What’s Deliberately Missing</h2>

<p>mini-bitcoin has no difficulty adjustment (the target is fixed at genesis), no mining rewards, no UTXO model, no scripting language, no persistent storage, and no peer discovery beyond the <code class="language-plaintext highlighter-rouge">-c</code> flag. Each omission marks where a real system spends its complexity: difficulty adjustment is what keeps Bitcoin’s block time stable as hashpower changes by orders of magnitude; coinbase rewards are the entire incentive layer; UTXOs trade the account model’s simplicity for parallelism and privacy; Script turns transactions from transfers into programs.</p>

<p>But none of those are what makes a blockchain <em>work</em>. The irreducible core is what’s here: hash-linked blocks, a proof-of-work clock, signature-gated state transitions, gossip dissemination, and one greedy rule — follow the longest chain — that turns thousands of independent, mutually distrustful machines into a single ledger. That core fits in about 1,500 lines of Rust. Bitcoin Core is a few hundred thousand. The delta is robustness, incentives, and two decades of adversarial hardening. The fundamentals are the same.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="dev" /><category term="project" /><summary type="html"><![CDATA[Build a Bitcoin-style node in Rust and explore proof of work, signed transactions, peer-to-peer gossip, forks, and consensus.]]></summary></entry><entry><title type="html">Building a Second Brain with Claude Code and Obsidian</title><link href="https://tonypark.dev/2026/05/09/second-brain/" rel="alternate" type="text/html" title="Building a Second Brain with Claude Code and Obsidian" /><published>2026-05-09T00:00:00+00:00</published><updated>2026-05-09T00:00:00+00:00</updated><id>https://tonypark.dev/2026/05/09/second-brain</id><content type="html" xml:base="https://tonypark.dev/2026/05/09/second-brain/"><![CDATA[<p><img src="/assets/posts/obsidian-brain-graph.png" alt="Obsidian Graph View" /></p>

<p>Andrej Karpathy published a workflow earlier this year that reframed how I think about LLMs and documents. The core observation: most people use LLMs in a retrieval pattern. You upload files, the model grabs relevant chunks at query time, and generates an answer. RAG. NotebookLM. ChatGPT file uploads. They all work this way, and they all share the same weakness — the model rediscovers knowledge from scratch on every question. Nothing compounds. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and stitch together the relevant fragments every single time.</p>

<p>Karpathy’s alternative: have the LLM incrementally build and maintain a persistent wiki. When a new source arrives, the model doesn’t just index it. It reads the source, extracts key information, and integrates it into an existing knowledge structure — updating entity pages, revising summaries, noting contradictions, strengthening or challenging the evolving synthesis. Knowledge is compiled once and kept current, not re-derived on every query.</p>

<p>I took that idea and built it into my actual daily workflow. My Obsidian vault is both my blog repository (Jekyll, GitHub Pages) and my personal notebook. Claude Code, Anthropic’s CLI agent, sits on top of it and maintains a wiki layer between my raw notes and published output. Here’s the full system and why I think it’s better than anything else I’ve tried for personal knowledge management.</p>

<h2 id="the-architecture">The architecture</h2>

<p>Three layers:</p>

<p><strong>Raw sources</strong> — the stuff I accumulate. Private memos in <code class="language-plaintext highlighter-rouge">_memo/</code>, web clippings, startup specs, investment research, and my published blog posts in <code class="language-plaintext highlighter-rouge">_posts/</code>. These are immutable. Claude reads them but never touches them.</p>

<p><strong>The wiki</strong> — a directory called <code class="language-plaintext highlighter-rouge">_brain/</code> containing LLM-generated markdown files. Source summaries, entity pages (people, companies, products), concept pages (mental models, frameworks, technical patterns), and synthesis pages (multi-source analyses). Claude owns this layer completely. It creates pages, updates them when I ingest new sources, maintains cross-references with <code class="language-plaintext highlighter-rouge">[[wikilinks]]</code>, and keeps everything internally consistent.</p>

<p><strong>The schema</strong> — a <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> file and a <code class="language-plaintext highlighter-rouge">SCHEMA.md</code> that tell Claude how the wiki is structured, what the conventions are, and what workflows to follow. This is the configuration layer. It’s what makes Claude a disciplined wiki maintainer instead of a generic chatbot.</p>

<p>The blog (<code class="language-plaintext highlighter-rouge">_posts/</code>) sits on top as the public output layer. It’s where the best thinking graduates to. Everything below it is machinery.</p>

<h2 id="how-it-works-in-practice">How it works in practice</h2>

<p>Three operations.</p>

<p><strong>Ingest.</strong> I drop a new source — an article, a memo, a clipping — and tell Claude to process it. Claude reads the document, creates a source summary page, identifies entities and concepts, creates or updates their wiki pages, adds everything to the master index, and appends a log entry. A single source typically touches 5-15 wiki pages across the system. When I ingested my startup’s product memo, it created pages for the company, the co-founders, the technical architecture concepts (local-first, source-grounding, voice profiles), the sales motion, the competitive landscape — all cross-linked.</p>

<p>Here’s what a source page looks like after ingest:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">source</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Oddity</span><span class="nv"> </span><span class="s">1</span><span class="nv"> </span><span class="s">Product</span><span class="nv"> </span><span class="s">Memo"</span>
<span class="na">created</span><span class="pi">:</span> <span class="s">2026-05-09</span>
<span class="na">updated</span><span class="pi">:</span> <span class="s">2026-05-09</span>
<span class="na">tags</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">startup</span><span class="pi">,</span> <span class="nv">edtech</span><span class="pi">,</span> <span class="nv">product</span><span class="pi">]</span>
<span class="na">sources</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">_memo/Product</span><span class="nv"> </span><span class="s">Memo.md"</span><span class="pi">]</span>
<span class="nn">---</span>

<span class="gu">## Summary</span>
Internal product design doc for Oddity 1's AI counselor.
The core bet: the bottleneck in college rec letters isn't
drafting — it's that counselors don't know their students
deeply enough to write anything non-generic.

<span class="gu">## Key Points</span>
<span class="p">-</span> Talk-Read-Write pipeline captures student voice...
<span class="p">-</span> Source-grounding with verbatim gate prevents hallucination...

<span class="gu">## Entities Mentioned</span>
<span class="p">-</span> [[oddity1]] — the product itself
<span class="p">-</span> [[gemini]] — inference backend (2.5 Pro/Flash)
<span class="p">-</span> [[tauri]] — desktop framework choice

<span class="gu">## Concepts Mentioned</span>
<span class="p">-</span> [[source-grounding]] — every claim traces to verbatim quote
<span class="p">-</span> [[local-first]] — student data never leaves the device
<span class="p">-</span> [[blandness-test]] — what admissions officers use to detect AI
</code></pre></div></div>

<p>Every entity and concept in that list has its own page. <code class="language-plaintext highlighter-rouge">[[oddity1]]</code> has an overview, a “Mentioned In” section linking back to every source that references it, and cross-links to related entities. Same for <code class="language-plaintext highlighter-rouge">[[source-grounding]]</code> — it has a definition, key points, and backlinks. The wiki builds a map that gets denser with every ingest.</p>

<p><strong>Query.</strong> I ask questions and Claude answers from the wiki’s compiled knowledge, not from re-reading raw files. The difference is real. When I ask “what’s the connection between stablecoins and autonomous AI agents?”, Claude doesn’t grep through my 15 memos and 18 blog posts looking for matches. It checks the index, reads <code class="language-plaintext highlighter-rouge">[[autonomous-agent-payments]]</code>, <code class="language-plaintext highlighter-rouge">[[x402]]</code>, <code class="language-plaintext highlighter-rouge">[[circle]]</code>, <code class="language-plaintext highlighter-rouge">[[structural-neutrality]]</code>, finds the connections already established across multiple ingested sources, and synthesizes. The answer draws on my Circle deep dive, my investment strategy memo, and my blog post about Circle as the Visa of the AI era — but it doesn’t need to re-process any of them because the relevant knowledge is already compiled into atomic pages.</p>

<p>If the answer is substantial enough to be reusable, I file it as a synthesis page. Good questions become permanent wiki content. The explorations compound.</p>

<p><strong>Lint.</strong> Periodically I ask Claude to health-check the wiki. It scans for broken wikilinks, orphan pages nobody references, stale content, missing index entries, concepts that are mentioned but don’t have their own page yet. It’s like running a linter on your knowledge graph. Tells me where the gaps are, what new sources could fill them, what contradictions have emerged between older and newer information.</p>

<h2 id="why-this-is-better-than-rag">Why this is better than RAG</h2>

<p>RAG has no memory. Every query starts cold. The embedding search might miss relevant documents if the phrasing is slightly different. There’s no cross-referencing, no contradiction detection, no accumulated synthesis.</p>

<p>The wiki approach means that by the time I ask a question, most of the hard intellectual work is already done. Entities are already identified and linked. Concepts are already defined and cross-referenced. Relationships are already mapped. The LLM at query time is reading a pre-built knowledge graph, not doing ad-hoc retrieval over a pile of unstructured text.</p>

<p>Concrete example: my vault has 15 private memos about my startup (product specs, security architecture, YC application, sales playbooks, outreach scripts). RAG would retrieve maybe 3-4 of those per query based on embedding similarity. The wiki has already synthesized all 15 into a dense cluster of entity and concept pages — <code class="language-plaintext highlighter-rouge">[[oddity1]]</code> alone has “Mentioned In” links to 9 different source pages. When I query something about the startup, I get answers informed by the full picture, not a lossy retrieval sample.</p>

<h2 id="the-obsidian-angle">The Obsidian angle</h2>

<p>The wiki lives as markdown files in an Obsidian vault. That’s deliberate. Obsidian’s graph view shows me the shape of my knowledge — which pages are hubs, which are orphans, which clusters are forming. I can browse any wiki page in the editor. <code class="language-plaintext highlighter-rouge">[[wikilinks]]</code> are clickable. The backlinks panel shows everything that references the current page.</p>

<p>Every wiki page has YAML frontmatter (type, tags, creation date, source references), which means Obsidian’s Dataview plugin can generate dynamic tables — show me all entities tagged <code class="language-plaintext highlighter-rouge">fintech</code>, all concepts tagged <code class="language-plaintext highlighter-rouge">investing</code>, all sources ingested in the last week.</p>

<p>The vault is also my blog repo. Jekyll builds from <code class="language-plaintext highlighter-rouge">_posts/</code>. The blog is the public output layer; <code class="language-plaintext highlighter-rouge">_brain/</code> is gitignored. So the system is private — all my notes, memos, wiki content stay local — but the published posts that graduate from it are version-controlled and deployed.</p>

<h2 id="why-claude-code-specifically">Why Claude Code specifically</h2>

<p>Claude Code runs in the terminal, has full filesystem access, and maintains a project-level <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> that persists across sessions. That last part is the key differentiator. The <code class="language-plaintext highlighter-rouge">CLAUDE.md</code> + <code class="language-plaintext highlighter-rouge">SCHEMA.md</code> files mean every new session inherits the full context of how the wiki works, what the conventions are, and how to operate on it. I don’t re-explain the system every time.</p>

<p>It also means I can define workflows declaratively. The schema says: when ingesting, do these steps. When querying, check the index first. When linting, scan for these specific issues. Claude follows the schema because it reads it at session start. The wiki maintains itself.</p>

<p>File access matters too. Claude Code can read my gitignored <code class="language-plaintext highlighter-rouge">_memo/</code> folder, read PDFs (with poppler), and write directly to <code class="language-plaintext highlighter-rouge">_brain/</code>. The operation is: I type “ingest <code class="language-plaintext highlighter-rouge">_memo/Clippings/new-article.md</code>” and the wiki updates. No upload step, no context window management, no copy-pasting.</p>

<h2 id="extending-karpathys-idea-for-blogging">Extending Karpathy’s idea for blogging</h2>

<p>Karpathy’s framing is about research knowledge management. I extended it for something slightly different: the wiki is also the engine behind my blog.</p>

<p>When I write a new post, I’m drawing on compiled wiki content. The Circle post started as a query against my wiki — “what’s the stablecoin landscape look like and where does Circle fit?” — which pulled from my Circle deep dive clipping, my investment strategy memo, and my tokenization post. The synthesis was already half-done. I was connecting dots that had already been identified and cross-linked, not starting from a blank page.</p>

<p>When I publish a post, I ingest it back into the wiki. The blog post becomes a source. Its arguments feed into entity and concept pages. The published writing strengthens the private knowledge structure, which in turn makes the next post easier to write. The loop runs in both directions.</p>

<h2 id="current-state">Current state</h2>

<p>195 wiki pages: 36 source pages, 59 entity pages, 100 concept pages. Covering startups, investing, film analysis, programming, sports analytics, productivity frameworks, and philosophy. All cross-linked. All indexed.</p>

<p>The system took about an hour to set up and an afternoon to run the initial mass ingest. Now it’s maintenance mode — I ingest new sources as they come in, query when I need to think through something, lint occasionally. The compounding has already started. Each new source I ingest connects to more existing pages than the last one did.</p>

<p>I think this is what personal knowledge management was always supposed to be. A living map of everything you know that gets denser and more useful over time, maintained by something that never forgets to update the cross-references. Every note-taking app I’ve tried before eventually became a graveyard. This one doesn’t, because I’m not the one responsible for maintaining the connections.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="dev" /><summary type="html"><![CDATA[How I use Claude Code and Obsidian to turn notes, articles, and published writing into a wiki that builds knowledge over time.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tonypark.dev/assets/posts/obsidian-brain-graph.png" /><media:content medium="image" url="https://tonypark.dev/assets/posts/obsidian-brain-graph.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Can Circle be the Visa of the AI era?</title><link href="https://tonypark.dev/2026/05/08/circle/" rel="alternate" type="text/html" title="Can Circle be the Visa of the AI era?" /><published>2026-05-08T00:00:00+00:00</published><updated>2026-05-08T00:00:00+00:00</updated><id>https://tonypark.dev/2026/05/08/circle</id><content type="html" xml:base="https://tonypark.dev/2026/05/08/circle/"><![CDATA[<p><img src="/assets/posts/circle.webp" alt="img" /></p>
<h2 id="payments-are-shifting-from-human-only-to-human-plus-machine">Payments are shifting from human-only to human-plus-machine</h2>

<p>The man who built PayPal has built a payment app again, twenty-five years later. This time it isn’t aimed at people.</p>

<p>Elon Musk’s X Money’s public beta opened on April 26th. The feature list reads like a Venmo killer: 6% yield, 3% cashback, 0% FX fees, free P2P transfers, FDIC coverage up to $250,000 through Cross River Bank, and Visa Direct rails for instant funding and withdrawals. Money-transmitter licenses — the state-by-state slog that usually takes fintechs three to five years — have already been quietly secured in 41 states. On top of that sits a 600-million-user distribution layer.</p>

<p>The obvious read is that Musk is coming for PayPal, Venmo, and Cash App. The obvious read is wrong.</p>

<p>Three competing narratives have circulated since the launch, and none of them survive contact with Musk’s actual track record. As a Venmo competitor, X Money walks into a saturated, habitual market. Venmo has ~90M users, Cash App ~50M, switching is rare, and a 6% yield more than 5x a normal deposit account immediately drew a Senator Warren letter asking how a non-bank can pay bank-illegal interest. More fatally, the thesis can’t explain a 25-year arc. Buying Twitter for $44B to ship a better Venmo is not coherent capital allocation. As an American super app, X Money is up against a graveyard: Meta’s Diem was wound down in 2022, WhatsApp Pay never gained traction, PayPal’s super-app push collapsed back into a payments product. Individualist consumer culture, 50-state regulatory fragmentation, and low public trust in Big Tech keep killing the WeChat model in the US, and Musk knows that history. As a USDC integration, it would solve cross-border remittance overnight, but it would also make X dependent on Circle’s policy and reserves. Musk’s pattern is to own infrastructure, not rent it. Tesla buys battery companies. SpaceX builds its own satellites. X runs its own ad stack. As a private stablecoin (XUSD or X Coin), it fits Musk’s style and fits the GENIUS Act’s late-stage carve-out for non-financial issuers, but PayPal already ran that experiment. PYUSD has 400M potential users and still sits at roughly 4% of USDC. A stablecoin without external usage locations is just an internal balance with extra steps.</p>

<p>So none of the standard interpretations explain why Musk is doing this, why now, or why he’s been holding the X.com domain since 1999.</p>

<p>In March of that year, Musk put $12M of his own money into X.com, pitched as the place where every form of finance lived on the internet. By 2000 it had merged with Confinity, been renamed PayPal, and pushed Musk out of the CEO seat while he was on his honeymoon. He bought the X.com domain back from PayPal in 2017, acquired Twitter in 2022, renamed it X in 2023, and has now launched X Money on top of it. The original 1999 vision wasn’t wrong. It was early. In 1999, the only entity that could initiate a payment was a human. Internet banking just made human payments more convenient. PayPal was what was <em>possible</em> given that constraint.</p>

<p>The constraint is gone.</p>

<p>In July 2025, Trump signed the GENIUS Act, the first US federal stablecoin framework. The intended scope was banks, bank subsidiaries, and licensed fintechs. A late-stage clause widened it to non-financial issuers — tech companies — under defined conditions. Senator Warren publicly called this a “carve-out” and pointed at the timing: Musk was inside the White House as a Special Government Employee while the bill was being negotiated. In April 2026 she sent him thirteen questions, one asking directly whether he was involved.</p>

<p>Now run that alongside the rest of his portfolio. xAI’s Grok is a reasoning agent embedded directly inside X. Tesla’s Optimus is scheduled for full mass production in 2026. The Cybercab is a driverless vehicle that charges and parks itself. Starlink owns global connectivity. Neuralink is a brain-machine interface. The pattern is not “Musk owns AI plus robots plus cars.” Every one of these assets is an autonomous economic actor. Optimus needs to order parts. A Robotaxi needs to pay for charging. Grok needs to settle API calls. None of them have a human typing in a CVV.</p>

<p>Seen this way, X Money is not a P2P app. It is the wallet layer for the autonomous assets Musk is simultaneously building. The 87-year-old Captain Kirk fronting the launch is not a casting accident. Star Trek is the cultural shorthand for a future of automated systems, and the branding is doing exactly the work the product is doing. What Musk has spent twenty-five years assembling is autonomous-agent infrastructure with a wallet attached.</p>

<p>If payments are shifting from human-only to human-plus-machine, the strategically interesting question is no longer who builds the wallet. It is which digital dollar the wallet settles in. Musk is busy manufacturing the payers. The asset those payers actually transact in is being decided right now, and the decision is mostly already made.</p>

<h2 id="why-circle-becomes-the-visa-of-the-ai-era">Why Circle becomes the Visa of the AI era</h2>

<p>A year ago, the consensus was that USDC was about to lose. In April 2025, Coinbase zeroed out trading fees on PayPal’s PYUSD, then sitting at $870M in market cap, and analysts argued that PayPal’s 439M active accounts and $1.79T in 2025 payment volume would steamroll Circle. A month later, Reuters reported that JPMorgan, Bank of America, Citi, and Wells Fargo were exploring a joint bank-issued stablecoin. The narrative wrote itself: a no-brand 80-billion-dollar token couldn’t survive PayPal’s distribution and the banks’ brands.</p>

<p>The Q4 2025 scoreboard says the opposite. USDC supply is $75.3B, up 72% year-over-year. On-chain transaction volume across Q4 and Q1 came in at $11.9T, up 247%. PYUSD did grow — to $3.43B — but USDC’s market cap is now $77.6B. PYUSD is roughly 4.4% of USDC.</p>

<p>The reason is a category error in how most people read stablecoins. Power is not measured in users. It is measured in usage locations, the venues, protocols, and standards that name a specific stablecoin as their settlement asset. PayPal has wallets. USDC has the market. PYUSD inside a PayPal account is a feature. Users already have a dollar balance there and have no reason to convert into a token that only spends inside the same app. USDC, by contrast, is the default settlement asset across exchanges, DeFi protocols, fintechs, institutional networks, and emerging payment standards. The market that already missed this can be seen in three places.</p>

<p>The first is on-chain derivatives. Hyperliquid holds roughly 70% of the on-chain perpetual-futures market, with 30-day trading volume above $180B. DYDX, in second place, runs at 10-12% of that. Hyperliquid’s documentation makes the rule explicit: contracts are quoted in USDT, but the only acceptable margin asset is USDC. Even after Hyperliquid launched its own USDH stablecoin last year, more than 90% of deposits remain in USDC. Tether’s market cap is roughly twice USDC’s. In the venue that defines on-chain leverage, Tether is structurally locked out.</p>

<p>The second is prediction markets. Polymarket has been USDC-only on Polygon since 2020. Monthly trading volume went from ~$2B in March 2025 to $26.75B in January 2026, a roughly 13x expansion in a year. In October 2025, ICE, the parent of the New York Stock Exchange, committed up to $2B in strategic investment at an $8B valuation. The most conservative actor in traditional finance just put real capital into a USDC-denominated venue. Polymarket’s own new settlement token, PUSD, is backed 1:1 by USDC. It deepens the dependency rather than replacing it.</p>

<p>The third is AI agent payments. HTTP has had a status code reserved for machine-to-machine payments, <code class="language-plaintext highlighter-rouge">402 Payment Required</code>, since the 1990s. It sat empty for thirty years because there was no standard to fill it. In September 2025, Coinbase and Cloudflare shipped X402: when an agent calls an API and receives a 402, it pulls funds from its wallet and retries the request automatically. No human in the loop. In 2026, governance moved under the Linux Foundation as the X402 Foundation, with Cloudflare and Stripe as governing members. Stripe integrated X402 USDC payments natively into its API on Base. Google’s agent payment protocol AP2 adopts X402 as the default stablecoin rail. The standard is technically chain-agnostic, but in practice it is USDC-only. Gasless transfers via EIP-3009, which make sub-cent payments economic, are supported overwhelmingly by USDC, and Circle’s own chain, Arc, adds Nano Payments down to one one-hundredth of a cent. The settlement asset for the agent economy is being defined into existence around USDC.</p>

<p>None of these are small markets. On-chain derivatives, prediction markets, and AI agent payments are three of the likeliest centers of gravity for crypto and internet payments over the next decade. In all three, USDC is the only asset accepted at the door.</p>

<p>What sits behind that door has also outgrown the word “stablecoin.” USDC is backed 1:1 by cash and cash equivalents, with most reserves in the BlackRock-managed Circle Reserve Fund and a daily report. CCTP moves it natively across blockchains 1:1, so USDC on Ethereum becomes USDC on Solana without bridge wrappers and liquidity does not fragment. The Circle Payments Network has 55 financial institutions live and 74 under review, running at roughly $5.7B annualized. Visa now allows US merchants and issuers to settle directly with Visa using USDC. What this adds up to is not a coin. It is a digital-dollar API.</p>

<p>The deeper moat is sixty years old. In 1958, Bank of America launched BankAmericard, the ancestor of the Visa card. From 1966 onward, BofA licensed the system out to other banks. Member banks immediately resented it: the rails, fees, and brand were controlled by a single competitor. By 1970 the politics were unworkable, and BofA spun the network out into a member-owned cooperative, which would later be renamed Visa. Mastercard was structured as a bank consortium from inception in 1966. The lesson is binding: a payment standard cannot be owned by a participant. Other players will not route their customers and capital through infrastructure that is also their competitor.</p>

<p>That is the wall every non-Circle stablecoin runs into. PYUSD is controlled by PayPal. No serious fintech wants its core settlement to depend on a competing payment app. JPMD is controlled by JPMorgan. Citi and Bank of America have no interest in routing through it. The four-bank joint stablecoin is still conceptual a year after the Reuters report, for the obvious reason: nobody can agree on who controls governance. Circle has no payment app, no exchange, and no bank. Adopting USDC does not put Circle in competition with the adopter’s core business. That structural neutrality, not the technology and not the brand, is the moat.</p>

<p>Two shifts are converging. The payer is becoming a machine. The rail is becoming a neutral digital-dollar network. Musk is building the payers and the wallet that holds their balances. Circle is building the rail those balances actually settle on. Whether X Money individually wins or fails is not the trade. The trade is the regime change underneath it: a payment system designed for seventy years around a human entering a card number is being replaced by one designed around autonomous agents transacting at machine speed. In the credit-card era, Visa won by being the neutral standard everyone could route through without arming a competitor. In the stablecoin era, that role is open exactly once, and USDC has already taken it.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><category term="investing" /><summary type="html"><![CDATA[Can Circle become a payment rail for the AI era? An argument about stablecoins, machine payments, and where digital dollars get used.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tonypark.dev/assets/posts/circle.webp" /><media:content medium="image" url="https://tonypark.dev/assets/posts/circle.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Future of Finance: Tokenization and Ethereum</title><link href="https://tonypark.dev/2026/05/01/tokenization/" rel="alternate" type="text/html" title="The Future of Finance: Tokenization and Ethereum" /><published>2026-05-01T00:00:00+00:00</published><updated>2026-05-01T00:00:00+00:00</updated><id>https://tonypark.dev/2026/05/01/tokenization</id><content type="html" xml:base="https://tonypark.dev/2026/05/01/tokenization/"><![CDATA[<p><img src="/assets/posts/eth.webp" alt="img" /></p>

<p>In September 2025, the global ETF market crossed $18.8 trillion in assets under management, a record, growing over 26% in less than a year. Larry Fink built that empire. BlackRock’s CEO democratized investing by making low-cost market access available to anyone with a brokerage account. Thirty years of relentless distribution. Eighteen trillion dollars.</p>

<p>Then, in his annual letter to investors and a series of CNBC appearances, Fink said something the financial world is still processing: “ETF was Step 1 of financial innovation. Step 2 will be the tokenization of every financial asset. Tokenization is democratization.”</p>

<p>This is not a crypto enthusiast talking. This is the man running an $18 trillion empire pointing at his next destination and calling it blockchain.</p>

<h2 id="what-every-transaction-actually-costs-you">What every transaction actually costs you</h2>

<p>When you tap “buy” on your brokerage app, the screen shows a trade that looks instant. It is not. Behind the UI, an aging infrastructure of custodians, clearinghouses, and settlement agents is still running on rails built in the 1970s. Full settlement, the moment the asset is legally yours and your capital is legally theirs, takes two business days (T+2).</p>

<p>During those two days, capital is frozen. It cannot be redeployed, collateralized, or moved. For institutions managing hundreds of billions, this is not a minor inconvenience. It is a structural drag on capital efficiency across the entire economy.</p>

<p>BlackRock’s own executives wrote in <em>The Economist</em>: “Ledgers have not been this interesting since double-entry bookkeeping was invented in medieval times.” They are not targeting the frontend of finance. They are targeting the plumbing. Replace the ledger. Make settlement atomic. Move capital in seconds, not days.</p>

<p>This is what tokenization actually is: taking a real-world asset, a Treasury bond, a share of stock, a slice of real estate, and representing it as a digital token on a blockchain. When that token changes hands, the underlying ownership changes hands simultaneously. No intermediary. No T+2 window.</p>

<h2 id="blackrocks-first-move-buidl">BlackRock’s first move: BUIDL</h2>

<p>In March 2024, BlackRock stopped theorizing and launched BUIDL, the BlackRock USD Institutional Digital Liquidity Fund, on the Ethereum public blockchain. Each token is worth $1. Behind it, actual US Treasuries and cash are held in custody. Interest accrues in real time, directly to token holders’ wallets.</p>

<p>This is not a proof of concept. This is a $13 trillion asset manager putting its product on Ethereum’s public infrastructure and inviting the world to use it. BUIDL crossed $500 million AUM within months of launch. It crossed $1 billion in 2025. The fund never closes, settles in seconds, and earns yield around the clock. None of that is possible in traditional fund structures.</p>

<p>The stablecoin market had already demonstrated this at scale. USDT and USDC together represent over $200 billion in tokenized fiat currency, processing trillions of dollars in transactions annually. Tokenized money works. BUIDL proved tokenized yield works. The logical next step is tokenizing everything else.</p>

<h2 id="the-institutional-green-light">The institutional green light</h2>

<p>On December 4, 2025, the SEC’s Investor Advisory Committee convened a formal public session on a single topic: the tokenization of equities. Most retail investors missed it.</p>

<p>The attendees tell the whole story. Nasdaq. Citadel Securities. Robinhood. Coinbase. BlackRock. All sitting at one table inside the SEC’s building, discussing not whether to tokenize stocks but how, specifically, how to integrate tokenized equities into existing regulatory frameworks.</p>

<p>This is where the framing shifted. The SEC is no longer treating tokenization as a crypto speculation problem to regulate away. It is treating it as an infrastructure upgrade to the existing securities market, one that needs new rules, not a ban. Combined with the Trump administration’s rollback of SAB 121 (which had prevented banks from custodying digital assets) and a visibly more crypto-friendly commission, the regulatory environment in 2025 looks nothing like 2022.</p>

<h2 id="two-tiers-two-different-battles">Two tiers, two different battles</h2>

<p>The tokenization market is not monolithic. It is two separate layers operating in parallel.</p>

<p>The backend (private chains) is invisible to retail investors. Goldman Sachs, BNY Mellon, and JPMorgan have built private, permissioned blockchains, Canton Network, Provenance, JPMorgan’s Kinexys (formerly Onyx), to handle institutional back-office operations. Kinexys alone has settled over $1 trillion in intraday repo transactions. These chains run settlement, collateral management, and fund accounting between large institutions. They are not trying to democratize anything. They are trying to make existing trillion-dollar operations more efficient.</p>

<p>This layer is impenetrable to public chains. It was never going to be Ethereum’s territory.</p>

<p>The frontend (public chains) is where institutional products are packaged and sold to the global market. BUIDL. Franklin Templeton’s BENJI fund. On-chain Treasuries. Tokenized credit. This is where liquidity aggregates, where retail and institutional investors interact, where DeFi composability creates entirely new product structures. This is Ethereum’s market.</p>

<h2 id="the-solana-trap-99-of-a-tiny-market">The Solana trap: 99% of a tiny market</h2>

<p>Here is the data point that sounds like it changes everything: Solana controls 90% of tokenized equity issuance and 99% of tokenized equity trading volume. Tesla, Nvidia, Google, all available as tokens, traded almost entirely on Solana. It looks like Solana has already won the race for the future of stock markets.</p>

<p>It has not. The numbers deserve a cold fact check.</p>

<p>The entire global tokenized equity market, every company, every token, every platform, has a combined market cap of roughly $500 million. The real global equity market is approximately $134 trillion. Solana’s 99% share amounts to 0.0004% of actual stock market value. This is not dominance in the ocean. This is dominance in a very small pond.</p>

<p>More critically: what are these tokenized stocks, exactly? Almost none are actual equities. The majority are synthetic instruments, price-tracking derivatives or collateralized certificates issued by special-purpose vehicles registered in Switzerland, Bermuda, or other jurisdictions outside US regulatory reach. They do not confer voting rights. They are not registered securities under US law. And they are banned for US investors.</p>

<p>Bybit, Kraken, and similar platforms only open these products to European and Asian users for precisely this reason. The European Securities and Markets Authority has issued formal warnings: most tokenized stocks do not grant actual shareholder rights, and investor confusion about this is widespread. The World Federation of Exchanges went further, writing directly to the SEC to argue that these instruments are regulatory arbitrage, the same risk as a security, without the same protections.</p>

<p>The 99% figure reflects a small, unregulated, US-excluded market exploiting regulatory gaps. The real game, SEC-approved, compliant tokenized equities available to American investors with institutional capital behind them, has not yet begun. When that market opens, Solana’s current lead is largely irrelevant.</p>

<h2 id="the-ethereum-convergence">The Ethereum convergence</h2>

<p>As of December 2025, approximately $18.5 billion in tokenized real-world assets (excluding stablecoins) sits on-chain. Of that, over $12.1 billion, 65%, is on Ethereum. US Treasuries, institutional money market funds, tokenized credit. The assets with the highest compliance requirements and the deepest capital behind them are overwhelmingly on Ethereum.</p>

<p>The pattern of institutional choice is even more telling than the aggregate number:</p>

<ul>
  <li>BlackRock BUIDL: built on Ethereum</li>
  <li>Franklin Templeton BENJI: Ethereum and Polygon (an EVM chain)</li>
  <li>Coinbase Base: an Ethereum Layer 2</li>
  <li>Robinhood’s tokenized equity infrastructure: an Ethereum Layer 2</li>
</ul>

<p>Asset managers, brokers, exchanges. Every major institution building in this space independently arrived at the same answer: EVM. Not because Ethereum is technically perfect. It is not. Because it has the deepest liquidity, the most audited smart contract standards (ERC-20, ERC-3643 for compliant security tokens), the most developer tooling, and the most institutional integrations already in production.</p>

<p>There is also a structural moat that competitors cannot easily replicate: DeFi composability. A tokenized Treasury on Ethereum can be used as collateral in a lending protocol, paired with a yield strategy, or integrated into a structured product, automatically, without coordination overhead. The infrastructure already exists. This is why asset managers do not just want to tokenize their products. They want to tokenize them on Ethereum, where those products can interact with the rest of the ecosystem.</p>

<p>This convergence looks less like a competition and more like the standardization of an operating system. When global PC markets converged on Windows, it was not because Windows was technically superior to every alternative. It was because the network effect of shared infrastructure became self-reinforcing. The EVM is following the same path for institutional digital finance.</p>

<h2 id="2030-the-map-is-already-drawn">2030: the map is already drawn</h2>

<p>McKinsey’s conservative estimate puts the tokenized asset market at $2 trillion by 2030. That is roughly 60 times today’s size. Roland Berger and BCG are less conservative: their upper estimates reach $16 trillion, comparable to today’s entire ETF market.</p>

<p>The credibility of these numbers comes not from the analysts writing them but from the institutions already moving. BlackRock does not launch experimental products on speculative infrastructure. Franklin Templeton does not route institutional capital through unproven systems. When the firms that manage the world’s capital start building production infrastructure on a given platform, that is the signal. The projections are the footnote.</p>

<p>The ETF parallel is instructive. The first ETF, SPY, launched in January 1993, was largely ignored. Institutional observers called it a niche product for traders, not a serious investment vehicle. Thirty years later, it holds $18.8 trillion in assets.</p>

<p>Tokenization is at its January 1993 moment. BUIDL is SPY.</p>

<h2 id="the-right-question">The right question</h2>

<p>The debate over Ethereum versus Solana is real, but it is a second-order question. Whether tokenization will happen has already been answered by the people with the most skin in the game.</p>

<p>Larry Fink declared tokenization is democratization. The SEC convened the meeting. BlackRock built BUIDL. Every major platform independently chose EVM.</p>

<p>The operating system of global finance is being upgraded. The transition from ETF to token is the same magnitude of shift as the transition from paper stock certificates to electronic brokerage accounts. It took decades then. It will be faster this time, because the infrastructure exists and the institutions are not waiting.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><category term="investing" /><summary type="html"><![CDATA[How tokenization, institutional capital, and Ethereum are changing financial infrastructure and the role of the EVM.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tonypark.dev/assets/posts/eth.webp" /><media:content medium="image" url="https://tonypark.dev/assets/posts/eth.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Lessons I learned after 1 year of building a startup</title><link href="https://tonypark.dev/2026/04/12/lessons/" rel="alternate" type="text/html" title="Lessons I learned after 1 year of building a startup" /><published>2026-04-12T00:00:00+00:00</published><updated>2026-04-12T00:00:00+00:00</updated><id>https://tonypark.dev/2026/04/12/lessons</id><content type="html" xml:base="https://tonypark.dev/2026/04/12/lessons/"><![CDATA[<p>I’ve been learning a lot, and I’m so glad I can proudly say that I’m actually going to bed smarter than when I woke up, just as Charlie Munger advised. I truly believe that the tiny, repetitive growth will eventually pay off via the power of compounding. There is still so much to learn, but also can’t wait to see what will come. These are the key lessons I need to keep in mind for myself:</p>

<ol>
  <li>Pricing comes first. Research the market and set the price (WTP validation) before proceeding with design and building. Sell first, then give what they said they <del>want</del> need.</li>
  <li>Is this product a <em>painkiller</em> or a <em>vitamin</em>? Especially for founders going from 0 to 1: Does our product solve a real problem, or is it just a <em>nice-to-have</em>? Just because a product sounds good doesn’t mean it solves a problem or that people will pay for it. There are many good ideas, but people can live without them.</li>
  <li>Targeting everyone means targeting no one. Trying to distribute to a broad audience dilutes the limited resources and focus. Paradoxically, the more widespread the problem, the more specific the initial target audience should be.</li>
  <li>Don’t overthink it. What we need isn’t our brain’s thought, but the opinion of users. So stop trying to make it perfect and just ship it.</li>
  <li>Are we chasing the waves, or are we seizing the inevitable future? Is time on our side, or is it our enemy?</li>
</ol>

<p>I’ll keep the lessons updated as I learn more.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><summary type="html"><![CDATA[Lessons from a year of building a startup, with reflections on learning, decisions, and the compounding value of small improvements.]]></summary></entry><entry><title type="html">The Knowledge Problem and AI Governance: Hayek on the Anthropic–Pentagon Conflict</title><link href="https://tonypark.dev/2026/03/06/ai-governance/" rel="alternate" type="text/html" title="The Knowledge Problem and AI Governance: Hayek on the Anthropic–Pentagon Conflict" /><published>2026-03-06T00:00:00+00:00</published><updated>2026-03-06T00:00:00+00:00</updated><id>https://tonypark.dev/2026/03/06/ai-governance</id><content type="html" xml:base="https://tonypark.dev/2026/03/06/ai-governance/"><![CDATA[<p>In late February 2026, a conflict between the artificial intelligence company Anthropic and the United States Department of Defense brought an important question: who should govern the utilization of AI systems? Anthropic, the creator of the Claude AI, held a Pentagon contract worth up to two hundred million dollars. The Department of Defense demanded that the company remove its self-imposed safety restrictions and allow military use of the technology for “all lawful purposes.” Anthropic refused, citing potential misuse, and the Pentagon decided to designate the company a “supply-chain risk,” a label ordinarily applied to foreign adversaries (Shalal et al.). Friedrich Hayek’s essay “The Use of Knowledge in Society” provides a powerful framework for understanding why state attempts to forcibly control private AI companies are likely to be clumsy and counterproductive. Hayek argues that socially relevant knowledge is dispersed, local, and constantly changing, so no central authority can fully gather and direct it. Applying this perspective to the Anthropic–Pentagon conflict reveals that attempts by the government to pressure companies into reversing their safety judgments are flawed. However, Hayek’s framework alone is insufficient. Frontier AI has the potential to concentrate private power and amplify the risks of surveillance and militarization to a societal scale. While this may not justify arbitrary state coercion against specific companies, it can justify generally applicable public rules.</p>

<p>Hayek’s core argument is that the basic problem of social order is not simply one of abstract calculation. The real problem is the “utilization of knowledge not given to anyone in its totality” (Hayek 520). Much of the knowledge needed for sensible decision-making exists only in fragmented form, distributed across many different people. Thereroe, Hayek rejects the fantasy that a single authority could possess all relevant information and direct society from above. According to Hayek, the dispute about planning is really a dispute about who does the planning: whether it is done centrally by one authority or decentrally by many persons whose separate decisions must somehow be coordinated (520–21).  For Hayek, competition is important not because it eliminates planning, but because it decentralizes it.</p>

<p>This point becomes clearer when Hayek distinguishes between abstract scientific knowledge and what he calls “the knowledge of the particular circumstances of time and place” (521). Such knowledge is practical, local, and often tacit. It includes information about specific shortages, shifting conditions, underused capacities, and new risks that may never appear in official statistics. Because this kind of knowledge cannot be fully communicated to a central authority, Hayek argues that many decisions must be left to the “man on the spot” (524). The market’s advantage lies in its ability to aggregate and communicate information quickly, while bureaucratic systems struggle because the relevant information is highly localized and because individuals often lack incentives to reveal it fully to planners. Thus, Hayek’s argument is not merely economic. It is a warning against the assumption that any centralized system possesses knowledge it can not truly have.</p>

<p>The Anthropic–Pentagon conflict is a good example of this problem. AI safety decisions depend on exactly the kind of specialized and evolving knowledge Hayek describes. Engineers and safety researchers know how models fail, what kinds of misuse are most likely to occur, and where present systems are vulnerable. Those judgments cannot be reduced to simple phrases like “all lawful uses.” A use may be legally permissible but technically reckless. The relevant question is not only whether an action is authorized by law, but whether the people closest to the model have good reason to think the system can perform that task safely and predictably.</p>

<p>From a Hayekian perspective, the Pentagon’s demand was flawed in treating the question of situated technical judgment as one of simple central authority.  Demanding that Anthropic remove safeguards assumed government officials could replace the company’s ongoing testing and evaluation with a blanket directive. Hayek would see this as a mistake. The issue is not whether the state has interests in defense. The issue is whether those interests give state officials the knowledge required to override the technical judgments of the people who actually understand the system’s limitations. Hayek’s answer would be no. </p>

<p>Some might counterargue that national defense is not an ordinary market and war requires coordination and centralized political responsibility. If the state cannot direct the use of military technology, then perhaps private firms gain too much power over matters that should belong to public authority. This objection is weighty, but it does not refute Hayek. Rather, it clarifies the distinction his paper necessitates. Hayek does not show that government has no role in AI governance. He shows that centralized authorities should not try to make particular technical decisions that depend on local knowledge they do not possess. The state may legitimately set general ends and public constraints. It may pass laws and prohibit especially dangerous uses. What it should not do, on Hayekian grounds, is issue a temporary ultimatum demanding that one company abandon its own safety judgments simply because officials want broader access.</p>

<p>This distinction also explains why this case has political significance beyond the knowledge issues. Capitalism holds value on the grounds of “diffusion of power”. That is, separating economic power from political power helps restrain ambitious rulers. In the Anthropic case, that separation came under pressure. When the government can threaten blacklisting or coercive exclusion in order to force a firm to relax its safeguards, political and technological power begin to fuse. Hayek’s warning is relevant here not only because centralized command is less informed, but also because it becomes harder to challenge once economic dependence and state authority are joined together. </p>

<p>Still, Hayek’s framework alone is insufficient. This is where Marx usefully supplements the analysis. According to historical materialism, productive forces develop within existing relations of production until they eventually outgrow them, generating institutional crises and conflicts. AI technology fits that pattern better than it fits the model of an ordinary market good. It is not just another product to be bought and sold efficiently. It is a productive force that can reshape labor markets, surveillance capacities, military power, and public discourse all at once. Marx’s insight helps identify a weakness in any purely Hayekian lens of the case. If one concludes that AI governance should simply be left to firms because they possess the most local knowledge, one overlooks the fact that those firms can themselves accumulate enormous power over social life.</p>

<p>Therefore, Marx identifies a problem Hayek did not sufficiently develop: even if the state lacks the knowledge to micromanage cutting-edge AI, private firms may still wield too much unchecked authority over a socially decisive technology. This does not mean Marx replaces Hayek. He adds a second dimension to the analysis. Hayek explains why command-style coercion is unsound, and Marx explains why laissez-faire deference to powerful firms is politically unstable. Together, they point toward a middle position: neither central planning nor complete laissez-faire.</p>

<p>After all, that is the most compelling lesson to draw from the Anthropic–Pentagon conflict. Hayek is right that those closest to the technology possess knowledge that cannot be fully centralized, and that managers act unwisely when they try to override that knowledge through direct command. But Marx is also right in  that new transformative technology can create concentrations of private power. Therefore, the best response is a system of democratically established general rules that prohibits the most dangerous uses of AI and demands accountability, while leaving technical implementation and safety judgments to those with relevant expertise.</p>

<h2 id="works-cited">Works Cited</h2>

<ul>
  <li>Hayek, F. A. “The Use of Knowledge in Society.” The American Economic Review, vol. 35, no. 4, Sept. 1945, pp. 519–530.</li>
  <li>Shalal, Andrea, et al. “Trump Directs US Agencies to Toss Anthropic’s AI as Pentagon Calls Startup a Supply Risk.” Reuters, 27 Feb. 2026.</li>
</ul>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><summary type="html"><![CDATA[What Hayek’s knowledge problem reveals about AI governance, centralized control, and the Anthropic–Pentagon conflict.]]></summary></entry><entry><title type="html">The ONE Thing</title><link href="https://tonypark.dev/2026/03/01/one-thing/" rel="alternate" type="text/html" title="The ONE Thing" /><published>2026-03-01T00:00:00+00:00</published><updated>2026-03-01T00:00:00+00:00</updated><id>https://tonypark.dev/2026/03/01/one-thing</id><content type="html" xml:base="https://tonypark.dev/2026/03/01/one-thing/"><![CDATA[<p>Every year, we promise ourselves we’ll exercise more, earn more money, study harder, nurture our relationships, and take on new challenges. Everything feels important. Nothing seems optional. However, Gary W. Keller and Jay Papasan’s book, <em>The ONE Thing</em>, asks the exact opposite: <strong>Is everything really that important?</strong></p>

<p>The book argues that the belief “everything is important” is one of the most dangerous mindsets we can have. In fact, it’s not just slightly wrong—it’s fundamentally flawed. When everything is important, priorities disappear. And when priorities disappear, energy becomes scattered. Scattered energy produces average results. We end up living busy lives without achieving anything truly meaningful. Success is rarely the result of doing many things well at the same time. More often, it comes from doing one most important thing exceptionally well.</p>

<p>We often compare life to a marathon—a long game where we must pace ourselves. While that’s true in a sense, the book offers a more practical perspective: life is a <strong>“short-term sprint until a habit is formed.”</strong> It takes an average of 66 days for a new behavior to become a habit. If you focus on and repeat one thing for 66 days, it stops being a task fueled by willpower and starts being an automated system. Ultimately, what changes your life is not a burst of motivation, but a system that keeps running.</p>

<p>So, why do we struggle to focus on just one thing? The reason is simple: everything else look appealing. Other things seem more important or urgent, and we’re hit with the anxiety of missing out. So we grab at everything. The problem is that every “extra” thing we hold onto steals a piece of our focus. When energy is divided, results are divided. And once again, we’re left wondering, “Why haven’t I made any real progress?”</p>

<p>There’s a famous story about Warren Buffett that illustrates this perfectly. When a young man asked for the secret to success, Buffett told him to list 25 goals he wanted to achieve. Then, he told him to circle the top five. When the young man said he’d work on the other 20 whenever he had free time, Buffett stopped him. He said those 20 are now your “Avoid-At-All-Costs List.” Success with the top five is already hard enough. True focus is not about adding more. It’s about eliminating what doesn’t matter most.</p>

<p>The core question of the book is this: <strong>“What is the ONE thing I can do such that by doing it, everything else will be easier or unnecessary?”</strong> This is a strategic question. It’s not just about finding something “important”; it’s about finding the leverage point that lowers the difficulty of everything else. In business, it might be a flagship product; for an individual, it might be health; for an investor, it might be a specific skill set.</p>

<p>Bill Gates once said that people overestimate what they can do in one year and underestimate what they can do in ten. We try to flip our lives upside down in 12 months, list 20 goals, and burn out within weeks. We lose our long-term consistency in the process. But if you repeat <strong>one thing</strong> for ten years, the story changes completely. It may look slow at first, but the power of compounding is staggering.</p>

<p>Think of it as conquering one domain per year. One year, your “One Thing” might be health. If you fully systemize your fitness that year, you don’t have to make it your top priority the next—the system is already running. The next year might be investing, and the year after that, business expansion. By stacking these wins one by one, you’ll find yourself on a completely different level in five or ten years.</p>

<p>Now the question returns to you. What is the ONE thing you must accomplish in 2026? If you achieve it, will other things become easier? Are you ready to commit to it for 66 days without distraction? Of course, focusing on just one thing can feel risky. What if it’s the wrong choice? What if you miss other opportunities? But is it truly safer to remain scattered, never fully committing to anything?</p>

<p><strong>Perhaps we fear choosing more than we fear failing.</strong> Yet one truth remains clear:
no risk = no story.</p>]]></content><author><name>Tony (Seunghyeon) Park</name><email>realtonypark [at] gmail [dot] com</email></author><category term="essay" /><summary type="html"><![CDATA[A reflection on choosing one priority, taking risks, and finding the work that makes other work easier or unnecessary.]]></summary></entry></feed>