<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Beacon</title><description>Clearly, usefully.</description><link>https://beacon-post.pages.dev/</link><language>en</language><item><title>This week: what actually changed</title><link>https://beacon-post.pages.dev/news/weekly-roundup-october-19-2026/</link><guid isPermaLink="true">https://beacon-post.pages.dev/news/weekly-roundup-october-19-2026/</guid><description>A short roundup of the week of 12–18 October 2026: a quiet fortnight for big launches, a slow change in the browser platform, and two new explainers on money.</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most weeks, very little actually changes. The announcements are large and the changes underneath them are small; the small changes are real and nobody writes about them. This week was one of those, and the honest version is a short list.&lt;/p&gt;
&lt;p&gt;The bigger story is that it was a quiet fortnight for large product launches, which is its own kind of story. A quiet release calendar is usually read as a sign that everyone is waiting for something. It is more often a sign that the previous cycle shipped a lot and the teams are now dealing with what they shipped. The releases that actually moved the needle this fortnight were small and unglamorous: a faster cold-start in a build tool nobody outside the industry has heard of, a fix to a focus trap in a widely used component library, and a documentation rewrite that made an old API understandable for the first time. None of these will appear in a newsletter, and the third of them probably mattered most.&lt;/p&gt;
&lt;p&gt;The browser platform continued its slow, unglamorous work. Container queries, which let a component respond to the size of its container rather than the size of the viewport, have moved from “you can use this” to “you can rely on this” across the major engines, and the practical upshot is that the same card component can now be dropped into a sidebar, a grid cell or a full-width band without a set of hand-written breakpoints. If you build interfaces for a living, this is one of those changes that quietly deletes a file.&lt;/p&gt;
&lt;p&gt;Weather turned, as it does. The first genuine cold of the season arrived mid-week and took the edge off the evenings, which is when most people in this country have been running their windows open. The practical advice is the same every year and worth repeating: if the temperature drops before you sleep, the room you wake up in is colder, and the sleep you get in a cold room is worse than the sleep you would have got in a slightly warmer one. A warm shower an hour before bed does more for most people than any gadget, and it costs a few minutes of electricity.&lt;/p&gt;
&lt;p&gt;Two new explainers went up on money, and they are the pieces we would point a reader to first. The emergency fund piece is the unglamorous one: what the number actually is, why the usual advice of “three to six months” is a range rather than a target, and which expenses belong in it when your income is not the same every month. The index fund piece is the one people ask for most and get least clearly explained anywhere else — what the fund actually holds, why the fee difference matters more than most people expect, and the three things that make a passive investment a bad one. Neither is exciting. Both are the sort of thing you read once and then use for years.&lt;/p&gt;
&lt;p&gt;Finally, a small thing about reading. Several people wrote in this week asking how to keep up with a publication that spans five unrelated lanes without abandoning three of them. The honest answer is that you do not, and you should not try. Pick the lane you came for. The lanes are arranged so that the ones that move fastest are at the top, and the rest is there when you want it, not before — and every post ever published is still one click away in the archive, arranged by month, so the thing you liked in March does not vanish because the homepage has moved on.&lt;/p&gt;</content:encoded><category>News</category></item><item><title>What a lockfile is, and why it is not a formality</title><link>https://beacon-post.pages.dev/tech/what-a-lockfile-is/</link><guid isPermaLink="true">https://beacon-post.pages.dev/tech/what-a-lockfile-is/</guid><description>A lockfile is a record of exactly what was installed, not a suggestion. Here is what it pins down, what it does not, and why deleting it is rarely the fix.</description><pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every JavaScript project has one of these files, almost nobody reads them, and everybody deletes them at the wrong moment. The lockfile is the record of what was actually installed, and the reason two people running the same command can end up with different code is usually right there in it.&lt;/p&gt;
&lt;h2 id=&quot;what-it-actually-holds&quot;&gt;What it actually holds&lt;/h2&gt;
&lt;p&gt;A lockfile lists every package in the tree, at the exact version that was installed, with the address it came from and a checksum of what arrived. Not the version you asked for - the version that was resolved.&lt;/p&gt;
&lt;div class=&quot;code-block&quot; data-code-block&gt;&lt;div class=&quot;code-block-bar&quot;&gt;&lt;span class=&quot;code-block-lang&quot; data-code-lang&gt;json&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;code-block-copy&quot; data-code-copy data-copied-label=&quot;Copied&quot;&gt;Copy&lt;/button&gt;&lt;/div&gt;&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &amp;quot;node_modules/fraunces&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &amp;quot;version&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;5.3.0&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &amp;quot;resolved&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;https://registry.npmjs.org/fraunces/-/fraunces-5.3.0.tgz&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &amp;quot;integrity&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;sha512-...&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The three lines that matter are the version, the address and the checksum. The version says what runs. The address says where it came from. The checksum says the bytes that arrived are the bytes that were published - which is the part that turns a lockfile from a convenience into a safety mechanism.&lt;/p&gt;
&lt;h2 id=&quot;what-it-does-not-hold&quot;&gt;What it does not hold&lt;/h2&gt;
&lt;p&gt;A lockfile does not pin your own code, your configuration, or the versions of the tools that run your build. It pins the dependency tree. That distinction is why “it works on my machine” survives a lockfile: the machine is still the machine.&lt;/p&gt;
&lt;p&gt;It also does not decide anything about peer dependencies or optional native builds. Those are resolved against the platform at install time, and a lockfile records the resolution it saw, not the one your colleague will see.&lt;/p&gt;
&lt;h2 id=&quot;why-deleting-it-is-rarely-the-fix&quot;&gt;Why deleting it is rarely the fix&lt;/h2&gt;
&lt;p&gt;When a build breaks, the reflex is to remove the lockfile and reinstall, on the theory that the file is the problem. Usually the file is the only record of what went wrong: delete it and you have thrown away the evidence and asked the registry for a fresh roll of the dice. The new install may well be the same, or it may pull a newer transitive dependency you never asked for, and now the failure has moved somewhere else entirely.&lt;/p&gt;
&lt;p&gt;The lockfile is only a problem when it is out of step with the manifest - a dependency was added by hand and never installed, or a version was edited in one file and not the other. The fix for that is to run the install and let the tool rewrite the file, not to remove it and hope.&lt;/p&gt;
&lt;h2 id=&quot;the-one-rule&quot;&gt;The one rule&lt;/h2&gt;
&lt;p&gt;Commit the lockfile. It is part of the project, it is what makes an install reproducible, and the checksum it carries is the only thing standing between a published package and a tampered one. A build that cannot be reproduced is a build that cannot be trusted, and the file that would have made it reproducible is the one that was deleted.&lt;/p&gt;&lt;script&gt;;(function () {
  var buttons = document.querySelectorAll(&apos;[data-code-copy]&apos;)
  for (var i = 0; i &lt; buttons.length; i += 1) {
    buttons[i].addEventListener(&apos;click&apos;, function (event) {
      var button = event.currentTarget
      var block = button.closest(&apos;[data-code-block]&apos;)
      var code = block ? block.querySelector(&apos;pre code&apos;) : null
      if (!code || !navigator.clipboard) return
      var label = button.textContent
      navigator.clipboard
        .writeText(code.textContent || &apos;&apos;)
        .then(function () {
          button.textContent = button.getAttribute(&apos;data-copied-label&apos;) || label
          window.setTimeout(function () {
            button.textContent = label
          }, 2000)
        })
        .catch(function () {
          button.textContent = label
        })
    })
  }
})()
&lt;/script&gt;</content:encoded><category>Tech</category></item><item><title>Box breathing: a four-minute way to downshift</title><link>https://beacon-post.pages.dev/health/box-breathing-four-minute-downshift/</link><guid isPermaLink="true">https://beacon-post.pages.dev/health/box-breathing-four-minute-downshift/</guid><description>Box breathing is a four-count breathing pattern that calms a stressed nervous system, needs no equipment, and fits into the four minutes you actually have between two things.</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most calming advice fails on a practical basis. It says “take a deep breath”, and a deep breath is exactly what a stressed person cannot do — a full inhale of a panicked breath is a gasp, not a relaxation. It says “meditate for twenty minutes”, and twenty minutes is not what you have between the meeting and the next one. Box breathing survives contact with a real week because it needs neither a quiet room nor a long block of time. Four minutes, one chair, no equipment, and it works whether you are sitting at a desk or standing on a platform.&lt;/p&gt;
&lt;p&gt;The technique is simple enough to describe in one sentence. Breathe in for a count of four. Hold for four. Breathe out for four. Hold empty for four. That single cycle is sixteen seconds, and twenty-five of them is the full four minutes. Everything else about the practice is refinement.&lt;/p&gt;
&lt;h2 id=&quot;what-is-actually-happening-in-the-body&quot;&gt;What is actually happening in the body&lt;/h2&gt;
&lt;p&gt;Box breathing is not a metaphor and it is not wishful thinking about the power of attention. It is a way of taking manual control of the single automatic knob you still have: the rate of your breathing. When stress arrives, the body shifts into a state of increased readiness — the heart rate climbs, the muscles tighten, attention narrows to whatever seemed urgent five minutes ago. That state is useful in moderation and corrosive in a long stretch. Breathing fast and shallow is part of what keeps it switched on.&lt;/p&gt;
&lt;p&gt;Slowing the breath down deliberately does two things. The first is mechanical: a longer exhale is the standard way to nudge the body back toward its resting configuration, and holding a steady four-count rhythm is a much easier signal for that system to read than an irregular one. The second is cognitive. A nervous mind has no empty space — it fills any pause with the thing it is worried about, and it fills it louder if you try not to think about it. Counting to four occupies exactly that space. It is a small, dull, satisfiable task, and dull satisfiable tasks are what a racing mind actually needs.&lt;/p&gt;
&lt;p&gt;The “hold” phases are the part people skip, and they are doing more work than they look like. The pause after the inhale and the pause after the exhale are where the pattern becomes rhythmic rather than merely slow. Skipping them leaves you with paced breathing, which is helpful. Keeping them gives the nervous system a predictable beat to lock onto, and predictability is most of what regulation is.&lt;/p&gt;
&lt;h2 id=&quot;how-to-do-it&quot;&gt;How to do it&lt;/h2&gt;
&lt;p&gt;Sit with both feet on the floor, or stand with your back against a wall. Let your shoulders drop — you do not need to fix your posture, you just need to stop holding yourself up with effort. Then breathe through your nose, and count in your head.&lt;/p&gt;
&lt;p&gt;Count the inhale from one to four. Count the hold from one to four. Count the exhale from one to four. Count the empty hold from one to four. If four is hard — and for many people it is, especially at the start — use two, or three. The number does not matter. What matters is that all four phases are the same length, so the cycle has an even beat. A box drawn in two seconds on each side is still a box.&lt;/p&gt;
&lt;p&gt;When you notice you have lost the count, that is not a failure and it is not a meditation technique going wrong. The noticing is the practice. Start again from one, in the middle of the cycle, wherever you happen to be. There is no penalty for losing the count, because the part of your mind that noticed you lost it just did the most valuable thing box breathing has to offer: it pulled your attention back out of the worry and into the counting. If you find yourself snapping back to your thoughts with irritation, that irritation is worth noticing too. The pattern is not just slowing your breathing. It is repeatedly returning your attention to something you chose, and that is the entire mechanism by which a wandering mind gets trained.&lt;/p&gt;
&lt;p&gt;Three practical notes. First, put the phone somewhere you cannot see it. The most common failure mode is not a bad day, it is a notification at minute two. Second, if you feel light-headed, that is too much effort — return to a normal, comfortable breath and start counting again from four. Third, do not strain the holds. A held breath that you are white-knuckling is a held breath your body is trying to escape from.&lt;/p&gt;
&lt;h2 id=&quot;when-it-helps-and-when-it-is-not-the-answer&quot;&gt;When it helps, and when it is not the answer&lt;/h2&gt;
&lt;p&gt;Box breathing is good at the things breathing is good at: a spike of acute stress, the fifteen minutes before something difficult, the period after a bad meeting, the moment you notice you have been clenching your jaw for an hour. It is a downshift, and a downshift is exactly what a wired body needs in order to think again.&lt;/p&gt;
&lt;p&gt;It is not a treatment for anything, and it is not a substitute for sleep, movement, or medical care. It also is not magic, and it will not produce a sense of calm on demand in the middle of a genuinely difficult situation. What it reliably does is change one measurable input — the rate of your breathing — and that is usually enough to make the next thirty seconds better than the last thirty seconds. Those better seconds tend to accumulate.&lt;/p&gt;
&lt;p&gt;If you want something with a longer arc, box breathing pairs well with the other two interventions that cost nothing: walking, which does the same downshift while also moving blood and interrupting rumination, and a consistent wake-up time, which does more for the underlying state than any single breathing technique. Use the box for the acute moments and the other two for the slow ones.&lt;/p&gt;
&lt;p&gt;The most common reason people quit is expecting the calm to arrive and finding only the counting. The counting is the point. You are not trying to become a different person in four minutes. You are trying to give your attention a short, boring, repeatable job, and to find out that you will come back to it every time you wander off.&lt;/p&gt;</content:encoded><category>Health</category></item><item><title>Emergency fund sizing: how many months of essential expenses to hold</title><link>https://beacon-post.pages.dev/finance/emergency-fund-how-much-to-save/</link><guid isPermaLink="true">https://beacon-post.pages.dev/finance/emergency-fund-how-much-to-save/</guid><description>A cash buffer is the one piece of financial infrastructure that has to be in place before anything else works. Here is how to work out the number, how to build it, and where to keep it.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most personal-finance advice is a list of products, and the products are the last part of the answer. The part that comes first is much shorter: keep enough cash on hand that an ordinary bad month does not turn into an ordinary bad year. The amount you need is not a rule of thumb to memorise. It is a number you can work out from your own spending, and it is usually smaller and more reachable than the number you are afraid of.&lt;/p&gt;
&lt;p&gt;The job of this money is to absorb the shocks that would otherwise land on a credit card. The premium you forgot. The hospital deposit. The three months between one job and the next. None of these is a catastrophe on its own. What turns them into one is that they arrive in the same quarter as something else, and the only way to deal with that is cash that is already there.&lt;/p&gt;
&lt;h2 id=&quot;what-the-money-is-for&quot;&gt;What the money is for&lt;/h2&gt;
&lt;p&gt;An emergency fund is a reserve for two kinds of shock, and the guidance for the two is not the same. There is the &lt;strong&gt;spending shock&lt;/strong&gt; - the unplanned bill, the repair, the medical charge you did not budget for. And there is the &lt;strong&gt;income shock&lt;/strong&gt; - the month when the salary stops and the search for the next one has barely started. Vanguard’s guide puts the first kind at about half a month’s worth of living expenses, and the second at three to six months, which tells you something useful: they are not the same problem, and the second is the expensive one.&lt;/p&gt;
&lt;p&gt;That is why the institutional guidance converges on three to six months. The Consumer Financial Protection Bureau’s guide to emergency funds is careful to say the amount depends on your own situation, and that you should start from the unexpected expenses you have actually had. The St. Louis Fed’s explainer is blunter: experts often recommend three to six months of essential expenses, and it gives a four-step method for getting to your own figure. The FDIC, being a deposit insurer, is more conservative again and suggests six months of living expenses. All of them are saying the same thing in different accents - the answer is a multiple of your own spending, and the multiple depends on how fragile your income is.&lt;/p&gt;
&lt;h2 id=&quot;working-out-your-number&quot;&gt;Working out your number&lt;/h2&gt;
&lt;p&gt;Take one month of your actual spending and split it in two. &lt;strong&gt;Essentials&lt;/strong&gt; are the things that continue whether or not you are working: rent or the mortgage, the electricity bill, groceries, transport, the phone, medicines, insurance premiums, the school fee. &lt;strong&gt;Everything else&lt;/strong&gt; is the rest - eating out, the streaming subscription, the headphones, the trip you took in December. The fund is built on the first list only, and ignoring the second is what makes the target feel impossible.&lt;/p&gt;
&lt;p&gt;Now multiply. Three months of essentials is where the Fed’s method starts; six months is where the FDIC settles, and it is the right end of the range when one income pays for the household, when the work is hard to replace, or when there are dependents. If your essentials run to ₹40,000 a month, then three months is ₹1,20,000 and six months is ₹2,40,000. If they run to ₹25,000, the same calculation gives you ₹75,000 and ₹1,50,000. A range is only useful once your own two numbers are on it.&lt;/p&gt;
&lt;p&gt;Two adjustments are worth making before you commit to a figure. The first is the honest one: if there is a second income in the household that did not stop when yours did, count fewer months. The second is the careful one: look at what your insurance does not cover. A health policy with a large deductible, or no policy at all, belongs inside your essentials as a monthly provision, because the bill will arrive and it will not wait for you to save for it.&lt;/p&gt;
&lt;h2 id=&quot;where-to-keep-it&quot;&gt;Where to keep it&lt;/h2&gt;
&lt;p&gt;Two things matter more than the return: the money has to be there when you need it, and you have to be unable to spend it by accident. The Consumer Financial Protection Bureau’s guide puts it plainly - safe, accessible, and somewhere you are not tempted to spend it on non-emergencies - and then offers the ordinary options: a bank or credit union account, a prepaid card, or cash.&lt;/p&gt;
&lt;p&gt;For most people the answer is a separate savings account with a name on it, and the name is doing more work than it looks. The Fed’s explainer suggests labelling the account “emergency fund” in your own bookkeeping, because a balance that is labelled for a purpose is much harder to raid than one that is not. A dedicated account also makes the progress visible, and visible progress is what keeps a boring monthly transfer alive in the eighteenth month.&lt;/p&gt;
&lt;p&gt;One step further out is a liquid or money-market fund, which usually pays more than a plain savings account and is still designed to be redeemed quickly. The trade is that you accept a small daily return for that convenience, and you have to read the exit rules rather than assume them. What you should not do is put this money into equities, or into anything else that can fall while you need it: the whole purpose of the fund is to be there on the day the market is having a bad month, and a fund that is down a long way on that day is not doing the job.&lt;/p&gt;
&lt;p&gt;Cash at home has one advantage nothing else has - it is there tonight, with no transfer and no limit - and one disadvantage everybody underestimates: it is the money most likely to be spent. The Fed’s advice to wait a day before acting on the urge to withdraw is worth more than it looks. A genuine emergency is still an emergency after twenty-four hours; the thing that does not survive a night is the impulse.&lt;/p&gt;
&lt;h2 id=&quot;building-it-when-the-number-looks-impossible&quot;&gt;Building it when the number looks impossible&lt;/h2&gt;
&lt;p&gt;Most people do not reach six months in one go, and the ones who do are the unusual case. The Fed’s method is deliberately built for somebody who has never kept a budget: track what you spend for one month, sort it into essentials and everything else, add each column up, and multiply by three. That is the whole calculation and it takes one evening.&lt;/p&gt;
&lt;p&gt;After that it stops being a decision and becomes a transfer. A fixed amount on the same day every month, moved automatically before the money is spent rather than after, survives contact with ordinary life in a way that a monthly resolution does not. If the number is out of reach, start with a smaller multiple and raise it as the balance grows - the Fed’s own worked example takes an intimidating goal and divides it by the number of pay periods in the year, which is the whole trick: the amount does not have to be impressive, it has to be regular.&lt;/p&gt;
&lt;p&gt;Refill it as soon as you use it. The instinct to treat a drained fund as a failure is what makes people stop, and the CFPB’s guidance is that spending it down is normal; build it back up and carry on.&lt;/p&gt;
&lt;h2 id=&quot;where-this-comes-from&quot;&gt;Where this comes from&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.consumerfinance.gov/an-essential-guide-to-building-an-emergency-fund/&quot;&gt;An essential guide to building an emergency fund&lt;/a&gt; - the Consumer Financial Protection Bureau.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.stlouisfed.org/publications/page-one-economics/2025/sep/when-unexpected-happens-be-ready-with-emergency-fund&quot;&gt;When the Unexpected Happens, Be Ready with an Emergency Fund&lt;/a&gt; - the St. Louis Fed, September 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://investor.vanguard.com/investor-resources-education/emergency-fund&quot;&gt;An essential guide to building an emergency fund&lt;/a&gt; - Vanguard.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.fdic.gov/consumer-resource-center/2025-01/saving-unexpected-and-your-future/&quot;&gt;Saving for the Unexpected and Your Future&lt;/a&gt; - the FDIC.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this is personal financial advice, and none of it is a promise. It is a description of what the published guidance says, and what your own accounts say.&lt;/p&gt;</content:encoded><category>Finance</category></item><item><title>Index funds for beginners: what you are actually buying</title><link>https://beacon-post.pages.dev/finance/index-funds-for-beginners/</link><guid isPermaLink="true">https://beacon-post.pages.dev/finance/index-funds-for-beginners/</guid><description>An index fund is the cheapest way to own a slice of a whole market. Here is what your money buys, what it costs, and the three ways it can disappoint you.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An index fund is a fund that holds a copy of a market index. If the index is the Nifty 50 or the Sensex, the fund holds those companies, in roughly the weights the index gives them, and it does not change its mind very often. You are not hiring anybody to pick companies for you. You are buying the market and paying a small fee for the privilege of not having to think about it.&lt;/p&gt;
&lt;p&gt;SEBI’s investor education site puts it in one line: an index fund mimics an index by holding the securities that make it up in the same proportions, and the goal is not to outperform the market but to match it. That is worth sitting with, because it is unlike almost everything else in personal finance. Most products are sold on the promise that somebody will do better than average. This one is sold on the promise that nobody will.&lt;/p&gt;
&lt;h2 id=&quot;what-your-money-actually-buys&quot;&gt;What your money actually buys&lt;/h2&gt;
&lt;p&gt;Three things, in order of importance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diversification.&lt;/strong&gt; You are holding fifty large companies rather than one, which means a single bad company cannot do the damage one bad company can do. This is the part that matters most to a beginner, and it is the part that is easiest to get elsewhere by accident - it is the concentration that needs protecting against, not the returns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A low fee.&lt;/strong&gt; The fund does not employ analysts to pick securities, and it does not trade often, so there is less to pay for. The SEC’s investor bulletin on index funds says exactly this, and then adds the caveat that matters: because the managers are not picking securities, they do not need the services of research analysts, and that reduction in cost &lt;em&gt;may&lt;/em&gt; mean lower overall costs - but not every index fund is cheap, and you have to understand the cost of the one you buy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A rule that does not change with the news.&lt;/strong&gt; The fund follows the index it tracks. It does not become more cautious in a bad month, and it does not chase whatever was working last year. Whether that is a virtue depends on your temperament, but it is at least a known quantity.&lt;/p&gt;
&lt;h2 id=&quot;the-cost-is-the-whole-argument&quot;&gt;The cost is the whole argument&lt;/h2&gt;
&lt;p&gt;SEBI’s FAQ for mutual fund investors defines the expense ratio as the annual operating expenses of a scheme, expressed as a percentage of its net assets, and points to regulation 52 of the SEBI (Mutual Funds) Regulations, 1996 for the limits that apply. The mechanism is simple and worth understanding once: the fee is taken out of the fund’s assets every year, so the money you end up with is always a little less than the money the market made.&lt;/p&gt;
&lt;p&gt;Over one year that difference is small and easy to ignore. Over twenty years, at a fee of one per cent instead of half a per cent, it is the difference between a nest egg and a disappointment. This is the entire argument for index funds and it is worth repeating because the alternative - paying more for somebody to try to beat the index - has to overcome that gap before it gives you anything at all. The SEC’s bulletin on fees and expenses puts it plainly: fees reduce the value of your investment return, and of two funds with identical performance, the cheaper one generally generates the higher return.&lt;/p&gt;
&lt;h2 id=&quot;three-ways-an-index-fund-will-disappoint-you&quot;&gt;Three ways an index fund will disappoint you&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;It can fall.&lt;/strong&gt; The most important thing to understand before you buy anything is that a fund which tracks a market goes down when the market goes down. This is not a flaw in the fund; it is what owning the market means. The Fed’s and the FDIC’s advice on emergency funds exists for this reason: money you might need next month does not belong in something whose value depends on the mood of the market.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It will lag its own index, slightly.&lt;/strong&gt; SEBI’s FAQ describes it plainly - the net asset value of an index fund rises or falls with the index, though not exactly by the same percentage, because of a handful of factors the industry calls &lt;em&gt;tracking error&lt;/em&gt;. The SEC’s bulletin lists it as a risk in its own right, alongside the observation that some funds hold only a sample of the index rather than every constituent, which can widen the gap.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It cannot dodge the bad parts.&lt;/strong&gt; The SEC’s bulletin names this one: an index fund has less flexibility than a non-index fund to react to prices falling. When a market sells off sharply, an index fund is still holding what the index holds. That is the price of the low fee, and it is why an active fund that charges more has to be better than the index consistently enough to justify itself.&lt;/p&gt;
&lt;h2 id=&quot;how-to-start-without-trying-to-be-clever&quot;&gt;How to start without trying to be clever&lt;/h2&gt;
&lt;p&gt;Pick one broad, cheap fund tracking a large index. Put in a fixed amount on the same day every month, automatically, so that the decision is made once rather than every time. Then leave it alone.&lt;/p&gt;
&lt;p&gt;That is the whole method, and the discipline is in the last sentence rather than the first three. The most common way for a beginner to lose money in an index fund is not the market going down - it is buying in a hurry, switching funds after a bad quarter, or pulling the money out at the first fall and putting it back in after the recovery. None of those decisions is about the index. All of them cost you the thing you were trying to buy, which was time in the market.&lt;/p&gt;
&lt;p&gt;If you want a second opinion before you start, read the scheme’s offer document and its most recent shareholder report - the SEC’s bulletin recommends exactly that, and it is where the fee, the tracking difference and the risks are actually written down.&lt;/p&gt;
&lt;h2 id=&quot;where-this-comes-from&quot;&gt;Where this comes from&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://investor.sebi.gov.in/index_mutual_fund.html&quot;&gt;Securities Market Investment: Index Mutual Funds&lt;/a&gt; - Investor SEBI.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sebi.gov.in/sebi_data/faqfiles/sep-2024/1727242783639.pdf&quot;&gt;FAQs for Mutual Fund Investors&lt;/a&gt; - the Securities and Exchange Board of India, September 2024.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins-26&quot;&gt;Investor Bulletin: Index Funds&lt;/a&gt; - the US Securities and Exchange Commission.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.investor.gov/introduction-investing/general-resources/news-alerts/alerts-bulletins/investor-bulletins/mutual-fund-and-etf-fees-and-expenses-investor-bulletin&quot;&gt;Mutual Fund and ETF Fees and Expenses&lt;/a&gt; - the US Securities and Exchange Commission.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this is personal financial advice, and none of it is a promise about returns. It is a description of what these products are and how they behave.&lt;/p&gt;</content:encoded><category>Finance</category></item><item><title>Meditation for people who have never meditated</title><link>https://beacon-post.pages.dev/spirituality/meditation-for-beginners/</link><guid isPermaLink="true">https://beacon-post.pages.dev/spirituality/meditation-for-beginners/</guid><description>You do not need an app, a cushion or a special vocabulary to meditate. Here is a practice you can start tonight, and what to do when your mind refuses to sit still.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The single most common thing people tell me they are bad at is meditating, and the single most common reason they give is that their mind will not go quiet. This is the wrong problem, and it is worth saying plainly: a quiet mind is not the goal. It is not even evidence that you did it right. The practice is to notice where your attention has gone, and to bring it back. That is the entire mechanism, and it works on a mind that is loud, distracted, or actively resisting.&lt;/p&gt;
&lt;p&gt;Meditation is also less exotic than its packaging suggests. Almost every tradition that has a contemplative practice agrees on the same basic arrangement: sit somewhere reasonably still, choose something simple and boring to attend to, and when the mind leaves, come back. The “something simple and boring” is usually the breath. The “come back” is the whole skill, and — this is the part that surprises people — the coming back is what makes it meditation rather than merely sitting.&lt;/p&gt;
&lt;p&gt;Here is a practice you can start tonight, without an app and without a cushion.&lt;/p&gt;
&lt;h2 id=&quot;start-with-the-breath&quot;&gt;Start with the breath&lt;/h2&gt;
&lt;p&gt;Sit in a chair with both feet flat on the floor. You do not need to sit cross-legged, on a cushion, or in a posture described as “alert and relaxed”. You need a chair, ten minutes, and a decision not to move for most of them.&lt;/p&gt;
&lt;p&gt;Close your eyes, or if that feels odd, leave them open and let your gaze fall slightly below the level of whatever is in front of you. Take three deliberate breaths — slightly deeper than normal, and slightly slower on the way out. That is not the practice; it is the settling-in. Then let your breathing go back to whatever it wants to do, and start counting.&lt;/p&gt;
&lt;p&gt;Count the exhales. One on the first exhale, two on the second, and keep going until ten. When you reach ten, start again at one. If you lose your place, no problem — you have almost certainly not reached ten in a row, and noticing where the count slipped away is the actual work.&lt;/p&gt;
&lt;p&gt;If the counting is too absorbing, count the feet instead, left and right, one per breath. Some people find that easier. The choice does not matter, and neither technique is better. What you are building is the ability to put your attention on something dull and simple and keep it there for a few breaths at a time.&lt;/p&gt;
&lt;h2 id=&quot;what-to-do-when-the-mind-wanders&quot;&gt;What to do when the mind wanders&lt;/h2&gt;
&lt;p&gt;Your attention will leave. This is not a failure of technique, and it is not a sign that you are not suited for this. It is what attention does. A mind trained for a lifetime to seek novelty and rehearse plans will leave a slow, boring task within about ninety seconds, and it will keep doing so for months.&lt;/p&gt;
&lt;p&gt;Two rules cover the whole of it. First, when you notice you have wandered, do not criticise yourself — the self-criticism is another form of wandering, and it is much more interesting to the mind than counting. Second, do not try to work out what you were thinking about. Just come back to the breath, or the feet, or the count, and resume.&lt;/p&gt;
&lt;p&gt;The reframe matters more than it sounds. When you notice you have drifted, something has just been demonstrated: you can pay attention, and you can come back. That is the entire skill, and every practice in every tradition is an attempt to repeat it. Ten breaths of counting and losing the count four times is a complete session. You are not falling short of a state; you are doing the thing the practice is for.&lt;/p&gt;
&lt;h2 id=&quot;building-a-practice-that-survives-a-busy-week&quot;&gt;Building a practice that survives a busy week&lt;/h2&gt;
&lt;p&gt;Beginners usually try to practise for too long, too consistently, and then abandon it. Ten minutes, once a day, is a real practice, and it is more likely to survive the month than thirty minutes performed heroically for a week. If ten minutes feels like a lot, do three. Three minutes done daily beats thirty minutes done occasionally, and the difference compounds in a way that is easy to underestimate.&lt;/p&gt;
&lt;p&gt;Choose a fixed slot rather than a fixed amount of time. A specific slot — after brushing your teeth, or after the kettle boils — survives bad weeks because it does not require a decision. A fixed amount of time, on a good week, will find its slot; on a bad week, it will not. If you miss a day, resume the next day without adjusting the plan downward. Missing a day is not a reason to miss two, and the “I already broke it” reaction is a well-worn way of stopping entirely.&lt;/p&gt;
&lt;p&gt;Finally, keep the record simple, because a log is a tool and not a virtue. A tick on a calendar is enough. A note about what was difficult is better, because it makes visible the fact that the difficulty is changing shape over time rather than staying constant. Many people discover that the first few weeks are loud, the middle weeks are ordinary, and the later ones are mostly ordinary with occasional sharp attention — and that the sharp attention is what the ordinary practice was building.&lt;/p&gt;
&lt;p&gt;Meditation is not a technique for emptying yourself. It is a technique for being present with whatever is already there, which turns out to be enough to change how the next hour goes.&lt;/p&gt;</content:encoded><category>Spirituality</category></item><item><title>Astro 7 ships a Rust compiler</title><link>https://beacon-post.pages.dev/tech/astro-7-rust-compiler/</link><guid isPermaLink="true">https://beacon-post.pages.dev/tech/astro-7-rust-compiler/</guid><description>Astro 7 moves the compilation core to Rust. Here is what that actually changes for a site built on content collections, and what it does not.</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Astro 7 is the release where the framework stops being a Node library with a fast compiler and becomes a Node library with a Rust compiler. That sentence is more marketing than it sounds, so it is worth taking apart. The compiler is the part of Astro that reads your files, builds the module graph, runs content-collection loaders, validates frontmatter against your schema, and renders your pages to HTML. In Astro 7 that work happens in a compiled binary rather than in JavaScript running on top of Vite’s plugin pipeline.&lt;/p&gt;
&lt;p&gt;The obvious benefit is speed, and the release notes do talk about build times. But the more interesting change is not the number of seconds saved on a large site. It is that a whole category of work that previously ran as JavaScript plugins in the same process as your dev server now runs as native code in a separate process. On a content-heavy site — one with hundreds of Markdown files, a strict schema, and a handful of loaders — that is a different kind of improvement, because it changes what the compiler is able to do without slowing anything down.&lt;/p&gt;
&lt;h2 id=&quot;what-actually-changed&quot;&gt;What actually changed&lt;/h2&gt;
&lt;p&gt;The compiler pipeline is now: read the project, build the module graph, run the content layer, validate, render. The first, second and fifth stages were always native-ish. The third — the content layer — was the expensive one, because every Markdown file had to be parsed, its frontmatter extracted and validated, and its schema checked, with each of those steps crossing back and forth between JavaScript and the bundler.&lt;/p&gt;
&lt;p&gt;In Astro 7 the content layer is native. The loaders still run in JavaScript, because a loader is arbitrary user code and there is no sensible way to compile it, but the parsing, the frontmatter extraction and the schema validation happen in Rust around them. The practical effect on a site like this one — a few hundred posts, a strict Zod schema, one glob loader — is that the time spent between “edit a file” and “see the page” gets shorter, and the time spent in a full production build gets shorter by more.&lt;/p&gt;
&lt;p&gt;The second-order effect is stability. A Zod schema with a closed enum and a &lt;code&gt;refine()&lt;/code&gt; across every post is a real validation workload, and running it in native code makes it cheap enough that you can afford to be strict. Strictness is the thing you want, because a validation error at build time is a much better outcome than a missing field discovered in production.&lt;/p&gt;
&lt;h2 id=&quot;what-it-means-for-a-content-site&quot;&gt;What it means for a content site&lt;/h2&gt;
&lt;p&gt;Nothing about your content changes. Markdown files stay Markdown files. Frontmatter stays frontmatter. The collection API stays the same. What changes is that the schema is now cheap enough to be as elaborate as you like, and the loader boundaries are clearer.&lt;/p&gt;
&lt;p&gt;Here is the shape of a content collection in a project that takes the schema seriously — every post carries a lane, and the lane is a closed set:&lt;/p&gt;
&lt;div class=&quot;code-block&quot; data-code-block=&quot;&quot;&gt;&lt;div class=&quot;code-block-bar&quot;&gt;&lt;span class=&quot;code-block-lang&quot; data-code-lang=&quot;&quot;&gt;js&lt;/span&gt;&lt;button type=&quot;button&quot; class=&quot;code-block-copy&quot; data-code-copy=&quot;&quot; data-copied-label=&quot;Copied&quot;&gt;Copy&lt;/button&gt;&lt;/div&gt;&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;// src/content.config.ts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { defineCollection } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;astro:content&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { z } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;astro/zod&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { glob } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;astro/loaders&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; posts&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; defineCollection&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  loader: &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;({ pattern: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;**/*.{md,mdx}&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, base: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;./src/content/posts&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  schema&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: ({ &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; }) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    z.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      title: z.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;min&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      lane: z.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;enum&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;finance&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;news&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;health&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;spirituality&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;tech&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      published: z.coerce.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;})&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; collections&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { posts }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Two details are worth pulling out. The &lt;code&gt;z.enum&lt;/code&gt; is a closed set, which means a typo in a lane name is a build error rather than a silently orphaned post that never appears in any listing — the kind of bug that otherwise surfaces weeks later as “why is this article missing?”. And the &lt;code&gt;z.coerce.date()&lt;/code&gt; lets you write &lt;code&gt;published: 2026-10-02&lt;/code&gt; in the frontmatter and get a real date object out, which is the sort of small convenience that matters more than it sounds once you have a hundred files.&lt;/p&gt;
&lt;h2 id=&quot;what-did-not-change&quot;&gt;What did not change&lt;/h2&gt;
&lt;p&gt;Your templates. Your components. Your routing. The &lt;code&gt;getCollection&lt;/code&gt; call, the &lt;code&gt;entry.render()&lt;/code&gt; call, the props you pass down to a layout — all identical. Astro 7 is not a new framework wearing a new version number; the compiler moved, and the public surface stayed put.&lt;/p&gt;
&lt;p&gt;Two things are worth watching rather than assuming. The first is that plugins which hook deep into the build pipeline may need updating, because some of the internal interfaces they relied on are now different. The second is raw execution speed versus perceived speed: a compiler can be twice as fast and a site can still feel slow if the bottleneck is somewhere else entirely — an unoptimised image, a page that ships too much JavaScript, a font that loads in four separate files. Measure before you attribute a change in build time to the compiler.&lt;/p&gt;
&lt;p&gt;The rule of thumb for upgrading is the one that has always applied: if the site builds, the content loads and the tests pass, the compiler underneath is not the thing you should be worried about. On Astro 7 it is simply a faster thing underneath.&lt;/p&gt;&lt;script&gt;;(function () {
  var buttons = document.querySelectorAll(&apos;[data-code-copy]&apos;)
  for (var i = 0; i &lt; buttons.length; i += 1) {
    buttons[i].addEventListener(&apos;click&apos;, function (event) {
      var button = event.currentTarget
      var block = button.closest(&apos;[data-code-block]&apos;)
      var code = block ? block.querySelector(&apos;pre code&apos;) : null
      if (!code || !navigator.clipboard) return
      var label = button.textContent
      navigator.clipboard
        .writeText(code.textContent || &apos;&apos;)
        .then(function () {
          button.textContent = button.getAttribute(&apos;data-copied-label&apos;) || label
          window.setTimeout(function () {
            button.textContent = label
          }, 2000)
        })
        .catch(function () {
          button.textContent = label
        })
    })
  }
})()
&lt;/script&gt;</content:encoded><category>Tech</category></item></channel></rss>