<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Benjamin Tseng</title><description>Essays, operational research, and curated reading on biotechnology, healthcare, technology infrastructure, and policy.</description><link>https://benjamintseng.com/</link><language>en-us</language><item><title>Taiwan Building “China-Free” Drones</title><link>https://benjamintseng.com/2026/03/taiwan-building-china-free-drones/</link><guid isPermaLink="true">https://benjamintseng.com/2026/03/taiwan-building-china-free-drones/</guid><description>Reading Note: Taiwan Building “China-Free” Drones</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the great lessons of the last few years of geopolitics and economics is that it’s not enough to simply have moral/legal authority and money, &lt;strong&gt;real power and prosperity requires actual physical inventory and manufacturing capacity&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In a world where Russia is willing to buck sanctions and condemnation to invade a sovereign nation and where trade barriers / epidemics can cut off critical supplies, the ability to produce weapons and medical equipment can be life or death.&lt;/p&gt;
&lt;p&gt;It’s no wonder, then, that Taiwan, a mere 100 miles away from a Russian ally/sponsor who denies its independence, has found it wise to start building up its own military production. Learning from Ukraine’s (and now Iran’s) successes with drones against a larger attacker and tapping into growing Western concerns about the China-Russia-Iran axis, they’ve started building drone technology devoid of Chinese parts (“non-red” so to speak), many of which appear to have already been deployed to Ukraine.&lt;/p&gt;
&lt;p&gt;In an era where piloted (and eventually autonomous) drone swarms will become a much greater part of warfare, this technological and, just as important, manufacturing capability is vital not only to Taiwan but to the West as it increasingly enters a Cold War with China and its allies.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Economist&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.economist.com/asia/2026/03/12/taiwans-bid-to-export-drones-free-of-chinese-parts-is-taking-off&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Before 2025 Taiwan’s defence exports consisted mainly of some old helicopters and small boats donated to African and Latin American countries.
That is changing as Taiwan positions itself as a supplier of “non-red” unmanned aerial vehicles or UAVs—ie, without Chinese parts—to America, its allies and other countries worried about China’s espionage and control over industrial supply chains. Taiwan’s production of UAVs has increased from about 10,000 units in 2024 to more than 12 times that in 2025. Its exports rose more than 35-fold to about 123,000 units last year—almost all its output.
The Czech Republic was its biggest buyer, followed by Poland (see chart). Industry insiders say their purchases mostly went to Ukraine, where many are used on the battlefield, giving valuable feedback on their performance. Another bumper year for exports is expected in 2026, after reaching 85,500 units in the first two months.
Taiwan launched its drone programme after observing Ukraine’s use of the technology. The main aim was to equip Taiwan’s own armed forces, which had just a few hundred drones. China had tens of thousands. Taiwan has since pledged to build an entirely non-red UAV industry by the end of 2026, with annual output of 180,000 units by 2028. Last year it also promised to buy more than 200,000 drones for its own armed forces by 2033.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2026/03/20260314_ASP001-1024x576.webp&quot; alt=&quot;Taiwan\u2019s bid to export drones free of Chinese parts is taking off&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.economist.com/asia/2026/03/12/taiwans-bid-to-export-drones-free-of-chinese-parts-is-taking-off&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Taiwan\u2019s bid to export drones free of Chinese parts is taking off &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;The Economist&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.economist.com/asia/2026/03/12/taiwans-bid-to-export-drones-free-of-chinese-parts-is-taking-off&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category><category>drones</category><category>Taiwan</category></item><item><title>The Difficulty of “Planting” Your Way Out of Climate Change</title><link>https://benjamintseng.com/2026/03/the-difficulty-of-planting-your-way-out-of-climate-change/</link><guid isPermaLink="true">https://benjamintseng.com/2026/03/the-difficulty-of-planting-your-way-out-of-climate-change/</guid><description>Reading Note: The Difficulty of “Planting” Your Way Out of Climate Change</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was an elementary school student and first heard of “global warming”, I thought the solution to climate change was simple: just plant more trees! 🌳&lt;/p&gt;
&lt;p&gt;While I now know there’s a great deal more complexity to the problem than that, I have always wondered what would happen if someone had tried out that little boy’s instinct.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2024EF005565&quot;&gt;In a recent article in &lt;em&gt;Earth’s Future&lt;/em&gt;&lt;/a&gt;, scientists took a look, taking advantage of China’s massive investment over decades in planting trees around the country, “which accounted for 25% of the global net increase in leaf area [between] 2000–2017”! In particular, they found that, while they were able to impact dust storms and desertification, the rapid planting of trees had major negative impacts on underground water supplies as the massive resulting &lt;a href=&quot;https://en.wikipedia.org/wiki/Evapotranspiration&quot;&gt;evapotranspiration&lt;/a&gt; (literally plants pulling water from the ground and into the air) effectively transferred that groundwater into rainwater over the Tibetan Plateau!&lt;/p&gt;
&lt;p&gt;China, especially its Northern/Northwestern regions, have major issues with water availability and drought and it is a cosmic irony that an attempt to stop desertification, while greening much of the land, may have resulted in worsening the water condition.&lt;/p&gt;
&lt;p&gt;It is a humbling reminder that large-scale well-intention actions may have adverse consequences and a reminder that, while we should pursue indirect avenues for mitigating climate change, there is probably no substitute for ultimately cutting down on the emissions and activities that are most directly related.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Econews&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.ecoticias.com/en/china-planted-trees-like-crazy-to-slow-the-advance-of-the-gobi-desert-and-ended-up-causing-another-big-problem-water-began-to-disappear-from-the-soil-and-aquifers-as-rainfall-patterns-changed/29264/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Their model shows that land restoration increased evapotranspiration by around 1.7 millimeters per year and precipitation by about 1.2 millimeters per year, yet overall water availability still went down.
The main driver was forest expansion in the humid east and large-scale restoration in the northwest and on the plateau. As deep-rooted trees pull water from the soil and release it into the air, they act a bit like giant pumps. The process cools the local surface but also ships moisture downwind, where it can fall as rain far from the place where it was originally stored.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2026/03/china-gobi-desert-tree-planting-water-loss-1024x576.jpg&quot; alt=&quot;China planted trees like crazy to slow the advance of the Gobi Desert and ended up causing another big problem: water began to disappear from the soil and aquifers as rainfall patterns changed&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.ecoticias.com/en/china-planted-trees-like-crazy-to-slow-the-advance-of-the-gobi-desert-and-ended-up-causing-another-big-problem-water-began-to-disappear-from-the-soil-and-aquifers-as-rainfall-patterns-changed/29264/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; China planted trees like crazy to slow the advance of the Gobi Desert and ended up causing another big problem: water began to disappear from the soil and aquifers as rainfall patterns changed &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Sonia Ramirez&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Econews&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.ecoticias.com/en/china-planted-trees-like-crazy-to-slow-the-advance-of-the-gobi-desert-and-ended-up-causing-another-big-problem-water-began-to-disappear-from-the-soil-and-aquifers-as-rainfall-patterns-changed/29264/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded></item><item><title>CAR-T for Autoimmune Disorders</title><link>https://benjamintseng.com/2025/12/car-t-for-autoimmune-disorders/</link><guid isPermaLink="true">https://benjamintseng.com/2025/12/car-t-for-autoimmune-disorders/</guid><description>Reading Note: CAR-T for Autoimmune Disorders</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Immune &lt;a href=&quot;https://benjamintseng.com/tag/cell-therapy/&quot;&gt;cell therapies&lt;/a&gt; like &lt;a href=&quot;https://benjamintseng.com/tag/car-t/&quot;&gt;CAR-T&lt;/a&gt; continue to provide some nearly miraculous therapeutic power. In addition to handling solid tumors, it turns out CAR-T can also be used to treat autoimmune disorders like &lt;a href=&quot;https://en.wikipedia.org/wiki/Lupus&quot;&gt;lupus&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Rheumatoid_arthritis&quot;&gt;rheumatoid arthritis&lt;/a&gt;, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Ulcerative_colitis&quot;&gt;ulcerative colitis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By engineering CAR-T cells to attack B-cells, the body’s factories for the autoantibodies that do the damage in an autoimmune disorder, you not only eliminates the direct source of the problem (the autoantibodies), you potentially trigger an “immune reset” which seems to durably eliminate the problem (see diagram)!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/12/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;How CAR-T for Autoimmune Disorders works (&lt;em&gt;Source: Gemini Nano Banana&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;Medical researchers rarely throw the word “cure” around, but &lt;a href=&quot;https://www.nature.com/articles/d41586-025-03885-w&quot;&gt;this Nature News article&lt;/a&gt; does so 4 times! We live in interesting times!&lt;/p&gt;
&lt;p&gt;Thoughts&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Nature&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-03885-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The results of the trial were “much better than we could imagine”, says Du, and might be due to CAR T cells triggering the total depletion of dysfunctional B cells that attack the body’s tissues. “The immune system had to reset not only B cells, but also the rest of the immune system,” he adds, potentially allowing new, healthy B cells to replace the dysfunctional cells.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/12/Screenshot-2025-12-07-195348-1024x734.png&quot; alt=&quot;\u2018They don\u2019t have symptoms\u2019: CAR-T therapies send autoimmune diseases into remission&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-03885-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; \u2018They don\u2019t have symptoms\u2019: CAR-T therapies send autoimmune diseases into remission &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Rachel Fieldhouse&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Nature&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-03885-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>autoimmune disorder</category><category>CAR-T</category><category>cell therapy</category></item><item><title>The Declining Preference for Boys</title><link>https://benjamintseng.com/2025/11/the-declining-preference-for-boys/</link><guid isPermaLink="true">https://benjamintseng.com/2025/11/the-declining-preference-for-boys/</guid><description>Reading Note: The Declining Preference for Boys</description><pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What makes this social change — where parents, especially in East and Southeast Asia, previously heavily favored having male children and now much less so — extra surprising is that many of the technological factors that drove the gender selection preference (such as access to early gender testing and IVF) have dramatically improved over time.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Economist&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.economist.com/leaders/2025/06/05/the-stunning-decline-of-the-preference-for-having-boys&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The fading of boy preference in regions where it was strongest has been astonishingly rapid. The natural ratio is about 105 boy babies for every 100 girls; because boys are slightly more likely to die young, this leads to rough parity at reproductive age. The sex ratio at birth, once wildly skewed across Asia, has become more even. In China it fell from a peak of 117.8 boys per 100 girls in 2006 to 109.8 last year, and in India from 109.6 in 2010 to 106.8. In South Korea it is now completely back to normal, having been a shocking 115.7 in 1990.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/11/20250607_LDD001_FH-922x1024.webp&quot; alt=&quot;The stunning decline of the preference for having boys&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.economist.com/leaders/2025/06/05/the-stunning-decline-of-the-preference-for-having-boys&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The stunning decline of the preference for having boys &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;The Economist&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.economist.com/leaders/2025/06/05/the-stunning-decline-of-the-preference-for-having-boys&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>fertility</category><category>gender</category><category>IVF</category></item><item><title>Who’s Jobs are AI Taking Right Now?</title><link>https://benjamintseng.com/2025/11/whos-jobs-are-ai-taking-right-now/</link><guid isPermaLink="true">https://benjamintseng.com/2025/11/whos-jobs-are-ai-taking-right-now/</guid><description>Reading Note: Who’s Jobs are AI Taking Right Now?</description><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.reuters.com/sustainability/amazon-lay-off-about-14000-roles-2025-10-28/&quot;&gt;Despite all the speculation over why Amazon is laying off 14,000 workers&lt;/a&gt;, as of this writing, and with a few exceptions I’ll note below, I don’t personally worry a great deal about AI taking away jobs &lt;em&gt;currently&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The reason is that while new AI agent based services and products are becoming better at replacing humans at certain tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Many tasks are not automatable — especially ones where the “product/service” is actual human interaction and judgement. And those tasks tend to be the ones that take the longest and the most people to do.&lt;/li&gt;
&lt;li&gt;Technological improvements can lead to increased demand. The classic examples of this are how &lt;a href=&quot;https://www.npr.org/2015/02/27/389585340/how-the-electronic-spreadsheet-revolutionized-business&quot;&gt;the advent of spreadsheet software increased the number of accountants&lt;/a&gt; (when calculation work became cheaper and easier, the demand for accounting-style thinking to be used broadly across the business increased) or &lt;a href=&quot;https://www.aei.org/economics/what-atms-bank-tellers-rise-robots-and-jobs/&quot;&gt;how automated teller machines (ATMs) increased the demand for human tellers&lt;/a&gt; (by making it imperative for convenience to have more branches).&lt;/li&gt;
&lt;li&gt;AI tools are great at answering questions and doing assigned tasks. But you still need a person with actual judgement and experience to ask the right questions and assign the right tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While the above three advantages may ultimately disappear as technology improves, in general, I am optimistic that, by making workers more productive overall, AI technology will make workers more valuable overall.&lt;/p&gt;
&lt;p&gt;The one exception that I immediately saw, however, were &lt;strong&gt;entry-level knowledge workers&lt;/strong&gt;. New (and, in most cases, young) knowledge workers (engineers, designers, analysts, writers, management consultants, etc) are uniquely &lt;em&gt;not&lt;/em&gt; valuable when they first start a job. They lack context, judgement, and skill. They tend to only prove their value &lt;em&gt;after&lt;/em&gt; they’ve had the chance to learn on the job. Historically, the bargain was that entry-level knowledge workers would start with relatively lower-value tasks that would, through time and exposure, help them learn the context, judgement, and skills they would need to become productive. This is, after all, the path I took as a novice management consultant and later investor.&lt;/p&gt;
&lt;p&gt;But with new AI tools, the case for hiring these entry-level knowledge workers dramatically weakens. &lt;a href=&quot;https://www.claude.com/product/claude-code&quot;&gt;Claude Code&lt;/a&gt; might not be able to replace the judgement of a senior architect, but it can probably get up to speed on a codebase faster, write code more accurately, and all without needing rest or paid time off than a fresh-out-of-school developer. &lt;a href=&quot;https://gemini.google.com/&quot;&gt;Gemini&lt;/a&gt; might not be able to have the same type of insights as someone with a deep rolodex in an industry, but it will certainly know more and can conduct &amp;amp; summarize internet research much faster than a freshly minted consultant. &lt;a href=&quot;https://chatgpt.com/&quot;&gt;ChatGPT&lt;/a&gt; might not be able to capture the artistry or investigation skills of a Pulitzer Prize winning journalist, but it can definitely write up summaries of stock market movements or the press releases from a company better than a novice journalist.&lt;/p&gt;
&lt;p&gt;This is ultimately self-defeating — as without new junior talent, where does one find good middle-level or senior talent — but it’s also something that I fear we are already beginning to see. &lt;a href=&quot;https://www.gspublishing.com/content/research/en/reports/2025/10/14/14173fbf-08a9-49b3-b243-6cef22b62542.pdf&quot;&gt;This Goldman Sachs research report I just read&lt;/a&gt; has a great Exhibit 4 showing how while new AI tools have not significantly impacted employment in general or even employment in tech, it has meaningfully increased unemployment in 20-somethings who work in tech (see image below), exactly the demographic who’s value as entry-level workers has now been largely displaced by AI.&lt;/p&gt;
&lt;p&gt;How the tech industry (and other knowledge work professions) ultimately choose to handle this will be the defining test of how we incorporate AI into our economic lives.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Goldman Sachs Research&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.gspublishing.com/content/research/en/reports/2025/10/14/14173fbf-08a9-49b3-b243-6cef22b62542.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Over just the last few years, AI does appear to be hurting the employment prospects of the most closely exposed workers, such as young technology workers (Exhibit 4, left). Our global economics team recently showed that employment growth has turned negative in the most AI-exposed industries, but that the aggregate labor market impact remains limited so far.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/11/Screenshot-2025-11-03-114124.png&quot; alt=&quot;Jobless Growth [PDF]&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.gspublishing.com/content/research/en/reports/2025/10/14/14173fbf-08a9-49b3-b243-6cef22b62542.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Jobless Growth [PDF] &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Goldman Sachs Research&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.gspublishing.com/content/research/en/reports/2025/10/14/14173fbf-08a9-49b3-b243-6cef22b62542.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Consulting</category><category>Goldman Sachs</category><category>knowledge worker</category><category>software engineering</category><category>tech</category></item><item><title>DeepSeek in Africa</title><link>https://benjamintseng.com/2025/10/deepseek-in-africa/</link><guid isPermaLink="true">https://benjamintseng.com/2025/10/deepseek-in-africa/</guid><description>Reading Note: DeepSeek in Africa</description><pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Earlier this year, a Chinese company called DeepSeek took the AI world by surprise by releasing an incredibly cheap, performant reasoning model called &lt;a href=&quot;https://arxiv.org/abs/2501.12948&quot;&gt;DeepSeek R1&lt;/a&gt;. The result was an outpour of commentary on &lt;a href=&quot;https://www.linkedin.com/posts/yann-lecun_to-people-who-see-the-performance-of-deepseek-activity-7288591087751884800-I3sN/&quot;&gt;how Meta’s open sourcing of Llama led to its creation&lt;/a&gt;, &lt;a href=&quot;https://finance.yahoo.com/news/nvidia-stock-plummets-loses-record-589-billion-as-deepseek-prompts-questions-over-ai-spending-135105824.html&quot;&gt;whether or not the reported lower training cost for DeepSeeek’s model meant the end of NVIDIA’s business&lt;/a&gt;, and whether or not China was overtaking the US in AI technology.&lt;/p&gt;
&lt;p&gt;While those discussions raged, Chinese companies like the telecom infrastructure giant Huawei took the low cost open source DeepSeek model and have turned it into a business targeting countries in Africa which have already been the beneficiary of substantial Chinese investment.&lt;/p&gt;
&lt;p&gt;The result is that not only has China displaced Western companies for providing core telecoms infrastructure in Africa, but it appears &lt;a href=&quot;https://www.bloomberg.com/news/features/2025-10-22/china-s-deepseek-pushes-into-africa-making-ai-accessible-to-millions&quot;&gt;Chinese companies have also displaced Western AI offerings&lt;/a&gt; (like those from Anthropic, OpenAI, and Google) from the continent as well. By offering lower per token prices and by having a technical backbone that uses fewer tokens per request (Chinese models employ tokenizers with larger vocabularies to handle multi-lingual data which results in fewer tokens for words in non-English languages) and being offered by partners who have already built much of their digital infrastructure, Chinese models (and especially DeepSeek) have become ascendant in Africa.&lt;/p&gt;
&lt;p&gt;While this has led to some problems (for example, Chinese AI model providers disabled their image recognition systems during the Chinese &lt;a href=&quot;https://en.wikipedia.org/wiki/Gaokao&quot;&gt;高考 &lt;em&gt;gaokao&lt;/em&gt;&lt;/a&gt;, or annual undergraduate admissions exam), the token economics are difficult to resist for AI adopters in Africa.&lt;/p&gt;
&lt;p&gt;This should be terrifying to Western companies (who are in a fierce competition for AI model supremacy) and especially Western governments concerned about China’s influence. After all, it’s hard to win any kind of “technology Cold War” if the main AI models being used in the countries with the fastest growing populations are (a) Chinese models (b) running on Chinese infrastructure (c) pre-packaged with Chinese propaganda (if you use &lt;a href=&quot;https://www.eye2.ai/&quot;&gt;Eye2.AI&lt;/a&gt; to ask multiple LLMs “Explain what happened in Tiananmen Square in 1989”, you’ll see how different Qwen’s and DeepSeek’s answers are, see below).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/10/image-1-1024x986.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Screenshot from &lt;a href=&quot;https://www.eye2.ai/&quot;&gt;Eye2.AI&lt;/a&gt; on a “sensitive subject” for Chinese AI models&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2025-10-22/china-s-deepseek-pushes-into-africa-making-ai-accessible-to-millions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Although much of the world’s attention has been focused on Western tech companies vying for lucrative corporate contracts in the US and Middle East, the meeting in Nairobi illustrates how their Chinese rivals are taking a different approach. OpenAI and its American competitors have focused almost exclusively on proprietary AI — models whose software, training data and algorithms are entirely controlled by their parent companies, with customers paying for access. Chinese firms like Huawei and Alibaba Group Holding Ltd., by contrast, are courting Africa’s startups and innovation hubs with open-source AI models — ones that can be accessed and modified for free, letting companies build products without expensive licenses.
This strategy, with parallels to China’s Belt and Road Initiative for physical infrastructure, is not designed for immediate profit. Africa’s entire digital economy, valued at roughly $180 billion, pales in comparison to OpenAI’s $500 billion valuation in recent share sales. Instead, it’s a long-term bid for customers, soft power and the vast troves of data that will shape the future of artificial intelligence.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/10/Screenshot-2025-10-23-132206-1024x713.png&quot; alt=&quot;China\u2019s DeepSeek Is Beating Out OpenAI and Google in Africa&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2025-10-22/china-s-deepseek-pushes-into-africa-making-ai-accessible-to-millions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; China\u2019s DeepSeek Is Beating Out OpenAI and Google in Africa &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Saritha Rai, Loni Prinsloo, Helen Nyambura&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2025-10-22/china-s-deepseek-pushes-into-africa-making-ai-accessible-to-millions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Africa</category><category>AI</category><category>China</category><category>DeepSeek</category><category>Huawei</category><category>Llama</category><category>Meta</category></item><item><title>Seven Lessons from My 30s</title><link>https://benjamintseng.com/2025/10/seven-lessons-from-my-30s/</link><guid isPermaLink="true">https://benjamintseng.com/2025/10/seven-lessons-from-my-30s/</guid><description>Seven Lessons from My 30s</description><pubDate>Sun, 19 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/10/unveil.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Nano Banana&lt;/p&gt;
&lt;p&gt;Turning 40 is a milestone that should come with a manual. It doesn’t, of course, but it does come with a decade’s worth of receipts for lessons learned the old fashioned way.&lt;/p&gt;
&lt;p&gt;As I ponder the next decade ahead of me, I’ve been reflecting on the things I picked up in the last one that have shaped my understanding of people and the world around me. I share seven of these lessons in the hope they might be helpful to — or at least amusing to 😅 — the reader.&lt;/p&gt;
&lt;h3 id=&quot;1-you-dont-know-where-you-rank-in-someones-priorities-until-youve-seen-them-in-a-crisis&quot;&gt;1. You Don’t Know Where You Rank in Someone’s Priorities Until You’ve Seen Them in a Crisis&lt;/h3&gt;
&lt;p&gt;It’s easy to be a good partner during the good times.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The real test of character comes during the bad times&lt;/strong&gt;. It is only when the pressure is on and pleasantries feel like a wasteful luxury that people reveal their true priorities — and, especially, where &lt;em&gt;you&lt;/em&gt; rank in those priorities. It’s in those moments of crisis that you can see who someone fundamentally is.&lt;/p&gt;
&lt;p&gt;This advice applies to both love and business: if you can, don’t enter into a partnership — getting married, starting a company together, having a kid together — with someone until you understand how they handle crisis. How do they act when they’re scared, angry, or cornered? Do they collaborate with their partners, or do they retreat into self-preservation? Do they treat partners like equals or burdens? Sources of strength or resources to be exploited?&lt;/p&gt;
&lt;p&gt;I’ve sadly learned several times in the past decade how people who are giving and collaborative when things are one way can quickly close off and prioritize themselves when things got tough.&lt;/p&gt;
&lt;p&gt;To be clear, this isn’t to say people who react poorly under pressure are “bad” or deserve to be cut out of your life. Crises are difficult for even those with the strongest of moral character, and you can still have a friendly or productive working relationship with someone who doesn’t consider you one of their top priorities.&lt;/p&gt;
&lt;p&gt;But understanding how someone acts in a crisis is a vital data point I would recommend thoroughly understanding before entering into any kind of serious partnership.&lt;/p&gt;
&lt;h3 id=&quot;2-profession-can-be-an-oddly-good-read-on-a-person&quot;&gt;2. Profession can be an Oddly Good Read on a Person&lt;/h3&gt;
&lt;p&gt;I used to hate the question, “So, what do you do?”&lt;/p&gt;
&lt;p&gt;It felt reductive, and almost insulting, especially when I was starting out in my career and my job was only a very small piece of what I felt I had to offer.&lt;/p&gt;
&lt;p&gt;But I’ve come to appreciate that while a job is never the whole story about a person, it can be an incredibly revealing chapter. When you spend most of your waking hours on something that also shapes your finances, social status, and daily challenges, it inevitably molds you. Jobs define our incentives, hint at our training and skills, and frame our definitions of success and failure.&lt;/p&gt;
&lt;p&gt;Knowing someone is a practicing doctor in the US, for example, gives you a hint about their:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;age &amp;amp; education — given the amount of medical training necessary to practice medicine in the US&lt;/li&gt;
&lt;li&gt;their income — likely relatively high, with more precision possible if you know their specialty&lt;/li&gt;
&lt;li&gt;a sense of their views on the US healthcare system — I’ve never met a physician who likes the health insurance companies who impose rules and paperwork on them to get paid, their electronic medical record system, or medical malpractice lawsuits&lt;/li&gt;
&lt;li&gt;their approach to risk — having being ingrained in the ethos of “first do no harm”&lt;/li&gt;
&lt;li&gt;their views on credentials — given the amount of time (and money!) they spent on getting their Medical Degree as well as the additional licensing and certification necessary to practice&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You won’t always get every detail right — and profession won’t give you a good indication on many aspects of their personality or personal lives that have little to do with their career — but &lt;strong&gt;it’s a more useful than not set of heuristics for understanding the people you meet&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is why I’ve grown very wary of interfacing with politicians. To succeed there requires a level of self-obsession that’s hard to square with sincerity. Success is driven by saying what’s popular, not necessarily what’s true (or even what you believe). Politicians with any level of success are also surrounded by people paid to flatter them. It creates a backdrop where genuine connection is difficult, power dynamics are twisted, and relationships easily become transactional. Andrew Yang captured some of this &lt;a href=&quot;https://www.politico.com/news/magazine/2021/10/03/andrew-yang-book-excerpt-campaigning-514967&quot;&gt;in a piece he wrote for Politico Magazine in 2021&lt;/a&gt; entitled “When I Ran for President, It Messed With My Head”.&lt;/p&gt;
&lt;p&gt;Of course, there are exceptions. But in my experience, it is foolish to underestimate how influential the incentive structure of a career can be.&lt;/p&gt;
&lt;h3 id=&quot;3-theres-little-upside-in-talking-about-politics&quot;&gt;3. There’s Little Upside in Talking About Politics&lt;/h3&gt;
&lt;p&gt;To start with the obvious: &lt;em&gt;policy&lt;/em&gt; matters. It shapes our lives, and in a democratic society, ignoring it is irresponsible.&lt;/p&gt;
&lt;p&gt;That said, I suspect &lt;strong&gt;many of us engage with &lt;em&gt;politics&lt;/em&gt; far too much for our own good&lt;/strong&gt;. The problem is that modern political discussion and news isn’t about logic — it’s about evoking visceral, &lt;em&gt;tribal&lt;/em&gt; outrage. This is bad for two reasons. First, it leads to &lt;em&gt;bad policy&lt;/em&gt; — it makes us seek symbolic victories and “cultural” retribution rather than nuance and sustainable compromise. Secondly, it leads to &lt;em&gt;bad behavior&lt;/em&gt; by training us to see the world in terms of &lt;em&gt;“us” versus “them.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In my 20s and early 30s, I loved a good political debate. I had a neat little box of “obvious things all reasonable people should believe.” That argumentativeness and certainty cost me. A long time friendship ended abruptly this past decade, likely over some position I took in one of those debates (it was never entirely clear to me). I also nearly became unfriendly with a former mentor over a political disagreement over that “neat little box of obviousness”.&lt;/p&gt;
&lt;p&gt;As someone who values his relationships, these were not proud moments. And it led me to ask: what upside did I get from seeking these debates? A temporary satisfaction that “I am more righteous than the ‘other tribe’”? Scoring some kind of rhetorical point? Hardly seems worth it.&lt;/p&gt;
&lt;p&gt;I now try to disengage from the daily outrage cycle of political news and who-said-what. After all, it rarely has real impact on policy, and the news cycle usually moves on after a few days. Instead, I &lt;em&gt;try&lt;/em&gt; to focus on tracking substantive policy changes and analyses. It’s a lot more boring, but that’s a feature, not a bug.&lt;/p&gt;
&lt;p&gt;I also am a bit embarrassed to admit but I now actively avoid discussing politics with people — both online and in real life. This isn’t to say that I don’t have my own opinions (and in moments of weakness, I’ll share some of them on social media), but in recognizing there’s little upside, I’ve come to realize nobody really cares what I think. They just want to know if they should get angry &lt;em&gt;with&lt;/em&gt; me or &lt;em&gt;at&lt;/em&gt; me, and I don’t see the point in playing that game any more.&lt;/p&gt;
&lt;h3 id=&quot;4-embrace-the-unlikely&quot;&gt;4. Embrace the Unlikely&lt;/h3&gt;
&lt;p&gt;If my 30s taught me anything, it’s that the improbable is inevitable. In the last decade alone, I experienced things that I thought were highly unlikely to happen in my lifetime:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;was fired&lt;/li&gt;
&lt;li&gt;called as a witness in legal proceedings (twice!)&lt;/li&gt;
&lt;li&gt;lived through a global pandemic&lt;/li&gt;
&lt;li&gt;saw a vaccine developed in under a year&lt;/li&gt;
&lt;li&gt;saw US inflation go above 9%&lt;/li&gt;
&lt;li&gt;watched a massive political re-orientation on globalization in the West&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Statistically speaking, over a long enough horizon, unlikely things will inevitably happen. But, beyond that, because unlikely things are highly correlated with one another, unlikely things will likely happen &lt;em&gt;together&lt;/em&gt;. In my list above, for example, at least 3 of those things are directly related to COVID.&lt;/p&gt;
&lt;p&gt;So, what do you do in a world where the improbable is not only inevitable but will likely co-occur?&lt;/p&gt;
&lt;p&gt;First, prepare where you can. Get an estate plan, a rainy-day fund, a diversified portfolio, and make contingencies.&lt;/p&gt;
&lt;p&gt;Second, and most importantly, try to &lt;strong&gt;embrace the unlikely&lt;/strong&gt;. The chaos of 2020 was a period of great stress for me and my family. I remember wondering at points if this was the end of the global economy and of in-person interaction. These are especially unsettling thoughts when you have a toddler at home and weren’t sure when you would next see your aging parents.&lt;/p&gt;
&lt;p&gt;But, in hindsight, 2020 was also one of the most transformative and productive years of my professional life. I helped build a telemedicine operation (&lt;a href=&quot;https://www.maximustribe.com/&quot;&gt;that is, as of this writing, still doing pretty well&lt;/a&gt;); learned how to code AI models and &lt;a href=&quot;https://benjamintseng.com/portfolio/life-sciences-health/&quot;&gt;had some of that work ultimately published in peer-reviewed journals&lt;/a&gt;; and tried my hand at &lt;a href=&quot;https://benjamintseng.com/portfolio/policy/&quot;&gt;policy work&lt;/a&gt; which led to new friendships and professional opportunities.&lt;/p&gt;
&lt;p&gt;Out of that tumultuous year came something positive that, I have to admit, would not have happened otherwise. So while 2020 was a terrible year in many fundamental ways, I’m grateful I was in a position to embrace it as an opportunity.&lt;/p&gt;
&lt;h3 id=&quot;5-genius-doesnt-generalize&quot;&gt;5. Genius Doesn’t Generalize&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Intelligence_quotient&quot;&gt;Smart people tend to be smart about multiple things&lt;/a&gt;. So it makes sense to seek out the advice of people who know better.&lt;/p&gt;
&lt;p&gt;However, we live in an age of unhealthy hero worship powered by influencer marketing and interview podcasts. We assume that because someone is brilliant in one domain, they’re worth listening to in others.&lt;/p&gt;
&lt;p&gt;But, in my experience, nothing could be further from the truth. &lt;strong&gt;What it takes to achieve genius-level mastery in one area often comes at the expense of others&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I’m always baffled when people ask Elon Musk for life advice or Warren Buffett for his opinion on anything besides investing. A quick read of their biographies shows that their personal lives are a mess. Their genius is highly specialized. Their situations are extreme. At best, you get a &lt;em&gt;different&lt;/em&gt; perspective. More likely, you hear something that is likely completely irrelevant to you.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/10/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://xkcd.com/1827/&quot;&gt;XKCD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s worth remembering this the next time you hear a billionaire investor weigh in on sociology, a Nobel Laureate scientist weigh in on politics, or an author of fiction weigh in on technology. It’s far more fruitful to consult a few smart friends or read about actual expert opinion than to mind the opinion of a famous (and/or rich) person on a topic outside their expertise.&lt;/p&gt;
&lt;h3 id=&quot;6-good-taste-is-overrated&quot;&gt;6. Good Taste is Overrated&lt;/h3&gt;
&lt;p&gt;In our careers, “good taste” is something worth cultivating and investing in. It signals judgment and makes you hard to replace, especially in this new world of AI.&lt;/p&gt;
&lt;p&gt;But in life? I’ve come to a radically different conclusion: &lt;strong&gt;it’s much better to have low standards&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My inability to distinguish a $20 bottle of wine from a $200 one means I can get the same pleasure from wine as a world-class sommelier for a fraction of the cost.&lt;/p&gt;
&lt;p&gt;My love for bad action movies and rewatching sitcoms means there’s always something to watch on an airplane.&lt;/p&gt;
&lt;p&gt;My willingness to enjoy fast food means I can find a decent meal almost anywhere in America.&lt;/p&gt;
&lt;p&gt;I used to be slightly ashamed of all of these things as evidence of my “uncultured palate”. Now, I see it as a gift. Being easy to please is a superpower for everyday contentment. And, it frees up time and mental energy to focus on what I can discern and care more about.&lt;/p&gt;
&lt;h3 id=&quot;7-play-stupid-status-games-win-stupid-prizes&quot;&gt;7. Play Stupid (Status) Games, Win Stupid Prizes&lt;/h3&gt;
&lt;p&gt;Many things we pursue in life aren’t for a tangible reward, but to signal something about ourselves to others and (sadly, often) to ourselves. These &lt;strong&gt;status games are everywhere, and the trap is that &lt;em&gt;you can never win&lt;/em&gt;&lt;/strong&gt;. There’s always a new car to buy, a more exclusive vacation to take, a new trend to follow. Marketers are masters at playing on this to keep us on the never-ending spending treadmill.&lt;/p&gt;
&lt;p&gt;I felt this most acutely in the past decade with my kids. The entire “new parent industry” is a masterclass in exploiting a new parent’s desire to be a good parent. It’s engineered to make you feel guilty for all the things you &lt;em&gt;aren’t&lt;/em&gt; doing (and all the products you &lt;em&gt;aren’t&lt;/em&gt; buying) while feeling proud of the things that you are (and all the products you &lt;em&gt;are&lt;/em&gt; buying). I remember the shame and anxiety when our eldest son didn’t seem to be hitting his speech milestones as quickly as the books suggested (or &lt;em&gt;*gasp*&lt;/em&gt; as my friends’ kids were).&lt;/p&gt;
&lt;p&gt;Thankfully, my level-headed wife and pragmatic pediatrician helped me see the bigger picture: our son was happy, healthy, and developing just fine on his own timeline. And sure enough, he started talking up a storm at two-and-a-half and was reading full books not long after.&lt;/p&gt;
&lt;p&gt;This sort of un-grounded status seeking is everywhere: people staying in “prestigious sounding” jobs they hate, spending money to keep up with their friends’ Instagram lives, or chasing exotic investments just so they have a more exciting story to tell than “I just buy index funds.”&lt;/p&gt;
&lt;p&gt;The lesson isn’t to drop out of all status games: that’s probably impossible. I will sheepishly admit I buy high-end gadgets not because I need them but to signal that I’m the type of person who buys high-end gadgets. I’ve also maintained a ridiculous 425-day+ Reddit streak for reasons I can’t particularly defend.&lt;/p&gt;
&lt;p&gt;But, the lesson is to be deliberate. Recognize a status game for what it is, and then consciously decide if it’s one you actually want to play.&lt;/p&gt;
&lt;h3 id=&quot;seeing-past-the-surface&quot;&gt;Seeing Past the Surface&lt;/h3&gt;
&lt;p&gt;Looking back, if there’s a single thread connecting these seven lessons, it’s about learning to see past the convenient surfaces. It’s about understanding the hidden incentives that drive people, the true priorities that emerge under pressure, and the surprising freedom that comes from ignoring the ones that don’t matter.&lt;/p&gt;
&lt;p&gt;This process of looking deeper is never really finished. The biggest thing I’ve come to appreciate is that the learning never stops. I’m sure my 40s will dismantle some of the certainties I’ve built in my 30s, and I can’t wait to see which ones.&lt;/p&gt;
&lt;p&gt;That, I suspect, will be the real adventure.&lt;/p&gt;</content:encoded><category>Personal</category></item><item><title>Gene therapy for Huntington’s shows promising clinical trial data</title><link>https://benjamintseng.com/2025/09/gene-therapy-for-huntingtons-shows-promising-clinical-trial-data/</link><guid isPermaLink="true">https://benjamintseng.com/2025/09/gene-therapy-for-huntingtons-shows-promising-clinical-trial-data/</guid><description>Reading Note: Gene therapy for Huntington’s shows promising clinical trial data</description><pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Huntington%27s_disease&quot;&gt;Huntington’s Disease&lt;/a&gt; is one of the classic “uncurable” neurodegenerative diseases. A genetic mutation produces a mutant form of a protein (called &lt;a href=&quot;https://en.wikipedia.org/wiki/Huntingtin&quot;&gt;Huntingtin&lt;/a&gt;) which leads to sudden onset of symptoms which gets progressively worse until death. It’s so bad that it’s considered a “textbook” example of the need for genetic counseling when people are considering getting their DNA sequenced: for some, it’s better to not know they’re a carrier or have the disease.&lt;/p&gt;
&lt;p&gt;But some exciting news from biotech company uniQure today may change that! UniQure announced the results of a Phase I/II study showing how a revolutionary gene therapy + brain surgery can slow disease progression by 75% over 36 months.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/09/image-1024x612.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;What also stood out to me was the use of a synthetic control arm — basically using data collected on real world patients (rather than trial participants) to alleviate the time and cost burden of needing to recruit from a relatively rare disease population (as well as capture disease progression in a realistic setting). Overall, an amazing feat for everyone involved and hopefully a beacon of hope for those with Huntington’s Disease or carrying the gene.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; uniQure presentation&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://cdn.craft.cloud/fe68e1a2-b284-4f69-ba29-921f065edf17/assets/uploads/AMT-130-Pivotal-Sept-2025_final_09.24.25.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;&amp;quot;&amp;quot;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/09/Screenshot-2025-09-24-163616-1024x581.png&quot; alt=&quot;Pivotal Phase I/II AMT-130 Huntington\u2019s Disease Update [PDF]&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://cdn.craft.cloud/fe68e1a2-b284-4f69-ba29-921f065edf17/assets/uploads/AMT-130-Pivotal-Sept-2025_final_09.24.25.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Pivotal Phase I/II AMT-130 Huntington\u2019s Disease Update [PDF] &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;uniQure presentation&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://cdn.craft.cloud/fe68e1a2-b284-4f69-ba29-921f065edf17/assets/uploads/AMT-130-Pivotal-Sept-2025_final_09.24.25.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>gene therapy</category><category>Huntington&apos;s Disease</category><category>synthetic control arm</category><category>uniQure</category></item><item><title>LA child dies from SSPE — (yet) another reason to vaccinate</title><link>https://benjamintseng.com/2025/09/la-child-dies-from-sspe-yet-another-reason-to-vaccinate/</link><guid isPermaLink="true">https://benjamintseng.com/2025/09/la-child-dies-from-sspe-yet-another-reason-to-vaccinate/</guid><description>Reading Note: LA child dies from SSPE — (yet) another reason to vaccinate</description><pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let’s summarize the case for measles vaccination:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Measles is deadly&lt;/strong&gt; — prior to the measles vaccine, &lt;a href=&quot;https://www.cdc.gov/measles/about/questions.html&quot;&gt;of the 500,000 cases/yr that were reported, 400-500 died and 48,000 were hospitalized&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measles clears immune memory, making people who recover more susceptible to infections afterwards&lt;/strong&gt; — &lt;a href=&quot;https://asm.org/articles/2019/may/measles-and-immune-amnesia&quot;&gt;This phenomena is called “immune amnesia”&lt;/a&gt; and seems to be mediated by the measles virus being able to infect immune memory cells with some researchers estimating that &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC4823017/&quot;&gt;potentially half of all childhood deaths from infectious disease prior to the measles vaccine may have been caused in part by this immune amnesia&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Children who recover from measles infection may develop SSPE, a neurological disorder with no cure and terrible prognosis&lt;/strong&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/Subacute_sclerosing_panencephalitis&quot;&gt;Subacute sclerosing panencephalitis (SSPE)&lt;/a&gt; occurs when the measles virus ends up “hiding” in neurons and glial cells as the body clears the initial measles infection. This “hiding” leads to a progressive neurological disease with no cure and few effective treatments beyond just trying to treat the seizures. While rare, the chance of developing SSPE is higher in infants and especially if unvaccinated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sadly, a child in LA county died on Thursday from SSPE — while we don’t have a ton of information about the child’s age, it’s likely the child came down with measles prior to vaccination. For us to protect our kids and each other, we should not only get them vaccinated but insure broad enough vaccination so as to insure herd immunity.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; ABC 7 News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://abc7.com/post/child-dies-measles-related-complication-la-county-public-health-officials-say/17794893/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;““This case is a painful reminder of how dangerous measles can be, especially for our most vulnerable community members,” L.A. County Health Officer Dr. Muntu Davis said in a statement. “Infants too young to be vaccinated rely on all of us to help protect them through community immunity. Vaccination is not just about protecting yourself-it’s about protecting your family, your neighbors, and especially children who are too young to be vaccinated.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/09/G0ptWona4AAefuS.jpeg&quot; alt=&quot;Child dies from rare measles-related complication, LA County health officials say&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://abc7.com/post/child-dies-measles-related-complication-la-county-public-health-officials-say/17794893/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Child dies from rare measles-related complication, LA County health officials say &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Amy Powell&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;ABC 7 News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://abc7.com/post/child-dies-measles-related-complication-la-county-public-health-officials-say/17794893/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>immune amnesia</category><category>measles</category><category>Science</category><category>SSPE</category><category>vaccine</category></item><item><title>Why are ultra-processed foods bad for you?</title><link>https://benjamintseng.com/2025/09/why-are-ultra-processed-foods-bad-for-you/</link><guid isPermaLink="true">https://benjamintseng.com/2025/09/why-are-ultra-processed-foods-bad-for-you/</guid><description>Why are ultra-processed foods bad for you?</description><pubDate>Fri, 12 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nutrition is a field that is fraught with studies that are not powered or designed well enough to make strong conclusions about what types of diets are the “best”.&lt;/p&gt;
&lt;p&gt;So it was interesting to see this article dig into the evidence over whether or not ultra-processed foods, a category that itself is a little hard to pin down — somehow we’re supposed to find it “natural” that burgers and cookies and breakfast cereals are in the same group — are “bad” for you and why.&lt;/p&gt;
&lt;p&gt;The short answer is: yes they are bad, but it doesn’t seem to be exactly clear why. Potentially some combination of the foods being energy dense, quick-to-eat, and potentially impact our &lt;a href=&quot;https://benjamintseng.com/tag/flora/&quot;&gt;gut microbiome&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What was most impressive to me, however, were the number of randomized controlled trials that were attempted with confined study participants (the only way to know who’s eating what and how much) — those are hard to do (and consequently relatively small) but are probably the most convincing evidence.&lt;/p&gt;
&lt;p&gt;Well worth a read if you’re even remotely interested in what the best science has to tell us about how and why processed foods impact our health.&lt;/p&gt;
&lt;hr/&gt;
&lt;blockquote&gt;
&lt;p&gt;The first RCT on UPFs [Ultra-Processed Foods] was carried out by a team led by integrative physiologist Kevin Hall, who until April was at the US National Institutes of Health (NIH), part of the HHS. For more than a decade, Hall has sought to overcome some of the limitations of nutrition research by confining study participants to a research hospital, so that their diets can be precisely recorded.&lt;/p&gt;
&lt;p&gt;In 2015, he was approached by two Brazilian researchers at a meeting after he presented the results of one such study, comparing a low-carbohydrate, animal-product-based diet with a low-fat vegan diet. “They told me they had enjoyed my talk, but that my focus on nutrients was very twentieth century and that really, I should be thinking about the extent and purpose of processing food,” says Hall, who had not then heard of UPFs. He was sceptical but intrigued enough that he devised a trial in which 20 adults stayed at the NIH Clinical Center in Bethesda, Maryland, and consumed a diet high in either UPFs or unprocessed food for two weeks before swapping diets.&lt;/p&gt;
&lt;p&gt;Like many other researchers, Hall defined UPFs using a system developed by Monteiro. Known as NOVA, it classifies food into four groups according to the extent, type and purpose of processing&lt;a href=&quot;https://www.nature.com/articles/d41586-025-02754-w#ref-CR8&quot;&gt;8&lt;/a&gt;. Unprocessed or minimally processed foods, such as vegetables and pasta, are at one end of the scale. At the other end are UPFs, which undergo multiple industrial processes and usually contain substances rarely used in home kitchens, such as high-fructose corn syrup, hydrogenated oils and additives, including colouring and emulsifiers.&lt;/p&gt;
&lt;p&gt;Participants in Hall’s RCT could eat as much as they liked, but the food presented to them was matched for nutrient groups. To Hall’s surprise, the results, published in 2019, showed that participants consumed around 500 calories more per day on average while on the UPF diet — and gained an average of 0.9 kg over the two weeks&lt;a href=&quot;https://www.nature.com/articles/d41586-025-02754-w#ref-CR9&quot;&gt;9&lt;/a&gt;. They lost that same amount of weight while on the unprocessed diet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/09/d41586-025-02754-w_51384286-1024x683.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.nature.com/articles/d41586-025-02754-w&quot;&gt;Are ultra-processed foods really so unhealthy? What the science says&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;
Nic Fleming | Nature News&lt;/p&gt;</content:encoded></item><item><title>The Surrealism of Authoritarianism</title><link>https://benjamintseng.com/2025/09/the-surrealism-of-authoritarianism/</link><guid isPermaLink="true">https://benjamintseng.com/2025/09/the-surrealism-of-authoritarianism/</guid><description>Reading Note: The Surrealism of Authoritarianism</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Among the obvious hallmarks of authoritarianism are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Arbitrary paranoia from on high&lt;/strong&gt; — where students singing patriotic songs on bike rides are suddenly viewed to be a threat&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contradiction between reality and what the state wants you to believe&lt;/strong&gt; — where state media simultaneously can champion “Labubu blind boxes” as signs of cultural &amp;amp; economic success but also frivolous “tools to exploit children’s wallets”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While every society has its own forms of this, it’s very clear China under Xi Jinping has advanced in troubling directions on both, an alarming sign for anyone who lives in China but also a reminder to free societies that it’s easier than you think to step down this path.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Atlantic&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theatlantic.com/international/archive/2025/08/china-utopia-censorship-propaganda/683998/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Labubu appears to be yet another sign of China’s global success. Figurines of the grinning, pointy-eared elf, marketed by a Chinese company called Pop Mart, are so wildly popular that fans around the world go to great lengths to get their hands on them. Many of them come in “blind boxes,” meaning that the consumer gets to see the contents only after purchase. The Chinese state news agency Xinhua boasted in mid-June that the Labubu craze “signals a broader shift in China’s role on the global stage”: The country is becoming a cultural center.
At home, however, the Chinese Communist Party is working to dampen the enthusiasm. A June article in its main newspaper, the People’s Daily, criticized the “out of control spending” on blind boxes and similar products among minors who are “irrational” in their decisions and called for tighter regulation to prevent such objects from becoming “tools to exploit children’s wallets.”
Blind boxes are but one cultural trend to incur the party’s ire. In recent years, Chinese authorities have gone after video games and K-pop, comedy clubs and Halloween parties, gay and lesbian activists and women’s-rights advocates, tech entrepreneurs and financial advisers. The incessant crackdowns, and the campaigns of censorship or censoriousness, suggest that the Chinese regime is intent on not just eliminating opposition, but also micromanaging its people’s lifestyles, consumption, and beliefs.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/09/Screenshot-2025-09-07-14.05.44-823x1024.png&quot; alt=&quot;Life has Gotten Surreal in China&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theatlantic.com/international/archive/2025/08/china-utopia-censorship-propaganda/683998/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Life has Gotten Surreal in China &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Michael Schuman&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Atlantic&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theatlantic.com/international/archive/2025/08/china-utopia-censorship-propaganda/683998/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category></item><item><title>(Finally) The End of Evergrande</title><link>https://benjamintseng.com/2025/08/finally-the-end-of-evergrande/</link><guid isPermaLink="true">https://benjamintseng.com/2025/08/finally-the-end-of-evergrande/</guid><description>Reading Note: (Finally) The End of Evergrande</description><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been a long time coming but China Evergrande (&lt;a href=&quot;https://benjamintseng.com/2023/11/will-hong-kong-put-the-fear-into-chinas-property-builders/&quot;&gt;which I blogged about nearly 2 years ago!&lt;/a&gt;), once China’s largest property developer and who’s debt crisis is widely viewed as the “Lehman Brothers” moment in China’s property crisis, has finally been de-listed, about 18 months after it was ordered to be liquidated.&lt;/p&gt;
&lt;p&gt;What remains to be seen is what China’s government will do as China’s property crisis continues. It’s somewhat ironic given that it was the Chinese government which triggered the property sector’s implosion when it tried to crack down on the property bubble. Only time will tell how much pain the central government is willing for the sector to endure — the US was unable to stomach this pain during the Great Financial Crisis and ultimately made “heroic” moves to save the housing sector.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/articles/2025-08-12/evergrande-stock-to-delist-in-china-property-crisis-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The clock started ticking for the delisting in late January last year, when Evergrande received a liquidation order from a Hong Kong court and trading of its shares was suspended. It has remained halted since then, having failed to meet requirements for a resumption of trading. In Hong Kong, a stock can be delisted if suspension lasts 18 months or longer.
The move will further diminish hopes for any recovery for Evergrande’s shareholders, who have seen the value of their investment evaporate in recent years.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/08/Screenshot-2025-08-12-235718-1024x680.png&quot; alt=&quot;China\u2019s Once-Biggest Builder Evergrande Booted Out of Stock Market After Collapse&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/articles/2025-08-12/evergrande-stock-to-delist-in-china-property-crisis-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; China\u2019s Once-Biggest Builder Evergrande Booted Out of Stock Market After Collapse &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Bloomberg News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/articles/2025-08-12/evergrande-stock-to-delist-in-china-property-crisis-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category><category>Evergrande</category><category>property</category></item><item><title>New Age Bioprospecting for Antimicrobials</title><link>https://benjamintseng.com/2025/08/new-age-bioprospecting-for-antimicrobials/</link><guid isPermaLink="true">https://benjamintseng.com/2025/08/new-age-bioprospecting-for-antimicrobials/</guid><description>Reading Note: New Age Bioprospecting for Antimicrobials</description><pubDate>Mon, 11 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the major contributors to improved healthcare outcomes and reduced mortality in the post-World War II era was the widespread use of antibiotics. Able to treat infection, these miracle drugs literally transformed bacteria from humanity’s primary killer to a manageable problem.&lt;/p&gt;
&lt;p&gt;But, in recent decades, the decline in the discovery of novel antibacterials (and other antimicrobials like antifungals) and the rapid rise in antimicrobial resistance has threatened this happy state. This has led many experts to worry about what will happen in a post-antibiotic world. After all, without effective antibiotics, we not only lose the ability to treat life-threatening diseases like tuberculosis (not to mention common ailments which are a nuisance today but may become more serious like strep throat, urinary tract infections, and ear infections), but we will also lose the ability to perform many surgeries safely (as recovery oftentimes counts on antibiotics to prevent and hold at bay infections).&lt;/p&gt;
&lt;p&gt;While we need to get smarter about how and where we use antibiotics (especially in agricultural applications) to slow the rise of resistance, the other half of this problem is in discovering and commercializing new antimicrobials. This is something we’ve largely failed to do since the 1960s, as the figure below from &lt;a href=&quot;https://cen.acs.org/pharmaceuticals/drug-discovery/Bioprospectors-mine-microbial-genomes-antibiotic/103/web/2025/06&quot;&gt;the C&amp;amp;EN article&lt;/a&gt; derived from &lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S1369527419300190&quot;&gt;data in a 2019 paper&lt;/a&gt; shows.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/08/image-1-1024x676.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The “golden age” of antimicrobial discovery that ended in the 1960s came largely from researchers searching for these miracle chemicals in soil samples (“bioprospecting”), where bacteria and fungi, in order to compete, release them as “chemical weapons” against others. But, having long ago exhausted the “easy” antimicrobials, we were unable to replicate this success in the decades following the 1960s&lt;/p&gt;
&lt;p&gt;But maybe this is about to change. In March, two completely new classes of antimicrobial were published in two weeks (both in &lt;em&gt;Nature&lt;/em&gt;) — equaling the total output of the 2010s! Both papers (&lt;a href=&quot;https://www.nature.com/articles/s41586-025-08678-9&quot;&gt;one by a group from China Pharmaceutical University in Nanjing, China&lt;/a&gt; and &lt;a href=&quot;https://www.nature.com/articles/s41586-025-08723-7&quot;&gt;the other from a collaboration between University of Illinois in Chicago and McMaster University in Canada&lt;/a&gt;) were centered around identifying biosynthetic gene clusters (BGCs) responsible, and with the lower cost of &lt;a href=&quot;https://en.wikipedia.org/wiki/Metagenomics&quot;&gt;metagenomic&lt;/a&gt; sequencing and new computational methods, this may point to a new era of discovering novel antimicrobials to help us innovate our way out of our current antimicrobial resistance dilemma by re-inventing bioprospecting.&lt;/p&gt;
&lt;p&gt;A good reminder that what we need is the political and scientific willpower to keep funding this type of research and the types of genomic and protein databases that make this type of innovation possible!&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; C&amp;amp;EN&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://cen.acs.org/pharmaceuticals/drug-discovery/Bioprospectors-mine-microbial-genomes-antibiotic/103/web/2025/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“In March, the journal Nature published the discoveries of two paradigm-breaking antimicrobial compounds in as many weeks: a polyene macrolide antifungal called mandimycin and a lasso peptide antibiotic called lariocidin.
Both these compounds, which use never-before-seen antimicrobial mechanisms, were found using techniques that let researchers look deep into the chemical diversity of microbes—much deeper than a typical antibiotic or antifungal screen might go. And it’s not just these two molecules. Scientists are using the new approaches to discover countless other antimicrobial compounds with the potential to become drugs.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/08/Screenshot-2025-08-11-142604-1024x599.png&quot; alt=&quot;Bioprospectors mine microbial genomes for antibiotic gold&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://cen.acs.org/pharmaceuticals/drug-discovery/Bioprospectors-mine-microbial-genomes-antibiotic/103/web/2025/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Bioprospectors mine microbial genomes for antibiotic gold &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Max Barnhart&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;C&amp;amp;EN&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://cen.acs.org/pharmaceuticals/drug-discovery/Bioprospectors-mine-microbial-genomes-antibiotic/103/web/2025/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>antibiotics</category><category>antimicrobials</category><category>bioprospecting</category><category>biosynthetic gene cluster</category><category>metagenomics</category><category>pharmaceutical</category></item><item><title>Google’s New Weapon in AI — Cloudflare</title><link>https://benjamintseng.com/2025/08/googles-new-weapon-in-ai-cloudflare/</link><guid isPermaLink="true">https://benjamintseng.com/2025/08/googles-new-weapon-in-ai-cloudflare/</guid><description>Reading Note: Google’s New Weapon in AI — Cloudflare</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://benjamintseng.com/2009/07/tech-strategy-101/&quot;&gt;Tech strategy is difficult AND fascinating&lt;/a&gt; because it’s unpredictable. In addition to worrying about the actions of direct competitors (i.e. Samsung vs Apple), companies need to &lt;em&gt;also&lt;/em&gt; worry about the actions of ecosystem players (i.e. smartphones and AI vendors) who may make moves that were intended for something else but have far-reaching consequences.&lt;/p&gt;
&lt;p&gt;In the competition between frontier AI models, it is no surprise that Google, &lt;a href=&quot;https://arxiv.org/abs/1706.03762&quot;&gt;where the Transformer architecture virtually all LLMs are based on was created&lt;/a&gt;, was caught off-guard by the rapid rise of OpenAI and AI-powered search vendors like Perplexity and Chinese participants like &lt;a href=&quot;https://www.deepseek.com/&quot;&gt;DeepSeek&lt;/a&gt; and &lt;a href=&quot;https://www.alibabacloud.com/en/solutions/generative-ai/qwen?_p_lc=1&quot;&gt;Alibaba/Qwen&lt;/a&gt;. While Google (and its subsidiary DeepMind) have doubled down on &lt;a href=&quot;https://storage.googleapis.com/deepmind-media/gemini/gemini_v2_5_report.pdf&quot;&gt;their own impressive AI efforts&lt;/a&gt;, the general perception in the tech industry has been that Google is on defense.&lt;/p&gt;
&lt;p&gt;But, as I started, tech strategy is not just about your direct competition. It’s also about the ecosystem. Cloudflare, which offers distributed internet security solutions (which protect this blog and &lt;a href=&quot;https://benjamintseng.com/2025/07/cloudflare-tunnels-for-your-home-server/&quot;&gt;let me access my home server remotely&lt;/a&gt;) recently &lt;a href=&quot;https://www.cloudflare.com/press-releases/2025/cloudflare-just-changed-how-ai-crawlers-scrape-the-internet-at-large/&quot;&gt;announced that it would start blocking the webscrapers that AI companies use&lt;/a&gt; due to concerns from publishers of websites that their content is being used without compensation.&lt;/p&gt;
&lt;p&gt;However, because search is still a key source of traffic for most websites, this “default block” is almost certainly &lt;em&gt;not&lt;/em&gt; turned on (at least by most website owners) for Google’s own scrapers, giving Google’s internal AI efforts a unique data advantage over it’s non-search-engine rivals.&lt;/p&gt;
&lt;p&gt;Time will tell how the major AI vendors will adapt to this, but judging by the &lt;a href=&quot;https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/&quot;&gt;announcement this morning&lt;/a&gt; that Cloudflare is now actively flagging AI-powered search engine Perplexity as a bad agent, Cloudflare may have just given Google a powerful new weapon in it’s AI competition.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Gabriel Corral, Vaibhav Singal, Brian Mitchell, Reid Tatoris&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The Internet as we have known it for the past three decades is rapidly changing, but one thing remains constant: it is built on trust. There are clear preferences that crawlers should be transparent, serve a clear purpose, perform a specific activity, and, most importantly, follow website directives and preferences. Based on Perplexity’s observed behavior, which is incompatible with those preferences, we have de-listed them as a verified bot and added heuristics to our managed rules that block this stealth crawling.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/08/Screenshot-2025-08-04-102925-1024x533.png&quot; alt=&quot;Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Gabriel Corral, Vaibhav Singal, Brian Mitchell, Reid Tatoris&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Alibaba</category><category>Cloudflare</category><category>DeepSeek</category><category>Google</category><category>OpenAI</category><category>Perplexity</category><category>Qwen</category></item><item><title>Helsinki goes a full year without a traffic death</title><link>https://benjamintseng.com/2025/07/helsinki-goes-a-full-year-without-a-traffic-death/</link><guid isPermaLink="true">https://benjamintseng.com/2025/07/helsinki-goes-a-full-year-without-a-traffic-death/</guid><description>Reading Note: Helsinki goes a full year without a traffic death</description><pubDate>Wed, 30 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Helsinki, Finland (population: ~650,000) has not had a single car cash related death in over a year! That is impressive! They believe a combination of lower speed limits, improved pedestrian / cycling infrastructure, public transit improvement, and traffic camera all contributed.&lt;/p&gt;
&lt;p&gt;While Americans love cars (this writer included!), the fact that roughly 40,000 Americans die each year from motor vehicle fatalities (&lt;a href=&quot;https://www.cdc.gov/transportation-safety/about/index.html&quot;&gt;not to mention ~2.6 million emergency department visits related to motor vehicle crashes in 2022 and $470 billion in medical costs&lt;/a&gt;) should push us to question if we can do better by learning from the experiences of other places.&lt;/p&gt;
&lt;p&gt;I don’t relish driving &lt;em&gt;even slower&lt;/em&gt; in a city, but it’s hard to deny the alternative is even grimmer.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; YLE News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://yle.fi/a/74-20174831&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“According to Utriainen, more than half of Helsinki’s streets now have a speed limit of 30 km/h. Fifty years ago, that proportion featured 50 km/h limits.
Earlier this summer, Helsinki decided to lower speed limits near schools to 30 km/h, a measure that is set to take effect as the academic year begins.
Street design has also played a key role. Pedestrian and cycling infrastructure has been significantly upgraded in recent years. In addition, cooperation with traffic police has intensified and more traffic cameras and automated enforcement systems have been introduced.
“Public transport in Helsinki is excellent, which reduces car use, and with it, the number of serious accidents,” Utriainen noted.
Vehicle technology has also improved, making both cars and other personal transport options safer than ever.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/39-14739406839ce5587fdd-1024x575.jpg&quot; alt=&quot;Helsinki goes a full year without a traffic death&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://yle.fi/a/74-20174831&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Helsinki goes a full year without a traffic death &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;YLE News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://yle.fi/a/74-20174831&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cars</category><category>cause of death</category><category>Finland</category></item><item><title>Cloudflare Tunnels for Your Home Server</title><link>https://benjamintseng.com/2025/07/cloudflare-tunnels-for-your-home-server/</link><guid isPermaLink="true">https://benjamintseng.com/2025/07/cloudflare-tunnels-for-your-home-server/</guid><description>Cloudflare Tunnels for Your Home Server</description><pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you’ve been following &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;my selfhosting journey&lt;/a&gt;, you’ll know that I host some web applications — among them, network storage for my family, &lt;a href=&quot;http://benjamintseng.com/2024/02/dont-pay-for-adobe-acrobat-to-do-basic-pdf-things/&quot;&gt;tools for working with PDFs&lt;/a&gt;, &lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;media streamers&lt;/a&gt;, &lt;a href=&quot;http://benjamintseng.com/2024/01/selfhosting-freshrss/&quot;&gt;a newsreader&lt;/a&gt;, etc. — from an inexpensive home server on my home network. It’s mostly a fun hobby but it’s helped teach me a great deal about web applications and Docker containers, and has helped me save some time and money by having applications I can control (and offer).&lt;/p&gt;
&lt;p&gt;But one of the big questions facing every self-hoster is how to access these applications &lt;em&gt;securely&lt;/em&gt; when I’m &lt;em&gt;not&lt;/em&gt; at home? This is a conundrum as the two traditional options available have major tradeoffs&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Opening up ports to the internet&lt;/strong&gt; — One way to do this is to open up ports on your internet router and to forward traffic to those ports to your server. While this is the most direct solution to the problem of granting access to your hosted applications, this has several issues
&lt;ul&gt;
&lt;li&gt;First, some internet service providers and routers don’t actually let you do this!&lt;/li&gt;
&lt;li&gt;Second, by opening up a port on your router, you’ll be opening up a door for &lt;em&gt;everyone&lt;/em&gt; on the internet to access. This could expose your home network to malicious actors, and requires you to either accept the risk or set up additional security mechanisms to protect yourself.&lt;/li&gt;
&lt;li&gt;Third, unless your internet service provider has granted you a static IP address (which is relatively rare for consumer internet plans), the IP address of your home will randomly change. Therefore in order to access your home server, you’ll need to setup a &lt;a href=&quot;https://en.wikipedia.org/wiki/Dynamic_DNS&quot;&gt;Dynamic DNS&lt;/a&gt; service which adds additional complexity to manage.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPNs or VPN-like solutions (Twingate, Tailscale, etc)&lt;/strong&gt; — The alternative to opening up a port is to leverage VPN and VPN-like technologies. This is much more secure (and, in fact, &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;I use Twingate, a great VPN-like service, for this type of secure remote access&lt;/a&gt;). But, this has one major downside: it requires each device that wants to access your hosted applications to have a special client installed. This can be a hassle (especially if you want to grant access to someone less tech-savvy), and, in some cases, near impossible (if you’re dealing with devices like a connected TV or eReader or if the device is behind a firewall that doesn’t like VPNs).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I wanted a third option that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;would work nicely and &lt;em&gt;securely&lt;/em&gt; with practically any internet-connected device&lt;/li&gt;
&lt;li&gt;didn’t require client installation or configuration&lt;/li&gt;
&lt;li&gt;didn’t require me to open up any new ports on my home router or expose a public IP address&lt;/li&gt;
&lt;li&gt;could integrate authentication (as an extra layer of security)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s how I landed on Cloudflare tunnels!&lt;/p&gt;
&lt;h2 id=&quot;cloudflare-tunnels&quot;&gt;Cloudflare Tunnels&lt;/h2&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&quot;&gt;Cloudflare Tunnels&lt;/a&gt;, a product in the &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/&quot;&gt;Cloudflare Zero Trust&lt;/a&gt; family of offerings. By running a small piece of software called &lt;code&gt;cloudflared&lt;/code&gt; on your home network (i.e. as a Docker container on your home server), you can link:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the services/resources on your home network&lt;/li&gt;
&lt;li&gt;domains hosted and secured by Cloudflare&lt;/li&gt;
&lt;li&gt;third party authentication services (like Google login)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What that means is &lt;a href=&quot;http://benjamintseng.com/2024/02/dont-pay-for-adobe-acrobat-to-do-basic-pdf-things/&quot;&gt;my local Stirling PDF tools&lt;/a&gt; (which live on my home server at the domain &lt;code&gt;pdf.home&lt;/code&gt;) can now be reached by any internet-connected device at &lt;a href=&quot;https://pdf.%5Bmydomain.com&quot;&gt;https://pdf.[mydomain.com&lt;/a&gt;] while locked behind a Google login which only allows users with specific email addresses through (i.e. my wife and myself)! All for free!&lt;/p&gt;
&lt;h2 id=&quot;how-to-setup&quot;&gt;How to Setup&lt;/h2&gt;
&lt;h3 id=&quot;transferring-your-domains&quot;&gt;Transferring Your Domains&lt;/h3&gt;
&lt;p&gt;To get started, &lt;strong&gt;transfer your domains to Cloudflare&lt;/strong&gt;. The specific instructions for this will vary by domain registrar (&lt;a href=&quot;https://developers.cloudflare.com/registrar/get-started/transfer-domain-to-cloudflare/&quot;&gt;see some guidelines from Cloudflare&lt;/a&gt;). While you can technically just change the nameservers, I would highly recommend fully transferring your domains to Cloudflare for three reasons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cost:&lt;/strong&gt; &lt;a href=&quot;https://www.cloudflare.com/application-services/solutions/low-cost-domain-names/&quot;&gt;Cloudflare (as of this writing) offers at-cost domain registration&lt;/a&gt;. This means they don’t add any markup on top of what it costs to actually register the domain and so it’s typically cheaper to buy and renew domains with Cloudflare&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security:&lt;/strong&gt; Cloudflare offers free and automatic HTTPS protection on all domains and basic DDOS protection as well&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extra Configurable Protection:&lt;/strong&gt; I am not a cybersecurity expert but Cloudflare, even on their free tier, offer generous protection and domain features that you can further customize: &lt;a href=&quot;https://www.cloudflare.com/application-services/products/bot-management/&quot;&gt;bot protection&lt;/a&gt;, &lt;a href=&quot;https://www.cloudflare.com/application-services/products/analytics/&quot;&gt;analytics&lt;/a&gt;, a sophisticated &lt;a href=&quot;https://www.cloudflare.com/application-services/products/waf/&quot;&gt;web application firewall&lt;/a&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;creating-the-tunnel&quot;&gt;Creating the Tunnel&lt;/h3&gt;
&lt;p&gt;Once you have your domains transferred to Cloudflare, &lt;strong&gt;go into your Cloudflare dashboard and create your tunnel&lt;/strong&gt;. Start by clicking on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Zero Trust&lt;/kbd&gt; on the sidebar. Then go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Networks &amp;gt; Tunnels&lt;/kbd&gt; and click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Create Tunnel&lt;/kbd&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-405x1024.png&quot; alt/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-1-1024x462.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Cloudflared&lt;/kbd&gt; option&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-2-1024x716.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;You will be asked to name your connector — pick any name that suits you, I went with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;OMV&lt;/kbd&gt; (since my homeserver is an OpenMediaVault server).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-4-1024x559.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Then copy the installation command. Paste it somewhere and extract the really long token that starts with “&lt;code&gt;ey&lt;/code&gt;…” as you’ll need it for the next step.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-3-1024x927.png&quot; alt/&gt;&lt;/p&gt;
&lt;h3 id=&quot;setting-up-cloudflared&quot;&gt;Setting up &lt;code&gt;Cloudflared&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Set up &lt;code&gt;cloudflared&lt;/code&gt;.&lt;/strong&gt; The following are instructions for &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt;. Depending on your home server setup, you may need to do different things to get a Docker container up and running using Docker compose but the Docker compose file and the general order of operations should match. Assuming you use OpenMediaVault…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you haven’t already, make sure you have OMV Extras and Docker Compose installed (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;, you’ll want to follow all 10 steps as I refer to different parts of the process throughout this post) &lt;em&gt;and&lt;/em&gt; have a static local IP address assigned to your server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to your OpenMediaVault web admin panel, and then go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/kbd&gt; in the sidebar. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the main interface to add a new Docker compose file.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;cloudflared&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, adapt the following. Copy the token from the installation command&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;  cloudflared:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cloudflare/cloudflared&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cloudflare-tunnel&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;    command&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tunnel&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TUNNEL_TOKEN={{the&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; long&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; before&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; starts&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ey...}}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files. Notice that the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Cloudflared&lt;/kbd&gt; entry you created has a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Down&lt;/kbd&gt; status, showing the container has yet to be initialized.&lt;/li&gt;
&lt;li&gt;To start your Duplicati container, click on the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Cloudflared&lt;/kbd&gt; entry and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Go back to your Cloudflare Zero Trust dashboard and click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Networks &amp;gt; Tunnels&lt;/kbd&gt;. If your Docker container worked, you should see a &lt;strong&gt;&lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#ECFDF5] text-[#059669] border border-[#A7F3D0] align-baseline shadow-2xs&quot;&gt;HEALTHY&lt;/span&gt;&lt;/strong&gt; status showing that your Cloudflared container is up and running and connected to Cloudflare&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-5-1024x367.png&quot; alt/&gt;&lt;/p&gt;
&lt;h3 id=&quot;connecting-your-services-to-the-tunnel&quot;&gt;Connecting your Services to the Tunnel&lt;/h3&gt;
&lt;p&gt;Click on your now active tunnel in the Cloudflare interface and click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Edit&lt;/kbd&gt; (or use the three-dot menu on the right hand side and select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Configure&lt;/kbd&gt;) and then click on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Public Hostnames&lt;/kbd&gt; tab at the top. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a public hostname&lt;/kbd&gt; button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-6-1024x231.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;For each service you want to make available, you will need to enter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain&lt;/kbd&gt; you wish to use (and have transferred to Cloudflare)
&lt;ul&gt;
&lt;li&gt;The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Subdomain&lt;/kbd&gt; you want to map that service to — if the domain you wish to use is &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;example.com&lt;/kbd&gt;, an example subdomain would be &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;subdomain.example.com&lt;/kbd&gt;. If you leave this blank, it will map the “naked” domain (in this case &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;example.com&lt;/kbd&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Path&lt;/kbd&gt; you want to map the service to — if the domain and subdomain is &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;subdomain.example.com&lt;/kbd&gt; and you add a path &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/path&lt;/kbd&gt;, then the service would be mapped to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;subdomain.example.com/path&lt;/kbd&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Type&lt;/kbd&gt; of service — Cloudflare will map many different types of resources, but chances are it’ll be &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;HTTP&lt;/kbd&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;URL&lt;/kbd&gt; of the service relative to your network — this is the IP address (including port) that you use within your network. For example: &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;192.168.85.22:5678&lt;/kbd&gt;&lt;/strong&gt; (assuming your home server’s local IP is 192.168.85.22 and the port the service you want to link is set to 5678)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-7-1024x723.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; once you’re done and go ahead and test the subdomain/domain/path you just added (i.e. go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;https://subdomain.example.com/path&lt;/kbd&gt;). It should take you straight to your application, except now it’s through a publicly accessible URL secured behind Cloudflare SSL!&lt;/p&gt;
&lt;h3 id=&quot;suggestions-on-service-configuration&quot;&gt;Suggestions on Service Configuration&lt;/h3&gt;
&lt;p&gt;You need to repeat the above process for every selfthosted application that you want to make publicly available. Some suggestions based on what I did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I made public every service I host with a few exceptions related to security, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The OpenMediaVault console&lt;/em&gt; &lt;em&gt;&amp;amp; WeTTY&lt;/em&gt; — Since this controls my entire home server setup (and grants access to all my network attached storage), it felt a little too important to make it easy to access (at least not without a VPN-like solution like the one I use, Twingate)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The PiHole administrative console&lt;/em&gt; — Similarly, because my PiHole is so vital to how the internet functions on my home network and regulates DNS in my home, it felt like locking this behind Twingate was reasonable&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The NAS&lt;/em&gt; — As there are important and sensitive files on the OpenMediaVault file server, this was again one of the things where security trumped expediency.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&quot;http://benjamintseng.com/2024/04/backup-your-home-server-with-duplicati/&quot;&gt;Duplicati&lt;/a&gt;&lt;/em&gt; — I was less concerned about security here, but Duplicati is largely a “set it and forget it” type of backup tool, so it felt like there was little benefit to make this publicly available (and only potential risks)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Ubooquity Admin interface&lt;/em&gt; — I’m again not super concerned about security here, but I have rarely needed to use it, so it didn’t make sense to add to my “surface area of attack” by exposing this as well&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For a media server like &lt;a href=&quot;https://www.plex.tv/&quot;&gt;Plex&lt;/a&gt; (or &lt;a href=&quot;https://jellyfin.org/&quot;&gt;Jellyfin&lt;/a&gt; or &lt;a href=&quot;https://emby.media/&quot;&gt;Emby&lt;/a&gt;), you don’t have to, but I’d encourage you to connect two domains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One that is easily memorable by you (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;plex.yourdomain.com&lt;/kbd&gt;) for you to access via browser over HTTPS and protected by authentication
and access control (see later in the post for how to configure)&lt;/li&gt;
&lt;li&gt;One that has a long, hard-to-guess subdomain (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;hippo-oxygen-face.yourdomain.com&lt;/kbd&gt;) that will still be served over HTTPS but will &lt;em&gt;not&lt;/em&gt; be protected by authentication. This will allow access to devices like smart TVs and the Plex clients which do not expect the servers to have additional authentication on top of them.If you have Plex and you follow this second suggestion, you can further secure you server by going into your Plex configuration panel from a browser and pressing the wrench icon in the upper right (which takes you to settings)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Under your server settings (not Plex Web or your account settings which are above), go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Settings &amp;gt; Remote Access&lt;/kbd&gt; and press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Disable Remote Access&lt;/kbd&gt; button. This disables &lt;a href=&quot;https://support.plex.tv/articles/216766168-accessing-a-server-through-relay/&quot;&gt;Plex’s built-in Relay feature&lt;/a&gt; which, while reasonably functional, is not under your control and limited in bandwidth / typically forces your server to transcode more than necessary&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-8-1024x335.png&quot; alt/&gt;&lt;br/&gt;
To allow Plex apps (such as those on a TV or smartphone) to access your server, you’ll need to let Plex know what the right URL is. To do that go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Settings &amp;gt; Network&lt;/kbd&gt; and scroll down to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Customer server access URLs&lt;/kbd&gt;. Here you’ll enter your hard-to-guess subdomain (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;https://hippo-oxygen-face.yourdomain.com&lt;/kbd&gt;) and press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save Changes&lt;/kbd&gt;. This informs Plex (and therefore all Plex clients) where to look for your media server&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-9-1024x425.png&quot; alt/&gt;&lt;br/&gt;
To confirm it all works, login to your Plex account at &amp;lt;&lt;a href=&quot;https://app.plex.tv/&quot;&gt;https://app.plex.tv/&lt;/a&gt;&amp;gt; and confirm that your server shows up (you may have to wait the first time you do this as Plex connects to your server).&lt;/p&gt;
&lt;p&gt;Because this approach does NOT have extra access control and authentication, and because there are malicious actors who scan the internet for unguarded media server domains, it’s important that your subdomain here be long and hard-to-guess.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;authentication-and-access-control&quot;&gt;Authentication and Access Control&lt;/h3&gt;
&lt;p&gt;Because Cloudflare Tunnels are part of Cloudflare’s enterprise offering to help IT organizations make their applications secure &amp;amp; accessible, it comes with authentication support and access controls built-in for any application connected to your Cloudflare tunnel. This means you can easily protect your web applications against unwanted access.&lt;/p&gt;
&lt;p&gt;To set this up, log back in to the Cloudflare dashboard, go to &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Zero Trust&lt;/kbd&gt;&lt;/strong&gt;, and then go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Access &amp;gt; Policies&lt;/kbd&gt; in the sidebar and press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a policy&lt;/kbd&gt; button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-12-1024x336.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Enter a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Policy name&lt;/kbd&gt; (pick something that describes how you’re restricting access, like “&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Jack and Jill only&lt;/kbd&gt;“).&lt;/p&gt;
&lt;p&gt;You can then add the specific rules that govern the policy. &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/policies/access/&quot;&gt;Cloudflare supports a wide range of rules&lt;/a&gt; (including limiting based on IP address, country, etc), but assuming you just want to restrict access to specific individuals, I’d pick &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Emails&lt;/kbd&gt; under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Selector&lt;/kbd&gt; and add the emails of the individual who are being granted access under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Value&lt;/kbd&gt;. Once you’re set, press the &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;&lt;/strong&gt; button at the bottom!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-13-1024x819.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Now you have a policy which can restrict a given application &lt;em&gt;only&lt;/em&gt; to users with specific email addresses 🙌🏻.&lt;/p&gt;
&lt;p&gt;Now, we just need to set up Cloudflare to apply that policy (and a specific login method) to the services in question. To do that, in the Cloudflare Zero Trust dashboard, go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Access &amp;gt; Applications&lt;/kbd&gt; in the sidebar and press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add an application&lt;/kbd&gt; button in the screen that comes up.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-10-1024x295.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Self-hosted&lt;/kbd&gt; option. And then enter your &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Application name&lt;/kbd&gt;. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add public hostname&lt;/kbd&gt; button and enter in the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Subdomain&lt;/kbd&gt;, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain&lt;/kbd&gt;, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Path&lt;/kbd&gt; for your previously-connected subdomain.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-11-1024x662.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Scroll down to Access Policies and press the &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Select existing policies&lt;/kbd&gt;&lt;/strong&gt; button and check the policy you just created and then hit the &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Confirm&lt;/kbd&gt;&lt;/strong&gt; button. You should see something like the following&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-14-1024x292.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Finally you can configure which login methods you want to support. Out of the box, Cloudflare supports one-time PIN as a login method. Any user who lands on the domain in question the first time will be prompted to enter their email and, to verify the user is who they say they are, they’ll be sent a PIN number to that email address which they’ll then need to enter. This is straightforward, and if that’s all you want, accept the current default settings.&lt;/p&gt;
&lt;p&gt;However, if, like me, you prefer to have your users login via a 3rd party authentication service (like Google or Facebook), then you have a little bit of extra work to do. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Manage login methods&lt;/kbd&gt; link where you’ll be taken to a screen in a new tab to configure your Authentication options. Where it says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Login methods&lt;/kbd&gt;, press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add new&lt;/kbd&gt; button.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-16-1024x640.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;You’ll be given the ability to add support for 3rd party logins through a number of identity providers (see below).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-17-1024x740.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;You can select any identity provider you wish — I went with Google — but whatever you select, Cloudflare will provide instructions for how to connect that provider to Cloudflare Zero Trust. These instructions can be quite complicated (see the Google instructions below) but if you follow Cloudflare’s instructions, you should be fine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-18-1024x1014.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Once you’re done, press the &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;&lt;/strong&gt; button and return to the tab where you were configuring the application.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Login methods&lt;/kbd&gt; you should see that Cloudflare has checked the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Accept all available identity providers&lt;/kbd&gt; toggle. You can keep that option, but as I configured only want my users to use Google, I unchecked that toggle and un-selected the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;One-time PIN&lt;/kbd&gt; option. I also checked the &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Instant Auth&lt;/kbd&gt;&lt;/strong&gt; option (only available if there’s only one authentication method selected) which skips the authentication method selection step for your users. Then I pressed &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/image-20-1024x987.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The next two screens have additional optional configuration options which you can skip through by pressing &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;&lt;/strong&gt;. Et voila! You have now configured an authentication and access control system on top of your now publicly accessible web service. Repeat this process for every service you want to put authentication &amp;amp; access control on and you’ll be set!&lt;/p&gt;
&lt;p&gt;I have a few services I share access to with my wife and a few that are just for myself and so I’ve configured two access policies which I apply to my services differently. For services I intend to let anyone without access control reach (for example my Plex server for Plex apps), I simply don’t add them as an application in Cloudflare for access control (and just host them via subdomain).&lt;/p&gt;
&lt;p&gt;I hope this is helpful for anyone who wants to make their selfhosted services accessible securely through the web. If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;!&lt;/p&gt;</content:encoded><category>Cloudflare</category><category>Cloudflare tunnels</category><category>Duplicati</category><category>OpenMediaVault</category><category>Plex</category><category>selfhost</category><category>Stirling PDF</category></item><item><title>LLMs Get Trounced at Chess</title><link>https://benjamintseng.com/2025/07/llms-get-trounced-at-chess/</link><guid isPermaLink="true">https://benjamintseng.com/2025/07/llms-get-trounced-at-chess/</guid><description>Reading Note: LLMs Get Trounced at Chess</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While Large Language Models (LLMs) have demonstrated they can do many things &lt;em&gt;well enough&lt;/em&gt;, it’s important to remember that these are not “thinking machines” so much as impressively competent “writing machines” (able to figure out what words are likely to follow).&lt;/p&gt;
&lt;p&gt;Case in point: both OpenAI’s ChatGPT and Microsoft Copilot lost to the chess playing engine of an old Atari game (Video Chess) which takes up a mere 4 KB of memory to work (compared with the billions of parameters and GB’s of specialized accelerator memory needed to make LLMs work).&lt;/p&gt;
&lt;p&gt;It’s a small (yet potent) reminder that (1) different kinds of AI are necessary for different tasks (i.e. Google’s revolutionary &lt;a href=&quot;https://en.wikipedia.org/wiki/AlphaZero&quot;&gt;AlphaZero&lt;/a&gt; probably would’ve made short work of the Atari engine) and (2) don’t underestimate how small but highly specialized algorithms can perform.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; PC Gamer&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.pcgamer.com/software/ai/after-conquering-chatgpt-atari-2600-video-chess-destroys-microsoft-copilot-the-vintage-silicon-mastermind-bested-me-fair-and-square/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Last month we reported on the somewhat-surprising news that an emulated Atari 2600 running the 1979 software Video Chess had “absolutely wrecked” an overconfident ChatGPT at the game of kings. Fans of schadenfreude rejoice, because Microsoft Copilot thought this was a chance to show its superiority to ChatGPT: And the Atari gave it a beating.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/Screenshot-2025-07-10-013400.png&quot; alt=&quot;After conquering ChatGPT, Atari 2600 Video Chess destroys Microsoft Copilot: \u2018The vintage silicon mastermind bested me fair and square\u2019&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.pcgamer.com/software/ai/after-conquering-chatgpt-atari-2600-video-chess-destroys-microsoft-copilot-the-vintage-silicon-mastermind-bested-me-fair-and-square/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; After conquering ChatGPT, Atari 2600 Video Chess destroys Microsoft Copilot: \u2018The vintage silicon mastermind bested me fair and square\u2019 &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Rich Stanton&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;PC Gamer&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.pcgamer.com/software/ai/after-conquering-chatgpt-atari-2600-video-chess-destroys-microsoft-copilot-the-vintage-silicon-mastermind-bested-me-fair-and-square/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Atari</category><category>ChatGPT</category><category>chess</category><category>large language models</category><category>tech</category></item><item><title>The War on Harvard’s Private Equity/VC Collateral Damage</title><link>https://benjamintseng.com/2025/07/the-war-on-harvards-private-equity-vc-collateral-damage/</link><guid isPermaLink="true">https://benjamintseng.com/2025/07/the-war-on-harvards-private-equity-vc-collateral-damage/</guid><description>Reading Note: The War on Harvard’s Private Equity/VC Collateral Damage</description><pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Republicans have declared a “war on Harvard” in recent months and one front of that is a request to the SEC to look at how Harvard’s massive endowment values illiquid assets like venture capital and private equity.&lt;/p&gt;
&lt;p&gt;What’s fascinating is that in targeting Harvard in this way the Republicans may have declared war on Private Equity and Venture Capital in general. As their holdings (in privately held companies) are highly illiquid, it is considered accounting “standard practice” to simply ask the investment funds to provide “fair market” valuations of those assets.&lt;/p&gt;
&lt;p&gt;This is a practical necessity, as it is highly difficult to value these companies (which rarely trade and where even highly paid professionals miss the mark). But, it means that investment firms are allowed to “grade their own homework”, pretending that valuations for some companies are much higher than they actually have a right to be, resulting in quite a bit of “grade inflation” across the entire sector.&lt;/p&gt;
&lt;p&gt;If Harvard is forced to re-value these according to a more objective standard — like the valuations of these assets according to a 409a valuation or a secondary transaction (where shares are sold without the company being involved) both of which artificially deflate prices — then it wouldn’t be a surprise to see significant “grade deflation” which could have major consequences for private capital:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Less capital for private equity / venture capital&lt;/strong&gt;: Many institutional investors (LPs) like private equity / venture capital in part because the “grade inflation” buffers the price turbulence that more liquid assets (like stocks) experience (so long as the long-term returns are good). Those investors will find private equity and venture capital less attractive if the current practices are replaced with something more like “grade deflation”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A shift in investments from higher risk companies to more mature ones&lt;/strong&gt;: If Private Equity / Venture Capital investments need to be graded on a harsher scale, they will be less likely to invest in higher risk companies (which are more likely to experience valuation changes under stricter methodologies) and more likely to invest in more mature companies with more predictable financials (ones that are closer to acting like publicly traded companies). This would be a blow to smaller and earlier stage companies.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Wall Street Journal&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.wsj.com/finance/investing/private-equity-caught-in-crosshairs-of-elise-stefaniks-attack-on-harvard-e5088539?st=fiLkk2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The problem is investors are often allowed to keep using the reported NAV figures even if they know they are out of date or weren’t measured properly. In those scenarios, the accounting rules say an investor “shall consider whether an adjustment” is necessary. But the rules don’t require an investor to do anything more than consider it. There’s no outright prohibition on using the reported NAV even if the investor knows it’s completely unreasonable.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/07/im-51858628.jpg&quot; alt=&quot;Private Equity Caught in Crosshairs of Elise Stefanik\u2019s Attack on Harvard&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.wsj.com/finance/investing/private-equity-caught-in-crosshairs-of-elise-stefaniks-attack-on-harvard-e5088539?st=fiLkk2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Private Equity Caught in Crosshairs of Elise Stefanik\u2019s Attack on Harvard &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jonathan Weil&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Wall Street Journal&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.wsj.com/finance/investing/private-equity-caught-in-crosshairs-of-elise-stefaniks-attack-on-harvard-e5088539?st=fiLkk2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Harvard</category><category>Private Equity</category><category>SEC</category><category>Venture Capital</category></item><item><title>CAR-T Bests Solid Tumors</title><link>https://benjamintseng.com/2025/06/car-t-bests-solid-tumors/</link><guid isPermaLink="true">https://benjamintseng.com/2025/06/car-t-bests-solid-tumors/</guid><description>Reading Note: CAR-T Bests Solid Tumors</description><pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The promise of immune &lt;a href=&quot;http://benjamintseng.com/tag/cell-therapy/&quot;&gt;cell therapies&lt;/a&gt; is to direct the incredible sophistication of the immune system to the medical targets we want to hit. In the case of &lt;a href=&quot;http://benjamintseng.com/tag/car-t/&quot;&gt;CAR-T cells&lt;/a&gt;, we take a patient’s own immune T-cells and “program” them through genetic modification to go after cancer cells. While &lt;a href=&quot;http://benjamintseng.com/2023/10/complex-operations-for-gene-editing-therapies/&quot;&gt;the process of the genetic modification to create those cells is still incredibly expensive and challenging&lt;/a&gt;, we’ve seen amazing progress with CAR-T in liquid tumors (e.g., leukemias, lymphomas, etc).&lt;/p&gt;
&lt;p&gt;But, when it comes to solid tumors, it’s been far more challenging. &lt;a href=&quot;https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(25)00860-8/abstract&quot;&gt;Enter this Phase II clinical trial from China&lt;/a&gt; (&lt;a href=&quot;https://www.nature.com/articles/d41586-025-01722-8&quot;&gt;summarized in Nature News&lt;/a&gt;). The researchers performed a random controlled trial on 266 patients with gastric or gastro-esophageal cancer who resisted previous treatment and assigned 2/3 to receive CAR-T or best-medical-care (the control) otherwise. The results (see the survival curve below) are impressive — while the median progression-free survival is only about 1.5 months different, it’s very clear that by month 8 there are no progression-free patients in the control group but something like ~25% of the CAR-T group.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/06/image-1024x390.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The side effect profile is still challenging (with 99% of patients in CAR-T group experiencing moderately severe side effects) but this is (sadly) to be expected with CAR-T treatments.&lt;/p&gt;
&lt;p&gt;While it remains to be seen how this scales up in a Phase III study with a larger population, this is incredibly promising finding — giving clinicians a new tool in their arsenal for dealing with a wider range of cancer targets as well as suggesting that cell therapies still have more tricks up their sleeves&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Nature News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-01722-8&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The phase II clinical trial in China tested chimeric antigen receptor (CAR) T cells in people with advanced gastric cancer or gastro-oesophageal junction cancer, which are solid tumours. To create CAR-T-cell therapies, T cells are collected from a person with cancer and tweaked to produce proteins that target cancer cells. The T cells are then infused back into the same person. CAR-T-cell therapy has revolutionized cancer treatment but has been most successful against blood cancers.
“Solid tumours generally don’t respond well to CAR-T-cell therapy,” says Lisa Mielke, a cancer researcher at the Olivia Newton John Cancer Research Institute in Heidelberg, Australia. The trials are among the first in which CAR-T-cell therapy has had promising results against solid tumours. They provide “evidence that there is potential for CAR T cells to be further optimized for future treatment of patients with solid tumours”, adds Mielke.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/06/Screenshot-2025-06-03-083711-1024x652.png&quot; alt=&quot;Cancer-fighting CAR T cells show promising results for hard-to-treat tumours&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-01722-8&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Cancer-fighting CAR T cells show promising results for hard-to-treat tumours &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Rachel Fieldhouse&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Nature News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-025-01722-8&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cancer</category><category>CAR-T</category><category>cell therapy</category><category>randomized controlled trial</category></item><item><title>Great Expectations</title><link>https://benjamintseng.com/2025/06/great-expectations/</link><guid isPermaLink="true">https://benjamintseng.com/2025/06/great-expectations/</guid><description>Reading Note: Great Expectations</description><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://collabfund.com/blog/expectations-debt/&quot;&gt;This is an old piece&lt;/a&gt; from Morgan Housel from May 2023. It highlights how optimistic expectations can serve as a “debt” that needs to be “paid off”.&lt;/p&gt;
&lt;p&gt;To illustrate this, he gives a fascinating example — the Japanese stock market. From 1965 to 2022, both the Japanese stock market and the S&amp;amp;P500 (a basket of mostly American large companies) had similar returns. As most people know, Japan has had a miserable 3 “lost decades” of growth and stock performance. But Housel presents this fact in an interesting light: it wasn’t that Japan did poorly, it just did all of its growth in a 25 year run between 1965-1990 and then spent the following two decades “paying off” that “expectations debt”.&lt;/p&gt;
&lt;p&gt;Housel concludes, as he oftentimes does, with wisdom for all of us: “An asset you don’t deserve can quickly become a liability … reality eventually catches up, and demands repayment in equal proportion to your delusions – plus interest”.&lt;/p&gt;
&lt;p&gt;Manage your great expectations.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Morgan Housel&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://collabfund.com/blog/expectations-debt/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“There’s a stoic saying: “Misfortune weighs most heavily on those who expect nothing but good fortune.”
Expecting nothing but good feels like such a good mindset – you’re optimistic, happy, and winning. But whether you know it or not you’re very likely piling up a hidden debt that must eventually be repaid.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/06/Screenshot202023-05-2520at208.02.4620AM.png&quot; alt=&quot;Expectations Debt&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://collabfund.com/blog/expectations-debt/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Expectations Debt &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Morgan Housel&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://collabfund.com/blog/expectations-debt/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Japan</category><category>Morgan Housel</category></item><item><title>Why Self-Hosting is Having a Moment</title><link>https://benjamintseng.com/2025/05/why-self-hosting-is-having-a-moment/</link><guid isPermaLink="true">https://benjamintseng.com/2025/05/why-self-hosting-is-having-a-moment/</guid><description>Reading Note: Why Self-Hosting is Having a Moment</description><pubDate>Sat, 24 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am a &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;selfhoster&lt;/a&gt; (as anyone who’s read many of my more recent blog posts knows). I’m also a fan of &lt;a href=&quot;https://selfh.st/&quot;&gt;the selfh.st site&lt;/a&gt; (which documents a lot of news &amp;amp; relevant interviews from the self-host world) so I was delighted to see &lt;a href=&quot;https://arstechnica.com/gadgets/2025/05/self-hosting-is-having-a-moment-ethan-sholly-knows-why/&quot;&gt;the owner of selfh.st get interviewed in Ars Technica&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nothing earth-shattering but I appreciated (and agreed with) his breakdown of why self-hosting is flourishing today (excerpt below). For me, personally, the ease with which Docker makes setting up selfhosted services and the low cost of storage and mini-PCs turned this from an impractical idea into one that I’ve come to rely on for my own “personal tech stack”.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Ars Technica&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://arstechnica.com/gadgets/2025/05/self-hosting-is-having-a-moment-ethan-sholly-knows-why/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“What gave rise to self-hosting’s relative recent popularity? That led Sholly to a few answers, many of them directly relating to the corporate cloud services people typically use instead of self-hosting:
Privacy for photos, files, and other data
Cost of cloud hosting and storage
Accessibility of services, through GitHub, Reddit, and sites like his
Installation with Docker (“a game-changer for lots of people”) and Unraid
Single-board computers (SBCs) like the Raspberry Pi
NUCS, mini-PCs, workstations, and other pandemic-popular hardware
Finally, there’s the elephant in any self-hosting discussion: piracy.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/05/EthanSholly-500x500-1.jpg&quot; alt=&quot;Self-hosting is having a moment. Ethan Sholly knows why&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://arstechnica.com/gadgets/2025/05/self-hosting-is-having-a-moment-ethan-sholly-knows-why/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Self-hosting is having a moment. Ethan Sholly knows why &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Kevin Purdy&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Ars Technica&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://arstechnica.com/gadgets/2025/05/self-hosting-is-having-a-moment-ethan-sholly-knows-why/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>selfhost</category></item><item><title>I’m just a Medical Guideline</title><link>https://benjamintseng.com/2025/01/im-just-a-medical-guideline/</link><guid isPermaLink="true">https://benjamintseng.com/2025/01/im-just-a-medical-guideline/</guid><description>Reading Note: I’m just a Medical Guideline</description><pubDate>Tue, 21 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Medical Guidelines are incredibly important — they impact everything from your doctor’s recommendations and insurance coverage to the medications your insurance covers — but are somewhat shrouded in mystery.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://parentdata.org/where-do-official-medical-guidelines-come-from/&quot;&gt;This piece from Emily Oster’s ParentData&lt;/a&gt; is a good overview of what they are (and aren’t) — and give a pretty good explanation of why a headline from the popular press is probably not capturing the nuance and review of clinical evidence that goes into them.&lt;/p&gt;
&lt;p&gt;(and yes, that title is a Schoolhouse Rock reference)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; ParentData&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://parentdata.org/where-do-official-medical-guidelines-come-from/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The headlines almost always simplify or distort these complexities. Sometimes those simplifications are necessary, other times…well, less so. Why should you care? Guidelines often impact health insurance coverage, influence standards of care, and play a role in how health policy is developed. Understanding what goes into them empowers you to engage more thoughtfully when talking to your doctor. You’ll be more aware of when those sensationalized headlines really mean anything, which is hopefully most of the time nothing at all.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/Clinical-Guidelines-26-1024x684.png&quot; alt=&quot;Where Do Official Medical Guidelines Come From?&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://parentdata.org/where-do-official-medical-guidelines-come-from/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Where Do Official Medical Guidelines Come From? &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Gillian Goddard&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;ParentData&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://parentdata.org/where-do-official-medical-guidelines-come-from/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>healthcare</category><category>medical guidelines</category></item><item><title>On (Stock Market) Bubbles</title><link>https://benjamintseng.com/2025/01/on-stock-market-bubbles/</link><guid isPermaLink="true">https://benjamintseng.com/2025/01/on-stock-market-bubbles/</guid><description>Reading Note: On (Stock Market) Bubbles</description><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I spotted this memo from Oaktree Capital founder Howard Marks and thought it was a sobering and grounded take on what makes a stock market bubble and reasons to be alarmed about the current concentration of market capitalization in the so-called “Magnificent Seven” and how eerily similar this was to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Nifty_Fifty&quot;&gt;“Nifty Fifty”&lt;/a&gt; or the &lt;a href=&quot;https://en.wikipedia.org/wiki/Dot-com_bubble&quot;&gt;“Dot Com Bubble”&lt;/a&gt; eras of irrational exuberance. Whether you agree with him or not, it’s a worthwhile piece of wisdom to remember.&lt;/p&gt;
&lt;p&gt;This graph that Marks borrowed from JP Morgan is also quite intriguing (terrifying?)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/Screenshot-2025-01-13-125740.png&quot; alt/&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Howard Marks&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.oaktreecapital.com/insights/memo/on-bubble-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“There’s usually a grain of truth that underlies every mania and bubble. It just gets taken too far. It’s clear that the internet absolutely did change the world – in fact, we can’t imagine a world without it. But the vast majority of internet and e-commerce companies that soared in the late ’90s bubble ended up worthless. When a bubble burst in my early investing days, The Wall Street Journal would run a box on the front page listing stocks that were down by 90%. In the aftermath of the TMT Bubble, they’d lost 99%.
When something is on the pedestal of popularity, the risk of a decline is high. When people assume – and price in – an expectation that things can only get better, the damage done by negative surprises is profound. When something is new, the competitors and disruptive technologies have yet to arrive. The merit may be there, but if it’s overestimated it can be overpriced, only to evaporate when reality sets in. In the real world, trees don’t grow to the sky.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/Screenshot-2025-01-13-125740.png&quot; alt=&quot;On Bubble Watch&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.oaktreecapital.com/insights/memo/on-bubble-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; On Bubble Watch &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Howard Marks&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.oaktreecapital.com/insights/memo/on-bubble-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>bubbles</category><category>Howard Marks</category><category>Oaktree Capital</category><category>stocks</category></item><item><title>Pivoting from Consumer to Utility: Span</title><link>https://benjamintseng.com/2025/01/pivoting-from-consumer-to-utility-span/</link><guid isPermaLink="true">https://benjamintseng.com/2025/01/pivoting-from-consumer-to-utility-span/</guid><description>Reading Note: Pivoting from Consumer to Utility: Span</description><pubDate>Fri, 10 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2024/05/my-two-year-journey-to-home-electrification/&quot;&gt;As a Span customer&lt;/a&gt;, I’ve always appreciated their vision: to make home electrification cleaner, simpler, and more efficient through beautifully designed, tech-enabled electrical panels. But, let’s be honest, selling a product like this directly to consumers is tough. Electrical panels are not top-of-mind for most people until there’s a problem — and explaining the value proposition of “a smarter electrical panel” to justify the high price tag can be a real challenge. That’s why I’m &lt;a href=&quot;https://www.latitudemedia.com/news/spans-turn-toward-utilities/&quot;&gt;unsurprised by their recent shift in strategy towards utilities&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This pivot to partnering with utility companies makes a lot of sense. Instead of trying to convince individual homeowners to upgrade, Span can now work directly with those who can impact community-scale electrification.&lt;/p&gt;
&lt;p&gt;While the value proposition of avoiding costly service upgrades is undeniably beneficial for utilities, understanding precisely how that translates into financial savings for the utilities needs much more nuance. That, along with the fact that rebates &amp;amp; policy will vary wildly by locality, raises many uncertainties about pricing strategy (not to mention that there are other, larger smart electric panel companies like Leviton and Schneider Electric, albeit with less functional and less well-designed offerings).&lt;/p&gt;
&lt;p&gt;I wish the company well. We need better electrical infrastructure in the US (and especially California, where I live) and one way to achieve that is for companies like Span to find a successful path to market.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Latitude Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/spans-turn-toward-utilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Span’s panel costs $3,500, and accessories involve separate $700-plus purchases. It’s unavoidably pricey, though tax rebates and other incentives can bring the cost down, but the premise is that they offer buyers costs saving through avoiding expensive upgrades. The pitch to utility companies is also one of cost avoidance, just at a much larger scale. Span’s target utility customer is one at the intersection of load growth, the energy transition, and existing regulatory restrictions, especially in places with aggressive decarbonization timelines like California.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/62cdcd24e2f10bd40694167c_og-panel-1024x538.jpg&quot; alt=&quot;Span\u2019s quiet turn toward utilities&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/spans-turn-toward-utilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Span\u2019s quiet turn toward utilities &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Lisa Martine Jenkins&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Latitude Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/spans-turn-toward-utilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>grid infrastructure</category><category>home electrification</category><category>Span</category></item><item><title>RISC-V in Computers</title><link>https://benjamintseng.com/2025/01/risc-v-in-computers/</link><guid isPermaLink="true">https://benjamintseng.com/2025/01/risc-v-in-computers/</guid><description>Reading Note: RISC-V in Computers</description><pubDate>Thu, 09 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most exciting technological developments from the semiconductor side of things is the rapid development of the ecosystem around the open-source &lt;a href=&quot;https://en.wikipedia.org/wiki/RISC-V&quot;&gt;RISC-V&lt;/a&gt; instruction set architecture (ISA). One landmark in its rise is that the architecture appears to be moving beyond just behind-the-scenes projects to challenging Intel/AMD’s x86 architecture and ARM (used by Apple and Qualcomm) in customer-facing applications.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://spectrum.ieee.org/risc-v-laptops&quot;&gt;This article&lt;/a&gt; highlights this crucial development by reporting on early adopters embracing RISC-V to move into higher-end devices like laptops. Companies like &lt;a href=&quot;https://frame.work/&quot;&gt;Framework&lt;/a&gt; and &lt;a href=&quot;https://deepcomputing.io/&quot;&gt;DeepComputing&lt;/a&gt; have just launched or are planning to launch RISC-V laptops. While RISC-V-powered hardware still have a steep mountain to climb of software and performance challenges (as evidenced by &lt;a href=&quot;http://benjamintseng.com/2023/11/good-windows-on-arm-at-last/&quot;&gt;the amount of time it’s taken for the ARM ecosystem to be credible in PCs&lt;/a&gt;), Intel’s recent setbacks and ARM’s legal battles with Qualcomm over licensing (pretty much guaranteeing every company that uses ARM is now going to work on RISC-V) coupled with the open source nature of RISC-V potentially allowing for a lot more innovation in form factors and functionality may have created an opening here for enterprising companies willing to make the investment.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IEEE Spectrum&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://spectrum.ieee.org/risc-v-laptops&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;““If we look at a couple of generations down the [software] stack, we’re starting to see a line of sight to consumer-ready RISC-V in something like a laptop, or even a phone,” said Nirav Patel, CEO of laptop maker Framework. Patel’s company plans to release a laptop that can support a RISC-V mainboard in 2025. Though still intended for early adopters and developers, it will be the most accessible and polished RISC-V laptop yet, and it will ship to users with the same look and feel as the Framework laptops that use x86 chips.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/risc-v-computers.png&quot; alt=&quot;This Year, RISC-V Laptops Really Arrive&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://spectrum.ieee.org/risc-v-laptops&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; This Year, RISC-V Laptops Really Arrive &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Matthew S. Smith&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IEEE Spectrum&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://spectrum.ieee.org/risc-v-laptops&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Apple</category><category>ARM</category><category>computing</category><category>DeepComputing</category><category>framework</category><category>hardware</category><category>Intel</category><category>Qualcomm</category><category>RISC-V</category><category>semiconductor</category></item><item><title>Revenge of the Plug-In Hybrid</title><link>https://benjamintseng.com/2025/01/revenge-of-the-plug-in-hybrid/</link><guid isPermaLink="true">https://benjamintseng.com/2025/01/revenge-of-the-plug-in-hybrid/</guid><description>Reading Note: Revenge of the Plug-In Hybrid</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While growing vehicle electrification is inevitable, it always surprised me that US automakers would drop past plug-in hybrid (PHEV) technology to only embrace all-electric. &lt;a href=&quot;https://www.greencars.com/news/toyota-updates-electrification-strategy-promises-10-evs-by-2026&quot;&gt;While many have attacked Toyota’s more deliberate “slow-and-steady” approach to vehicle electrification&lt;/a&gt;, it always seemed to me that, until we had broadly available, high quality electric vehicle charging infrastructure and until all-electric vehicles were broadly available at the price point of a non-luxury family car (i.e. a Camry or RAV4), that electric vehicles were going to be more of a upper middle class/wealthy phenomena. &lt;a href=&quot;https://www.bloomberg.com/news/articles/2024-02-21/hybrid-plug-ins-are-booming-in-china-the-world-s-biggest-ev-market&quot;&gt;Considering their success in the Chinese automotive market&lt;/a&gt; (and growing &lt;em&gt;faster&lt;/em&gt; than all-electric vehicles!), it always felt odd that the category wouldn’t make its way into the US market as the natural next step in vehicle electrification.&lt;/p&gt;
&lt;p&gt;It sounds like Dodge Ram (a division of &lt;a href=&quot;https://en.wikipedia.org/wiki/Stellantis&quot;&gt;Stellantis&lt;/a&gt;) agrees. It intends to delay its all-electric version of its Ram 1500 in favor of starting with its extended range plug-in hybrid version, &lt;a href=&quot;https://www.ramtrucks.com/electric/ram-1500-ramcharger.html&quot;&gt;the Ramcharger&lt;/a&gt;. Extended range electric vehicles (EREVs) are plug-in hybrids similar to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Chevrolet_Volt&quot;&gt;Chevy Volt&lt;/a&gt;. They employ an electric powertrain and a generator which can run on gasoline to supply additional range when the battery runs low.&lt;/p&gt;
&lt;p&gt;Interestingly, &lt;a href=&quot;https://www.motortrend.com/news/nissan-erev-phev-ev-future-car-suv-plans/&quot;&gt;Nissan&lt;/a&gt;, &lt;a href=&quot;https://www.edmunds.com/car-news/new-hyundai-suv-range-extender-announced.html&quot;&gt;Hyundai&lt;/a&gt;, &lt;a href=&quot;https://insideevs.com/news/740616/new-mazda-electric-suv-2027/&quot;&gt;Mazda&lt;/a&gt;, and &lt;a href=&quot;https://www.caranddriver.com/news/a61691273/buicks-first-ev-delayed/&quot;&gt;GM’s Buick&lt;/a&gt; have made similar announcements as well.&lt;/p&gt;
&lt;p&gt;While it still remains to be seen how well these EREVs/PHEVs are adopted — the price points that are being discussed still feel too high to me — seeing broader adoption of plug-in hybrid technology (supplemented with gas-powered range extension) feels like the natural next step on our path to vehicle electrification.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IEEE Spectrum&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://spectrum.ieee.org/plug-in-hybrid&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Consumers are still looking for electrified rides, just not the ones that many industry pundits predicted. In China, Europe, and the United States, buyers are converging on hybrids, whose sales growth is outpacing that of pure EVs. “It’s almost been a religion that it’s EVs or bust, so let’s not fool around with hybrids or hydrogen,” says Michael Dunne, CEO of Dunne Insights, a leading analyst of China’s auto industry. “But even in the world’s largest market, almost half of electrified vehicle sales are hybrids.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2025/01/Screenshot-2025-01-06-094122-1024x629.png&quot; alt=&quot;As EV Sales Stall, Plug-In Hybrids Get a Reboot&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://spectrum.ieee.org/plug-in-hybrid&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; As EV Sales Stall, Plug-In Hybrids Get a Reboot &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Lawrence Ulrich&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IEEE Spectrum&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://spectrum.ieee.org/plug-in-hybrid&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Chevy Volt</category><category>Dodge Ram</category><category>electric vehicle charging</category><category>electric vehicles</category><category>EREV</category><category>extended range electric vehicle</category><category>GM Buick</category><category>Hyundai</category><category>Mazda</category><category>Nissan</category><category>PHEV</category><category>plug-in hybrid</category><category>Stellantis</category><category>Toyota</category></item><item><title>Helping Multi-Agent AI Experimentation</title><link>https://benjamintseng.com/2024/12/helping-multi-agent-ai-experimentation/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/helping-multi-agent-ai-experimentation/</guid><description>Helping Multi-Agent AI Experimentation</description><pubDate>Sun, 22 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/2024/11/who-needs-humans-lab-of-ais-designs-valid-covid-binding-proteins/&quot;&gt;Inspired by some work from a group at Stanford on building a lab from AI agents&lt;/a&gt;, I’ve been experimenting with multi-agent AI conversations and workflows. But, because the space (at least to me) has seemed more focused on building &lt;em&gt;more capable&lt;/em&gt; agents rather than &lt;em&gt;coordinating and working with more&lt;/em&gt; agents, the existing tools and libraries have made it difficult to carry out fast experiments.&lt;/p&gt;
&lt;p&gt;To facilitate some of my own exploration work, I built what I’m calling the &lt;strong&gt;Multi-Agent ChatLab&lt;/strong&gt; — a browser-based, completely portable setup to define multiple AI agents and facilitate conversations between them. This has made my experimentation work vastly simpler and I hope it can help others.&lt;/p&gt;
&lt;div class=&quot;my-8 border border-[#E2E8F0] bg-[#F8FAFC] rounded-md overflow-hidden not-prose&quot;&gt; &lt;div class=&quot;bg-white border-b border-[#E2E8F0] p-4 flex flex-wrap items-center justify-between gap-3&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#1E3A8A] font-semibold&quot;&gt;
Interactive Web Application
&lt;/div&gt; &lt;h3 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A]&quot;&gt;
MultiAgent ChatLab (v1.0)
&lt;/h3&gt; &lt;/div&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;a href=&quot;/multiagent-chatlab.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-navy text-xs font-mono-data font-semibold px-3 py-1.5 rounded transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Fullscreen &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;w-full h-[650px] bg-white&quot;&gt; &lt;iframe src=&quot;/multiagent-chatlab.html&quot; title=&quot;MultiAgent ChatLab&quot; class=&quot;w-full h-full border-0&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Design &amp;amp; Architecture:&lt;/strong&gt; Read the full technical breakdown and system instructions in the &lt;a href=&quot;/portfolio/multi-agent-chatlab/&quot;&gt;Multi-Agent ChatLab Portfolio Article&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open Source Code:&lt;/strong&gt; Grab the single-file source directly from the &lt;a href=&quot;https://github.com/BenjaminTseng/multi-agent-chat-lab&quot;&gt;GitHub Repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct Web Access:&lt;/strong&gt; Launch the standalone applet in a separate window at &lt;a href=&quot;/multiagent-chatlab.html&quot;&gt;/multiagent-chatlab.html&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And, to show off the tool, and for your amusement (and given &lt;a href=&quot;/2024/09/the-startup-battlefield-lessons-from-historys-greatest-military-leaders/&quot;&gt;my love of military history&lt;/a&gt;), here is a screengrab from the tool where I set up two AI Agents — one believing itself to be &lt;a href=&quot;https://en.wikipedia.org/wiki/Napoleon&quot;&gt;Napoleon Bonaparte&lt;/a&gt; and one believing itself to be &lt;a href=&quot;https://en.wikipedia.org/wiki/Arthur_Wellesley,_1st_Duke_of_Wellington&quot;&gt;the Duke of Wellington&lt;/a&gt; (the British commander who defeated Napoleon at Waterloo) — and had them describe (and compare!) the hallmarks of their military strategy.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-10-1024x656.png&quot; alt/&gt;&lt;/p&gt;</content:encoded><category>AI</category><category>AI agents</category><category>project</category></item><item><title>Decarbonizing Shipping with Wind</title><link>https://benjamintseng.com/2024/12/decarbonizing-shipping-with-wind/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/decarbonizing-shipping-with-wind/</guid><description>Reading Note: Decarbonizing Shipping with Wind</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The shipping industry is known for being fairly dirty environmentally due largely to the fact that the most common fuel used in shipping — &lt;a href=&quot;https://en.wikipedia.org/wiki/Heavy_fuel_oil&quot;&gt;bunker fuel&lt;/a&gt; — contributes both to carbon emissions, significant air pollution, and water pollution (from spills and &lt;a href=&quot;https://insideclimatenews.org/news/17072023/ship-scrubbers-water-pollution/&quot;&gt;due to the common practice of dumping the byproduct of sulphur scrubbing to curtail air pollution&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;While much of the effort to green shipping has focused on the use of alternative fuels like &lt;a href=&quot;https://www.csis.org/analysis/hydrogen-key-decarbonizing-global-shipping-industry&quot;&gt;hydrogen&lt;/a&gt;, &lt;a href=&quot;https://cen.acs.org/business/petrochemicals/ammonia-fuel-future/99/i8&quot;&gt;ammonia&lt;/a&gt; and &lt;a href=&quot;https://www.dnv.com/expert-story/maritime-impact/Methanol-as-fuel-heads-for-the-mainstream-in-shipping/&quot;&gt;methanol&lt;/a&gt; as replacements for bunker fuel, I recently saw an article on the use of automated &amp;amp; highly durable &lt;em&gt;sail&lt;/em&gt; technology to le ships leverage wind as a means to reduce fuel consumption.&lt;/p&gt;
&lt;p&gt;I don’t have any inside information on what the cost / speed tradeoffs are for the technology, nor whether or not there’s a credible path to scaling to handle the massive container ships that dominate global shipping, but it’s a fascinating technology vector, and a direct result of the growing realization by the shipping industry that it needs to green itself.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Canary Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/sea-transport/cargo-ships-turn-to-ancient-tech-to-curb-modern-pollution-wind&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Wind, on the other hand, is abundant. With the U.N.’s International Maritime Organization poised to negotiate stricter climate policies next year, including a new carbon pricing mechanism and global fuel standard, more shipping companies are seriously considering the renewable resource as an immediate answer. While sails aren’t likely to outright replace the enormous engines that drive huge cargo ships, wind power could still make a meaningful dent in the industry’s overall emissions, experts say.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/Screenshot-2024-12-19-105534-1024x591.png&quot; alt=&quot;Cargo ships turn to ancient tech to curb modern pollution: wind&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/sea-transport/cargo-ships-turn-to-ancient-tech-to-curb-modern-pollution-wind&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Cargo ships turn to ancient tech to curb modern pollution: wind &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Maria Gallucci&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Canary Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/sea-transport/cargo-ships-turn-to-ancient-tech-to-curb-modern-pollution-wind&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cleantech</category><category>shipping</category><category>wind energy</category></item><item><title>Google’s Quantum Error Correction Breakthrough</title><link>https://benjamintseng.com/2024/12/googles-quantum-error-correction-breakthrough/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/googles-quantum-error-correction-breakthrough/</guid><description>Reading Note: Google’s Quantum Error Correction Breakthrough</description><pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most exciting areas of technology development, but that doesn’t get a ton of mainstream media coverage, is the race to build a working quantum computer that exhibits “&lt;a href=&quot;https://en.wikipedia.org/wiki/Threshold_theorem&quot;&gt;below threshold quantum computing&lt;/a&gt;” — the ability to do calculations utilizing quantum mechanics &lt;em&gt;accurately&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;One of the key limitations to achieving this has been the sensitivity of quantum computing systems — in particular the &lt;a href=&quot;https://en.wikipedia.org/wiki/Qubit&quot;&gt;qubits&lt;/a&gt; that capture the superposition of multiple states that allow quantum computers to exploit quantum mechanics for computation — to the world around them. Imagine if your computer’s accuracy would change every time someone walked in the room — even if it was capable of amazing things, it would not be especially practical. As a result, much research to date has been around novel ways of creating physical systems that can protect these quantum states.&lt;/p&gt;
&lt;p&gt;Google has (&lt;a href=&quot;https://www.nature.com/articles/s41586-024-08449-y&quot;&gt;in a pre-print in &lt;em&gt;Nature&lt;/em&gt;&lt;/a&gt;) demonstrated their new Willow quantum computing chip which demonstrates a &lt;a href=&quot;https://en.wikipedia.org/wiki/Quantum_error_correction&quot;&gt;quantum error correction&lt;/a&gt; method that spreads the quantum state information of a single “logical” qubit across multiple &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Quantum_entanglement&quot;&gt;entangled&lt;/a&gt;&lt;/em&gt; “physical” qubits to create a more robust system. Beyond proving that their quantum error correction method worked, what is most remarkable to me, is that they’re able to extrapolate a scaling law for their error correction — a way of guessing how much better their system is at avoiding loss of quantum state as they increase the number of physical qubits per logical qubit — which could suggest a “scale up” path towards building functional, practical quantum computers.&lt;/p&gt;
&lt;p&gt;I will confess that quantum mechanics was never my strong suit (beyond needing it for a class on statistical mechanics eons ago in college), and my understanding of the core physics underlying what they’ve done in the paper is limited, but this is an incredibly exciting feat on our way towards practical quantum computing systems!&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Nature News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-04028-3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The company’s new chip, called Willow, is a larger, improved version of that technology, with 105 physical qubits. It was developed in a fabrication laboratory that Google built at its quantum-computing campus in Santa Barbara, California, in 2021.
As a first demonstration of Willow’s power, the researchers showed that it could perform, in roughly 5 minutes, a task that would take the world’s largest supercomputer an estimated 1025 years, says Hartmut Neven, who heads Google’s quantum-computing division. This is the latest salvo in the race to show that quantum computers have an advantage over classical ones.
And, by creating logical qubits inside Willow, the Google team has shown that each successive increase in the size of a logical qubit cuts the error rate in half.
“This is a very impressive demonstration of solidly being below threshold,” says Barbara Terhal, a specialist in quantum error correction at the Delft University of Technology in the Netherlands. Mikhail Lukin, a physicist at Harvard University in Cambridge, Massachusetts, adds, “It clearly shows that the idea works.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/Screenshot-2024-12-11-083201.png&quot; alt=&quot;\u2018A truly remarkable breakthrough\u2019: Google\u2019s new quantum chip achieves accuracy milestone&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-04028-3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; \u2018A truly remarkable breakthrough\u2019: Google\u2019s new quantum chip achieves accuracy milestone &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Davide Castelvecchi&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Nature News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-04028-3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Google</category><category>quantum computing</category><category>quantum error correction</category><category>qubits</category><category>tech</category></item><item><title>Cynefin</title><link>https://benjamintseng.com/2024/12/cynefin/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/cynefin/</guid><description>Reading Note: Cynefin</description><pubDate>Sun, 08 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had never heard of this framework for thinking about how to address problems before. &lt;a href=&quot;https://secretweapon.substack.com/&quot;&gt;Shout-out to my friend Chris Yiu and his new Substack &lt;em&gt;Secret Weapon&lt;/em&gt;&lt;/a&gt; about improving productivity for teaching me about this. It’s surprisingly insightful about when to think about something as a process problem vs an expertise problem vs experimentation vs direction.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Secret Weapon&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://secretweapon.substack.com/p/problems-come-in-many-forms&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“[The Cynefin framework] organises problems into four primary domains:
Clear. Cause and effect are obvious; categorise the situation and apply best practice. Example: baking a cake. Rewards process.
Complicated. Cause and effect are knowable but not immediately apparent; analyse the situation carefully to find a solution. Example: coaching a sports team. Rewards expertise.
Complex. Cause and effect are only apparent with hindsight; focus on spotting and exploiting patterns as they emerge. Example: playing poker. Rewards [experimentation — Chris’s original term was entrepreneurship, I think experimentation is more clear &amp;amp; actionable].
Chaotic. Cause and effect are impossible to parse; act on instinct, in the hope of imposing some order on the immediate situation. Example: novel crisis response. Rewards direction.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/1ec03311-f9cf-4696-930f-87e06abf9198_1800x1200-1024x683.jpg&quot; alt=&quot;Problems come in many forms&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://secretweapon.substack.com/p/problems-come-in-many-forms&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Problems come in many forms &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Chris Yiu&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Secret Weapon&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://secretweapon.substack.com/p/problems-come-in-many-forms&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Cynefin</category><category>framework</category></item><item><title>The Hits Business — Games Edition</title><link>https://benjamintseng.com/2024/12/the-hits-business-games-edition/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/the-hits-business-games-edition/</guid><description>Reading Note: The Hits Business — Games Edition</description><pubDate>Fri, 06 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The best return on investment in terms of hours of deep engagement per dollar in entertainment is with games. When done right, they blend stunning visuals and sounds, earworm-like musical scores, compelling story and acting, and a sense of progression that are second to none.&lt;/p&gt;
&lt;p&gt;Case in point: I bought the complete edition of the award-winning &lt;em&gt;&lt;a href=&quot;https://store.steampowered.com/app/292030/The_Witcher_3_Wild_Hunt/&quot;&gt;The Witcher 3: Wild Hunt&lt;/a&gt;&lt;/em&gt; for $10 during a &lt;a href=&quot;https://store.steampowered.com/&quot;&gt;Steam&lt;/a&gt; sale in 2021. According to Steam, I’ve logged over 200 hours (I had to doublecheck that number!) playing the game, between two playthroughs and the amazing expansions &lt;em&gt;Hearts of Stone&lt;/em&gt; and &lt;em&gt;Blood and Wine&lt;/em&gt; — an amazing 20 hours/dollar spent. Even paying full freight (as of this writing, the complete edition including both expansions costs $50), that would still be a remarkable 4 hours/dollar. Compare that with the price of admission to a movie or theater or concert.&lt;/p&gt;
&lt;p&gt;The Witcher 3 &lt;a href=&quot;https://www.gematsu.com/2023/05/the-witcher-3-wild-hunt-sales-top-50-million-the-witcher-series-tops-75-million&quot;&gt;has now surpassed 50 million sales&lt;/a&gt; — comfortably earning over $1 billion in revenue which is an amazing feat for any media property.&lt;/p&gt;
&lt;p&gt;But as amazing and as lucrative as these games can be, these games cannot escape the cruel hit-driven basis of their industry, where a small number of games generate the majority of financial returns. This has resulted in studios chasing ever more expensive games with familiar intellectual property (i.e. Star Wars) that has, to many game players, cut the soul from the games and has led to financial instability in even popular game studios.&lt;/p&gt;
&lt;p&gt;This &lt;a href=&quot;https://www.ign.com/articles/the-blockbuster-games-bubble-has-burst&quot;&gt;article from IGN&lt;/a&gt; summarizes the state of the industry well — with so-called AAA games now costing $200 million to create, not to mention $100’s of millions to market, more and more studios have to wind down as few games can generate enough revenue to cover the cost of development and marketing.&lt;/p&gt;
&lt;p&gt;The article predicts — and I hope it’s right — that the games industry will learn some lessons that many studios in Hollywood/the film industry have been forced to: embrace more small budget games to experiment with new forms and IP. Blockbusters will have their place but going all-in on blockbusters is a recipe for a hollowing out of the industry and a cutting off of the creativity that it needs.&lt;/p&gt;
&lt;p&gt;Or, as the author so nicely puts it: “Maybe studios can remember that &lt;strong&gt;we used to play video games because they were &lt;em&gt;fun&lt;/em&gt; – not because of their bigger-than-last-year maps carpeted by denser, higher-resolution grass that you walk across to finish another piece of side content&lt;/strong&gt; that pushes you one digit closer to 100% completion.”&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IGN&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.ign.com/articles/the-blockbuster-games-bubble-has-burst&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Just five years ago, AAA projects’ average budget ranged $50 – $150 million. Today, the minimum average is $200 million. Call of Duty’s new benchmark is $300 million, with Activision admitting in the Competition &amp;amp; Market Authority’s report on AAA development that it now takes the efforts of one-and-a-half studios just to complete the annual Call of Duty title.
It’s far from just Call of Duty facing ballooning costs. In the same CMA report, an anonymous publisher admits that development costs for one of its franchises reached $660 million. With $550 million of marketing costs on top, that is a $1.2 billion game. To put that into perspective, Minecraft – the world’s best-selling video game of all time – has of last year only achieved $3 billion. It took 12 years to reach that figure, having launched in 2011.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/concordthumb-1723742937181-1024x576.png&quot; alt=&quot;The Blockbuster Games Bubble Has Burst&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.ign.com/articles/the-blockbuster-games-bubble-has-burst&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Blockbuster Games Bubble Has Burst &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Sab Astley&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IGN&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.ign.com/articles/the-blockbuster-games-bubble-has-burst&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>film</category><category>gaming</category><category>The Witcher</category></item><item><title>Why is it so Hard to Build a Diagnostic Business?</title><link>https://benjamintseng.com/2024/12/why-is-it-so-hard-to-build-a-diagnostic-business/</link><guid isPermaLink="true">https://benjamintseng.com/2024/12/why-is-it-so-hard-to-build-a-diagnostic-business/</guid><description>Why is it so Hard to Build a Diagnostic Business?</description><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-8-edited.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Everywhere you look, the message seems clear: early detection (of cancer &amp;amp; disease) saves lives. Yet behind the headlines, companies developing these screening tools face a different reality. Many tests struggle to gain approval, adoption, or even financial viability. &lt;strong&gt;The problem isn’t that the science is bad — it’s that the math is brutal.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This piece unpacks the economic and clinical trade-offs at the heart of the early testing / disease screening business. Why do promising technologies struggle to meet cost-effectiveness thresholds, despite clear scientific advances? And what lessons can diagnostic innovators take from these challenges to improve their odds of success? By the end, you’ll have a clearer view of the challenges and opportunities in bringing new diagnostic tools to market—and why focusing on the right metrics can make all the difference.&lt;/p&gt;
&lt;h2 id=&quot;the-brutal-math-of-diagnostics&quot;&gt;The brutal math of diagnostics&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Sensitivity_and_specificity_1.01.svg&quot;&gt;Image Credit: Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Technologists often prioritize metrics like &lt;strong&gt;sensitivity&lt;/strong&gt; (also called &lt;strong&gt;recall&lt;/strong&gt;) — the ability of a diagnostic test to correctly identify individuals with a condition (i.e., if the &lt;em&gt;sensitivity&lt;/em&gt; of a test is 90%, then 90% of patients with the disease will register as positives and the remaining 10% will be &lt;em&gt;false negatives&lt;/em&gt;) — because it’s often the key scientific challenge and aligns nicely with the idea of getting more patients earlier treatment.&lt;/p&gt;
&lt;p&gt;But when it comes to adoption and efficiency, &lt;strong&gt;specificity&lt;/strong&gt; — the ability of a diagnostic test to correctly identify &lt;em&gt;healthy&lt;/em&gt; individuals (i.e., if the &lt;em&gt;specificity&lt;/em&gt; of a test is 90%, then 90% of healthy patients will register as negatives and the remaining 10% will be &lt;em&gt;false positives&lt;/em&gt;) — is usually the more important and overlooked criteria.&lt;/p&gt;
&lt;p&gt;The reason specificity is so important is that it can have a profound impact on a test’s &lt;strong&gt;Positive Predictive Value (PPV)&lt;/strong&gt; — whether or not a positive test result means a patient actually has a disease (i.e., if the positive predictive value of a test is 90%, then a patient that registers as positive has a 90% chance of having the disease and 10% chance of actually being healthy — being a &lt;em&gt;false positive&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;What is counter-intuitive, even to many medical and scientific experts, is that because (by definition) &lt;em&gt;most patients are healthy&lt;/em&gt;, &lt;strong&gt;many &lt;em&gt;high accuracy&lt;/em&gt; tests have disappointingly &lt;em&gt;low PPV&lt;/em&gt;&lt;/strong&gt; as most positive results are actually false positives.&lt;/p&gt;
&lt;p&gt;Let me present an example (see table below for summary of the math) that will hopefully explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hiv.gov/hiv-basics/overview/data-and-trends/statistics&quot;&gt;There are an estimated 1.2 million people in the US with HIV&lt;/a&gt; — that is roughly 0.36% (the prevalence) of the US population&lt;/li&gt;
&lt;li&gt;Let’s say we have an HIV test with 99% sensitivity and 99% specificity — a 99% (very) accurate test!&lt;/li&gt;
&lt;li&gt;If we tested 10,000 Americans at random, you would expect roughly 36 of them (0.36% x 10,000) to be HIV positive. That means, roughly 9,964 are HIV negative
&lt;ul&gt;
&lt;li&gt;99% sensitivity means 99% of the 36 HIV positive patients will test positive (99% x 36 = ~36)&lt;/li&gt;
&lt;li&gt;99% specificity means 99% of the 9,964 HIV negative patients will test negative (99% x 9,964 = ~9,864) while 1% (1% x 9,964 = ~100) would be false positives&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This means that even though the test is 99% accurate, &lt;em&gt;it only has a positive predictive value of ~26%&lt;/em&gt; (36 true positives out of 136 total positive results)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-1-1024x405.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Math behind the hypothetical HIV test example (&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=847978977#gid=847978977&quot;&gt;Google Sheet link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Below (if you’re on a browser) is an embedded calculator which will run this math for any values of disease prevalence and sensitivity / specificity (and &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=0#gid=0&quot;&gt;here is a link to a Google Sheet that will do the same&lt;/a&gt;), but you’ll generally find that &lt;strong&gt;low disease rates result in low positive predictive values for even very accurate diagnostics&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&quot;my-8 border border-[#E2E8F0] bg-[#F8FAFC] rounded-md p-5 sm:p-6 not-prose&quot; id=&quot;clindx-calc&quot;&gt; &lt;div class=&quot;flex items-center justify-between border-b border-[#E2E8F0] pb-3 mb-5&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#1E3A8A] font-semibold&quot;&gt;
Interactive Clinical Model
&lt;/div&gt; &lt;h3 class=&quot;font-serif-heading font-semibold text-xl text-[#0F172A]&quot;&gt;
Diagnostic PPV &amp;amp; NNS Calculator
&lt;/h3&gt; &lt;/div&gt; &lt;span class=&quot;text-xs font-mono-data text-[#64748B] bg-white border border-[#E2E8F0] px-2 py-0.5 rounded&quot;&gt;
Operate Mode
&lt;/span&gt; &lt;/div&gt; &lt;!-- Presets --&gt; &lt;div class=&quot;mb-5&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] font-medium mb-2&quot;&gt;Clinical Presets:&lt;/label&gt; &lt;div class=&quot;flex flex-wrap gap-1.5&quot; id=&quot;clindx-presets&quot;&gt; &lt;button type=&quot;button&quot; data-sens=&quot;92.3&quot; data-spec=&quot;84.4&quot; data-prev=&quot;0.65&quot; class=&quot;preset-btn text-xs font-mono-data bg-white hover:bg-[#EFF6FF] hover:text-[#1E3A8A] text-[#475569] border border-[#CBD5E1] px-2.5 py-1 rounded transition-colors cursor-pointer&quot;&gt;
Cologuard (Cancer)
&lt;/button&gt; &lt;button type=&quot;button&quot; data-sens=&quot;46.4&quot; data-spec=&quot;86.6&quot; data-prev=&quot;8.23&quot; class=&quot;preset-btn text-xs font-mono-data bg-white hover:bg-[#EFF6FF] hover:text-[#1E3A8A] text-[#475569] border border-[#CBD5E1] px-2.5 py-1 rounded transition-colors cursor-pointer&quot;&gt;
Cologuard (Adv. Lesion)
&lt;/button&gt; &lt;button type=&quot;button&quot; data-sens=&quot;73.8&quot; data-spec=&quot;93.4&quot; data-prev=&quot;0.65&quot; class=&quot;preset-btn text-xs font-mono-data bg-white hover:bg-[#EFF6FF] hover:text-[#1E3A8A] text-[#475569] border border-[#CBD5E1] px-2.5 py-1 rounded transition-colors cursor-pointer&quot;&gt;
FIT test (Cancer)
&lt;/button&gt; &lt;button type=&quot;button&quot; data-sens=&quot;27.7&quot; data-spec=&quot;94.9&quot; data-prev=&quot;8.23&quot; class=&quot;preset-btn text-xs font-mono-data bg-white hover:bg-[#EFF6FF] hover:text-[#1E3A8A] text-[#475569] border border-[#CBD5E1] px-2.5 py-1 rounded transition-colors cursor-pointer&quot;&gt;
FIT test (Adv. Lesion)
&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Inputs Grid --&gt; &lt;div class=&quot;grid grid-cols-1 sm:grid-cols-3 gap-4 mb-6&quot;&gt; &lt;div class=&quot;bg-white p-3.5 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Sensitivity (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.1&quot; min=&quot;0&quot; max=&quot;100&quot; id=&quot;clindx-sens&quot; value=&quot;92.3&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;div class=&quot;bg-white p-3.5 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Specificity (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.1&quot; min=&quot;0&quot; max=&quot;100&quot; id=&quot;clindx-spec&quot; value=&quot;84.4&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;div class=&quot;bg-white p-3.5 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Prevalence (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.01&quot; min=&quot;0.001&quot; max=&quot;100&quot; id=&quot;clindx-prev&quot; value=&quot;0.65&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Outputs Grid --&gt; &lt;div class=&quot;grid grid-cols-1 sm:grid-cols-3 gap-4&quot;&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-4 rounded text-center&quot;&gt; &lt;div class=&quot;text-xs font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;Test Accuracy&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-2xl text-[#1E3A8A]&quot; id=&quot;clindx-out-acc&quot;&gt;84.45%&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-4 rounded text-center&quot;&gt; &lt;div class=&quot;text-xs font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;Positive Predictive Value (PPV)&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-2xl text-[#1E3A8A]&quot; id=&quot;clindx-out-ppv&quot;&gt;3.73%&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-4 rounded text-center&quot;&gt; &lt;div class=&quot;text-xs font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;Number Needed to Screen (NNS)&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-2xl text-[#1E3A8A]&quot; id=&quot;clindx-out-nns&quot;&gt;166.68&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script type=&quot;module&quot; src=&quot;/opt/buildhome/repo/src/components/embeds/ClinDxCalculator.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Typically, introducing a new diagnostic means balancing true positives against the burden of false positives. After all, for patients, false positives will result in anxiety, invasive tests, and, sometimes, unnecessary treatments. For healthcare systems, they can be a significant economic burden as the cost of follow-up testing and overtreatment add up, complicating their willingness to embrace new tests.&lt;/p&gt;
&lt;p&gt;Below (if you’re on a browser) is an embedded calculator which will run the basic diagnostic economics math for different values of the cost of testing and follow-up testing to calculate the cost of testing and follow-up testing per patient helped (and &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1692548619#gid=1692548619&quot;&gt;here is a link to a Google Sheet that will do the same&lt;/a&gt;)&lt;/p&gt;
&lt;div class=&quot;my-8 border border-[#E2E8F0] bg-[#F8FAFC] rounded-md p-5 sm:p-6 not-prose&quot; id=&quot;econdx-calc&quot;&gt; &lt;div class=&quot;flex items-center justify-between border-b border-[#E2E8F0] pb-3 mb-5&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#1E3A8A] font-semibold&quot;&gt;
Interactive Health-Economic Model
&lt;/div&gt; &lt;h3 class=&quot;font-serif-heading font-semibold text-xl text-[#0F172A]&quot;&gt;
Diagnostic Screening Economics Calculator
&lt;/h3&gt; &lt;/div&gt; &lt;span class=&quot;text-xs font-mono-data text-[#64748B] bg-white border border-[#E2E8F0] px-2 py-0.5 rounded&quot;&gt;
Operate Mode
&lt;/span&gt; &lt;/div&gt; &lt;!-- Inputs Grid --&gt; &lt;div class=&quot;grid grid-cols-1 sm:grid-cols-3 gap-3 mb-4&quot;&gt; &lt;div class=&quot;bg-white p-3 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Sensitivity (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.1&quot; min=&quot;0&quot; max=&quot;100&quot; id=&quot;econ-sens&quot; value=&quot;92.3&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;div class=&quot;bg-white p-3 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Specificity (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.1&quot; min=&quot;0&quot; max=&quot;100&quot; id=&quot;econ-spec&quot; value=&quot;84.4&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;div class=&quot;bg-white p-3 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Prevalence (%)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;0.01&quot; min=&quot;0.001&quot; max=&quot;100&quot; id=&quot;econ-prev&quot; value=&quot;0.65&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;grid grid-cols-1 sm:grid-cols-2 gap-3 mb-6&quot;&gt; &lt;div class=&quot;bg-white p-3 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Cost of Test ($)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;1&quot; min=&quot;0&quot; id=&quot;econ-cost-test&quot; value=&quot;500&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;div class=&quot;bg-white p-3 rounded border border-[#E2E8F0]&quot;&gt; &lt;label class=&quot;block text-xs font-mono-data text-[#475569] mb-1&quot;&gt;Cost of Follow-Up Diagnostic ($)&lt;/label&gt; &lt;input type=&quot;number&quot; step=&quot;1&quot; min=&quot;0&quot; id=&quot;econ-cost-fu&quot; value=&quot;1500&quot; class=&quot;w-full font-mono-data text-sm font-semibold text-[#0F172A] border border-[#E2E8F0] rounded px-2.5 py-1.5 focus:outline-none focus:border-[#1E3A8A]&quot;&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Outputs Grid --&gt; &lt;div class=&quot;grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3&quot;&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-3.5 rounded text-center&quot;&gt; &lt;div class=&quot;text-[11px] font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;Test Accuracy&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-xl text-[#1E3A8A]&quot; id=&quot;econ-out-acc&quot;&gt;84.45%&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-3.5 rounded text-center&quot;&gt; &lt;div class=&quot;text-[11px] font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;PPV&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-xl text-[#1E3A8A]&quot; id=&quot;econ-out-ppv&quot;&gt;3.73%&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-3.5 rounded text-center&quot;&gt; &lt;div class=&quot;text-[11px] font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;NNS&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-xl text-[#1E3A8A]&quot; id=&quot;econ-out-nns&quot;&gt;166.68&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;bg-[#EFF6FF] border border-[#BFDBFE] p-3.5 rounded text-center&quot;&gt; &lt;div class=&quot;text-[11px] font-mono-data text-[#1E3A8A] font-medium mb-1&quot;&gt;Cost / True Positive&lt;/div&gt; &lt;div class=&quot;font-mono-data font-bold text-xl text-[#1E3A8A]&quot; id=&quot;econ-out-cost&quot;&gt;$123,548&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script type=&quot;module&quot; src=&quot;/opt/buildhome/repo/src/components/embeds/EconDxCalculator.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Finally, while diagnostics businesses face many of the same development hurdles as drug developers — the need to develop cutting-edge technology, to carry out large clinical studies to prove efficacy, and to manage a complex regulatory and reimbursement landscape — unlike drug developers, diagnostic businesses face significant pricing constraints. Successful treatments can command high prices for &lt;em&gt;treating&lt;/em&gt; a disease. But successful diagnostic tests, no matter how sophisticated, cannot, because they ultimately don’t treat diseases, they merely &lt;em&gt;identify&lt;/em&gt; them.&lt;/p&gt;
&lt;h2 id=&quot;case-study-exact-sciences-and-cologuard&quot;&gt;Case Study: Exact Sciences and Cologuard&lt;/h2&gt;
&lt;p&gt;Let’s take &lt;a href=&quot;https://www.cologuard.com/&quot;&gt;Cologuard&lt;/a&gt; (from &lt;a href=&quot;https://www.exactsciences.com/&quot;&gt;Exact Sciences&lt;/a&gt;) as an example. Cologuard is a combination genomic and immunochemistry test for colon cancer carried out on patient stool samples. It’s two primary alternatives are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;a much less sensitive &lt;a href=&quot;https://medlineplus.gov/ency/patientinstructions/000704.htm&quot;&gt;fecal immunochemistry test (FIT)&lt;/a&gt; — which uses antibodies to detect blood in the stool as a potential, imprecise sign of colon cancer&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Colonoscopy&quot;&gt;colonoscopies&lt;/a&gt; — a procedure where a skilled physician uses an endoscope to enter and look for signs of cancer in a patient’s colon. It’s considered the “gold standard” as it functions both as diagnostic and treatment (a physician can remove or biopsy any lesion or polyp they find). But, because it’s invasive and uncomfortable for the patient, this test is typically only done every 4-10 years&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cologuard is (as of this writing) Exact Science’s primary product line, responsible for a large portion of Exact Science’s $2.5 billion in 2023 revenue. It can detect earlier stage colon cancer as well as pre-cancerous growths that could lead to cancer. Impressively, Exact Sciences also commands a gross margin greater than 70%, a high margin achieved mainly by pharmaceutical and software companies that have low per-unit costs of production. This has resulted in &lt;a href=&quot;https://finance.yahoo.com/quote/EXAS/&quot;&gt;Exact Sciences, as of this writing, having a market cap over $11 billion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yet for all its success, Exact Sciences is also a cautionary note, illustrating the difficulties of building a diagnostics company.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The company was founded in 1995, yet didn’t see meaningful revenue from selling diagnostics until 2014 (nearly 20 years later, after it received FDA approval for Cologuard)&lt;/li&gt;
&lt;li&gt;The company has never had a profitable year (this includes the last 10 years it’s been in-market), losing over $200 million in 2023, and in the first three quarters of 2024, it has continued to be unprofitable.&lt;/li&gt;
&lt;li&gt;Between 1997 (the first year we have good data from their SEC filings &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1568885577#gid=1568885577&quot;&gt;as summarized in this Google Sheet&lt;/a&gt;) and 2014 when it first achieved meaningful diagnostic revenue, Exact Sciences lost a cumulative $420 million, driven by $230 million in R&amp;amp;D spending, $88 million in Sales &amp;amp; Marketing spending, and $33 million in CAPEX. It funded those losses by issuing over $624 million in stock (diluting investors and employees)&lt;/li&gt;
&lt;li&gt;From 2015-2023, it has needed to raise an additional $3.5 billion in stock and convertible debt (net of paybacks) to cover its continued losses (over $3 billion from 2015-2023)&lt;/li&gt;
&lt;li&gt;Prior to 2014, Exact Sciences attempted to commercialize colon cancer screening technologies through partnerships with LabCorp (&lt;a href=&quot;https://ir.labcorp.com/news-releases/news-release-details/labcorp-announces-availability-colosuretm&quot;&gt;ColoSure&lt;/a&gt; and &lt;a href=&quot;https://www.labcorp.com/exact-sciences-and-labcorpr-offer-pregen-plustm-changing-health-care-landscape-non-invasive&quot;&gt;PreGenPlus&lt;/a&gt;). These were not very successful and led to concerns from the FDA and insurance companies. This forced Exact Sciences to invest heavily in clinical studies to win over the payers and the FDA, including a pivotal ~10,000 patient study to support Cologuard which recruited patients from over 90 sites and took over 1.5 years.&lt;/li&gt;
&lt;li&gt;It took Exact Sciences 3 years after FDA approval of Cologuard for its annual diagnostic revenues to exceed what it spends on sales &amp;amp; marketing. It continues to spend aggressively there ($727M in 2023).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;my-6 border border-[#BBF7D0] bg-[#F0FDF4] rounded-md p-4 sm:p-5 not-prose&quot;&gt; &lt;div class=&quot;flex items-start justify-between gap-4&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#166534] font-semibold mb-1 flex items-center gap-1.5&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5 text-[#166534]&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt; &lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H6v-2h3v2zm0-4H6v-2h3v2zm0-4H6V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Interactive Spreadsheet Model
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A] mb-1&quot;&gt; Exact Sciences 1997–2023 Longitudinal Financial Model &lt;/h4&gt; &lt;p class=&quot;text-xs text-[#334155] mb-3&quot;&gt; Historical financial analysis tracking 27 years of SEC 10-K filings: cumulative net losses ($4.1B+), R&amp;amp;D vs. Sales &amp;amp; Marketing expenditures, and equity dilution. &lt;/p&gt; &lt;div class=&quot;flex flex-wrap items-center gap-1.5 mb-1&quot;&gt; &lt;span class=&quot;text-[11px] font-mono-data text-[#15803D] font-medium&quot;&gt;Tabs:&lt;/span&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1568885577#gid=1568885577&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: 1997-2023 P&amp;#38;L History&quot;&gt; &lt;span&gt;1997-2023 P&amp;amp;L History&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=0#gid=0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: Clinical &amp;#38; Utility Tabs&quot;&gt; &lt;span&gt;Clinical &amp;amp; Utility Tabs&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1692548619#gid=1692548619&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: Cost-Effectiveness Model&quot;&gt; &lt;span&gt;Cost-Effectiveness Model&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1568885577#gid=1568885577&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-emerald text-xs font-mono-data font-semibold px-3 py-2 rounded-md whitespace-nowrap transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Model &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;While it’s difficult to know precisely what the company’s management / investors would do differently if they could do it all over again, the brutal math of diagnostics certainly played a key role.&lt;/p&gt;
&lt;p&gt;From a clinical perspective, Cologuard faces the same &lt;em&gt;low positive predictive value&lt;/em&gt; problem all diagnostic screening tests face. From the data in &lt;a href=&quot;https://www.nejm.org/doi/full/10.1056/nejmoa1311194&quot;&gt;their study on ~10,000 patients&lt;/a&gt;, it’s clear that, despite having a much higher sensitivity for cancer (92.3% vs 73.8%) and higher AUROC (94% vs 89%) than the existing FIT test, **the PPV of Cologuard is only 3.7% (**lower than the FIT test: 6.9%)****.&lt;/p&gt;
&lt;p&gt;Even using a broader disease definition that includes the pre-cancerous advanced lesions Exact Sciences touted as a strength, the gap on PPV does &lt;em&gt;not&lt;/em&gt; narrow (Cologuard: 23.6% vs FIT: 32.6%)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-2.png&quot; alt/&gt;&lt;/p&gt;
&lt;div class=&quot;my-6 border border-[#BBF7D0] bg-[#F0FDF4] rounded-md p-4 sm:p-5 not-prose&quot;&gt; &lt;div class=&quot;flex items-start justify-between gap-4&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#166534] font-semibold mb-1 flex items-center gap-1.5&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5 text-[#166534]&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt; &lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H6v-2h3v2zm0-4H6v-2h3v2zm0-4H6V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Interactive Spreadsheet Model
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A] mb-1&quot;&gt; Cologuard vs. FIT Head-to-Head Clinical &amp;amp; Economic Model &lt;/h4&gt; &lt;p class=&quot;text-xs text-[#334155] mb-3&quot;&gt; Clinical utility and unit economics modeling comparing Cologuard and FIT screening across 10,000+ patient trial data (NEJM 2014 &amp;amp; CMS fee schedule). &lt;/p&gt; &lt;div class=&quot;flex flex-wrap items-center gap-1.5 mb-1&quot;&gt; &lt;span class=&quot;text-[11px] font-mono-data text-[#15803D] font-medium&quot;&gt;Tabs:&lt;/span&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1046834156#gid=1046834156&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: Clinical Comparison (2014)&quot;&gt; &lt;span&gt;Clinical Comparison (2014)&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=2025318551#gid=2025318551&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: Cost per Cancer Found&quot;&gt; &lt;span&gt;Cost per Cancer Found&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=821308889#gid=821308889&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[11px] font-mono-data bg-white hover:bg-[#DCFCE7] text-[#166534] hover:text-[#14532D] border border-[#86EFAC] hover:border-[#166534] px-2 py-0.5 rounded transition-colors inline-flex items-center gap-1 group shadow-2xs&quot; title=&quot;Open tab: 2024 Cologuard+ Data&quot;&gt; &lt;span&gt;2024 Cologuard+ Data&lt;/span&gt; &lt;span class=&quot;opacity-60 group-hover:opacity-100 text-[10px] text-[#15803D]&quot;&gt;&amp;nearr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1046834156#gid=1046834156&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-emerald text-xs font-mono-data font-semibold px-3 py-2 rounded-md whitespace-nowrap transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Model &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;The economic comparison with a FIT test fares even worse due to the higher cost of Cologuard as well as the higher rate of false positives. &lt;a href=&quot;https://www.cms.gov/medicare/payment/fee-schedules/clinical-laboratory-fee-schedule-clfs/files/24clabq4&quot;&gt;Under the Center for Medicare &amp;amp; Medicaid Service’s 2024Q4 laboratory fee schedule&lt;/a&gt;, a FIT test costs $16 (CPT code: 82274), but Cologuard costs $509 (CPT code: 81528), over 30x higher! If each positive Cologuard and FIT test results in a follow-up colonoscopy (which has a cost of $800-1000 &lt;a href=&quot;https://aspe.hhs.gov/sites/default/files/private/pdf/252376/DHNTable2.pdf&quot;&gt;according to this 2015 analysis&lt;/a&gt;), &lt;strong&gt;the screening cost per cancer patient is 5.2-7.1x higher for Cologuard than for the FIT test&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-3.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;This quick math has been confirmed in several studies.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0220234&quot;&gt;A study by a group at the University Medical Center of Rotterdam&lt;/a&gt; concluded that “Compared to nearly all other CRC screening strategies reimbursed by CMS (Medicare), [Cologuard] is less effective and considerably more costly, making it an inefficient screening option” and would only be comparable at a much lower cost (~$6-18!)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facs.org/media-center/press-releases/2022/study-finds-less-expensive-noninvasive-test-is-an-effective-alternative-to-a-more-costly-test-for-colorectal-cancer-screening/&quot;&gt;Another study presented at the American College of Surgeons Clinical Congress in 2022&lt;/a&gt; (see image below) looked at insurance reimbursement in the Alleghany Health Network and found that the FIT test was 5x cheaper in addressing early stage colon cancer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-4-1024x535.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.facs.org/media-center/press-releases/2022/study-finds-less-expensive-noninvasive-test-is-an-effective-alternative-to-a-more-costly-test-for-colorectal-cancer-screening/&quot;&gt;From ACS Clinical Congress 2022 Presentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While &lt;a href=&quot;https://www.cms.gov/medicare-coverage-database/view/ncd.aspx?NCDId=281&amp;ncdver=5&quot;&gt;Medicare&lt;/a&gt; and &lt;a href=&quot;https://www.uspreventiveservicestaskforce.org/uspstf/recommendation/colorectal-cancer-screening-june-2016&quot;&gt;the US Preventive Services Task Force&lt;/a&gt; concluded that the cost of Cologuard and the increase in false positives / colonoscopy complications was worth the improved early detection of colon cancer, it stayed largely silent on comparing cost-efficacy with the FIT test. &lt;strong&gt;It’s this unfavorable comparison that has probably required Exact Sciences to invest so heavily in sales and marketing&lt;/strong&gt; to drive sales. That Cologuard has been so successful is a testament both to the value of being the only FDA-approved test on the market as well as Exact Science’s efforts in making Cologuard so well-known (&lt;a href=&quot;https://www.youtube.com/watch?v=Mu12X2cu6Y0&quot;&gt;how many other diagnostics do you know have an SNL skit dedicated to them?&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Not content to rest on the laurels of Cologuard, Exact Sciences &lt;a href=&quot;https://www.nejm.org/doi/full/10.1056/NEJMoa2310336&quot;&gt;recently published a ~20,000 patient study&lt;/a&gt; on their next generation colon cancer screening test: &lt;a href=&quot;https://www.exactsciences.com/science-pipeline/cologuard-plus&quot;&gt;Cologuard Plus&lt;/a&gt;. While the study suggests Exact Sciences has improved the test across the board, the company’s marketing around Cologuard Plus having both &amp;gt;90% sensitivity and specificity is misleading, because the figures for sensitivity and specificity are for different conditions: sensitivity for &lt;em&gt;colorectal cancer&lt;/em&gt; but specificity for &lt;em&gt;colorectal cancer OR advanced precancerous lesion&lt;/em&gt; (see the table below).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-5-1024x171.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sensitivity and Specificity by Condition for Cologuard Plus Study&lt;br/&gt;
&lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=558998817#gid=558998817&quot;&gt;(Google Sheet link)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Disentangling these numbers shows that while Cologuard Plus has narrowed its PPV disadvantage (now worse by 1% on colorectal cancer and even on cancer or lesion) and its cost-efficacy disadvantage (now &lt;em&gt;“only”&lt;/em&gt; 4.4-5.8x more expensive) vs the FIT test (see tables below), it still hasn’t closed the gap.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-6.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Clinical: Cologuard+ vs FIT &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=821308889#gid=821308889&quot;&gt;(Google Sheet link)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/12/image-7.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Economic: Cologuard+ vs FIT &lt;a href=&quot;https://docs.google.com/spreadsheets/d/10-6ZCHVTGj8tf1Z_PLIVTeGO2PIcjecG7NU5jmVkJNE/edit?gid=1252998202#gid=1252998202&quot;&gt;(Google Sheet link)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Time will tell if this improved test performance translates to continued sales performance for Exact Sciences, but it is telling that despite the significant time and resources that went into developing Cologuard Plus, the data suggests it’s still likely more cost effective for health systems to adopt FIT over Cologuard Plus as a means of preventing advanced colon cancer.&lt;/p&gt;
&lt;h2 id=&quot;lessons-for-diagnostics-companies&quot;&gt;Lessons for diagnostics companies&lt;/h2&gt;
&lt;p&gt;The underlying math of the diagnostics business and the lessons from Exact Sciences’ long path to dramatic sales has several key lessons for diagnostic entrepreneurs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Focus on specificity&lt;/strong&gt; — For diagnostic technologists, too little attention is paid to specificity while too much attention is paid on sensitivity. Positive predictive value and the cost-benefit for a health system are largely going to swing on specificity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aim for higher value tests&lt;/strong&gt; — Because the development and required validation for a diagnostic can be as high as that of a drug or medical device, it is important to pursue opportunities where the diagnostic can command a high price. These are usually markets where the alternatives are very expensive because they require new technology (e.g. advanced genetic tests) or a great deal of specialized labor (e.g. colonoscopy) or where the diagnostic directly decides on a costly course of treatment (e.g. a companion diagnostic for an oncology drug).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go after unmet needs&lt;/strong&gt; — If a test is able to fill a mostly unmet need — for example, if the alternatives are extremely inaccurate or poorly adopted — then adoption will be determined by awareness (because there aren’t credible alternatives) and pricing will be determined by sensitivity (because this drives the delivery of better care). This also simplifies the sales process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win beyond the test&lt;/strong&gt; — Because performance can only ever get to 100%, each incremental point on sensitivity and specificity is both exponentially harder to achieve but also delivers less medical or financial value. As a result, it can be advantageous to focus on factors beyond the test such as regulatory approval / guidelines adoption, patient convenience, time to result, and impact on follow-up tests and procedures. Cologuard gained a great deal from being “the first FDA-approved colon cancer screening test”. &lt;a href=&quot;https://medlineplus.gov/genetics/understanding/testing/nipt/&quot;&gt;Non-invasive prenatal testing&lt;/a&gt;, despite low positive predictive values and limited disease coverage, gained adoption in part by helping to triage follow-up amniocentesis (a procedure which has a low but still frighteningly high rate of miscarriage ~0.5%). Rapid antigen tests for COVID have also similarly been adopted despite their lower sensitivity and specificity than PCR tests due to their speed, low cost, and ability to carry out at home.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Diagnostics developers must carefully navigate the intersection of scientific innovation and financial reality, while grappling with the fact that even the most impressive technology may be insufficient without taking into account clinical and economic factors to achieve market success.&lt;/p&gt;
&lt;p&gt;Ultimately, the path forward for diagnostic innovators lies in prioritizing specificity, targeting high-value and unmet needs, and crafting solutions that deliver value beyond the test itself. While Exact Science’s journey underscores the difficulty of these challenges, it also illustrates that with persistence, thoughtful investment, and strategic differentiation, it is possible to carve out a meaningful and impactful space in the market.&lt;/p&gt;</content:encoded><category>Cologuard</category><category>diagnostic</category><category>Exact Sciences</category><category>Genomics</category><category>positive predictive value</category><category>sensitivity</category><category>specificity</category></item><item><title>The Challenge of Capacity</title><link>https://benjamintseng.com/2024/11/the-challenge-of-capacity/</link><guid isPermaLink="true">https://benjamintseng.com/2024/11/the-challenge-of-capacity/</guid><description>Reading Note: The Challenge of Capacity</description><pubDate>Mon, 25 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The rise of Asia as a force to be reckoned with in large scale manufacturing of critical components like batteries, solar panels, pharmaceuticals, chemicals, and semiconductors has left US and European governments seeking to catch up with a bit of a dilemma.&lt;/p&gt;
&lt;p&gt;These activities largely moved to Asia because financially-motivated management teams in the West (correctly) recognized that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they were low return in a conventional financial sense (require tremendous investment and maintenance)&lt;/li&gt;
&lt;li&gt;most of these had a heavy labor component (and higher wages in the US/European meant US/European firms were at a cost disadvantage)&lt;/li&gt;
&lt;li&gt;these activities tend to benefit from economies of scale and &lt;a href=&quot;http://benjamintseng.com/tag/regional-industrial-ecosystem/&quot;&gt;regional industrial ecosystems&lt;/a&gt;, so it makes sense for an industry to have fewer and larger suppliers&lt;/li&gt;
&lt;li&gt;much of the value was concentrated in design and customer relationship, activities the Western companies would retain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What the companies failed to take into account was the speed at which Asian companies like &lt;a href=&quot;http://benjamintseng.com/tag/wuxi/&quot;&gt;WuXi&lt;/a&gt;, &lt;a href=&quot;http://benjamintseng.com/tag/tsmc/&quot;&gt;TSMC&lt;/a&gt;, &lt;a href=&quot;http://benjamintseng.com/tag/samsung/&quot;&gt;Samsung&lt;/a&gt;, LG, CATL, Trina, Tongwei, and many others would consolidate (usually with government support), ultimately “graduating” into dominant positions with real market leverage and with the profitability to invest into the higher value activities that were previously the sole domain of Western industry.&lt;/p&gt;
&lt;p&gt;Now, scrambling to reposition themselves closer to the forefront in some of these critical industries, these governments have tried to kickstart domestic efforts, only to face the economic realities that led to the outsourcing to begin with.&lt;/p&gt;
&lt;p&gt;Northvolt, a major European effort to produce advanced batteries in Europe, is one example of this. Despite raising tremendous private capital and securing European government support, &lt;a href=&quot;https://www.reuters.com/technology/northvolt-files-chapter-11-bankruptcy-us-2024-11-21/&quot;&gt;the company filed for bankruptcy a few days ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While much hand-wringing is happening in climate-tech circles, I take a different view: this should really not come as a surprise. Battery manufacturing (like semiconductor, solar, pharmaceutical, etc) requires huge amounts of capital and painstaking trial-and-error to perfect operations, just to produce products that are steadily dropping in price over the long-term. It’s fundamentally a difficult and not-very-rewarding endeavor. And it’s for that reason that the West “gave up” on these years ago.&lt;/p&gt;
&lt;p&gt;But if US and European industrial policy is to be taken seriously here, the respective governments need to internalize that reality and be committed for the long haul. The idea that what these Asian companies are doing is “easily replicated” is simply not true, and the question is &lt;em&gt;&lt;strong&gt;not if but when&lt;/strong&gt;&lt;/em&gt; will the next recipient of government support fall into dire straits.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Latitude Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/what-northvolts-bankruptcy-means-for-europes-battery-ambitions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“From the start, Northvolt set out to build something unprecedented. It didn’t just promise to build batteries in Europe, but to create an entire battery ecosystem, from scratch, in a matter of years. It would build the region’s biggest battery factories, develop and source its own materials, and recycle its own batteries. And, with some help from government subsidies, it would do so while matching prices from Asian manufacturers that had dominated global markets.
Northvolt’s ambitious attempt to compress decades of industry development into just eight years culminated last week, with its filing for Chapter 11 bankruptcy protection and the departure of several top executives, including CEO Peter Carlsson. The company’s downfall is a setback for Europe’s battery ambitions — as well as a signal of how challenging it is for the West to challenge Chinese dominance.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-25-163100-1024x678.png&quot; alt=&quot;What Northvolt\u2019s bankruptcy means for Europe\u2019s battery ambitions&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/what-northvolts-bankruptcy-means-for-europes-battery-ambitions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; What Northvolt\u2019s bankruptcy means for Europe\u2019s battery ambitions &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Maeve Allsup&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Latitude Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/what-northvolts-bankruptcy-means-for-europes-battery-ambitions&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>CATL</category><category>climatetech</category><category>finance</category><category>industrial policy</category><category>LG</category><category>Northvolt</category><category>regional industrial ecosystem</category><category>Samsung</category><category>semiconductors</category><category>tech</category><category>Tongwei</category><category>TSMC</category><category>WuXi</category></item><item><title>A Visual Timeline of Human Migration</title><link>https://benjamintseng.com/2024/11/a-visual-timeline-of-human-migration/</link><guid isPermaLink="true">https://benjamintseng.com/2024/11/a-visual-timeline-of-human-migration/</guid><description>Reading Note: A Visual Timeline of Human Migration</description><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Beautiful map laying out when humans settled different parts of the world (from 2013, &lt;a href=&quot;https://outofedenwalk.nationalgeographic.org/the-journey&quot;&gt;National Geographic’s Out of Eden project&lt;/a&gt;)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; National Geographic&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://outofedenwalk.nationalgeographic.org/media/2013-01-a-walk-through-time&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;&amp;quot;&amp;quot;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-22-101723.png&quot; alt=&quot;A Walk Through Time&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://outofedenwalk.nationalgeographic.org/media/2013-01-a-walk-through-time&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; A Walk Through Time &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jeff Blossom&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;National Geographic&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://outofedenwalk.nationalgeographic.org/media/2013-01-a-walk-through-time&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>archaeology</category><category>migration</category></item><item><title>Updating my AI News Reader</title><link>https://benjamintseng.com/2024/11/updating-my-ai-news-reader/</link><guid isPermaLink="true">https://benjamintseng.com/2024/11/updating-my-ai-news-reader/</guid><description>Updating my AI News Reader</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few months ago, I shared that I had built &lt;a href=&quot;http://benjamintseng.com/portfolio/building-a-personalized-news-reader-with-ai/&quot;&gt;an AI-powered personalized news reader&lt;/a&gt; which I use (and still do) on a near-daily basis. Since that post, I’ve made a couple of major improvements (which &lt;a href=&quot;https://github.com/BenjaminTseng/Newsreader-Public/&quot;&gt;I have just reflected in my public Github&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&quot;switching-to-jax&quot;&gt;Switching to JAX&lt;/h2&gt;
&lt;p&gt;I previously chose &lt;a href=&quot;https://keras.io/keras_3/&quot;&gt;Keras 3&lt;/a&gt; for my deep learning algorithm architecture because of its ease of use as well as the advertised ability to shift between AI/ML backends (at least between &lt;a href=&quot;https://tensorflow.org/&quot;&gt;Tensorflow&lt;/a&gt;, &lt;a href=&quot;https://jax.readthedocs.io/en/latest/&quot;&gt;JAX&lt;/a&gt;, and &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt;). &lt;a href=&quot;https://x.com/fchollet/status/1845077759674179750&quot;&gt;With Keras creator Francois Chollet noting significant speed-ups just from switching backends to JAX&lt;/a&gt;, I decided to give the JAX backend a shot.&lt;/p&gt;
&lt;p&gt;Thankfully, Keras 3 lived up to it’s multi-backend promise and made switching to JAX remarkably easy. For my code, I simply had to make three sets of tweaks.&lt;/p&gt;
&lt;p&gt;First, I had to change the definition of &lt;a href=&quot;https://modal.com/docs/guide/custom-container&quot;&gt;my container images&lt;/a&gt;. Instead of starting from Tensorflow’s official Docker images, I instead installed JAX and Keras on Modal’s default Debian image and set the appropriate environmental variables to configure Keras to use JAX as a backend:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;jax_image&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    modal.Image.debian_slim(python_version&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;3.11&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    .pip_install(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;jax[cuda12]==0.4.35&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; extra_options=&amp;quot;-U&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    .pip_install(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;keras==3.6&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    .pip_install(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;keras-hub==0.17&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    .env(&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;KERAS_BACKEND&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;jax&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;quot;}) # sets Keras backend to JAX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    .env({&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;XLA_PYTHON_CLIENT_MEM_FRACTION&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;1.0&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;quot;})&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Second, because &lt;code&gt;tf.data&lt;/code&gt; pipelines convert everything to Tensorflow tensors, I had to switch my preprocessing pipelines from using &lt;a href=&quot;https://keras.io/api/ops/&quot;&gt;Keras’s &lt;code&gt;ops&lt;/code&gt; library&lt;/a&gt; (which, because I was using JAX as a backend, expected JAX tensors) to Tensorflow native operations:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ds&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ds.map&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    lambda&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; i,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; j,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; k,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; l:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        preprocessor(i&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        j,&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        2*k-1,&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    )&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    num_parallel_calls&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;tf.data.AUTOTUNE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, I had a few lines of code which assumed Tensorflow tensors (where getting the underlying value required a &lt;code&gt;.numpy()&lt;/code&gt; call). As I was now using JAX as a backend, I had to remove the &lt;code&gt;.numpy()&lt;/code&gt; calls for the code to work.&lt;/p&gt;
&lt;p&gt;Everything else — the rest of the &lt;code&gt;tf.data&lt;/code&gt; preprocessing pipeline, the code to train the model, the code to serve it, the previously saved model weights and the code to save &amp;amp; load them — remained the same! Considering that the training time per epoch and the time the model took to evaluate (a measure of inference time) both seemed to improve by 20-40%, this simple switch to JAX seemed well worth it!&lt;/p&gt;
&lt;h2 id=&quot;model-architecture-improvements&quot;&gt;Model Architecture Improvements&lt;/h2&gt;
&lt;p&gt;There were two major improvements I made in the model architecture over the past few months.&lt;/p&gt;
&lt;p&gt;First, having run my news reader for the better part of a year now, I now have accumulated enough data where my strategy to simultaneously train on two related tasks (predicting the human rating and predicting the length of an article) no longer required separate inputs. This reduced the memory requirement as well as simplified the data pipeline for training (see architecture diagram below)&lt;/p&gt;
&lt;p&gt;Secondly, I was successfully able to train a version of my algorithm which can use dot products natively. This not only allowed me to remove several layers from my previous model architecture (see architecture diagram below), but because the Supabase postgres database I’m using supports &lt;code&gt;pgvector&lt;/code&gt;, it means I can even compute ratings for articles through a SQL query:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UPDATE&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; articleuser&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;SET&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    rating_timestamp&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; NOW&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    updated_at&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; NOW&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    articles&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; a,&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    users&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; u&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    articleuser.article_id&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; a.id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    AND&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; articleuser.user_id&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; u.id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    AND&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; articleuser.ai_rating&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; IS&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; NULL&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result is much greater simplicity in architecture as well as greater operational flexibility as I can now update ratings from the database directly as well as from serving a deep neural network from my serverless backend.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/arch-1024x630.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Model architecture (output from Keras &lt;code&gt;plot_model&lt;/code&gt; function)&lt;/p&gt;
&lt;h2 id=&quot;making-sources-a-first-class-citizen&quot;&gt;Making Sources a First-Class Citizen&lt;/h2&gt;
&lt;p&gt;As I used the news reader, I realized early on that the ability to just have sorted content from one source (i.e. a particular blog or news site) would be valuable to have. To add this, I created and populated a new &lt;code&gt;sources&lt;/code&gt; table within the database to track these independently (see database design diagram below) which was linked to the &lt;code&gt;articles&lt;/code&gt; table.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-20-220952-933x1024.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Newsreader database design diagram (produced by a Supabase tool)&lt;/p&gt;
&lt;p&gt;I then modified my scrapers to insert the identifier for each source alongside each new article, as well as made sure my fetch calls all &lt;code&gt;JOIN&lt;/code&gt;‘d and pulled the relevant source information.&lt;/p&gt;
&lt;p&gt;With the data infrastructure in place, I added the ability to add a source parameter to the core fetch URLs to enable single (or multiple) source feeds. I then added a quick element at the top of the feed interface (see below) to let a user know when the feed they’re seeing is limited to a given source. I also made all the source links in the feed clickable so that they could take the user to the corresponding single source feed.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;div class&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&amp;quot;feed-container&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; class=&amp;quot;controls-container&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; class=&amp;quot;controls&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;      ${source_names &amp;amp;&amp;amp; source_names.length &amp;gt; 0 &amp;amp;&amp;amp; html`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;lt;div class=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&amp;quot;source-info&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;          Showing articles from&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; ${source_names.join(&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&amp;#39;, &amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;amp;lt;div&amp;amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;          &amp;lt;a href=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;gt;Return to Main Feed&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;      `}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/div&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/div&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;/div&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/image-6-1024x606.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The interface when on a single source feed&lt;/p&gt;
&lt;h2 id=&quot;performance-speed-up&quot;&gt;Performance Speed-Up&lt;/h2&gt;
&lt;p&gt;One recurring issue I noticed in my use of the news reader pertained to slow load times. While some of this can be attributed to &lt;a href=&quot;https://builtin.com/software-engineering-perspectives/cold-starts-challenge-serverless-architecture&quot;&gt;the “cold start” issue&lt;/a&gt; that serverless applications face, much of this was due to how the news reader was fetching pertinent articles from the database. It was deciding at the moment of the fetch request what was most relevant to send over by calculating all the pertinent scores and rank ordering. As the article database got larger, this computation became more complicated.&lt;/p&gt;
&lt;p&gt;To address this, I decided to move to a “pre-calculated” ranking system. That way, the system would know what to fetch in advance of a fetch request (and hence return much faster). Couple that with &lt;a href=&quot;https://en.wikipedia.org/wiki/Database_index&quot;&gt;a database index&lt;/a&gt; (which effectively “pre-sorts” the results to make retrieval even faster), and I saw visually noticeable improvements in load times.&lt;/p&gt;
&lt;p&gt;But with any pre-calculated score scheme, the most important question is how and when re-calculation should happen. Too often and too broadly and you incur unnecessary computing costs. Too infrequently and you risk the scores becoming stale.&lt;/p&gt;
&lt;p&gt;The compromise I reached derived itself from the three ways articles are ranked in my system:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The AI’s rating of an article plays the most important role (60%)&lt;/li&gt;
&lt;li&gt;How recently the article was published is tied with… (20%)&lt;/li&gt;
&lt;li&gt;How similar an article is with the 10 articles a user most recently read (20%&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These factors lent themselves to very different natural update cadences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Newly scraped articles would have their AI ratings and calculated score computed at the time they enter the database&lt;/li&gt;
&lt;li&gt;AI ratings for the most recent and the previously highest scoring articles would be re-computed after model training updates&lt;/li&gt;
&lt;li&gt;On a daily basis, each article’s score was recomputed (focusing on the change in article recency)&lt;/li&gt;
&lt;li&gt;The article similarity for unread articles is re-evaluated after a user reads 10 articles&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This required modifying the reader’s existing scraper and post-training processes to update the appropriate scores after scraping runs and model updates. It also meant tracking article reads on the &lt;code&gt;users&lt;/code&gt; table (and modifying the &lt;code&gt;/read&lt;/code&gt; endpoint to update these scores at the right intervals). Finally, it also meant adding a recurring &lt;code&gt;cleanUp&lt;/code&gt; function set to run every 24 hours to perform this update as well as others.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;With some of these performance and architecture improvements in place, my priorities are now focused on finding ways to systematically improve the underlying algorithms as well as increase the platform’s usability as a true news tool. To that end some of the top priorities for next steps in my mind include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Testing new backbone models&lt;/strong&gt; — The core ranking algorithm relies on &lt;a href=&quot;https://arxiv.org/abs/1907.11692&quot;&gt;Roberta&lt;/a&gt;, a model released 5 years ago before &lt;a href=&quot;http://benjamintseng.com/tag/large-language-models/&quot;&gt;large language models&lt;/a&gt; were common parlance. &lt;a href=&quot;https://developers.googleblog.com/en/introducing-keras-hub-for-pretrained-models/&quot;&gt;Keras Hub&lt;/a&gt; makes it incredibly easy to incorporate newer models like Meta’s Llama 2 &amp;amp; 3, OpenAI’s GPT2, Microsoft’s Phi-3, and Google’s Gemma and fine-tune them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solving the “all good articles” problem&lt;/strong&gt; — Because the point of the news reader is to surface content it considers good, users will not readily see lower quality content, nor will they see content the algorithm struggles to rank (i.e. new content very different from what the user has seen before). This makes it difficult to get the full range of data needed to help preserve the algorithm’s usefulness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creating topic and author feeds&lt;/strong&gt; — Given that many people think in terms of topics and authors of interest, expanding what I’ve already done with Sources but with topics and author feeds sounds like a high-value next step&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also endeavor to make more regular updates to the public Github repository (instead of aggregate many updates I had already made into two large ones). This will make the updates more manageable and hopefully help anyone out there who’s interested in building a similar product.&lt;/p&gt;</content:encoded><category>AI</category><category>JAX</category><category>Keras</category><category>large language models</category><category>news reader</category><category>Postgres</category><category>project</category></item><item><title>Not your grandma’s geothermal energy</title><link>https://benjamintseng.com/2024/11/not-your-grandmas-geothermal-energy/</link><guid isPermaLink="true">https://benjamintseng.com/2024/11/not-your-grandmas-geothermal-energy/</guid><description>Reading Note: Not your grandma’s geothermal energy</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The pursuit of carbon-free energy has largely leaned on intermittent sources of energy — like wind and solar; and sources that require a great deal of initial investment — like hydroelectric (which requires elevated bodies of water and dams) and nuclear (which require you to set up a reactor).&lt;/p&gt;
&lt;p&gt;The theoretical beauty of geothermal power is that, if you dig deep enough, virtually everywhere on planet earth is hot enough to melt rock (thanks to the nuclear reactions that heat up the inside of the earth). But, until recently, geothermal has been limited to regions of Earth where well-formed geologic formations can deliver predictable steam without excessive engineering.&lt;/p&gt;
&lt;p&gt;But, ironically, it is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Fracking&quot;&gt;fracking&lt;/a&gt; boom, which has helped the oil &amp;amp; gas industries get access to new sources of carbon-producing energy, which may help us tap geothermal power in more places. As fracking and oil &amp;amp; gas exploration has led to a revolution in our ability to precisely drill deep underground and push &amp;amp; pull fluids, it also presents the ability for us to tap more geothermal power than ever before. This has led to the rise of &lt;strong&gt;enhanced geothermal&lt;/strong&gt;, the process by which we inject water deep underground to heat, and leverage the steam produced to generate electricity. Studies suggest the resource is particularly rich and accessible in the Southwest of the United States (see map below) and could be an extra tool in our portfolio to green energy consumption.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-15-095716-1024x787.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;(Source: Figure 5 from &lt;a href=&quot;https://www.nrel.gov/docs/fy23osti/84822.pdf&quot;&gt;NREL study on enhanced geothermal from Jan 2023&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;While there is a great deal of uncertainty around how much this will cost and just what it will take (not to mention the seismic risks that have plagued some fracking efforts), the hunger for more data center capacity and the desire to power this with clean electricity has helped startups like Fervo Energy and Sage Geosystems fund projects to explore.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Nature News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-03621-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“On 17 October, Fervo Energy, a start-up based in Houston, Texas, got a major boost as the US government gave the green light to the expansion of a geothermal plant Fervo is building in Beaver County, Utah. The project could eventually generate as much as 2,000 megawatts — a capacity comparable with that of two large nuclear reactors. Although getting to that point could take a while, the plant already has 400 MW of capacity in the pipeline, and will be ready to provide around-the-clock power to Google’s energy-hungry data centres, and other customers, by 2028. In August, another start-up, Sage Geosystems, announced a partnership with Facebook’s parent company Meta to deliver up to 150 MW of geothermal power to Meta’s data centres by 2027.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-15-094822-1024x655.png&quot; alt=&quot;Geothermal power is vying to be a major player in the world\u2019s clean-energy future&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-03621-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Geothermal power is vying to be a major player in the world\u2019s clean-energy future &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;David Castelvecchi&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Nature News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-03621-w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>energy</category><category>enhanced geothermal</category><category>fracking</category></item><item><title>Who needs humans? Lab of AIs designs valid COVID-binding proteins</title><link>https://benjamintseng.com/2024/11/who-needs-humans-lab-of-ais-designs-valid-covid-binding-proteins/</link><guid isPermaLink="true">https://benjamintseng.com/2024/11/who-needs-humans-lab-of-ais-designs-valid-covid-binding-proteins/</guid><description>Reading Note: Who needs humans? Lab of AIs designs valid COVID-binding proteins</description><pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot;&gt;A recent preprint from Stanford&lt;/a&gt; has demonstrated something remarkable: AI agents working together as a team solving a complex scientific challenge.&lt;/p&gt;
&lt;p&gt;While much of the AI discourse focuses on how individual large language models (LLMs) compare to humans, much of human work today is a team effort, and the right question is less “can this LLM do better than a single human on a task” and more “what is the best team-up of AI and human to achieve a goal?” What is fascinating about this paper is that it looks at it from the perspective of “what can a team of AI agents achieve?”&lt;/p&gt;
&lt;p&gt;The researchers tackled an ambitious goal: designing improved COVID-binding proteins for potential diagnostic or therapeutic use. Rather than relying on a single AI model to handle everything, the researchers tasked an AI “Principal Investigator” with assembling a virtual research team of AI agents! After some internal deliberation, the AI Principal Investigator selected an AI immunologist, an AI machine learning specialist, and an AI computational biologist. The researchers made sure to add an additional role, one of a “scientific critic” to help ground and challenge the virtual lab team’s thinking.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/image-1.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The team composition and phases of work planned and carried out by the AI principal investigator&lt;br/&gt;
(Source: Figure 2 from &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot;&gt;Swanson et al.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;What makes this approach fascinating is how it mirrors high functioning human organizational structures. The AI team conducted meetings with defined agendas and speaking orders, with a “devil’s advocate” to ensure the ideas were grounded and rigorous.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/image-3.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Example of a virtual lab meeting between the AI agents; note the roles of the Principal Investigator (to set agenda) and Scientific Critic (to challenge the team to ground their work)&lt;br/&gt;
(Source: Figure 6 from &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot;&gt;Swanson et al.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;One tactic that the researchers said helped with boosting creativity that is harder to replicate with humans is running parallel discussions, whereby the AI agents had the same conversation over and over again. In these discussions, the human researchers set the “temperature” of the LLM higher (inviting more variation in output). The AI principal investigator then took the output of all of these conversations and synthesized them into a final answer (this time with the LLM temperature set lower, to reduce the variability and “imaginativeness” of the answer).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/image-2.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The use of parallel meetings to get “creativity” and a diverse set of options&lt;br/&gt;
(Source: Supplemental Figure 1 from &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot;&gt;Swanson et al.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The results? The AI team successfully designed nanobodies (small antibody-like proteins — this was a choice the team made to pursue nanobodies over more traditional antibodies) that showed improved binding to recent SARS-CoV-2 variants compared to existing versions. While humans provided some guidance, particularly around defining coding tasks, the AI agents handled the bulk of the scientific discussion and iteration.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/image-4.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Experimental validation of some of the designed nanobodies; the relevant comparison is the filled in circles vs the open circles. The higher ELISA assay intensity for the filled in circles shows that the designed nanbodies bind better than their un-mutated original counterparts&lt;br/&gt;
(Source: Figure 5C from &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot;&gt;Swanson et al.&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;This work hints at a future where AI teams become powerful tools for human researchers and organizations. Instead of asking “Will AI replace humans?”, we should be asking “How can humans best orchestrate teams of specialized AI agents to solve complex problems?”&lt;/p&gt;
&lt;p&gt;The implications extend far beyond scientific research. As businesses grapple with implementing AI, this study suggests that success might lie not in deploying a single, all-powerful AI system, but in thoughtfully combining specialized AI agents with human oversight. It’s a reminder that in both human and artificial intelligence, teamwork often trumps individual brilliance.&lt;/p&gt;
&lt;p&gt;I personally am also interested in how different team compositions and working practices might lead to better or worse outcomes — for both AI teams and human teams. Should we have one scientific critic, or should their be specialist critics for each task? How important was the speaking order? What if the group came up with their own agendas? What if there were two principal investigators with different strengths?&lt;/p&gt;
&lt;p&gt;The next frontier in AI might not be building bigger models, but building better teams.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; bioRxiv PrePrint&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;&amp;quot;&amp;quot;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/11/Screenshot-2024-11-13-084455.png&quot; alt=&quot;The Virtual Lab: AI Agents Design New SARS-CoV-2 Nanobodies with Experimental Validation&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Virtual Lab: AI Agents Design New SARS-CoV-2 Nanobodies with Experimental Validation &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Kyle Swanson et al.&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;bioRxiv PrePrint&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.11.11.623004v1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>AI agents</category><category>large language models</category></item><item><title>Updating OpenMediaVault</title><link>https://benjamintseng.com/2024/10/updating-openmediavault/</link><guid isPermaLink="true">https://benjamintseng.com/2024/10/updating-openmediavault/</guid><description>Updating OpenMediaVault</description><pubDate>Sat, 05 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’ve been using &lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;OpenMediaVault 6 on a cheap mini-PC&lt;/a&gt; as a home server for over a year. Earlier this year, &lt;a href=&quot;https://www.openmediavault.org/?p=3663&quot;&gt;OpenMediaVault 7 was announced&lt;/a&gt; which upgrades the underlying Linux to Debian 12 Bookworm and made a number of other security, compatibility, and user interface improvements.&lt;/p&gt;
&lt;p&gt;Not wanting to start over fresh, I decided to take advantage of OpenMediaVault’s built-in command line tool to handle upgrades and, if like me, you are looking for a quick and clean way of upgrading from OpenMediaVault 6 to OpenMediaVault 7, look no further:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SSH into your system&lt;/strong&gt; &lt;strong&gt;/ connect directly with a keyboard and monitor&lt;/strong&gt;. While normally I would recommend &lt;strong&gt;WeTTY&lt;/strong&gt; (accessible via &lt;code&gt;[Services &amp;gt; WeTTY]&lt;/code&gt; from the web console interface) to handle any command line activity on your server, because WeTTY relies on the server to be running and updating the operating system necessitates shutting the server down, you’ll need to either plug in a keyboard and monitor or use SSH.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;sudo omv-upgrade&lt;/kbd&gt; in the command-line&lt;/strong&gt;. This will start a long process of downloading and installing necessary files to complete the operating system update. From time to time you’ll be asked to accept / approve a set of changes via keyboard. If you’re on the online administrative panel, you’ll be booted off as the server shuts down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restart&lt;/strong&gt; &lt;strong&gt;the server&lt;/strong&gt;. Once everything is complete, you’ll need to restart the server to make sure everything “takes”. This can be done by running &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;reboot&lt;/kbd&gt; in the command line or by manually turning off and on the server.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Assuming everything went smoothly, after the server completes its reboot (which will take a little bit of extra time after an operating system upgrade), upon logging into the administrative console as you had done before, you’ll be greeted by the new OMV 7 login screen. Congratulations!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/10/image-1024x850.png&quot; alt/&gt;&lt;/p&gt;</content:encoded><category>OpenMediaVault</category><category>selfhost</category></item><item><title>A Digital Twin of the Whole World in the Cloud</title><link>https://benjamintseng.com/2024/09/a-digital-twin-of-the-whole-world-in-the-cloud/</link><guid isPermaLink="true">https://benjamintseng.com/2024/09/a-digital-twin-of-the-whole-world-in-the-cloud/</guid><description>Reading Note: A Digital Twin of the Whole World in the Cloud</description><pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a kid, I remember playing &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Flight_Simulator_5.0&quot;&gt;Microsoft Flight Simulator 5.0&lt;/a&gt; — while I can’t say I really understood all the nuances of the several hundred page manual (which explained how ailerons and rudders and elevators worked), I remember being blown away with the idea that I could fly anywhere on the planet and see something reasonably representative there.&lt;/p&gt;
&lt;p&gt;Flash forward a few decades and Microsoft Flight Simulator 2024 can safely be said to be one of the most detailed “digital twins” of the whole planet ever built. In addition to detailed photographic mapping of many locations (I would imagine a combination of aerial surveillance and satellite imagery) and an accurate real world inventory of every helipad (including offshore oil rigs!) and glider airport, they also simulate flocks of animals, plane wear and tear, how snow vs mud vs grass behave when you land on it, &lt;a href=&quot;https://en.wikipedia.org/wiki/Wake_turbulence&quot;&gt;wake turbulence&lt;/a&gt;, and more! And, just as impressive, it’s being streamed from the cloud to your PC/console when you play!&lt;/p&gt;
&lt;p&gt;Who said the metaverse is dead?&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IGN&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.ign.com/articles/microsoft-flight-simulator-2024-the-first-preview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“People are dressed in clothes and styles matching their countries of origin. They speak in the language of their home countries. Flying from the US to Finland on a commercial plane? Walk through the cabin: you’ll hear both English and Finnish being spoken by the passengers.
Neumann, who has a supervising producer credit on 2013’s Zoo Tycoon and a degree in biology, has a soft-spot for animals and wants to make sure they’re also being more realistically simulated in MSFS 2024. “I really didn’t like the implementation of the animal flights in 2020,” he admitted. “It really bothered me, it was like, ‘Hey, find the elephants!’ and there’s a stick in the UI and there’s three sad-looking elephants.
“There’s an open source database that has all wild species, extinct and living, and it has distribution maps with density over time,” Neumann continued. Asobo is drawing from that database to make sure animals are exactly where they’re supposed to be, and that they have the correct population densities. In different locations throughout the year, “you will find different stuff, but also they’re migrating,” so where you spot a herd of wildebeests or caribou one day might not be the same place you find them the next.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/msfs2024-oilrigs-04-1726680398598.png&quot; alt=&quot;Microsoft Flight Simulator 2024: The First Preview&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.ign.com/articles/microsoft-flight-simulator-2024-the-first-preview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Microsoft Flight Simulator 2024: The First Preview &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Seth G. Macy&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IGN&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.ign.com/articles/microsoft-flight-simulator-2024-the-first-preview&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>digital twin</category><category>gaming</category><category>Microsoft Flight Simulator</category><category>tech</category></item><item><title>The Startup Battlefield: Lessons from History’s Greatest Military Leaders</title><link>https://benjamintseng.com/2024/09/the-startup-battlefield-lessons-from-historys-greatest-military-leaders/</link><guid isPermaLink="true">https://benjamintseng.com/2024/09/the-startup-battlefield-lessons-from-historys-greatest-military-leaders/</guid><description>The Startup Battlefield: Lessons from History’s Greatest Military Leaders</description><pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It is hard to find good analogies for running a startup that founders can learn from. Some of the typical comparisons — playing competitive sports &amp;amp; games, working on large projects, running large organizations — all fall short of capturing the feeling that the odds are stacked against you that founders have to grapple with.&lt;/p&gt;
&lt;p&gt;But the annals of military history offer a surprisingly good analogy to the startup grind. Consider the campaigns of some of history’s greatest military leaders — like Alexander the Great and Julius Caesar — who successfully waged offensive campaigns against numerically superior opponents in hostile territory. These campaigns have many of the same hallmarks as startups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bad odds&lt;/strong&gt;: Just as these commanders faced superior enemy forces in hostile territory, startups compete against incumbents with vastly more resources in markets that favor them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undefined rules&lt;/strong&gt;: Unlike games with clear rules and a limited set of moves, military commanders and startup operators have broad flexibility of action and must be prepared for all types of competitive responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Great uncertainty&lt;/strong&gt;: Not knowing how the enemy will act is very similar to not knowing how a market will respond to a new offering.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a casual military history enthusiast and a startup operator &amp;amp; investor, I’ve found striking parallels in how history’s most successful commanders overcame seemingly insurmountable odds with how the best startup founders operate, and think that’s more than a simple coincidence.&lt;/p&gt;
&lt;p&gt;In this post, I’ll explore the strategies and campaigns of 9 military commanders (see below) who won battle after battle against numerically superior opponents across a wide range of battlefields. By examining their approach to leadership and strategy, I found 5 valuable lessons that startup founders can hopefully apply to their own ventures.&lt;/p&gt;

































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Leader&lt;/th&gt;&lt;th&gt;Represented&lt;/th&gt;&lt;th&gt;Notable Victories&lt;/th&gt;&lt;th&gt;Legacy&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Alexander_the_Great&quot;&gt;Alexander the Great&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Macedon (336-323 BCE)&lt;/td&gt;&lt;td&gt;Tyre, Issus, Gaugamela, Persian Gate, Hydapses&lt;/td&gt;&lt;td&gt;Conquered the Persian Empire before the age of 32; spread Hellenistic culture across Eurasia and widely viewed in the West as antiquity’s greatest conqueror&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Hannibal&quot;&gt;Hannibal Barca&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Carthage (221-202 BCE)&lt;/td&gt;&lt;td&gt;Ticinus, Trebia, Trasimene, Cannae&lt;/td&gt;&lt;td&gt;Brought Rome the closest to its defeat until its fall in 5th century CE; he operated freely within Italy for over a decade&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Han_Xin&quot;&gt;Han Xin  (韓信)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Han Dynasty (漢朝) (206-202 BCE)&lt;/td&gt;&lt;td&gt;Jingxing (井陘), Wei River (濰水), Anyi (安邑)&lt;/td&gt;&lt;td&gt;Despite being a commoner, his victories led to the creation of the Han Dynasty (漢朝) and his being remembered as one of “the Three Heroes of the Han Dynasty” (漢初三傑)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Julius_Caesar&quot;&gt;Gaius Julius Caesar&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Rome (59-45 BCE)&lt;/td&gt;&lt;td&gt;Alesia, Pharsalus&lt;/td&gt;&lt;td&gt;Established Rome’s dominance in Gaul (France); became undisputed leader of Rome, effectively ending the Roman Republic, and his name has since become synonymous with “emperor” in the West&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Subutai&quot;&gt;Subutai&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Mongol Empire (1211-1248)&lt;/td&gt;&lt;td&gt;Khunan, Kalka River, Sanfengshan ( 三峰山), Mohi&lt;/td&gt;&lt;td&gt;Despite being a commoner, became one of the most successful military commanders in the Mongol Empire. Successfully won battles in more theaters than any other commander (China, Central Asia, and Eastern Europe)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Timur&quot;&gt;Timur&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Timurid Empire (1370-1405)&lt;/td&gt;&lt;td&gt;Kondurcha River, Terek River, Dehli, Ankara&lt;/td&gt;&lt;td&gt;Created Central Asian empire with dominion over Turkey, Persia, Northern India, Eastern Europe, and Central Asia. His successors would eventually create the Mughal Empire in India which continued until the 1850s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/John_Churchill,_1st_Duke_of_Marlborough&quot;&gt;John Churchill, Duke of Marlborough&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Britain (1670-1712)&lt;/td&gt;&lt;td&gt;Blenheim, Ramillies&lt;/td&gt;&lt;td&gt;Considered one of the greatest British commanders in history; Paved the way for Britain to overtake France as the pre-eminent military and economic power in Europe&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Frederick_the_Great&quot;&gt;Frederick the Great&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Prussia (1740-1779)&lt;/td&gt;&lt;td&gt;Hohenfriedberg, Rossbach, Leuthen&lt;/td&gt;&lt;td&gt;Established Prussia as the pre-eminent Central European power after defeating nearly every major European power in battle; A cultural icon for the creation of Germany&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Napoleon&quot;&gt;Napoleon Bonaparte&lt;/a&gt;&lt;/td&gt;&lt;td&gt;France (1785-1815)&lt;/td&gt;&lt;td&gt;Rivoli, Tarvis, Ulm, Austerlitz, Jena-Auerstedt, Friedland, Dresden&lt;/td&gt;&lt;td&gt;Established a French empire with dominion over most of continental Europe; the Napoleonic code now serves as basis for legal systems around the world and the word Napoleon synonymous with military genius and ambition&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Before I dive in, three important call-outs to remember:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Running a startup is not actually warfare — there are limitations to this analogy. Startups are not (and should not be) life-or-death. Startup employees are not bound by military discipline (or the threat of imprisonment if they are derelict). The concept of battlefield deception, which is at the heart of many of the tactics of the greatest commanders, also doesn’t translate well. Treating your employees / co-founders as one would a soldier or condoning violent and overly aggressive tactics would be both an ethical failure and a misread of this analogy.&lt;/li&gt;
&lt;li&gt;Drawing lessons from these historical campaigns does not mean condoning the underlying sociopolitical causes of these conflicts, nor the terrible human and economic toll these battles led to. Frankly, many of these commanders were absolutist dictators with questionable motivations and sadistic streaks. This post’s focus is purely on getting applicable insights on strategy and leadership from leaders who were able to win despite difficult odds.&lt;/li&gt;
&lt;li&gt;This is not intended to be an exhaustive list of every great military commander in history. Rather, it represents the intersection of offensive military prowess and my familiarity with the historical context. Just because I did not mention a particular commander has no bearing on their actual greatness.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With those in mind, let’s explore how the wisdom of historical military leaders can inform the modern startup journey. In the post, I’ll unpack five key principles (see below) drawn from the campaigns of history’s most successful military commanders, and show how they apply to the challenges ambitious founders face today.&lt;/p&gt;























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1. Get in the trenches with your team&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. Achieve and maintain tactical superiority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. Move fast and stay on offense&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Unconventional teams win&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. Pick bold, decisive battles&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;principle-1-get-in-the-trenches-with-your-team&quot;&gt;Principle 1: Get in the trenches with your team&lt;/h2&gt;
&lt;p&gt;One common thread unites the greatest military commanders: their willingness to share in the hardships of their soldiers. This exercise of leadership by example, of getting “in the trenches” with one’s team, is as crucial in the startup world as it was on historical battlefields.&lt;/p&gt;
&lt;p&gt;Every commander on our list was renowned for marching and fighting alongside their troops. This wasn’t mere pageantry; it was a fundamental aspect of their leadership style that yielded tangible benefits:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inspiration&lt;/strong&gt;: Seeing their leader work shoulder-to-shoulder with them motivated soldiers to push beyond their regular limits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trust&lt;/strong&gt;: By sharing in their soldiers’ hardships, commanders demonstrated that they valued their troops and understood their needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insight&lt;/strong&gt;: Direct involvement gave leaders firsthand knowledge of conditions on the ground, informing better strategic decisions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Perhaps no figure exemplified this better than Alexander the Great. Famous for being one of the first soldiers to jump into battle, Alexander was wounded seriously multiple times. This shared experience created a deep bond with his soldiers, culminating in his legendary speech at Opis where he was able to quell a mutiny of his soldiers, tired after years of campaigns, with a speech reminding them of their shared experiences:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Alexander_the_Great,_from_Alexandria,_Egypt,_3rd_cent._BCE,_Ny_Carlsberg_Glyptotek,_Copenhagen_(5)_(36375553176).jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-15.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Alexander the Great from Alexandria, Egypt (3rd Century BCE); Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Alexander_the_Great,_from_Alexandria,_Egypt,_3rd_cent._BCE,_Ny_Carlsberg_Glyptotek,_Copenhagen_(5)_(36375553176).jpg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The wealth of the Lydians, the treasures of the Persians, and the riches of the Indians are yours; and so is the External Sea. You are viceroys, you are generals, you are captains. What then have I reserved to myself after all these labors, except this purple robe and this diadem? I have appropriated nothing myself, nor can any one point out my treasures, except these possessions of yours or the things which I am guarding on your behalf. Individually, however, I have no motive to guard them, since &lt;strong&gt;I feed on the same fare as you do, and I take only the same amount of sleep.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nay, I do not think that my fare is as good as that of those among you who live luxuriously; and I know that I often sit up at night to watch for you, that you may be able to sleep.&lt;/p&gt;
&lt;p&gt;But some one may say, that while you endured toil and fatigue, I have acquired these things as your leader without myself sharing the toil and fatigue. But who is there of you who knows that he has endured greater toil for me than I have for him? &lt;strong&gt;Come now, whoever of you has wounds, let him strip and show them, and I will show mine in turn; for there is no part of my body, in front at any rate, remaining free from wounds&lt;/strong&gt;; nor is there any kind of weapon used either for close combat or for hurling at the enemy, the traces of which I do not bear on my person.&lt;/p&gt;
&lt;p&gt;For I have been wounded with the sword in close fight, I have been shot with arrows, and I have been struck with missiles projected from engines of war; and &lt;strong&gt;though oftentimes I have been hit with stones and bolts of wood for the sake of your lives, your glory, and your wealth, I am still leading you as conquerors over all the land and sea, all rivers, mountains, and plains&lt;/strong&gt;. I have celebrated your weddings with my own, and the children of many of you will be akin to my children.&lt;/p&gt;
&lt;p&gt;Alexander the Great (as told by Arrian)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was not unique to Alexander. Julius Caesar famously slept in chariots and marched alongside his soldiers. Napoleon was called “&lt;em&gt;le petit caporal&lt;/em&gt;” by his troops after he was found sighting the artillery himself, a task that put him within range of enemy fire and was usually delegated to junior officers.&lt;/p&gt;
&lt;p&gt;Frederick the Great also famously mingled with his soldiers while on tour, taking kindly to the nickname from his men, “Old Fritz”. Frederick understood the importance of this as he once wrote to his nephew:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“You cannot, under any pretext whatever, dispense with your presence at the head of your troops, because &lt;strong&gt;two thirds of your soldiers could not be inspired by any other influence except your presence&lt;/strong&gt;.”&lt;/p&gt;
&lt;p&gt;Frederick the Great&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Frederick_the_Great_after_the_Battle_of_Hochkirch_in_1758_by_Carl_R%C3%B6chling.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image.jpeg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“Old Fritz” after the Battle of Hochkirch&lt;br/&gt;
Image credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Frederick_the_Great_after_the_Battle_of_Hochkirch_in_1758_by_Carl_R%C3%B6chling.jpg&quot;&gt;WikiMedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;for-startups&quot;&gt;For Startups&lt;/h4&gt;
&lt;p&gt;For founders, the lesson is clear: show up when &amp;amp; where your team is and roll up your sleeves so they can see you work beside them. It’s not just that startups tend to need “all hands on deck”, but being in the trenches also provides “on the ground” context that is valuable and help create the morale needed to succeed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cnbc.com/2018/04/11/elon-musk-says-he-is-sleeping-on-tesla-factory-floor-to-save-time.html&quot;&gt;Elon Musk, for example, famously spent time on the Tesla factory floor — even sleeping on it&lt;/a&gt; — while the company worked through issues with its Model 3 production, noting in an interview:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“I am personally on that line, in that machine, trying to solve problems personally where I can,” Musk said at the time. “We are working seven days a week to do it. And I have personally been here on zone 2 module line at 2:00 a.m. on a Sunday morning, helping diagnose robot calibration issues. So I’m doing everything I can.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;principle-2-achieve-and-maintain-tactical-superiority&quot;&gt;Principle 2: Achieve and maintain tactical superiority&lt;/h2&gt;
&lt;p&gt;To win battles against superior numbers requires a commander to have a strong &lt;em&gt;tactical&lt;/em&gt; edge over their opponents. This can be in the form of a technological advantage (i.e. a weapons technology) or an organizational one (i.e. superior training or formations), but these successful commanders always made sure their soldiers could “punch above their weight”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alexander the Great&lt;/strong&gt;, for example, leveraged the &lt;a href=&quot;https://en.wikipedia.org/wiki/Macedonian_phalanx&quot;&gt;&lt;em&gt;Macedonian Phalanx&lt;/em&gt;&lt;/a&gt;, a modification of the “classical Greek phalanx” used by the Greek city states of the era, that his father &lt;a href=&quot;https://en.wikipedia.org/wiki/Philip_II_of_Macedon&quot;&gt;Philip II&lt;/a&gt; helped create.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Macedonian_phalanx#/media/File:Macedonian_battle_formation-en.svg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-1024x624.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Image Credit: &lt;a href=&quot;https://en.wikipedia.org/wiki/Macedonian_phalanx#/media/File:Macedonian_battle_formation-en.svg&quot;&gt;RedTony via WikiMedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The formation relied on “blocks” of heavy infantry equipped with six-meter (!!) long spears called &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Sarissa&quot;&gt;sarissa&lt;/a&gt;&lt;/em&gt; which could rearrange themselves (to accommodate different formation widths and depths) and “pin” enemy formations down while the heavy cavalry would flank or exploit gaps in the enemy lines. This formation made Alexander’s army highly effective against every military force — Greeks, Persians, and Indians — it encountered.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Makedonische_phalanx.png&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-2.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Macedonian Phalanx with &lt;em&gt;sarissa&lt;/em&gt;; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Makedonische_phalanx.png&quot;&gt;Wikimedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few centuries later, the brilliant Chinese commander &lt;strong&gt;Han Xin (韓信)&lt;/strong&gt; leaned heavily on the value of &lt;em&gt;military engineering&lt;/em&gt;. Han Xin (韓信)’s soldiers would rapidly repair &amp;amp; construct roads to facilitate his army’s movement or, at times, to deceive his enemies about which path he planned to take. His greatest military engineering accomplishment was at the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Wei_River&quot;&gt;Battle of Wei River (濰水)&lt;/a&gt; in 204 BCE. Han Xin (韓信) attacked the larger forces of the State of Qi (齊) and State of Chu (楚) and immediately retreated across the river, luring them to cross. What his rivals had not realized in their pursuit was that the water level of the Wei River was oddly low. Han Xin (韓信) had, prior to the attack, instructed his soldiers to construct a dam upstream to lower the water level. Once a sizable fraction of the enemy’s forces were mid-stream, Han Xin (韓信) ordered the dam released. The rush of water drowned a sizable portion of the enemy’s forces and divided the Chu (楚) / Qi (齊) forces letting Han Xin (韓信)’s smaller army defeat and scatter them.&lt;/p&gt;
&lt;p&gt;A century and a half later, Roman statesman and military commander &lt;strong&gt;Gaius Julius Caesar&lt;/strong&gt; also famously advocated military engineering capability in his wars with the Germanic tribes in Gaul. He became the first Roman commander to &lt;a href=&quot;https://en.wikipedia.org/wiki/Caesar%27s_Rhine_bridges&quot;&gt;cross the Rhine (twice!) by building bridges&lt;/a&gt; to make the point to the Germanic tribes that he could invade them whenever he wanted. At the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Alesia&quot;&gt;Battle of Alesia&lt;/a&gt; in 52 BCE, after trading battles with the skilled Gallic commander &lt;a href=&quot;https://en.wikipedia.org/wiki/Vercingetorix&quot;&gt;Vercingetorix&lt;/a&gt; who had united the tribes in opposition to Rome, Caesar besieged Vercingetorix’s fortified settlement of Alesia while simultaneously holding off Gallic reinforcements. Caesar did this by building 25 miles of fortifications surrounding Alesia in a month, all while outnumbered and under constant harassment from both sides by the Gallic forces! Caesar’s success forced Vercingetorix to surrender, bringing an end to organized resistance to Roman rule in Gaul for centuries.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Siege-alesia-vercingetorix-jules-cesar.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-12-1024x683.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vercingetorix Throws Down his Arms at the Feet of Julius Caesar by Lionel Royer; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Siege-alesia-vercingetorix-jules-cesar.jpg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Mongol commander &lt;strong&gt;Subutai&lt;/strong&gt; similarly made great use of Mongol innovations to overcome defenders from across Eurasia. The lightweight &lt;a href=&quot;https://en.wikipedia.org/wiki/Military_of_the_Mongol_Empire#Mongol_bow&quot;&gt;&lt;em&gt;Mongol composite bow&lt;/em&gt;&lt;/a&gt; gave Mongol horse archers a devastating combination of long range (supposedly 150-200 meters!) and speed (because they were light enough to be fired while on horseback). The &lt;a href=&quot;https://en.wikipedia.org/wiki/Horse_culture_in_Mongolia#As_warhorses&quot;&gt;&lt;em&gt;Mongol horses&lt;/em&gt;&lt;/a&gt; themselves were another “biotechnological” advantage in that they required less water and food which let the Mongols wage longer campaigns without worrying about logistics.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Mongol_soldiers_by_Rashid_al-Din_1305.JPG&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-1.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mongol horse archers, Image credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Mongol_soldiers_by_Rashid_al-Din_1305.JPG&quot;&gt;Wikimedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the 18th century, &lt;strong&gt;Frederick the Great&lt;/strong&gt; transformed warfare on the European continent with a series of innovations. First, he drilled his soldiers stressing things like &lt;em&gt;firing speed&lt;/em&gt;. It is said that lines of Prussian riflemen could fire over twice as fast as other European armies they faced, making them exceedingly lethal in combat.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://militaryheritage.com/musket19.htm&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-3-1024x412.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Frederick’s Leibgarde Batallion in action; Image credit: &lt;a href=&quot;https://militaryheritage.com/musket19.htm&quot;&gt;Military Heritage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Frederick was also famous for a battle formation: the &lt;a href=&quot;https://en.wikipedia.org/wiki/Oblique_order&quot;&gt;&lt;em&gt;oblique order&lt;/em&gt;&lt;/a&gt;. Instead of attacking an opponent head on, the oblique order involves confronting the enemy line at an angle with soldiers massed towards one end of the formation. If one’s soldiers are well-trained and disciplined, then even with a smaller force in aggregate, the massed wing can overwhelm the opponent in one area and then flank or surround the rest. Frederick famously boasted that the oblique order could allow a skilled force to win over an opposing one three times its size.&lt;/p&gt;
&lt;p&gt;Finally, Frederick is credited with popularizing &lt;a href=&quot;https://en.wikipedia.org/wiki/Horse_artillery&quot;&gt;&lt;em&gt;horse artillery&lt;/em&gt;&lt;/a&gt;, the use of horse-drawn light artillery guns, in European warfare. With horse artillery units, Frederick was able to increase the adaptability of his forces and their ability to break through even numerically superior massed infantry by concentrating artillery fire where it was needed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Procession_of_horse-drawn_cannons_MET_DP833201.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-4-1024x503.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Horse-drawn artillery unit; Image credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Procession_of_horse-drawn_cannons_MET_DP833201.jpg&quot;&gt;Wikimedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few decades later, &lt;strong&gt;Napoleon Bonaparte&lt;/strong&gt; became the undisputed master of much of continental Europe by mastering army-level logistics and organization. While a brilliant tactician and artillery commander, what set Napoleon’s military apart was its embrace of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Grande_Arm%C3%A9e#Organisation&quot;&gt;&lt;em&gt;“corps system”&lt;/em&gt;&lt;/a&gt;, which subdivided his forces into smaller, self-contained corps that were capable of independent operations. This allowed Napoleon the ability to pursue grander goals, knowing that he could focus his attention on the most important fronts of battle, while the other corps could independently pin an enemy down or pursue a different objective in parallel.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Charles_Meynier_-_Napoleon_in_Berlin.png&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-5-1024x684.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Napoleon triumphantly entering Berlin by Charles Meynier; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Charles_Meynier_-_Napoleon_in_Berlin.png&quot;&gt;Wikimedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Additionally, Napoleon invested heavily in overhauling &lt;em&gt;military logistics&lt;/em&gt;, using a combination of forward supply depots and teaching his forces to forage for food and supplies in enemy territory (and, just as importantly, how to estimate what foraging can do to help determine the necessary supplies to take). This investment led to the invention of &lt;a href=&quot;https://en.wikipedia.org/wiki/Canning#French_origins&quot;&gt;modern canning technology&lt;/a&gt;, first used to support the marches of the French &lt;em&gt;Grande Armée&lt;/em&gt;. The result was Napoleon could field larger armies over longer campaigns all while keeping his soldiers relatively well-fed.&lt;/p&gt;
&lt;h4 id=&quot;for-startups-1&quot;&gt;For Startups&lt;/h4&gt;
&lt;p&gt;Founders need to make sure they have a strong tactical advantage that fits their market(s). As evidenced above, it does not need to be something as grand as an unassailable advantage, but it needs to be a &lt;em&gt;reliable winner&lt;/em&gt; &lt;em&gt;and something you continuously invest in&lt;/em&gt; if you plan on competing with well-resourced incumbents in challenging markets.&lt;/p&gt;
&lt;p&gt;The successful payments company Stripe started out by making sure they would always win on developer ease of use, even going so far as to &lt;a href=&quot;https://read.first1000.co/p/-stripe&quot;&gt;charge more than their competition during their Beta&lt;/a&gt; to make sure that their developer customers were valuing them for their ease of use. Stripe’s advantage here, and continuous investment in maintaining that advantage, ultimately let it win any customer that needed a developer payment integration, even against massive financial institutions. This advantage laid the groundwork for Stripe’s meteoric growth and expansion into adjacent categories from its humble beginnings.&lt;/p&gt;
&lt;h2 id=&quot;principle-3-move-fast-and-stay-on-offense&quot;&gt;Principle 3: Move fast and stay on offense&lt;/h2&gt;
&lt;p&gt;In both military campaigns and startups, speed and a focus on offense plays an outsized role in victory, because the ability to move quickly creates opportunities and increases resiliency to mistakes.&lt;/p&gt;
&lt;p&gt;Few understood this principle as well as the Mongol commander &lt;strong&gt;Subutai&lt;/strong&gt; who frequently took advantage of the greater speed and discipline of the Mongol cavalry to create opportunities to win.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;https://en.m.wikipedia.org/wiki/Battle_of_the_Kalka_River&quot;&gt;Battle of the Kalka River&lt;/a&gt; (1223), Subutai took what initially appeared to be a Mongol defeat — when the &lt;a href=&quot;https://en.wikipedia.org/wiki/Kievan_Rus%27&quot;&gt;Kievan Rus&lt;/a&gt; and their &lt;a href=&quot;https://en.m.wikipedia.org/wiki/Cumans&quot;&gt;Cuman allies&lt;/a&gt; successfully entrapped the Mongol forces in the area — and turned it into a victory. The Mongols began a &lt;em&gt;9 day&lt;/em&gt; feigned retreat (many historians believe this was a real retreat that Subutai turned into a feigned one once he realized the situation), constantly tempting the enemy by staying just out of reach into overextending themselves in pursuit.&lt;/p&gt;
&lt;p&gt;After 9 days, Subutai’s forces took advantage of their greater speed to lay a trap. Once the Mongols crossed the river they reformed their lines to lie in ambush. As soon as the Rus forces crossed the Kalka River, they found themselves surrounded and confronted with a cavalry charge they were completely unprepared for. After all, they had been pursuing what they thought was a fleeing enemy! Their backs against the river, the Rus forces (including several major princes) were annihilated.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Bataille_de_la_Kalka,_en_1224.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/08/image-6-1024x821.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Battle of Kalka River; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Bataille_de_la_Kalka,_en_1224.jpg&quot;&gt;Wikimedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Subutai took advantage of the Mongol speed advantage in a number of his campaigns, coordinating fast-moving Mongol divisions across multiple objectives. In &lt;a href=&quot;https://en.wikipedia.org/wiki/Mongol_invasion_of_the_Khwarazmian_Empire&quot;&gt;its destruction of the Central Asian Khwarazmian empire&lt;/a&gt;, the Mongols, under the command of Subutai and Mongol ruler Genghis Khan, overwhelmed the defenders with coordinated maneuvers. While much of the Mongol forces attacked from the East, where the Khwarazmian forces massed, Subutai used the legendary Mongol speed to go around the Khwarazmian lines altogether, &lt;a href=&quot;https://en.wikipedia.org/wiki/Siege_of_Bukhara&quot;&gt;ending up at Bukhara, &lt;em&gt;100 miles to the West&lt;/em&gt; of the Khwarazmian defensive position&lt;/a&gt;! In a matter of months, the empire was destroyed and its rulers chased out, never to return.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Map of the Mongol force movements in the Mongol invasion of Khwarazmian Empire; Image Credit: &lt;a href=&quot;https://global.oup.com/academic/product/masters-of-the-battlefield-9780195342352&quot;&gt;Paul K. Davis, &lt;em&gt;Masters of the Battlefield&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few hundred years later, the Englishman &lt;strong&gt;John Churchill, the Duke of Marlborough&lt;/strong&gt; also proved the value of speed in 1704 when he boldly marched an army of 21,000 Dutch and English troops on a 250-mile march across Europe in just five weeks to place themselves between French and Bavarian forces and their target of Vienna. Had Vienna been attacked, it would have forced England’s ally the Holy Roman Empire out of the conflict, giving France the victory in the War of the Spanish Succession. This march was made all the more challenging as Marlborough had to find a way to feed and equip his army along this march without unnecessarily burdening the neutral and friendly territories they were marching through.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.m.wikipedia.org/wiki/File:March_to_the_Danube_1704.png&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-6.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Marlborough’s “march to the Danube”; Image Credit: &lt;a href=&quot;https://en.m.wikipedia.org/wiki/File:March_to_the_Danube_1704.png&quot;&gt;Rebel Redcoat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Marlborough’s maneuver threw the Bavarian and French forces off-balance. What originally was supposed to be an “easy” French victory culminated in &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Blenheim&quot;&gt;a crushing defeat for the French at Blenheim&lt;/a&gt; which turned the momentum of the war. This victory solidified Marlborough’s reputation and even resulted in the British government agreeing to build a lavish palace (called &lt;a href=&quot;https://en.wikipedia.org/wiki/Blenheim_Palace&quot;&gt;Blenheim Palace&lt;/a&gt; in honor of the battle) as a reward to Marlborough.&lt;/p&gt;
&lt;p&gt;Marlborough proved the importance of speed again at &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Oudenarde&quot;&gt;the Battle of Oudenarde&lt;/a&gt;. In 1708, French forces captured Ghent and Bruges (in modern day Belgium), threatening the alliance’s ability to maintain contact with Britain. Recognizing this, Marlborough force-marched his army to the city of Oudenarde, marching 30 miles in about as many hours. The French, confident from their recent victories and suffering from an internal leadership squabble, misjudged the situation, allowing Marlborough’s forces to build five pontoon bridges to move his 80,000 soldiers across the nearby river.&lt;/p&gt;
&lt;p&gt;When the French commander received news that the allies were already at Oudenarde building bridges, he said, “If they are there, then the devil must have carried them. &lt;em&gt;Such marching is impossible!&lt;/em&gt;“&lt;/p&gt;
&lt;p&gt;Marlborough’s forces, not yet at full strength, engaged the French, buying sufficient time for his forces to cross and form up. Once in formation, they counterattacked and collapsed one wing of the French line, saving the Allied position in the Netherlands, and resulting in a bad defeat for French forces.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Battle_oudenarde_-_plan.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-4.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Battle of Oudenarde, showing the position of the bridges the Allied forces needed to cross to get into position; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Battle_oudenarde_-_plan.jpg&quot;&gt;WikiMedia Commons&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;for-startups-2&quot;&gt;For Startups&lt;/h4&gt;
&lt;p&gt;The pivotal role speed played in achieving victory for Subutai and the Duke of Marlborough apply in the startup domain as well. The ability to make fast decisions, to quickly shift focus to rapidly adapt to a new market context creates opportunities that slower moving incumbents (and military commanders!) cannot seize. Speed also gifts resiliency against mistakes and weak positions, in much the same way that speed let the Mongols and the Anglo-Prussian-Dutch alliance overcome their initial missteps at Kalka River and Oudenarde. Founders would be wise to remember to embrace speed of action in all they do.&lt;/p&gt;
&lt;p&gt;Facebook and it’s (now in)famous “move fast, break things” motto is one classic example of &lt;a href=&quot;https://blog.southparkcommons.com/move-fast-or-die/&quot;&gt;how a company can internalize speed as a culture&lt;/a&gt;. It leveraged that to ship products and features which has kept it a leader in social and AI even in the face of constant competition and threats from well-funded companies like Google, Snapchat, and Bytedance.&lt;/p&gt;
&lt;h2 id=&quot;principle-4-unconventional-teams-win&quot;&gt;Principle 4: Unconventional teams win&lt;/h2&gt;
&lt;p&gt;Another unifying hallmark of the great commanders is that they made unconventional choices with regards to their army composition. Relative to their peers, these commanders tended to build armies that were more diverse in class and nationality. While this required exceptional communication and inspiration skills, it gave the commanders significant advantages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ability to recruit in challenging conditions&lt;/strong&gt;: For many of the commanders, the unconventional team structure was a necessity to build up the forces they needed given logistical / resource constraints while operating in enemy territory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational flexibility from new tactics&lt;/strong&gt;: Bringing on personnel from different backgrounds let commanders incorporate additional tactics and strategies, creating a more effective and flexible fighting force.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Carthaginian general &lt;strong&gt;Hannibal Barca&lt;/strong&gt; for example famously fielded a multi-nationality army consisting of Carthaginians, Libyans, Iberians, Numidians, Balearic soldiers, Gauls, and Italians. This allowed Hannibal to raise an army in hostile territory — after all, waging war in the heart of Italy against Rome made it difficult to get reinforcements from Carthage.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.angelfire.com/empire2/unkemptgoose/TheCarthaginians.html&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-7.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Illustration of troop types employed in the Second Punic War by Carthage/Hannibal Barca; Image Credit: &lt;a href=&quot;https://www.angelfire.com/empire2/unkemptgoose/TheCarthaginians.html&quot;&gt;Travis’s Ancient History&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But, it also gave Hannibal’s army flexibility in tactics. &lt;a href=&quot;https://en.wikipedia.org/wiki/Balearic_slinger&quot;&gt;Balearic slingers&lt;/a&gt; provided superior long range attack to the best Roman-used bows of the time. &lt;a href=&quot;https://en.wikipedia.org/wiki/Numidian_cavalry&quot;&gt;Numidian light cavalry&lt;/a&gt; provided Hannibal with fast reconnaissance and a quick way to flank and outmaneuver Roman forces. Gallic and Iberian soldiers provided shock infantry and cavalry. Each of these groups of soldiers added their own distinctive capabilities to Hannibal’s armies and great victories over Rome.&lt;/p&gt;
&lt;p&gt;The Central Asian conqueror &lt;strong&gt;Timur&lt;/strong&gt; similarly fielded a diverse army which included Mongols, Turks, Persians, Indians, Arabs, and others. This allowed Timur to field larger armies for his campaigns by recruiting from the countries he forced into submission. Like with Hannibal, it also gave Timur’s army access to a diverse set of tactics: war elephants (from India), infantry and siege technology from the Persians, gunpowder from the Ottomans, and more. This combination of operational flexibility and ability to field large armies let Timur build an empire which defeated every major power in Central Asia and the Middle East.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Timur_defeats_the_sultan_of_Delhi.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-8.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Defeat by Timur of the Sultan of Dehli (from the Imperial Library of Emperor Akbar);&lt;br/&gt;
Image credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Timur_defeats_the_sultan_of_Delhi.jpg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It should not be a surprise that some of the great commanders were drawn towards assembling unconventional teams as several of them were ultimately “commoners”. &lt;strong&gt;Subutai&lt;/strong&gt; (a son of a blacksmith who Genghis Khan took interest in), &lt;strong&gt;Timur&lt;/strong&gt; (a common thief), and &lt;strong&gt;Han Xin&lt;/strong&gt; (&lt;strong&gt;韓信&lt;/strong&gt;, who famously had to beg for food in his childhood) all came from relatively humble origins. &lt;strong&gt;Napoleon&lt;/strong&gt;, famous for declaring the military “&lt;em&gt;la carrier est ouvérte aux talents&lt;/em&gt;” (“the career open to the talents”) and creating the first modern order of merit &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Legion_of_Honour&quot;&gt;Légion d’honneur&lt;/a&gt;&lt;/em&gt; (open to all, regardless of social class), was similarly motivated by the difficulties he faced in securing promotion early in his career due to his not being from the French nobility.&lt;/p&gt;
&lt;p&gt;But, by embracing more of a meritocracy, Napoleon was ultimately able to field some of the largest European armies in existence as he waged war successfully against every other major European power (at once).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Debret_-_Premiere_distribution_des_decorations_de_la_Legion_d%27honneur.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-9-1024x775.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;First Légion d’Honneur Investiture&lt;/em&gt; by Jean-Baptiste Debret;&lt;br/&gt;
Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Debret_-_Premiere_distribution_des_decorations_de_la_Legion_d%27honneur.jpg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;for-startups-3&quot;&gt;For Startups&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2023/12/the-only-3-things-a-startup-ceo-needs-to-master/&quot;&gt;Hiring is one of the key tasks for startup founders&lt;/a&gt;. While hiring the people that larger, better-resourced companies want to can be helpful for a startup, it’s important to always remember that transformative victories require unconventional approaches. Leaning on unconventional hires may help you get out of a salary bidding war with those deeper-pocketed competitors. Choosing unconventional hires may also add different skills and perspectives to the team.&lt;/p&gt;
&lt;p&gt;In pursuing this strategy, it’s also vital to excel at communication &amp;amp; organization as well as fostering a shared sense of purpose. All teams require strong leadership to be effective but this is especially true with an unconventional team composition facing uphill odds.&lt;/p&gt;
&lt;p&gt;The enterprise API company Zapier is one example of taking an unconventional approach to team construction &lt;a href=&quot;https://zapier.com/blog/why-work-remotely/&quot;&gt;by having been 100% remote from inception&lt;/a&gt; (pre-COVID even). This let the company assemble a team without being confined by location and eliminate the need to spend on unnecessary facilities. They’ve had to invest in norms around documentation and communication to make this work, and, while it’d be too far of a leap to argue all startups should go 100% remote, for Zapier’s market and team culture, it’s worked.&lt;/p&gt;
&lt;h2 id=&quot;principle-5-pick-bold-decisive-battles&quot;&gt;Principle 5: Pick bold, decisive battles&lt;/h2&gt;
&lt;p&gt;When in a challenging environment with limited resources, it’s important to prioritize decisive moves — actions which can result in a huge payoff — even if risky over safer, less impactful ones. This is as true for startups, which have limited runway and need to make a big splash in order to fundraise, as for military commanders who need more than just battlefield wins but &lt;em&gt;strategic&lt;/em&gt; victories.&lt;/p&gt;
&lt;p&gt;Few understood this as well as the Carthaginian general &lt;strong&gt;Hannibal Barca&lt;/strong&gt; who, in waging the Second Punic War against Rome, &lt;a href=&quot;https://en.wikipedia.org/wiki/Hannibal%27s_crossing_of_the_Alp&quot;&gt;crossed the Alps from Spain with his army in 218 BCE&lt;/a&gt; (at the age of 29!). Memorialized in many works of art (see below for one by Francisco Goya), this was a dangerous move (one that resulted in the loss of many men and almost his entire troop of war elephants) and was widely considered to be impossible.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:An%C3%ADbal_vencedor_que_por_primera_vez_mira_Italia_desde_los_Alpes_-_Francisco_Goya.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-11-1024x676.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Victorious Hannibal Seeing Italy from the Alps for the First Time&lt;/em&gt; by Francisco Goya in Museo del Prado; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:An%C3%ADbal_vencedor_que_por_primera_vez_mira_Italia_desde_los_Alpes_-_Francisco_Goya.jpg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While history (rightly) remembers Hannibal’s boldness, it’s important to remember that Hannibal’s move was highly calculated. He realized that the Gauls in Northern Italy, who had recently been subjugated by the Romans, were likely to welcome a Roman rival. Through his spies, he also knew that Rome was planning an invasion of Carthage in North Africa. He knew he had little chance to bypass the Roman navy or Roman defensive placements if he invaded in another way.&lt;/p&gt;
&lt;p&gt;And Hannibal’s bet paid off! Having caught the Romans entirely by surprise, they cancelled their planned invasion of Africa, and Hannibal lined up many Gallic allies to his cause. Within two years of his entry into Italy, Hannibal trounced the Roman armies sent to battle him at the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Ticinus&quot;&gt;River Ticinus&lt;/a&gt;, at the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_the_Trebia&quot;&gt;River Trebia&lt;/a&gt;, and at &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Lake_Trasimene&quot;&gt;Lake Trasimene&lt;/a&gt;. Shocked by their losses, the Romans elected two &lt;a href=&quot;https://en.wikipedia.org/wiki/Roman_consul&quot;&gt;consuls&lt;/a&gt; with the mandate to battle Hannibal and stop him once and for all.&lt;/p&gt;
&lt;p&gt;Knowing this, Hannibal seized a supply depot at the town of &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Cannae&quot;&gt;Cannae&lt;/a&gt;, presenting a tempting target to the Roman consuls to prove themselves. They (foolishly) took the bait. Despite fielding over 80,000 soldiers against Hannibal’s 50,000, Hannibal successfully executed a legendary double-envelopment maneuver (see below) and slaughtered almost the entire Roman force that met him in battle.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/File:Battle_cannae_destruction.svg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-14.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hannibal’s double envelopment of Roman forces at Cannae;&lt;br/&gt;
Image Credit: &lt;a href=&quot;https://en.wikipedia.org/wiki/File:Battle_cannae_destruction.svg&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To put this into perspective, in the 2 years after Hannibal crossed the Alps, &lt;em&gt;Hannibal’s army killed 20% of all male Romans over the age of 17&lt;/em&gt; (including at least 80 &lt;a href=&quot;https://en.wikipedia.org/wiki/Roman_Senate&quot;&gt;Roman Senators&lt;/a&gt; and one previous consul). Cannae is today considered one of the greatest examples of military tactical brilliance, and, as historian Will Durant wrote, “a supreme example of generalship, never bettered in history”.&lt;/p&gt;
&lt;p&gt;Cannae was a great example of Hannibal’s ability to pick a decisive battle with favorable odds. Hannibal knew that his only chance was to encourage the city-states of Italy to side with him. He knew the Romans had just elected consuls itching for a fight. He chose the field of battle by seizing a vital supply depot at Cannae. Considering the Carthaginians had started and pulled back from several skirmishes with the Romans in the days leading up to the battle, it’s clear Hannibal also chose &lt;em&gt;when&lt;/em&gt; to fight, knowing full well the Romans outnumbered him. After Cannae, many Italian city-states and the kingdom of Macedon sided with Carthage. That Carthage ultimately lost the Second Punic War is a testament more to Rome’s indomitable spirit and the sheer odds Hannibal faced than any indication of Hannibal’s skills.&lt;/p&gt;
&lt;p&gt;In the Far East, about a decade later, the brilliant Chinese military commander &lt;strong&gt;Han Xin&lt;/strong&gt; (&lt;strong&gt;韓信&lt;/strong&gt;) was laying the groundwork for the creation of the Han Dynasty (漢朝) in a China-wide civil war known as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Chu%E2%80%93Han_Contention&quot;&gt;the Chu-Han contention&lt;/a&gt; between the &lt;em&gt;State of Chu (楚)&lt;/em&gt; and the &lt;em&gt;State of Han (漢)&lt;/em&gt; led by &lt;a href=&quot;https://en.wikipedia.org/wiki/Emperor_Gaozu_of_Han&quot;&gt;Liu Bang&lt;/a&gt; (劉邦, who would become the founding emperor Gaozu 高祖 of the Han Dynasty 漢朝).&lt;/p&gt;
&lt;p&gt;Under the leadership of Han Xin (韓信), the State of Han (漢) won many victories over their neighbors. Overconfident from those victories, his king Liu Bang (劉邦) led a Han (漢) coalition to &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Pengcheng&quot;&gt;a catastrophic defeat when he briefly captured but then lost the Chu (楚) capital of Pengcheng (彭城) in 205 BCE&lt;/a&gt;. Chu forces (楚) were even able to capture the king’s father and wife as hostages, and several Han (漢) coalition states switched their loyalty to the Chu (楚).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Eighteen_Kingdoms.png&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-16.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Map of the 18 states that existed at the start of the Chu-Han Contention, the two sides being the Han (in light purple on the Southwest) and the Chu (in green on the East); Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Eighteen_Kingdoms.png&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To fix his king’s blunder, Han Xin (韓信) tasked the main Han (漢) army with setting up fortified positions in the Central Plain, drawing Chu (楚) forces there. Han Xin (韓信) would himself take a smaller force of less experienced soldiers to attack rival states in the North to rebuild the Han (漢) military position.&lt;/p&gt;
&lt;p&gt;After successfully subjugating the State of Wei (魏), Han Xin (韓信)’s forces moved &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Jingxing&quot;&gt;to attack the State of Zhao (趙, also called Dai 代) through the Jingxing Pass (井陘關)&lt;/a&gt; in late 205 BCE. The Zhao (趙) forces, which outnumbered Han Xin (韓信)’s, encamped on the plain just outside the pass to meet them.&lt;/p&gt;
&lt;p&gt;Sensing an opportunity to deal a decisive blow to the overconfident Zhao (趙), Han Xin (韓信) ordered a cavalry unit to sneak into the mountains behind the Zhao (趙) camp and to remain hidden until battle started. He then ordered half of his remaining army to position themselves in full view of the Zhao (趙) forces with their backs to the Tao River (洮水), something Sun Tzu’s Art of War (孫子兵法) explicitly advises against (due to the inability to retreat). This “error” likely reinforced the Zhao (趙) commander’s overconfidence, as he made no move to pre-emptively flank or deny the Han (漢) forces their encampment.&lt;/p&gt;
&lt;p&gt;Han Xin (韓信) then deployed his full army which lured the Zhao (趙) forces out of their camp to counterattack. Because the Tao River (洮水) cut off all avenues of escape, the outnumbered Han (漢) forces had no choice but to dig in and fight for their lives, just barely holding the Zhao (趙) forces at bay. By luring the enemy out for what appeared to be “an easy victory”, Han Xin (韓信) created an opportunity for his hidden cavalry unit to capture the enemy Zhao (趙) camp, replacing their banners with those of the Han (漢). The Zhao (趙) army saw this when they regrouped, which resulted in widespread panic as the Zhao (趙) army concluded they must be surrounded by a superior force. The opposition’s morale in shambles, Han Xin (韓信) ordered a counter-attack and the Zhao (趙) army crumbled, resulting in the deaths of the Zhao (趙) commander and king!&lt;/p&gt;
&lt;p&gt;Han Xin (韓信) bet his entire outnumbered command on a deception tactic based on little more than an understanding of his army’s and the enemy’s psychology. He won a decisive victory which helped reverse the tide of the war. The State of Zhao (趙) fell, and the State of Jiujiang (九江) and the State of Yan (燕) switched allegiances to the Han (漢). This battle even inspired a Chinese expression “fighting a battle with one’s back facing a river” (背水一戰) to describe fighting for survival in a “last stand”.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-17-1024x766.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Caesar crosses the Rubicon by Bartolomeo Pinelli; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:Cesare_varca_rubicone_bartolomeo_pinelli.png&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Roughly a century later, on the other side of the world, the Roman statesman and military commander &lt;strong&gt;Julius Caesar&lt;/strong&gt; made a career of turning bold, decisive bets into personal glory. After Caesar conquered Gaul, Caesar’s political rivals led by &lt;a href=&quot;https://en.wikipedia.org/wiki/Pompey&quot;&gt;Gnaeus Pompeius Magnus&lt;/a&gt; (Pompey the Great), a famed military commander, demanded Caesar return to Rome and give up his command. Caesar refused and &lt;a href=&quot;https://origins.osu.edu/read/julius-caesar-crosses-rubicon&quot;&gt;crossed the Rubicon&lt;/a&gt;, a river marking the boundary of Italy, in January 49 BCE starting a &lt;a href=&quot;https://en.wikipedia.org/wiki/Caesar%27s_civil_war&quot;&gt;Roman Civil War&lt;/a&gt; and coining at least two famous expressions (including &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Alea_iacta_est&quot;&gt;alea iacta est&lt;/a&gt;&lt;/em&gt; – “the die is cast”) for “the point of no return”.&lt;/p&gt;
&lt;p&gt;This bold move came as a complete shock to the Roman elite. Pompey and his supporters fled Rome. Taking advantage of this, Caesar captured Italy without much bloodshed. Caesar then pursued Pompey to Macedon, seeking a decisive land battle which Pompey, wisely, given his broad network of allies and command of the Roman navy, refused to give him. Instead, Caesar &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Dyrrhachium_(48_BC)&quot;&gt;tried and failed to besiege Pompey at Dyrrhachium&lt;/a&gt; which forced him into retreat in Greece.&lt;/p&gt;
&lt;p&gt;Pompey’s supporters, however, lacked Pompey’s patience (and judgement). Overconfident from their naval strength, numerical advantage, and Caesar’s failure at Dyrrhachium, they pressured Pompey into a battle with Caesar who was elated at the opportunity. In the summer of 48 BCE, the two sides met at the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_Pharsalus&quot;&gt;Battle of Pharsalus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://commons.wikimedia.org/wiki/File:BattlePharsalus-LIX.png&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/09/image-18-1024x611.png&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The initial battle formations at the Battle of Pharsalus; Image Credit: &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:BattlePharsalus-LIX.png&quot;&gt;Wikimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Always cautious, Pompey took up a position on a mountain and oriented his forces such that his larger cavalry wing would have ability to overpower Caesar’s cavalry and then flank Caesar’s forces while his numerically superior infantry would be arranged deeper to smash through or at least hold back Caesar’s lines.&lt;/p&gt;
&lt;p&gt;Caesar made a bold tactical choice when he saw Pompey’s formation. He thinned his (already outnumbered) lines to create a 4th reserve line of veterans which he positioned behind his cavalry at an angle (see battle formation above).&lt;/p&gt;
&lt;p&gt;Caesar initiated the battle and attacked with two of his infantry lines. As Caesar expected, Pompey ordered a cavalry charge which soon forced back Caesar’s outnumbered cavalry. But Pompey’s cavalry then encountered Caesar’s 4th reserve line which had been instructed to use their javelins to stab at the faces of Pompey’s cavalry like bayonets. Pompey’s cavalry, while larger in size, was made up of relatively inexperienced soldiers and the shock of the attack caused them to panic. This let Caesar’s cavalry regroup and, with the 4th reserve line, swung around Pompey’s army completing an expert flanking maneuver. Pompey’s army, now surrounded, collapsed once Caesar sent his final reserve line into battle.&lt;/p&gt;
&lt;p&gt;Caesar’s boldness and speed of action let him take advantage of a lapse in Pompey’s judgement. Seeing a rare opportunity to win a decisive battle, Caesar was even willing to risk a disadvantage in infantry, cavalry, and position (Pompey’s army had the high ground and had forced Caesar to march to him). But this strategic and tactical gamble (thinning his lines to counter Pompey’s cavalry charge) paid off as Pharsalus shattered the myth of Pompey’s inevitability. Afterwards, Pompey’s remaining allies fled or defected to Caesar, and Pompey himself fled to Egypt where he was assassinated (by a government wishing to win favor with Caesar). And, all of this — from Gaul to crossing the Rubicon to the Civil War — paved the way for Caesar to become the undisputed master of Rome.&lt;/p&gt;
&lt;h4 id=&quot;for-startups-4&quot;&gt;For Startups&lt;/h4&gt;
&lt;p&gt;Founders need to take bold, oftentimes uncomfortable bets that have large payoffs. While a large company can take its time winning a war of attrition, startups need to score decisive wins &lt;em&gt;quickly&lt;/em&gt; in order to attract talent, win deals, and shift markets towards them. Only taking the “safe and rational” path is a failure to recognize the opportunity cost when operating with limited resources.&lt;/p&gt;
&lt;p&gt;In other words, founders need to find their own Alps / Rubicons to cross.&lt;/p&gt;
&lt;p&gt;In the startup world, few moves are as bold (while also uncomfortable and risky) as big pivots. But, there are examples of incredible successes like Slack that were able to make this work. In Slack’s case, &lt;a href=&quot;https://techcrunch.com/2019/05/30/the-slack-origin-story/&quot;&gt;the game they originally developed ended up a flop&lt;/a&gt;, but CEO &amp;amp; founder Stewart Butterfield felt the messaging product they had built to support the game development had potential. Leaning on that insight, over the skepticism of much of his team and &lt;a href=&quot;https://www.businessinsider.com/ben-horowitz-says-slack-was-an-accidental-investment-2015-5&quot;&gt;some high profile investors&lt;/a&gt;, Butterfield made a bet-the-company move similar to Han Xin (韓信) digging in with no retreat which created a seminal product in the enterprise software space.&lt;/p&gt;
&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;I hope I’ve been able to show that history’s greatest military commanders can offer valuable lessons on leadership and strategy for startup founders.&lt;/p&gt;
&lt;p&gt;The five principles derived from studying some of the commanders’ campaigns – the importance of getting in the trenches, achieving tactical superiority, moving fast, building unconventional teams, and picking bold, decisive battles – played a key role in the commanders’ success and generalize well to startup execution.&lt;/p&gt;
&lt;p&gt;After all, what is a more successful founder than one who can recruit teams despite resource constraints (unconventional teams), inspire them (by getting in the trenches alongside them), and move with speed &amp;amp; urgency (move fast) to take a competitive edge (achieve tactical superiority) and apply it where there is the greatest chance of a huge impact on the market (pick bold, decisive battles).&lt;/p&gt;</content:encoded><category>Alexander the Great</category><category>Duke of Marlborough</category><category>Frederick the Great</category><category>Han Xin</category><category>Hannibal Barca</category><category>Julius Caesar</category><category>military history</category><category>Napoleon Bonaparte</category><category>startups</category><category>Subutai</category><category>Timur</category></item><item><title>Making a Movie to Make Better Video Encoding</title><link>https://benjamintseng.com/2024/07/making-a-movie-to-make-better-video-encoding/</link><guid isPermaLink="true">https://benjamintseng.com/2024/07/making-a-movie-to-make-better-video-encoding/</guid><description>Reading Note: Making a Movie to Make Better Video Encoding</description><pubDate>Fri, 12 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Until I read &lt;a href=&quot;https://www.theverge.com/2024/6/22/24171581/netflix-bet-advanced-encoding-anne-aaron&quot;&gt;this Verge article&lt;/a&gt;, I had assumed that video codecs were a boring affair. In my mind, every few years, the industry would get together and come up with a new standard that promised better compression and better quality for the prevailing formats and screen types and, after some patent licensing back and forth, the industry would standardize around yet another &lt;a href=&quot;https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding&quot;&gt;MPEG standard&lt;/a&gt; that everyone uses. Rinse and repeat.&lt;/p&gt;
&lt;p&gt;The article was an eye-opening look at how video streamers like Netflix are pushing the envelope on using video codecs. Since one of a video streamer’s core costs is the cost of video bandwidth, it would make sense that they would embrace new compression approaches (like different kinds of compression for different content, etc.) to reduce those costs. As Netflix embraces more live streaming content, it seems they’ll need to create new methods to accommodate.&lt;/p&gt;
&lt;p&gt;But what jumped out to me the most was that, in order to better test and develop the next generation of codec, they produced a real 12 minute noir film called &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Meridian_(film)&quot;&gt;Meridian&lt;/a&gt;&lt;/em&gt; (you can access it on Netflix, below is someone who uploaded it to YouTube) which presents scenes that have historically been more difficult to encode with conventional video codecs (extreme lights and shadows, cigar smoke and water, rapidly changing light balance, etc).&lt;/p&gt;
&lt;p&gt;Absolutely wild.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Verge&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theverge.com/2024/6/22/24171581/netflix-bet-advanced-encoding-anne-aaron&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“While contributing to the development of new video codecs, Aaron and her team stumbled across another pitfall: video engineers across the industry have been relying on a relatively small corpus of freely available video clips to train and test their codecs and algorithms, and most of those clips didn’t look at all like your typical Netflix show. “The content that they were using that was open was not really tailored to the type of content we were streaming,” recalled Aaron. “So, we created content specifically for testing in the industry.”
In 2016, Netflix released a 12-minute 4K HDR short film called Meridian that was supposed to remedy this. Meridian looks like a film noir crime story, complete with shots in a dusty office with a fan in the background, a cloudy beach scene with glistening water, and a dark dream sequence that’s full of contrasts. Each of these shots has been crafted for video encoding challenges, and the entire film has been released under a Creative Commons license. The film has since been used by the Fraunhofer Institute and others to evaluate codecs, and its release has been hailed by the Creative Commons foundation as a prime example of “a spirit of cooperation that creates better technical standards.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/07/Screenshot-2024-07-12-165517-1024x575.png&quot; alt=&quot;Inside Netflix\u2019s Bet on Advanced Video Encoding&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theverge.com/2024/6/22/24171581/netflix-bet-advanced-encoding-anne-aaron&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Inside Netflix\u2019s Bet on Advanced Video Encoding &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Janko Roettgers&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Verge&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theverge.com/2024/6/22/24171581/netflix-bet-advanced-encoding-anne-aaron&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Meridian</category><category>Netflix</category><category>streaming video</category><category>tech</category><category>video codec</category></item><item><title>Games versus Points</title><link>https://benjamintseng.com/2024/07/games-versus-points/</link><guid isPermaLink="true">https://benjamintseng.com/2024/07/games-versus-points/</guid><description>Reading Note: Games versus Points</description><pubDate>Sun, 07 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Dartmouth College Class of 2024, for their graduation, got a very special commencement address from &lt;a href=&quot;https://home.dartmouth.edu/news/2024/06/2024-commencement-address-roger-federer&quot;&gt;tennis legend Roger Federer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is a wealth of good advice in it, but the most interesting point that jumped out to me is that while Federer won a whopping 80% of the matches he played in his career, he &lt;em&gt;only won 54%&lt;/em&gt; of the points. It underscores the importance of letting go of small failures (“When you lose every second point, on average, you learn not to dwell on every shot”) but also of keeping your eye on the right metric (games, not points).&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; home.dartmouth.edu&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://home.dartmouth.edu/news/2024/06/2024-commencement-address-roger-federer&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“In tennis, perfection is impossible… In the 1,526 singles matches I played in my career, I won almost 80% of those matches… Now, I have a question for all of you… what percentage of the POINTS do you think I won in those matches?
Only 54%.
In other words, even top-ranked tennis players win barely more than half of the points they play.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/07/20240609-Federer-Commencement-Speech-kl-12-1024x576.jpg&quot; alt=&quot;2024 Commencement Address by Roger Federer&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://home.dartmouth.edu/news/2024/06/2024-commencement-address-roger-federer&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; 2024 Commencement Address by Roger Federer &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;home.dartmouth.edu&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://home.dartmouth.edu/news/2024/06/2024-commencement-address-roger-federer&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>commencement speech</category><category>Roger Federer</category></item><item><title>Biopharma scrambling to handle Biosecure Act</title><link>https://benjamintseng.com/2024/06/biopharma-scrambling-to-handle-biosecure-act/</link><guid isPermaLink="true">https://benjamintseng.com/2024/06/biopharma-scrambling-to-handle-biosecure-act/</guid><description>Reading Note: Biopharma scrambling to handle Biosecure Act</description><pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Strong regional industrial ecosystems like Silicon Valley (tech), Boston (life science), and &lt;a href=&quot;http://benjamintseng.com/2008/02/made-in-taiwan/&quot;&gt;Taiwan (semiconductors)&lt;/a&gt; are fascinating. Their creation is rare and requires local talent, easy access to supply chains and distribution, academic &amp;amp; government support, business success, and a good amount of luck.&lt;/p&gt;
&lt;p&gt;But, once set in place, they can be remarkably difficult to unseat. Take the semiconductor industry as an example. It’s geopolitical importance has &lt;a href=&quot;http://benjamintseng.com/2023/10/the-world-runs-on-excel-and-its-mistakes/&quot;&gt;directed billions of dollars&lt;/a&gt; towards re-creating a domestic US industry. But, it faces an uphill climb. After all, it’s not only a question of recreating the semiconductor manufacturing factories that have gone overseas, but also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the advanced and low-cost packaging technologies and vendors that are largely based in Asia&lt;/li&gt;
&lt;li&gt;the engineering and technician talent that is no longer really in the US&lt;/li&gt;
&lt;li&gt;the ecosystem of contractors and service firms that know exactly how to maintain the facilities and equipment&lt;/li&gt;
&lt;li&gt;the supply chain for advanced chemicals and specialized parts that make the process technology work&lt;/li&gt;
&lt;li&gt;the board manufacturers and ODMs/EMSs who do much of the actual work post-chip production that are also concentrated in Asia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A similar thing has happened in the life sciences CDMO (contract development and manufacturing organization) space. In much the same way that Western companies largely outsourced semiconductor manufacturing to Asia, Western biopharma companies outsourced much of their core drug R&amp;amp;D and manufacturing to Chinese companies like WuXi AppTec and WuXi Biologics. This has resulted in a concentration of talent and an ecosystem of talent and suppliers there that would be difficult to supplant.&lt;/p&gt;
&lt;p&gt;Enter the &lt;a href=&quot;https://www.congress.gov/bill/118th-congress/house-bill/7085&quot;&gt;BIOSECURE Act&lt;/a&gt;, a bill being discussed in the House with a strong possibility of becoming a law. It prohibits the US government from working with companies that obtain technology from Chinese biotechnology companies of concern (including WuXi AppTec and WuXi Biologics, among others). This is causing the biopharma industry significant anxiety as they are forced to find (and potentially fund) an alternative CDMO ecosystem that currently does not exist at the level of scale and quality as it does with WuXi.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; C&amp;amp;EN&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://cen.acs.org/business/outsourcing/Industry-braces-Biosecure-Act-impact/102/web/2024/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“According to [Harvey Berger, CEO of Kojin Therapeutics], China’s CDMO industry has evolved to a point that no other country comes close to. “Tens of thousands of people work in the CDMO industry in China, which is more than the rest of the world combined,” he says.
Meanwhile, Sound’s Kil says he has worked with five CDMOs over the past 15 years and is sure he wouldn’t return to three of them. The two that he finds acceptable are WuXi and a European firm.
“When we asked the European CDMO about their capacity to make commercial-stage quantities, they told us they would have to outsource it to India,” Kil says. WuXi, on the other hand, is able to deliver large quantities very quickly. “It would be terrible for anyone to restrict our ability to work with WuXi AppTec.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/06/image.jpeg&quot; alt=&quot;Industry braces for Biosecure Act impact&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://cen.acs.org/business/outsourcing/Industry-braces-Biosecure-Act-impact/102/web/2024/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Industry braces for Biosecure Act impact &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Aayushi Pratap&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;C&amp;amp;EN&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://cen.acs.org/business/outsourcing/Industry-braces-Biosecure-Act-impact/102/web/2024/06&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Biosecure Act</category><category>CDMO</category><category>regional industrial ecosystem</category><category>semiconductors</category><category>Taiwan</category><category>WuXi</category></item><item><title>Freedom and Prosperity Under Xi Jinping</title><link>https://benjamintseng.com/2024/05/freedom-and-prosperity-under-xi-jinping/</link><guid isPermaLink="true">https://benjamintseng.com/2024/05/freedom-and-prosperity-under-xi-jinping/</guid><description>Reading Note: Freedom and Prosperity Under Xi Jinping</description><pubDate>Wed, 22 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.bloomberg.com/graphics/2024-governing-china-after-the-boom/&quot;&gt;Fascinating chart from Bloomberg&lt;/a&gt; showing level of economic freedom and prosperity under different Chinese rulers and how Xi Jinping is the first Chinese Communist Party ruler in history to have presided over sharp declines in both freedom and prosperity.&lt;/p&gt;
&lt;p&gt;Given China’s rising influence in economic and geopolitical affairs, how it’s leaders (and in particular, Xi) and it’s people react to this will have significant impacts on the world&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-11-1024x631.png&quot; alt/&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/graphics/2024-governing-china-after-the-boom/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;&amp;quot;&amp;quot;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-12-1024x689.png&quot; alt=&quot;\u2018Are You Better Off?\u2019 Asking Reagan\u2019s Question in Xi\u2019s China&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/graphics/2024-governing-china-after-the-boom/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; \u2018Are You Better Off?\u2019 Asking Reagan\u2019s Question in Xi\u2019s China &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Rebecca Choong Wilkins and Tom Orlik&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/graphics/2024-governing-china-after-the-boom/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category></item><item><title>My Two-Year Journey to Home Electrification</title><link>https://benjamintseng.com/2024/05/my-two-year-journey-to-home-electrification/</link><guid isPermaLink="true">https://benjamintseng.com/2024/05/my-two-year-journey-to-home-electrification/</guid><description>My Two-Year Journey to Home Electrification</description><pubDate>Mon, 20 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Electrifying our (Bay Area) home was a complex and drawn-out process, taking &lt;strong&gt;almost two years&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Installing solar panels and storage was particularly challenging, involving numerous hurdles and unexpected setbacks.&lt;/li&gt;
&lt;li&gt;We worked with a large solar installer (Sunrun) and, while the individuals we worked with were highly competent, handoffs within Sunrun and with other entities (like local utility PG&amp;amp;E and the local municipality) caused significant delays.&lt;/li&gt;
&lt;li&gt;While installing the heat pumps, smart electric panel, and EV charger was more straightforward, these projects also featured greater complexity than we expected.&lt;/li&gt;
&lt;li&gt;The project resulted in significant quality of improvements around home automation and comfort. However, bad pricing dynamics between electricity and natural gas meant direct cost savings from electrifying gas loads are, at best, small. While solar is an economic slam-dunk (especially given the rising PG&amp;amp;E rates our home sees), the batteries, in the absence of having backup, have less obvious economic value.&lt;/li&gt;
&lt;li&gt;Our experience underscored the need for the industry to adopt a more holistic approach to electrification and for policymakers to make the process more accessible for all homeowners to achieve the state’s ambitious goals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;why&quot;&gt;Why&lt;/h3&gt;
&lt;p&gt;The decision to electrify our home was an easy one. From my years of investing in &amp;amp; following climate technologies, I knew that the core technologies were reliable and relatively inexpensive. As parents of young children, my wife and I were also determined to contribute positively to the environment. We also knew there were abundant financial supports from local governments and utilities to help make this all work.&lt;/p&gt;
&lt;p&gt;Yet, as we soon discovered, what we expected to be a straightforward path turned into a nearly &lt;strong&gt;two-year process&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-9.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Even for a highly motivated household which had budgeted significant sums for it all, it was still shocking how long (and much money) it took. It made me skeptical that households across California would be able to do the same to meet California’s climate goals without additional policy changes and financial support.&lt;/p&gt;
&lt;h3 id=&quot;the-plan&quot;&gt;The Plan&lt;/h3&gt;
&lt;p&gt;Two years ago, we set out a plan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Smart electrical panel&lt;/strong&gt; —  From my prior experience, I knew that many home electrification projects required a main electrical panel upgrade. These were typically costly and left you at the mercy of the utility to actually carry them out (I would find out how true this was later!). Our home had an older main panel rated for 125 A and we suspected we would normally need a main panel upgrade to add on all the electrical loads we were considering.&lt;/p&gt;
&lt;p&gt;To try to get around this, we decided to get a smart electrical panel which could:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use software smarts to deal with the times where peak electrical load got high enough to need the entire capacity of the electrical line&lt;/li&gt;
&lt;li&gt;give us the ability to intelligently manage backups and track solar production&lt;br/&gt;
In doing our research, &lt;a href=&quot;https://www.span.io/&quot;&gt;Span&lt;/a&gt; seemed like the clear winner. They were the most prominent company in the space and had the slickest looking device and app (many of their team had come from Tesla). They also had an EV charger product we were interested in, &lt;a href=&quot;https://www.span.io/drive&quot;&gt;the Span Drive&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Heat pumps&lt;/strong&gt; — To electrify is to ditch natural gas. As the bulk of our gas consumption was heating air and water, this involved replacing our gas furnace and gas water heater with heat pumps. In addition to significant energy savings — heat pumps are famous for their &amp;gt;200% efficiency (as they move heat rather than “create” it like gas furnaces do) — heat pumps would also let us add air conditioning (just run the heat pump in reverse!) and improve our air quality (from not combusting natural gas indoors). We found a highly rated Bay Area HVAC installer who specializes in these types of energy efficiency projects (called &lt;a href=&quot;https://buildingefficiency.net/&quot;&gt;Building Efficiency&lt;/a&gt;) and trusted that they would pick the right heat pumps for us.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Solar and Batteries&lt;/strong&gt; — No electrification plan is complete without solar. Our goal was to generate as much clean electricity as possible to power our new electric loads. We also wanted energy storage for backup power during outages (something that, while rare, we seemed to run into every year) and to take advantage of time-of-use rates (by storing solar energy when the price of electricity is low and then using it when the price is high).&lt;/p&gt;
&lt;p&gt;We looked at a number of solar installers and ultimately chose &lt;a href=&quot;https://www.span.io/drive&quot;&gt;Sunrun&lt;/a&gt;. A friend of ours worked there at the time and spoke highly of a &lt;a href=&quot;https://www.sunrun.com/solar-plans-and-services/monthly-solar-lease&quot;&gt;prepaid lease&lt;/a&gt; they offered that was vastly cheaper all-in than every alternative. It offered minimum energy production guarantees, came with a solid warranty, and the “peace of mind” that the installation would be done with one of the largest and most reputable companies in the solar industry.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;EV Charger&lt;/strong&gt; — Finally, with our plan to buy an electric vehicle, installing a home charger at the end of the electrification project was a simple decision. This would allow us to conveniently charge the car at home, and, with solar &amp;amp; storage, hopefully let us “fuel up” more cost effectively. Here, we decided to go with &lt;a href=&quot;https://www.span.io/drive&quot;&gt;the Span Drive&lt;/a&gt;. It’s winning feature was the ability to provide Level 2 charging speeds &lt;em&gt;without&lt;/em&gt; a panel upgrade (it does this by ramping up or down charging speeds depending on how much electricity the rest of the house needed). While pricey, the direct integration into our Span smart panel (and its app) and the ability to hit high charging rates without a panel upgrade felt like the smart path forward.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What We Left Out&lt;/strong&gt; — There were two appliances we decided to defer “fully going green” on.&lt;/p&gt;
&lt;p&gt;The first was our gas stove (with electric oven). While induction stoves have significant advantages, because our current stove is still relatively new, works well, uses relatively little gas, and an upgrade would have required additional electrical work (installing a 240 V outlet), we decided to keep our current stove and consider a replacement at it’s end of life.&lt;/p&gt;
&lt;p&gt;The second was our electric resistive dryer. While heat pump based dryers would certainly save us a great deal of electricity, the existing heat pump dryers on the market have much smaller capacities than traditional resistive dryers, which may have necessitated our family of four doing additional loads of drying. As our current dryer was also only a few years old, and already running on electricity, we decided we would also wait to consider heat pump dryer only after it’s end of life.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With what we thought was a well-considered plan, we set out and lined up contractors.&lt;/p&gt;
&lt;p&gt;But as Mike Tyson put it, “Everyone has a plan ’till they get punched in the face.”&lt;/p&gt;
&lt;h3 id=&quot;the-actual-timeline&quot;&gt;The Actual Timeline&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-1-1024x452.png&quot; alt/&gt;&lt;/p&gt;
&lt;h3 id=&quot;smart-panel&quot;&gt;Smart Panel&lt;/h3&gt;
&lt;p&gt;The smart panel installation was one of the more straightforward parts of our electrification journey. Span connected us with a local electrician who quickly assessed our site, provided an estimate, and completed the installation in a single day. However, getting the permits to pass inspection was a different story.&lt;/p&gt;
&lt;p&gt;We failed the first inspection due to a disagreement over the code between the electrician and the city inspector. This issue nearly turned into a billing dispute with the electrician, who wanted us to cover the extra work needed to meet the code (an unexpected cost). Fortunately, after a few adjustments and a second inspection, we passed.&lt;/p&gt;
&lt;p&gt;The ability to control and monitor electric flows with the smart panel is incredibly cool. For the first few days, I checked the charts in the apps every few minutes tracking our energy use while running different appliances. It was eye-opening to see just how much power small, common household items like a microwave or an electric kettle could draw!&lt;/p&gt;
&lt;p&gt;However, the true value of a smart panel is only achieved when it’s integrated with batteries or significant electric loads that necessitate managing peak demand. Without these, the monitoring and control benefits are more novelties and might not justify the cost.&lt;/p&gt;
&lt;p&gt;Note: if you, like us, &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;use Pihole to block tracking ads&lt;/a&gt;, you’ll need to disable it for the Span app. The app uses some sort of tracker that Pihole flags by default. It’s an inconvenience, but worth mentioning for anyone considering this path.&lt;/p&gt;
&lt;h3 id=&quot;heating&quot;&gt;Heating&lt;/h3&gt;
&lt;p&gt;Building Efficiency performed an initial assessment of our heating and cooling needs. We had naively assumed they’d be able to do a simple drop-in replacement for our aging gas furnace and water heater. While the water heater was a straightforward replacement (with a larger tank), the furnace posed more challenges.&lt;/p&gt;
&lt;p&gt;Initially, they proposed multiple mini-splits to provide zoned control, as they felt the crawlspace area where the gas furnace resided was too small for a properly sized heat pump. Not liking the aesthetics of mini-splits, we requested a proposal involving two central heat pump systems instead.&lt;/p&gt;
&lt;p&gt;Additionally, during the assessment, they found some of our old vents, in particular the ones sending air to our kids’ rooms, were poorly insulated and too small (which explains why their rooms always seemed under-heated in the winter). To fix this, they had to cut a new hole through our garage concrete floor (!!) to run a larger, better-insulated vent from our crawlspace. They also added insulation to the walls of our kids’ rooms to improve our home’s ability to maintain a comfortable temperature (but which required additional furniture movement, drywall work, and a re-paint).&lt;/p&gt;
&lt;p&gt;Building Efficiency spec’d an Ecobee thermostat to control the two central heat pumps. As we already had a &lt;a href=&quot;https://store.google.com/us/product/nest_learning_thermostat_3rd_gen?hl=en-US&quot;&gt;Nest Learning Thermostat&lt;/a&gt; (with &lt;a href=&quot;https://store.google.com/us/product/nest_temperature_sensor?hl=en-US&quot;&gt;Nest temperature sensors&lt;/a&gt; covering rooms far from the thermostat), we wanted to keep our temperature control in the Nest app. At the time, we had gotten a free thermostat from Nest after signing with Sunrun. We realized later, what Sunrun gifted us was the cheaper (and, less attractive) &lt;a href=&quot;https://store.google.com/us/product/nest_thermostat?hl=en-US&quot;&gt;Nest Thermostat&lt;/a&gt; which &lt;em&gt;doesn’t&lt;/em&gt; support Nest temperature sensors (why?), so we had to buy our own Nest Learning Thermostat to complete the setup.&lt;/p&gt;
&lt;p&gt;Despite some of these unforeseen complexities, the whole process went relatively smoothly. There were a few months of planning and scheduling, but the actual installation was completed in about a week. It was a very noisy (cutting a hole through concrete is not quiet!) and chaotic week, but, the process was quick, and the city inspection was painless.&lt;/p&gt;
&lt;h3 id=&quot;solar--storage&quot;&gt;Solar &amp;amp; Storage&lt;/h3&gt;
&lt;p&gt;The installation of solar panels and battery storage was a lengthy ordeal. Sunrun proposed a system with LONGI solar panels, two Tesla Powerwalls, a SolarEdge inverter, and a Tesla gateway. Despite the simplicity of the plan, we encountered several complications right away.&lt;/p&gt;
&lt;p&gt;First, a main panel upgrade was required. Although we had installed the Span smart panel to avoid this, Sunrun insisted on the upgrade and offered to cover the cost. Our utility &lt;strong&gt;PG&amp;amp;E took over a year (!!) to approve our request&lt;/strong&gt;, which started a domino of delays.&lt;/p&gt;
&lt;p&gt;After PG&amp;amp;E’s approval, Sunrun discovered that local ordinances needed a concrete pad to be poured and safety fence erected around the panel, requiring a subcontractor and &lt;em&gt;yet more&lt;/em&gt; coordination.&lt;/p&gt;
&lt;p&gt;After the concrete pad was in place and the panel installed, we faced &lt;em&gt;another&lt;/em&gt; wait for PG&amp;amp;E to connect the new setup. Ironically, during this wait, I received a request from Sunrun to pour &lt;em&gt;another&lt;/em&gt; concrete pad. This was, thankfully, a false alarm and occurred because the concrete pad / safety fence work had not been logged in Sunrun’s tracking system!&lt;/p&gt;
&lt;p&gt;The solar and storage installation itself took only a few days, but during commissioning, a technician found that half the panels weren’t connected properly, necessitating &lt;em&gt;yet another&lt;/em&gt; visit before Sunrun could request an inspection from the city.&lt;/p&gt;
&lt;p&gt;Sadly, we failed our first city inspection. Sunrun’s team had missed a local ordinance that required the Powerwalls to have a minimum distance between them and the sealing off of vents within a certain distance from each Powerwall. This necessitated &lt;em&gt;yet another&lt;/em&gt; visit from Sunrun’s crew, and &lt;em&gt;another&lt;/em&gt; city inspection (which we thankfully passed).&lt;/p&gt;
&lt;p&gt;The final step was obtaining Permission to Operate (PTO) from PG&amp;amp;E. The application for this was delayed due to a clerical error. About four weeks after submission, we &lt;em&gt;finally&lt;/em&gt; received approval.&lt;/p&gt;
&lt;p&gt;Seeing the flow of solar electricity in my Span app (below) almost brought a tear to my eye. Finally!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-13-475x1024.png&quot; alt/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-2-455x1024.png&quot; alt/&gt;&lt;/p&gt;
&lt;h3 id=&quot;ev-charger&quot;&gt;EV Charger&lt;/h3&gt;
&lt;p&gt;When my wife bought a Nissan Ariya in early 2023, it came with a year of free charging with &lt;a href=&quot;https://evgo.com/&quot;&gt;EVgo&lt;/a&gt;. We hoped this would allow us enough time to install solar before needing our own EV charger. However, the solar installation took longer than expected (by over a year!), so we had to expedite the installation of a home charger.&lt;/p&gt;
&lt;p&gt;Span connected us with the same electrician who installed our smart panel. Within two weeks of our free charging plan expiring, the Span Drive was installed. The process was straightforward, with only two notable complications we had to deal with:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The 20 ft cable on the Span Drive sounds longer than it is in practice. We adjusted our preferred installation location to ensure it comfortably reached the Ariya’s charging port.&lt;/li&gt;
&lt;li&gt;The Span software initially didn’t recognize the Span Drive after installation. This required escalated support from Span to reset the software, costing the poor electrician who had expected the commissioning step to be a few minute affair to stick around my home for several hours.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;result&quot;&gt;Result&lt;/h3&gt;
&lt;p&gt;So, “was it worth it?” Yes! There are significant environmental (our carbon footprint is meaningfully lower) benefits. But there were also quality of life improvements and financial gains from these investments in what are just fundamentally &lt;em&gt;better&lt;/em&gt; appliances.&lt;/p&gt;
&lt;h3 id=&quot;quality-of-life&quot;&gt;Quality of Life&lt;/h3&gt;
&lt;p&gt;Our programmable, internet-connected water heater allows us to adjust settings for vacations, saving energy and money effortlessly. It also lets us program temperature cycles to avoid peak energy pricing, heating water before peak rates hit.&lt;/p&gt;
&lt;p&gt;With the new heat pumps, our home now has air conditioning, which is becoming increasingly necessary in the Bay Area’s warmer summers. Improved vents and insulation have also made our home (and, in particular, our kids’ rooms) more comfortable. We’ve also found that the heat from the heat pumps is more even and less drying compared to the old gas furnace, which created noticeable hot spots.&lt;/p&gt;
&lt;p&gt;Backup power during outages is another significant benefit. Though we haven’t had to use it since we received permission to operate, we had an accidental trial run early on when a Sunrun technician let our batteries be charged for a few days in the winter. During two subsequent outages in the ensuing months, our system maintained power to our essential appliances, ensuring our kids didn’t even notice the disruptions!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/Home-App-Backup-Priorities.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The EV charger has also been a welcome change. While free public charging was initially helpful, reliably finding working &lt;em&gt;and&lt;/em&gt; available fast chargers could be time-consuming and stressful. Now, charging at home is convenient and cost-effective, reducing stress and uncertainty.&lt;/p&gt;
&lt;h3 id=&quot;financial&quot;&gt;Financial&lt;/h3&gt;
&lt;p&gt;There are two financial aspects to consider: the cost savings from replacing gas-powered appliances with electric ones and the savings from solar and storage.&lt;/p&gt;
&lt;p&gt;On the first, the answer is not promising.&lt;/p&gt;
&lt;p&gt;The chart below comes from our PG&amp;amp;E bill for Jan 2023. It shows our energy usage year-over-year. After installing the heat pumps in late October 2022, our natural gas consumption dropped by over 98% (from 5.86 therms/day to 0.10), while our electricity usage more than tripled (from 15.90 kWh/day to 50.20 kWh/day). Applying the conversion of &lt;a href=&quot;https://en.wikipedia.org/wiki/Therm&quot;&gt;1 natural gas therm = ~29 kWh of energy&lt;/a&gt; shows that our &lt;strong&gt;total energy consumption decreased by over 70%&lt;/strong&gt;, a testament to the much higher efficiency of heat pumps.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-5.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Our PG&amp;amp;E bill from Feb 2023 (for Jan 2023)&lt;/p&gt;
&lt;p&gt;Surprisingly, however, our energy bills remained almost unchanged despite this! The graph below shows our PG&amp;amp;E bills over the 12 months ending in Jan 2023. Despite a 70% reduction in energy consumption, the bill stayed roughly the same. This is due to the significantly lower cost of gas in California compared to the equivalent amount of energy from electricity. It highlights a major policy failing in California: &lt;strong&gt;high electricity costs (relative to gas) will deter households from switching to greener options&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-6-1024x361.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Our PG&amp;amp;E bill from Feb 2023 (for Jan 2023)&lt;/p&gt;
&lt;p&gt;Solar, however, is a clear financial winner. With our prepaid lease, we’d locked in savings compared to 2022 rates (just by dividing the total prepaid lease amount by the expected energy production over the lifetime of the lease), and these savings have only increased as PG&amp;amp;E’s rates have risen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-7.png&quot; alt/&gt;&lt;/p&gt;
&lt;div class=&quot;my-6 border border-[#BBF7D0] bg-[#F0FDF4] rounded-md p-4 sm:p-5 not-prose&quot;&gt; &lt;div class=&quot;flex items-start justify-between gap-4&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#166534] font-semibold mb-1 flex items-center gap-1.5&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5 text-[#166534]&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt; &lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H6v-2h3v2zm0-4H6v-2h3v2zm0-4H6V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Interactive Spreadsheet Model
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A] mb-1&quot;&gt; PG&amp;amp;E Electricity Rate Escalation &amp;amp; Solar Lease Payback Model &lt;/h4&gt; &lt;p class=&quot;text-xs text-[#334155] mb-3&quot;&gt; Historical tracking of PG&amp;amp;E tier and Time-of-Use rate inflation (2022 vs. 2024) benchmarking prepaid solar lease generation costs ($0.11/kWh) against grid escalation. &lt;/p&gt; &lt;div class=&quot;flex flex-wrap items-center gap-1.5 mb-1&quot;&gt; &lt;span class=&quot;text-[11px] font-mono-data text-[#15803D] font-medium&quot;&gt;Tabs:&lt;/span&gt; &lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Rate Comparison (2022 vs 2024) &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Solar Lease ROI &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; TOU Schedule &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1e4xfhTVVuo78TtqXGoCimhFxg2ZzPKpM6vVDwCt7HqY/edit#gid=0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-emerald text-xs font-mono-data font-semibold px-3 py-2 rounded-md whitespace-nowrap transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Model &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;Batteries, on the other hand, are much less clear-cut financially due to their high initial cost and only modest savings from time-shifting electricity use. However, the &lt;strong&gt;peace of mind from having backup power during outages&lt;/strong&gt; is valuable (not to mention the fact that, &lt;em&gt;without a battery, solar panels can’t be used to power your home during an outage&lt;/em&gt;), and, with climate change likely to increase both peak/off-peak rate disparities and the frequency of outages, we believe this investment will pay off in the long run.&lt;/p&gt;
&lt;h3 id=&quot;taking-advantage-of-time-of-use-rates&quot;&gt;Taking Advantage of Time of Use Rates&lt;/h3&gt;
&lt;p&gt;Time of Use (TOU) rates, like &lt;a href=&quot;https://www.pge.com/en/account/rate-plans/find-your-best-rate-plan/electric-vehicles.html#evRatesRes-item-4c6bc14c68-tab&quot;&gt;PG&amp;amp;E’s electric vehicle time of use rates&lt;/a&gt;, offer a smart way to reduce electricity costs for homes with solar panels, energy storage, and smart automation. This approach has fundamentally changed how we manage home energy use. Instead of merely &lt;em&gt;conserving&lt;/em&gt; energy by using efficient appliances or turning off devices when not needed, we now view our home as a giant configurable battery. We “save” energy when it’s cheap and use it when it’s expensive.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backup Reserve&lt;/strong&gt;: We’ve set our Tesla Powerwall to maintain a 25% reserve. This ensures we always have a good supply of backup power for essential appliances (roughly 20 hours for our highest priority circuits by the Span app’s latest estimates) during outages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summer Strategy&lt;/strong&gt;: During summer, our Powerwall operates in “&lt;strong&gt;Self Power&lt;/strong&gt;” mode, meaning solar energy powers our home first, then charges the battery, and lastly any excess goes to the grid. This maximizes the use of our “free” solar energy. We also schedule our heat pumps to run during midday when solar production peaks and TOU rates are lower. This way, we “store” cheaper energy in the form of pre-chilled or pre-heated air and water which helps maintain the right temperatures for us later (when the energy is more expensive).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Winter Strategy&lt;/strong&gt;: In winter, we will switch the Powerwall to “&lt;strong&gt;Time-Based Control&lt;/strong&gt;.” This setting preferentially charges the battery when electricity is cheap and discharges it when prices are high, maximizing the financial value of our solar energy during the months where solar production is likely to be limited.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This year will be our first full cycle with all systems in place, and we expect to make adjustments as rates and energy usage evolve. For those considering home electrification, hopefully these strategies give hints to what is possible to improve economic value of your setup.&lt;/p&gt;
&lt;h3 id=&quot;takeaways&quot;&gt;Takeaways&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/image-8.png&quot; alt/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Two years is too long&lt;/strong&gt;: The average household might not have started this journey if they knew the extent of time and effort involved. This doesn’t even consider the amount of carbon emissions from running appliances off grid energy due to the delays. Streamlining the process is essential to make electrification more accessible and appealing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Align gas and electricity prices with climate goals&lt;/strong&gt;: The current pricing dynamics make it financially challenging for households to switch from gas appliances to greener options like heat pumps. To achieve California’s ambitious climate goals, it’s crucial to align the cost of electricity more closely with electrification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Streamline permitting&lt;/strong&gt;: Electrification projects are slowed by complex, inconsistent permitting requirements across different jurisdictions. Simplifying and unifying these processes will reduce time and costs for homeowners and their contractors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerate utility approvals&lt;/strong&gt;: The two-year timeframe was largely due to delays from our local utility, PG&amp;amp;E. As utilities lack incentives to expedite these processes, regulators should build in ways to encourage utilities to move faster on home electrification-related approvals and activities, especially as many homes will likely need main panel upgrades to properly electrify.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve financing accessibility&lt;/strong&gt;: High upfront costs make it difficult for households to adopt electrification, even when there are significant long-term savings. Expanding financing options (like Sunrun’s leases) can encourage more households to invest in these technologies. Policy changes should be implemented so that even smaller installers have the ability to offer attractive financing options to their clients.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break down electrification silos&lt;/strong&gt;: Coordination between HVAC specialists, solar installers, electricians, and smart home companies is sorely missing today. As a knowledgeable early adopter, I managed to integrate these systems on my own, but this shouldn’t be the expectation if we want broad adoption of electrification. The industry (in concert with policymakers) should make it easier for different vendors to coordinate and for the systems to interoperate more easily in order to help homeowners take full advantage of the technology.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This long journey highlighted to me, in a very visceral way, both the rewards and practical challenges of home electrification. While the environmental, financial, and quality-of-life benefits are clear, it’s also clear that we have a ways to go on the policy and practical hurdles before electrification becomes an &lt;em&gt;easy&lt;/em&gt; choice for many more households. I only hope policymakers and technologists are paying attention. Our world can’t wait much longer.&lt;/p&gt;</content:encoded><category>energy efficiency</category><category>energy storage</category><category>heat pump</category><category>home electrification</category><category>PG&amp;amp;E</category><category>smart home</category><category>solar energy</category><category>Span</category><category>Sunrun</category><category>Tesla</category></item><item><title>How the Jones Act makes energy more expensive and less green</title><link>https://benjamintseng.com/2024/05/how-the-jones-act-makes-energy-more-expensive-and-less-green/</link><guid isPermaLink="true">https://benjamintseng.com/2024/05/how-the-jones-act-makes-energy-more-expensive-and-less-green/</guid><description>Reading Note: How the Jones Act makes energy more expensive and less green</description><pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Merchant_Marine_Act_of_1920&quot;&gt;The Merchant Marine Act of 1920&lt;/a&gt; (aka “The Jones Act”) is a law which requires ships operating between US ports to be owned by, made in, and crewed by US citizens.&lt;/p&gt;
&lt;p&gt;While many “Made in the USA” laws are on the books and attract the anger of economists and policy wonks, the Jones Act is particularly egregious as the costs and effects are so large. The Jones Act costs states like Hawaii and Alaska and territories like Puerto Rico dramatically as they rely so much on ships for basic commerce that it was actually cheaper for Hawaii and New England to import oil from other countries (like Hawaii did from Russia until the Ukraine war) than it was to have oil shipped from the Gulf of Mexico (where &lt;em&gt;American&lt;/em&gt; oil is abundant).&lt;/p&gt;
&lt;p&gt;In the case of offshore wind, the Jones Act has pushed those companies willing to experiment with the promising technology, &lt;em&gt;&lt;strong&gt;to ship the required parts and equipment from overseas&lt;/strong&gt;&lt;/em&gt;because there are no Jones Act-compliant ships capable of moving the massive equipment that is involved.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.canarymedia.com/articles/wind/us-offshore-wind-needs-american-made-ships.-the-first-is-nearly-ready&quot;&gt;This piece from Canary Media&lt;/a&gt; captures some of the dynamics and the “launch” of the still-in-construction $625 million Jones Act-compliant ship the Charybdis Dominion Energy will use to support its offshore wind facility.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Canary Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/wind/us-offshore-wind-needs-american-made-ships.-the-first-is-nearly-ready&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“To satisfy that mandate, Dominion commissioned the first-ever Jones Act–compliant vessel for offshore wind installation, which hit the water in Brownsville, Texas, last week. The hull welding on the 472-foot vessel is complete, as are its four enormous legs, which will hoist it out of the water during turbine installation. This $625 million leviathan, named Charybdis after the fearsome sea-monster foe of Odysseus, still needs some finishing touches before it sets sail to Virginia, which is expected to happen later this year. 
Charybdis’ completion will be a win for what’s left of the American shipbuilding industry. The Jones Act, after all, was intended to bolster American shipbuilders and merchant seamen in the isolationist spell following World War I. But a century later, it creates a series of confounding and counterintuitive challenges for America’s energy industry, which frequently redound poorly for most Americans. 
…
Elsewhere in the energy industry, the expense and difficulty associated with finding scarce Jones Act–compliant ships push certain American communities to rely more on foreign energy suppliers. Up until 2022, Hawaii turned to Russia for one-third of the oil that powered its cars and power plants. The Jones Act made it too hard or costly to import abundant American oil to the U.S. state, leaving Hawaii scrambling for other sources when Russia invaded Ukraine. 
Over in New England, constraints on fossil-gas pipelines sometimes force the region to import gas via LNG terminals. The U.S. has plenty of fossil gas to tap in the Gulf of Mexico, but a lack of U.S. ships pushes Massachusetts and its neighbors to buy gas from other countries instead.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/05/Screenshot-2024-05-06-110431-1024x589.png&quot; alt=&quot;US\u00a0offshore wind needs American-made ships. The first is nearly ready&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/wind/us-offshore-wind-needs-american-made-ships.-the-first-is-nearly-ready&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; US\u00a0offshore wind needs American-made ships. The first is nearly ready &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Julian Spector&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Canary Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/wind/us-offshore-wind-needs-american-made-ships.-the-first-is-nearly-ready&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Dominion Energy</category><category>Jones Act</category><category>offshore wind</category></item><item><title>Backup Your Home Server with Duplicati</title><link>https://benjamintseng.com/2024/04/backup-your-home-server-with-duplicati/</link><guid isPermaLink="true">https://benjamintseng.com/2024/04/backup-your-home-server-with-duplicati/</guid><description>Backup Your Home Server with Duplicati</description><pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Through some readily available Docker containers and &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt;, I have a cheap mini-PC which serves as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;ad blocker for all the devices in my household&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;media streamer&lt;/a&gt; (so I can play movies and read downloaded ebooks/documents anywhere that has internet access)&lt;/li&gt;
&lt;li&gt;acts as my &lt;a href=&quot;http://benjamintseng.com/2024/01/selfhosting-freshrss/&quot;&gt;personal RSS/newsreader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://benjamintseng.com/2024/02/dont-pay-for-adobe-acrobat-to-do-basic-pdf-things/&quot;&gt;handles every PDF related operation you can think of&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;functions as network storage for my family&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But, over time, as the server has picked up more uses, it’s also become a vulnerability. If any of the drives on my machine ever fail, I’ll lose data that is personally (and sometimes economically) significant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I needed a home server backup plan.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;duplicati&quot;&gt;Duplicati&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.duplicati.com/&quot;&gt;Duplicati is open source software&lt;/a&gt; that helps you efficiently and securely backup specific partitions and folders to any destination. This could be another home server or it can be a cloud service provider (like Amazon S3 or Backblaze B2 or even a consumer service like Dropbox, Google Drive, and OneDrive). While there are many other tools that can support backup, I went with Duplicati because I wanted:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Support for consumer storage services&lt;/strong&gt; as a target: I am a customer of Google Drive (through &lt;a href=&quot;https://one.google.com/&quot;&gt;Google One&lt;/a&gt;) and &lt;a href=&quot;https://www.office.com/&quot;&gt;Microsoft 365&lt;/a&gt; (which comes with generous OneDrive subscription) and only intend to backup some of the files I’m currently storing (mainly some of the network storage I’m using to hold important files)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A web-based control interface&lt;/strong&gt; so I could access this from any computer (and not just whichever machine had the software I wanted)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://forum.duplicati.com/c/howto/14&quot;&gt;An active user forum&lt;/a&gt;&lt;/strong&gt; so I could find how-to guides and potentially get help&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.linuxserver.io/images/docker-freshrss/&quot;&gt;&lt;strong&gt;Available as a Docker container on linuxserver.io&lt;/strong&gt;&lt;/a&gt;: linuxserver.io is well-known for hosting and maintaining high quality and up-to-date Docker container images&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Update 2024 Dec 18: One reason Duplicati is a great solution is that &lt;a href=&quot;https://github.com/duplicati/duplicati&quot;&gt;it is actively being developed&lt;/a&gt;. However, occasionally this can introduce breaking changes. &lt;a href=&quot;https://forum.duplicati.com/t/increasing-security-for-duplicati-s-web-server/18871&quot;&gt;Since version 2.0.9.105, Duplicati now requires a password&lt;/a&gt;. This has required an update to the Docker compose setup to include an Encryption Key, a Password, and an earlier update required &lt;a href=&quot;https://vsys.host/how-to/how-to-configure-nginx-to-proxy-websockets&quot;&gt;Nginx proxy to pass additional headers&lt;/a&gt; to handle &lt;a href=&quot;https://github.com/duplicati/duplicati/issues/5284&quot;&gt;the Websocket-based interface the web interface now uses to keep its interface dynamic&lt;/a&gt;. I’ve changed the text below to reflect these&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To install Duplicati on OpenMediaVault:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you haven’t already, make sure you have OMV Extras and Docker Compose installed (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;, you’ll want to follow all 10 steps as I refer to different parts of the process throughout this post) &lt;em&gt;and&lt;/em&gt; have a static local IP address assigned to your server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to your OpenMediaVault web admin panel, and then go to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/code&gt; in the sidebar. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the main interface to add a new Docker compose file.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Duplicati&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, adapt the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   duplicati:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; lscr.io/linuxserver/duplicati:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; duplicati&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     ports:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;unused&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:8200&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TZ:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;America/Los_Angeles&amp;#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PUID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PGID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;GID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; DUPLICATI__WEBSERVICE_PASSWORD=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;Password&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; access&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; interface&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; SETTINGS_ENCRYPTION_KEY=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;random&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; at&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; least&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; characters/numbers&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; paths&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folders&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; backup&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;names&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; use&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Duplicati&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; interface&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/Duplicati:/config&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ports:&lt;/kbd&gt;, make sure to add an unused port number (I went with &lt;code&gt;8200&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; with the &lt;em&gt;absolute&lt;/em&gt; path to the &lt;strong&gt;config&lt;/strong&gt; folder where you want Docker-installed applications to store their configuration information (accessible by going to &lt;code&gt;[Storage &amp;gt; Shared Folders]&lt;/code&gt; in the administrative panel).&lt;/p&gt;
&lt;p&gt;You’ll notice there’s extra lines under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;volumes:&lt;/kbd&gt; for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute paths to folders to backup&amp;gt;&lt;/kbd&gt;. This should correspond with the folders you are interested in backing up. You should map them to names that will show up in the Duplicati interface that you recognize. For example, I directed my &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/containerconfigs&lt;/kbd&gt; as one of the things I want to make sure I backup are my containers.&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Duplicati&lt;/kbd&gt; entry you created has a &lt;code&gt;Down&lt;/code&gt; status, showing the container has yet to be initialized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To start your Duplicati container, click on the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Duplicati&lt;/kbd&gt; entry and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run it.&lt;/p&gt;
&lt;p&gt;To show it worked, go to &lt;code&gt;your-servers-static-ip-address:8200&lt;/code&gt; from a browser that’s on the same network as your server (replacing &lt;code&gt;8200&lt;/code&gt; if you picked a different port in the configuration file above) and you should see the Duplicati web interface which should look something like below&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/Screenshot-2024-04-24-124232.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can skip this step &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;if you didn’t set up Pihole and local DNS / Nginx proxy&lt;/a&gt; or if you don’t care about having a user-readable domain name for Duplicati. But, assuming you do and you followed my instructions, open up WeTTy (which you can do by going to &lt;code&gt;wetty.home&lt;/code&gt; in your browser if you followed my instructions or by going to &lt;code&gt;[Services &amp;gt; WeTTY]&lt;/code&gt; from OpenMediaVault administrative panel and pressing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Open UI&lt;/kbd&gt; button in the main panel) and login as the root user. Run:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/nginx/conf.d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ls&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;.confCode&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; language:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Shell&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Session&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; (shell)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;This opens up the text editor nano with the file you just listed. Use your cursor to go to the very bottom of the file and add the following lines (making sure to use tabs and end each line with a semicolon)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;             80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    server_name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;duplicati.home&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; domain&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; you&amp;#39;d like to use&amp;amp;gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    location / {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_pass             http://&amp;amp;lt;your-server-static-ip&amp;amp;gt;:&amp;amp;lt;duplicati port no.&amp;amp;gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_http_version     1.1;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       Upgrade $http_upgrade;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       Connection &amp;quot;upgrade&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       Host $host;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       X-Real-IP $remote_addr;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_set_header       X-Forwarded-Proto $scheme;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;}Code language: HTML, XML (xml)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;And then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the existing file. Then in the command line run the following to restart Nginx with your new configuration loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Now, if your server sees a request for &lt;code&gt;duplicati.home&lt;/code&gt; (or whichever domain you picked), it will direct them to Duplicati. With the additional &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;proxy_http_version&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;proxy_set_header&lt;/kbd&gt;‘s, it will also properly forward the Websocket requests the web interface uses.&lt;/li&gt;
&lt;li&gt;Login to your Pihole administrative console (you can just go to &lt;code&gt;pi.hole&lt;/code&gt; in a browser) and click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;[Local DNS &amp;gt; DNS Records]&lt;/kbd&gt; from the sidebar. Under the section called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a new domain/IP combination&lt;/kbd&gt;, fill out under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain:&lt;/kbd&gt; the domain you just added above (i.e. &lt;code&gt;duplicati.home&lt;/code&gt;) and next to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;IP Address:&lt;/kbd&gt; you should add your server’s static IP address. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button and it will show up below.&lt;/li&gt;
&lt;li&gt;To make sure it all works, enter the domain you just added (&lt;code&gt;duplicati.home&lt;/code&gt; if you went with my default) in a browser and you should see the Duplicati interface!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;configuring-your-backups&quot;&gt;Configuring your Backups&lt;/h2&gt;
&lt;p&gt;Duplicati conceives of each “backup” as a “source” (folder of files to backup), a “destination” (the place the files should be backed up to), a schedule (how often does the backup run), and some options to configure how the backup works.&lt;/p&gt;
&lt;p&gt;After logging in (with the password you specified in the Docker compose file), to configure a “backup”, click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;+Add Backup&lt;/kbd&gt; button on the menu on the lefthand side. I’ll show you the screens I went through to backup my Docker container configurations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add a name (I called it &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;DockerConfigs&lt;/kbd&gt;) and enter a Passphrase (you can use the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Generate&lt;/kbd&gt; link to create a strong password) which you’d use to restore from backup. Then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/backup1.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter a destination. Here, you can select another computer or folder connected to your network. You can also select an online storage service.&lt;/p&gt;
&lt;p&gt;I’m using Microsoft OneDrive — for a different service, a quick Google search or a search of the &lt;a href=&quot;https://forum.duplicati.com/c/howto/14&quot;&gt;Duplicati how-to forum&lt;/a&gt; can give you more specific instructions, but the basic steps of generating an AuthID link appear to be similar across many services.&lt;/p&gt;
&lt;p&gt;I selected &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Microsoft OneDrive v2&lt;/kbd&gt; and picked a path in my OneDrive for the backup to go to (&lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Backup/dockerconfigs&lt;/kbd&gt;). I then clicked on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;AuthID&lt;/kbd&gt; link and went through an authentication process to formally grant Duplicati access to OneDrive. Depending on the service, you may need to manually copy a long string of letters and numbers and colons into the text field. After all of that, to prove it all worked, press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Test connection&lt;/kbd&gt;!&lt;/p&gt;
&lt;p&gt;Then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/backup2.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the source. Use the folder browsing widget on the interface to select the folder you wish to backup.&lt;/p&gt;
&lt;p&gt;If you recall in my configuration step, I mapped the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/containerconfigs&lt;/kbd&gt; which is why I selected this as a one-click way to backup all my Docker container configurations. If necessary, feel free to shut down and delete your current container and start over with a configuration where you point and map the folders in a better way.&lt;/p&gt;
&lt;p&gt;Then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/backup3.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pick a schedule. Do you want to backup every day? Once a week? Twice a week? Since my docker container configurations don’t change &lt;em&gt;that&lt;/em&gt; frequently, I decided to schedule weekly backups on Saturday early morning (so it wouldn’t interfere with something else I might be doing).&lt;/p&gt;
&lt;p&gt;Pick your option and then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Next&lt;/kbd&gt;&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/backup4.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select your backup options. Unless you have a strong reason to, I would not change the remote volume size from the default (50 MB). The backup retention, however, is something you may want to think about. Duplicati gives you the option to hold on to every backup (something I would not do unless you have a massive amount of storage relative to the amount of data you want to backup), to hold on to backups younger than a certain age, to hold on to a specific number of backups, or customized permutations of the above.&lt;/p&gt;
&lt;p&gt;The option you should choose depends on your circumstances, but to share what I did. For some of my most important files, I’m using Duplicati’s &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;smart backup retention&lt;/kbd&gt; option (which gives me one backup from the last week, one for each of the last 4 weeks, and one for each of the last 12 months). For some of my less important files (for example, my docker container configurations), I’m holding on to just the last 2 weeks worth of backups.&lt;/p&gt;
&lt;p&gt;Then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you’re set!&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/backup5.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope this helps you on your self-hosted backup journey.&lt;/p&gt;
&lt;p&gt;If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;!&lt;/p&gt;</content:encoded><category>backup</category><category>container</category><category>Docker</category><category>Duplicati</category><category>OpenMediaVault</category><category>selfhost</category></item><item><title>The California home insurance conundrum</title><link>https://benjamintseng.com/2024/04/the-california-home-insurance-conundrum/</link><guid isPermaLink="true">https://benjamintseng.com/2024/04/the-california-home-insurance-conundrum/</guid><description>The California home insurance conundrum</description><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a California homeowner, I’ve watched with dismay as &lt;a href=&quot;https://apnews.com/article/california-wildfire-insurance-e31bef0ed7eeddcde096a5b8f2c1768f&quot;&gt;homeowner insurance provider after homeowner insurance provider have fled the state in the face of wildfire risk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It was quite the shock when I discovered recently (HT: &lt;a href=&quot;https://www.axios.com/newsletters/axios-markets&quot;&gt;Axios Markets newsletter&lt;/a&gt;) that, &lt;a href=&quot;https://www.nerdwallet.com/article/insurance/average-homeowners-insurance-cost&quot;&gt;according to NerdWallet&lt;/a&gt;, California actually has some of the cheapest homeowners insurance rates in the country!&lt;/p&gt;
&lt;div class=&quot;my-8 border border-[#E2E8F0] bg-[#F8FAFC] rounded-md p-5 sm:p-6 not-prose&quot;&gt; &lt;div class=&quot;border-b border-[#E2E8F0] pb-3 mb-4 flex items-center justify-between&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#1E3A8A] font-semibold&quot;&gt;
Data Analysis
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A]&quot;&gt;
Homeowners Insurance Average Cost by State (2024)
&lt;/h4&gt; &lt;/div&gt; &lt;span class=&quot;text-xs font-mono-data text-[#64748B]&quot;&gt;
Source: Bankrate / Infogram
&lt;/span&gt; &lt;/div&gt; &lt;div class=&quot;overflow-x-auto&quot;&gt; &lt;table class=&quot;w-full text-left text-sm font-mono-data border-collapse&quot;&gt; &lt;thead&gt; &lt;tr class=&quot;border-b border-[#CBD5E1] bg-[#F1F5F9] text-[#0F172A] text-xs&quot;&gt; &lt;th class=&quot;py-2.5 px-3&quot;&gt;Rank / State&lt;/th&gt; &lt;th class=&quot;py-2.5 px-3&quot;&gt;Avg Annual Premium ($300k Dwelling)&lt;/th&gt; &lt;th class=&quot;py-2.5 px-3&quot;&gt;vs National Average ($1,759)&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody class=&quot;divide-y divide-[#E2E8F0] bg-white text-xs&quot;&gt; &lt;tr class=&quot;hover:bg-[#F8FAFC]&quot;&gt; &lt;td class=&quot;py-2 px-3 font-semibold text-[#B91C1C]&quot;&gt;1. Florida&lt;/td&gt; &lt;td class=&quot;py-2 px-3 font-semibold&quot;&gt;$5,538 / yr&lt;/td&gt; &lt;td class=&quot;py-2 px-3 text-[#B91C1C]&quot;&gt;+215%&lt;/td&gt; &lt;/tr&gt; &lt;tr class=&quot;hover:bg-[#F8FAFC]&quot;&gt; &lt;td class=&quot;py-2 px-3 font-semibold text-[#B91C1C]&quot;&gt;2. Louisiana&lt;/td&gt; &lt;td class=&quot;py-2 px-3 font-semibold&quot;&gt;$4,863 / yr&lt;/td&gt; &lt;td class=&quot;py-2 px-3 text-[#B91C1C]&quot;&gt;+176%&lt;/td&gt; &lt;/tr&gt; &lt;tr class=&quot;hover:bg-[#F8FAFC]&quot;&gt; &lt;td class=&quot;py-2 px-3 font-semibold text-[#B91C1C]&quot;&gt;3. Oklahoma&lt;/td&gt; &lt;td class=&quot;py-2 px-3 font-semibold&quot;&gt;$4,570 / yr&lt;/td&gt; &lt;td class=&quot;py-2 px-3 text-[#B91C1C]&quot;&gt;+160%&lt;/td&gt; &lt;/tr&gt; &lt;tr class=&quot;hover:bg-[#F8FAFC] bg-[#EFF6FF]&quot;&gt; &lt;td class=&quot;py-2 px-3 font-semibold text-[#1E3A8A]&quot;&gt;21. California&lt;/td&gt; &lt;td class=&quot;py-2 px-3 font-semibold text-[#1E3A8A]&quot;&gt;$1,452 / yr&lt;/td&gt; &lt;td class=&quot;py-2 px-3 text-[#15803D] font-semibold&quot;&gt;-17% (Artificially Suppressed)&lt;/td&gt; &lt;/tr&gt; &lt;tr class=&quot;hover:bg-[#F8FAFC]&quot;&gt; &lt;td class=&quot;py-2 px-3&quot;&gt;50. Hawaii&lt;/td&gt; &lt;td class=&quot;py-2 px-3&quot;&gt;$582 / yr&lt;/td&gt; &lt;td class=&quot;py-2 px-3 text-[#15803D]&quot;&gt;-67%&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;p class=&quot;text-xs text-[#64748B] mt-3&quot;&gt;
*Note: California&apos;s Proposition 103 regulatory regime kept headline premium rates below the national average despite soaring wildfire loss costs, contributing to insurer non-renewals.
&lt;/p&gt; &lt;/div&gt;
&lt;p&gt;It begs the Econ 101 question — is it really that the cost of wildfires are too high? Or that the price insurance companies can charge (something heavily regulated by state insurance commissions) is kept too low / not allowed to vary enough based on actual fire risk?&lt;/p&gt;</content:encoded><category>California</category><category>homeowners insurance</category></item><item><title>Why Intel has to make its foundry business work</title><link>https://benjamintseng.com/2024/04/why-intel-has-to-make-its-foundry-business-work/</link><guid isPermaLink="true">https://benjamintseng.com/2024/04/why-intel-has-to-make-its-foundry-business-work/</guid><description>Reading Note: Why Intel has to make its foundry business work</description><pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Historically, Intel has (1) designed and (2) manufactured its chips that it sells (primarily into computer and server systems). It prided itself on having the most advanced (1) designs and (2) manufacturing technology, keeping both close to its chest.&lt;/p&gt;
&lt;p&gt;In the late 90s/00s, semiconductor companies increasingly embraced the “fabless model”, whereby they would only do the (1) design while outsourcing the manufacturing to foundries like TSMC. This made it much easier and less expensive to build up a burgeoning chip business and is the secret to the success of semiconductor giants like NVIDIA and Qualcomm.&lt;/p&gt;
&lt;p&gt;Companies like Intel scoffed at this, arguing that the combination of (1) design and (2) manufacturing gave their products an advantage, one that they used to achieve a dominant position in the computing chip segment. And, it’s an argument which underpins why they have never made a significant effort in becoming a contract manufacturer — after all, if part of your technological magic is the (2) manufacturing, why give it to anyone else?&lt;/p&gt;
&lt;p&gt;The success of TSMC has brought a lot of questions about Intel’s advantage in manufacturing and, given recent announcements by Intel and the US’s CHIPS Act, a renewed focus on actually becoming a contract manufacturer to the world’s leading chip designers.&lt;/p&gt;
&lt;p&gt;While much of the attention has been paid to the manufacturing prowess rivalry and the geopolitical reasons behind this, I think &lt;strong&gt;the real reason Intel has to make the foundry business work is simple: their biggest customers are all becoming chip designers.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While a lot of laptops and desktops and servers are still sold in the traditional fashion, the reality is more and more of the server market is being dominated by a handful of hyperscale data center operators like Amazon, Google, Meta/Facebook, and Microsoft, companies that have historically been able to obtain the best prices from Intel because of their volume. But, in recent years, in the chase for better and better performance and cost and power consumption, they have begun designing their own chips adapted to their own systems (as this latest Google announcement for Google’s own ARM-based server chips shows).&lt;/p&gt;
&lt;p&gt;Are these chips as good as Intel’s across every dimension? Almost certainly not. It’s hard to overtake a company like Intel’s decades of design prowess and market insight. But, they don’t have to be. They only have to be better at the specific use case Google / Microsoft / Amazon / etc need it to be for.&lt;/p&gt;
&lt;p&gt;And, in that regard, that leaves Intel with really only one option: it &lt;em&gt;has&lt;/em&gt; to make the foundry business work, or it risks losing not just the revenue from (1) designing a data center chip, but from the (2) manufacturing as well.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Google Blog&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Axion processors combine Google’s silicon expertise with Arm’s highest performing CPU cores to deliver instances with up to 30% better performance than the fastest general-purpose Arm-based instances available in the cloud today, up to 50% better performance and up to 60% better energy-efficiency than comparable current-generation x86-based instances1. That’s why we’ve already started deploying Google services like BigTable, Spanner, BigQuery, Blobstore, Pub/Sub, Google Earth Engine, and the YouTube Ads platform on current generation Arm-based servers and plan to deploy and scale these services and more on Axion soon.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/04/image1_Ab4940U.max-2000x2000-1-1024x705.jpg&quot; alt=&quot;Introducing Google Axion Processors, our new Arm-based CPUs&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Introducing Google Axion Processors, our new Arm-based CPUs &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Amin Vahdat&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Google Blog&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Amazon</category><category>fabless</category><category>foundry</category><category>Google</category><category>Intel</category><category>NVIDIA</category><category>Qualcomm</category><category>semiconductors</category><category>tech</category><category>TSMC</category></item><item><title>Starlink in the wrong hands</title><link>https://benjamintseng.com/2024/03/starlink-in-the-wrong-hands/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/starlink-in-the-wrong-hands/</guid><description>Reading Note: Starlink in the wrong hands</description><pubDate>Tue, 26 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;On one level, this shouldn’t be a surprise. Globally always available satellite constellation = everyone and anyone will try to access this. This was, like many technologies, always going to have positive impacts — i.e. people accessing the internet where they otherwise couldn’t due to lack of telecommunications infrastructure or repression — and negative — i.e. terrorists and criminal groups evading communications blackouts.&lt;/p&gt;
&lt;p&gt;The question is whether or not SpaceX had the foresight to realize this was a likely outcome and to institute security processes and checks to reduce the likelihood of the negative.&lt;/p&gt;
&lt;p&gt;That remains to be seen…&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-03-25/elon-musk-s-spacex-sees-starlink-black-market-trade-grow-worldwide&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“In Yemen, which is in the throes of a decade-long civil war, a government official conceded that Starlink is in widespread use. Many people are prepared to defy competing warring factions, including Houthi rebels, to secure terminals for business and personal communications, and evade the slow, often censored internet service that’s currently available.
Or take Sudan, where a year-long civil war has led to accusations of genocide, crimes against humanity and millions of people fleeing their homes. With the regular internet down for months, soldiers of the paramilitary Rapid Support Forces are among those using the system for their logistics, according to Western diplomats.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/image-4-1024x576.jpeg&quot; alt=&quot;Elon Musk\u2019s Starlink Terminals Are Falling Into the Wrong Hands&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-03-25/elon-musk-s-spacex-sees-starlink-black-market-trade-grow-worldwide&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Elon Musk\u2019s Starlink Terminals Are Falling Into the Wrong Hands &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Bruce Einhorn, Loni Prinsloo, Marissa Newman, Simon Marks&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-03-25/elon-musk-s-spacex-sees-starlink-black-market-trade-grow-worldwide&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Starlink</category><category>tech</category></item><item><title>Why don’t we (still) have rapid viral diagnostics?</title><link>https://benjamintseng.com/2024/03/why-dont-we-still-have-rapid-viral-diagnostics/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/why-dont-we-still-have-rapid-viral-diagnostics/</guid><description>Reading Note: Why don’t we (still) have rapid viral diagnostics?</description><pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most disappointing outcomes in the US from the COVID pandemic was the rise of the antivaxxer / public health skeptic and the dramatic politicization of public health measures.&lt;/p&gt;
&lt;p&gt;But, not everything disappointing has stemmed from that. Our lack of cheap rapid tests for diseases like Flu and RSV is a sad reminder of our regulatory system failing to learn from the COVID crisis of the value of cheap, rapid in-home testing or adopting to the new reality that many Americans now know how to do such testing.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; NBC News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nbcnews.com/health/health-news/rapid-tests-covid-rsv-flu-are-available-europe-stopping-us-rcna64470&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Dr. Michael Mina, the chief science officer for the at-home testing company eMed, said the FDA tends to have strict requirements for over-the-counter tests. The agency often asks manufacturers to conduct studies that demonstrate that people can administer at-home tests properly — a process that may cost millions of dollars and delay the test’s authorization by months or years, Mina said.
“It’s taken a very long time in the past to get new self-tests authorized, like HIV tests or even pregnancy tests,” he said. “They’ve taken years and years and years and years. We have a pretty conservative regulatory approach.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-24-235348-1024x748.png&quot; alt=&quot;Rapid tests for Covid, RSV and the flu are available in Europe. Why not in the U.S.?&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nbcnews.com/health/health-news/rapid-tests-covid-rsv-flu-are-available-europe-stopping-us-rcna64470&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Rapid tests for Covid, RSV and the flu are available in Europe. Why not in the U.S.? &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Aria Bendix&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;NBC News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nbcnews.com/health/health-news/rapid-tests-covid-rsv-flu-are-available-europe-stopping-us-rcna64470&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>COVID-19</category><category>diagnostic</category><category>FDA</category><category>flu</category><category>RSV</category></item><item><title>Huggingface: security vulnerability?</title><link>https://benjamintseng.com/2024/03/huggingface-security-vulnerability/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/huggingface-security-vulnerability/</guid><description>Reading Note: Huggingface: security vulnerability?</description><pubDate>Wed, 20 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anyone who’s done any AI work is familiar with &lt;a href=&quot;https://huggingface.co/models&quot;&gt;Huggingface&lt;/a&gt;. They are a repository of trained AI models and maintainer of AI libraries and services that have helped push forward AI research. It is now considered standard practice for research teams with something to boast to publish their models to Huggingface for all to embrace. This culture of open sharing has helped the field make its impressive strides in recent years and helped make Huggingface a “center” in that community.&lt;/p&gt;
&lt;p&gt;However, this ease of use and availability of almost every publicly accessible model under the sun comes with a price. Because many AI models require additional assets as well as the execution of code to properly initialize, Huggingface’s own tooling could become a vulnerability. Aware of this, Huggingface has instituted &lt;a href=&quot;https://huggingface.co/docs/hub/en/security-malware&quot;&gt;their own security scanning procedures&lt;/a&gt; on models they host.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/&quot;&gt;But security researchers at JFrog&lt;/a&gt; have found that even with such measures, have identified a number of models that exploit gaps in Huggingface’s scanning which allow for remote code execution. One example model they identified baked into a Pytorch model a “phone home” functionality which would initiate a secure connection between the server running the AI model and another (potentially malicious) computer (seemingly based in Korea).&lt;/p&gt;
&lt;p&gt;The JFrog researchers were also able to demonstrate that they could upload models which would allow them to execute other arbitrary Python code which would not be flagged by Huggingface’s security scans.&lt;/p&gt;
&lt;p&gt;While I think it’s a long way from suggesting that Huggingface is some kind of security cesspool, the research reminds us that so long as a connected system is both popular and versatile, there will always be the chance for security risk, and it’s important to keep that in mind.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; JFrog blog&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“As with other open-source repositories, we’ve been regularly monitoring and scanning AI models uploaded by users, and have discovered a model whose loading leads to code execution, after loading a pickle file. The model’s payload grants the attacker a shell on the compromised machine, enabling them to gain full control over victims’ machines through what is commonly referred to as a “backdoor”. This silent infiltration could potentially grant access to critical internal systems and pave the way for large-scale data breaches or even corporate espionage, impacting not just individual users but potentially entire organizations across the globe, all while leaving victims utterly unaware of their compromised state.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-20-134506.png&quot; alt=&quot;Data Scientists Targeted by Malicious Hugging Face ML Models with Silent Backdoor&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Data Scientists Targeted by Malicious Hugging Face ML Models with Silent Backdoor &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;David Cohen&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;JFrog blog&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://jfrog.com/blog/data-scientists-targeted-by-malicious-hugging-face-ml-models-with-silent-backdoor/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Huggingface</category><category>JFrog</category><category>security</category></item><item><title>Nope, the Dunning-Kruger Effect is just bad statistics</title><link>https://benjamintseng.com/2024/03/nope-the-dunning-kruger-effect-is-just-bad-statistics/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/nope-the-dunning-kruger-effect-is-just-bad-statistics/</guid><description>Reading Note: Nope, the Dunning-Kruger Effect is just bad statistics</description><pubDate>Mon, 18 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect&quot;&gt;The Dunning-Kruger effect&lt;/a&gt; encapsulates something many of us feel familiar with: that the least intelligent oftentimes assume they know more than they actually do. Wrap that sentiment &lt;a href=&quot;https://www.avaresearch.com/files/UnskilledAndUnawareOfIt.pdf&quot;&gt;in an academic paper&lt;/a&gt; written by two professors at an Ivy League institution and throw in some charts and statistics and you’ve got a easily citable piece of trivia to make yourself feel smarter than the person who you just caught commenting on something they know nothing about.&lt;/p&gt;
&lt;p&gt;Well, according to &lt;a href=&quot;https://economicsfromthetopdown.com/2022/04/08/the-dunning-kruger-effect-is-autocorrelation/&quot;&gt;this fascinating blog post&lt;/a&gt; (HT: &lt;a href=&quot;https://www.ericsuh.com/&quot;&gt;Eric&lt;/a&gt;), we have it all wrong. The way that Dunning-Kruger constructed their statistical test was designed to &lt;em&gt;always&lt;/em&gt; construct a positive relationship between skill and perceived ability.&lt;/p&gt;
&lt;p&gt;The whole thing is worth a read, but they showed that using completely randomly generated numbers (where there is no relationship between perceived ability and skill), you will always find a relationship between the “skill gap” (&lt;em&gt;perceived ability – skill)&lt;/em&gt; and &lt;em&gt;skill&lt;/em&gt;, or to put it more plainly,&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s0.wp.com/latex.php?latex=+%28y-x%29+%5Csim+x&amp;bg=ffffff&amp;fg=000&amp;s=0&amp;c=20201002&quot; alt=&quot; (y-x) \sim x&quot;/&gt;&lt;/p&gt;
&lt;p&gt;With &lt;code&gt;y&lt;/code&gt; being perceived ability and &lt;code&gt;x&lt;/code&gt; being actual measured ability.&lt;/p&gt;
&lt;p&gt;What you &lt;em&gt;should&lt;/em&gt; be looking for is a relationship between perceived ability and measured ability (or directly between &lt;code&gt;y&lt;/code&gt; and &lt;code&gt;x&lt;/code&gt;) and when you do this with data, you find that the evidence for such a claim generally isn’t there!&lt;/p&gt;
&lt;p&gt;In other words:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Economics from the Top Down&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://economicsfromthetopdown.com/2022/04/08/the-dunning-kruger-effect-is-autocorrelation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The Dunning-Kruger effect also emerges from data in which it shouldn’t. For instance, if you carefully craft random data so that it does not contain a Dunning-Kruger effect, you will still find the effect. The reason turns out to be embarrassingly simple: the Dunning-Kruger effect has nothing to do with human psychology. It is a statistical artifact — a stunning example of autocorrelation.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-18-152034-1024x556.png&quot; alt=&quot;The Dunning-Kruger Effect is Autocorrelation&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://economicsfromthetopdown.com/2022/04/08/the-dunning-kruger-effect-is-autocorrelation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Dunning-Kruger Effect is Autocorrelation &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Blair Fix&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Economics from the Top Down&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://economicsfromthetopdown.com/2022/04/08/the-dunning-kruger-effect-is-autocorrelation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>autocorrelation</category><category>Dunning-Kruger effect</category><category>statistics</category></item><item><title>A Heart Atlas</title><link>https://benjamintseng.com/2024/03/a-heart-atlas/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/a-heart-atlas/</guid><description>A Heart Atlas</description><pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The human heart is an incredibly sophisticated organ that, in addition to being one of the first organs developed while embryos develop, is quite difficult to understand at a cellular level (where are the cells, how do they first develop, etc.).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cardiology.ucsd.edu/research/labs/chi/index.html&quot;&gt;Neil Chi’s group at UCSD&lt;/a&gt; (&lt;a href=&quot;https://www.nature.com/articles/s41586-024-07171-z&quot;&gt;link to Nature paper&lt;/a&gt;) were able to use multiplex imaging of fluorescent-tagged RNA molecules to profile the gene expression profiles of different types of heart cells and see where they are located and how they develop!&lt;/p&gt;
&lt;p&gt;The result is an amazing visualization, check it out at the video:&lt;/p&gt;</content:encoded><category>heart</category><category>Science</category></item><item><title>Cat Bond Fortunes</title><link>https://benjamintseng.com/2024/03/cat-bond-fortunes/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/cat-bond-fortunes/</guid><description>Reading Note: Cat Bond Fortunes</description><pubDate>Thu, 14 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Until recently, I only knew of the &lt;em&gt;existence&lt;/em&gt; of cat(astrophe) bonds — financial instruments used to raise money for insurance against catastrophic events where investors profit when no disaster happens.&lt;/p&gt;
&lt;p&gt;I had no idea, until reading &lt;a href=&quot;https://www.bloomberg.com/features/2024-catastrophe-bonds-fermat/&quot;&gt;this Bloomberg article&lt;/a&gt; about the success of Fermat Capital Management, how large the space had gotten ($45 billion!!) or how it was one of the most profitable hedge fund strategies of 2023!&lt;/p&gt;
&lt;p&gt;This is becoming an increasingly important intersection between climate change and finance as insurance companies and property owners struggle with the rising risk of rising damage from extreme climate events. Given how young much of the science of evaluating these types of risks is, it’s no surprise that quantitative minds and modelers are able to profit here.&lt;/p&gt;
&lt;p&gt;The entire piece reminded me of Richard Zeckhauser’s famous 2006 article &lt;em&gt;&lt;a href=&quot;https://scholar.harvard.edu/files/rzeckhauser/files/investing_in_unknown_and_unknowable.pdf&quot;&gt;Investing in the Unknown and Unknowable&lt;/a&gt;&lt;/em&gt; which covers how massive investment returns can be realized by tackling problems that seem too difficult for other investors to understand.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/features/2024-catastrophe-bonds-fermat/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Investing in cat bonds was the most profitable hedge fund strategy of 2023. Fermat delivered a 20% return, beating the average 8% achieved by hedge funds as a whole. While other cat bond funds did well too, Fermat’s $10 billion portfolio — capturing a quarter of the market — made it by far the most prolific investor to take advantage of a bumper year.
Cat bonds investors are gambling on nature. If a disaster they’ve bet on occurs, their money is used to settle insurance claims. If it doesn’t, they get handsome returns. For decades, the instruments were a last resort reserved for super-rare events, such as a cataclysmic storm on the scale of Hurricane Katrina. But multibillion-dollar calamities have become alarmingly frequent on a warmer planet.
“The insurance market is on edge,” says Seo. “It’s freaked out about risk and wants as little as possible.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/image-3.jpeg&quot; alt=&quot;How a Physics Whiz Made a Fortune Betting on Nature\u2019s Catastrophes&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/features/2024-catastrophe-bonds-fermat/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; How a Physics Whiz Made a Fortune Betting on Nature\u2019s Catastrophes &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Gautam Naik&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/features/2024-catastrophe-bonds-fermat/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cat bonds</category><category>climate change</category><category>Fermat Capital</category><category>finance</category><category>insurance</category><category>Richard Zeckhauser</category><category>risk</category></item><item><title>Shein and Temu now drive global cargo</title><link>https://benjamintseng.com/2024/03/shein-and-temu-now-drive-global-cargo/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/shein-and-temu-now-drive-global-cargo/</guid><description>Reading Note: Shein and Temu now drive global cargo</description><pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Maybe you have shopped on Shein or Temu. Maybe you only know someone (younger?) who has. Maybe you only know Temu because of their repeat Superbowl ads.&lt;/p&gt;
&lt;p&gt;But these Chinese eCommerce companies are now the main driver behind air and ship cargo rates with Temu and Shein combined accounting for 9,000 tons per day of shipments!&lt;/p&gt;
&lt;p&gt;This is &lt;em&gt;scale&lt;/em&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Reuters&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.reuters.com/business/retail-consumer/rise-fast-fashion-shein-temu-roils-global-air-cargo-industry-2024-02-21/?lh_aid=3890588&amp;lh_cid=pwzaxsy3yr&amp;di=3a3c2d78731f7cbedf628b37cae379f7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Shein and Temu together send almost 600,000 packages to the United States every day, according to a June 2023 report by the U.S. Congress – is boosting air-freight costs from Asian hubs like Guangzhou and Hong Kong, making off-peak seasons almost disappear and causing capacity shortages, the sources said.
“The biggest trend impacting air freight right now is not the Red Sea, it’s Chinese e-commerce companies like Shein or Temu,” said Basile Ricard, director of Greater China operations at freight forwarder Bollore Logistics”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/HGENBPJOHZNS5CIQJ2BK5XMUVU-1024x655.jpg&quot; alt=&quot;Rise of fast-fashion Shein, Temu roils global air cargo industry&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.reuters.com/business/retail-consumer/rise-fast-fashion-shein-temu-roils-global-air-cargo-industry-2024-02-21/?lh_aid=3890588&amp;lh_cid=pwzaxsy3yr&amp;di=3a3c2d78731f7cbedf628b37cae379f7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Rise of fast-fashion Shein, Temu roils global air cargo industry &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Arriana McLymore, Casey Hall, and Lisa Barrington&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Reuters&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.reuters.com/business/retail-consumer/rise-fast-fashion-shein-temu-roils-global-air-cargo-industry-2024-02-21/?lh_aid=3890588&amp;lh_cid=pwzaxsy3yr&amp;di=3a3c2d78731f7cbedf628b37cae379f7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cargo</category><category>China</category><category>eCommerce</category><category>Shein</category><category>Temu</category></item><item><title>Geothermal data centers</title><link>https://benjamintseng.com/2024/03/geothermal-data-centers/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/geothermal-data-centers/</guid><description>Reading Note: Geothermal data centers</description><pubDate>Fri, 08 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The data centers that power AI and cloud services are limited by 3 things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the server hardware (oftentimes limited by access to advanced semiconductors)&lt;/li&gt;
&lt;li&gt;available space (their footprint is massive which makes it hard to put them close to where people live)&lt;/li&gt;
&lt;li&gt;availability of cheap &amp;amp; reliable (and, generally, clean) power&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you, as a data center operator, can tap a new source of cheap &amp;amp; reliable power, you will go very far as you alleviate one of the main constraints on the ability to add to your footprint.&lt;/p&gt;
&lt;p&gt;It’s no small wonder, then, that Google is willing to explore partnerships with next-gen geothermal startups like Fervo in a meaningful long-term fashion.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Latitude Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/google-geothermal-data-centers&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“But Google is hoping the road to commercialization for next-generation geothermal will mimic the early days of the tech industry’s solar procurement efforts, Maud Texier, global director of clean energy and decarbonization development, told Latitude Media.
“While there are some important differences between solar and geothermal technologies, we would like to see geothermal power follow a similar trajectory as solar has over the last few decades in terms of rapid cost declines and performance improvements,” Texier said.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/image-2-1024x672.jpeg&quot; alt=&quot;Google: Geothermal could follow \u2018similar trajectory\u2019 to solar&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/google-geothermal-data-centers&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Google: Geothermal could follow \u2018similar trajectory\u2019 to solar &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Maeve Allsup&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Latitude Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.latitudemedia.com/news/google-geothermal-data-centers&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>data center</category><category>Fervo</category><category>geothermal</category><category>Google</category></item><item><title>Dexcom non-prescription glucose monitor approved</title><link>https://benjamintseng.com/2024/03/dexcom-non-prescription-glucose-monitor-approved/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/dexcom-non-prescription-glucose-monitor-approved/</guid><description>Reading Note: Dexcom non-prescription glucose monitor approved</description><pubDate>Wed, 06 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cheap and accurate continuous glucose monitoring is a bit of a holy grail for consumer metabolic health as it allows people to understand how their diet and exercise impact their blood sugar levels, which can vary from person to person.&lt;/p&gt;
&lt;p&gt;It’s also a holy grail for diabetes care as making sure blood sugar levels are neither too high nor too low is critical for health (too low and you can pass out or risk seizure or coma; too high and you risk diabetic neuropathy, kidney disease, and cardiovascular problems). For Type I diabetics and severe Type II diabetics, it’s also vital for dosing insulin.&lt;/p&gt;
&lt;p&gt;Because insulin dosing needs to be done just right, I was always under the impression that one of two things would happen along the way to producing a cheap continuous glucose monitor, either:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The FDA would be hesitant to approve a device that wasn’t highly accurate to avoid the risk of a consumer using the reading to mis-dose insulin OR&lt;/li&gt;
&lt;li&gt;The device makers (like Dexcom) would be hesitant to create an accurate enough glucose monitor that it might cannibalize their highly profitable prescription glucose monitoring business&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result, I was pleasantly surprised that Dexcom’s over-the-counter Stelo continuous glucose monitor was &lt;a href=&quot;https://www.fda.gov/news-events/press-announcements/fda-clears-first-over-counter-continuous-glucose-monitor&quot;&gt;approved by the FDA&lt;/a&gt;. It remains to be seen what the price will be and what level of information the Stelo will share with the customer, but I view this as a positive development and (at least for now) tip my hat to both the FDA and Dexcom here.&lt;/p&gt;
&lt;p&gt;(Thanks to &lt;a href=&quot;https://twitter.com/erinbrodwin/status/1765455848015606255&quot;&gt;Erin Brodwin from Axios&lt;/a&gt; for sharing the news on X)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; CNBC&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.cnbc.com/2024/03/05/dexcom-announces-stelo-has-been-cleared-by-the-fda-.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Dexcom shared Stelo’s name, and that the device had been submitted to the FDA for review in February. The sensor will be worn on the upper arm and lasts for up to 15 days before it needs to be replaced, according Dexcom.
Jake Leach, chief operating officer at Dexcom, told CNBC in February that Stelo will have a unique platform and branding. The platform will be tailored to the needs of these Type 2 patients, he said, which means it will not include many of the alerts and notifications meant for diabetes patients at risk of experiencing more serious emergencies.
“It’s designed to be a simpler experience,” Leach said in an interview. “There’s a lot of people who could benefit.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-06-162843.png&quot; alt=&quot;Dexcom\u2019s first-ever over-the-counter glucose monitor patch gets FDA clearance&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.cnbc.com/2024/03/05/dexcom-announces-stelo-has-been-cleared-by-the-fda-.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Dexcom\u2019s first-ever over-the-counter glucose monitor patch gets FDA clearance &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Ashley Capoot&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;CNBC&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.cnbc.com/2024/03/05/dexcom-announces-stelo-has-been-cleared-by-the-fda-.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Dexcom</category><category>diabetes</category><category>FDA</category><category>glucose monitoring</category></item><item><title>“Corporate” Design</title><link>https://benjamintseng.com/2024/03/corporate-design/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/corporate-design/</guid><description>Reading Note: “Corporate” Design</description><pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Read an introspective piece by famed ex-Frog Design leader Robert Fabricant about the state of the design industry and the unease that he says many of his peers are feeling. While I disagree with some of the concerns he lays out around AI / diversity being the drivers of this unease, he makes a strong case for how this is a natural pendulum swing after years of seeing “Chief Design Officers” and design innovation groups added to many corporate giants.&lt;/p&gt;
&lt;p&gt;I’ve had the privilege of working with very strong designers. This has helped me appreciate the value of &lt;strong&gt;design thinking&lt;/strong&gt; as something that goes far beyond “making things pretty” and believe, wholeheartedly, that it’s something that should be more broadly adopted.&lt;/p&gt;
&lt;p&gt;At the same time, it’s also not a surprise to me that during a time of layoffs and cost cutting, a design function which has become a little “spoiled” in the past years and of which calculating financial returns is experiencing some painful transition especially for creative-minded designers who struggle with that ROI evolution.&lt;/p&gt;
&lt;p&gt;If Phase 1 was getting companies to recognize that design thinking is needed, Phase 2 will be the space learning how to measure, communicate, and optimize what the value of a team of seasoned designers brings to the bottom line.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Fast Company&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.fastcompany.com/91027996/the-big-design-freak-out-a-generation-of-design-leaders-grapple-with-their-future&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“In recent years, there has also been a shift in the very nature of design leadership inside companies. Where the early corporate pioneers were in “building mode” to establish and integrate design capabilities, these functions are now focused on optimization. That is where the professionals at IBM and Accenture/Song come in, with creativity giving way to utilization as the primary metric of success, particularly in an economic downturn. 
Magowan of Design Leaders is hearing this sentiment from his clients on the hiring side. “Companies are still adjusting,” he says. “Trying to understand how to embed design properly and not make the mistakes they made by hiring folks into design leadership roles who were not equipped.”
This transition is not well-suited to most creative leaders, even proven ones like Powell. “Scaling takes attention,” he says. “But once you get there, then you need to keep turning the dial so that this [design] machine runs more and more efficiently. For me that is where it got to be not as fun.” Perhaps 2024, then, is the right moment for the big handoff to the folks at McKinsey Design to lead the charge armed with their corporate reports and CDO roundtables on business value and design effectiveness?”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/image.jpeg&quot; alt=&quot;The big design freak-out: A generation of design leaders grapple with their future&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.fastcompany.com/91027996/the-big-design-freak-out-a-generation-of-design-leaders-grapple-with-their-future&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The big design freak-out: A generation of design leaders grapple with their future &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Robert Fabricant&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Fast Company&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.fastcompany.com/91027996/the-big-design-freak-out-a-generation-of-design-leaders-grapple-with-their-future&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>design thinking</category></item><item><title>Costco Love</title><link>https://benjamintseng.com/2024/03/costco-love/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/costco-love/</guid><description>Reading Note: Costco Love</description><pubDate>Mon, 04 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.economist.com/business/2024/02/15/why-costco-is-so-loved&quot;&gt;Nice piece in the &lt;em&gt;Economist&lt;/em&gt;&lt;/a&gt; about how Costco’s model of operational simplicity leads to a unique position in modern retail: beloved by customers, investors, AND workers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sell fewer things ➡️&lt;/li&gt;
&lt;li&gt;get better prices from suppliers &amp;amp; less inventory needed ➡️&lt;/li&gt;
&lt;li&gt;lower costs for customers ➡️&lt;/li&gt;
&lt;li&gt;more customers &amp;amp; more willing to pay recurring membership fee ➡️&lt;/li&gt;
&lt;li&gt;strong, recurring profits ➡️&lt;/li&gt;
&lt;li&gt;ability to pay well and promote from within 📈💪🏻&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Economist&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.economist.com/business/2024/02/15/why-costco-is-so-loved&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Customers are not the only fans of Costco, as the outpouring of affection from Wall Street analysts after Mr Galanti announced his retirement on February 6th made clear. The firm’s share price is 430 times what it was when he took the job nearly four decades ago, compared with 25 times for the s&amp;amp;p 500 index of large companies. It has continued to outperform the market in recent years.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-03-001006-1024x577.png&quot; alt=&quot;Why Costco is so loved&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.economist.com/business/2024/02/15/why-costco-is-so-loved&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Why Costco is so loved &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;The Economist&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.economist.com/business/2024/02/15/why-costco-is-so-loved&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>business</category><category>Costco</category><category>Economist</category><category>finance</category></item><item><title>How packaging tech is changing how we build &amp; design chips</title><link>https://benjamintseng.com/2024/03/how-packaging-tech-is-changing-how-we-build-design-chips/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/how-packaging-tech-is-changing-how-we-build-design-chips/</guid><description>Reading Note: How packaging tech is changing how we build &amp; design chips</description><pubDate>Sat, 02 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once upon a time, the hottest thing in chip design was &lt;strong&gt;“system-on-a-chip” (SOC)&lt;/strong&gt;. The idea is that you’d get the best cost and performance out of a chip by combining more parts into one piece of silicon. This would result in smaller area (less silicon = less cost) and faster performance (closer parts = faster communication) and resulted in more and more chips integrating more and more things.&lt;/p&gt;
&lt;p&gt;While the laws of physics haven’t reversed any of the above, the cost of designing chips that integrate more and more components has gone up sharply. Worse, different types of parts (like on-chip memory and physical/analog componentry) don’t scale down as well as pure logic transistors, making it very difficult to design chips that combine all these pieces.&lt;/p&gt;
&lt;p&gt;The rise of new types of packaging technologies, like &lt;a href=&quot;https://www.youtube.com/watch?v=NZ8t2zdTo2c&quot;&gt;Intel’s Foveros&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=mRQFJFmYMak&quot;&gt;Intel’s EMIB&lt;/a&gt;, &lt;a href=&quot;https://www.tsmc.com/english/dedicatedFoundry/technology/InFO&quot;&gt;TSMC’s InFO&lt;/a&gt;, new ways of separating power delivery from data delivery (&lt;a href=&quot;https://www.imec-int.com/en/articles/how-power-chips-backside&quot;&gt;backside power delivery&lt;/a&gt;), and more, has also made it so that you can more tightly integrate different pieces of silicon and improve their performance and size/cost.&lt;/p&gt;
&lt;p&gt;The result is now that many of the most advanced silicon today is built as &lt;strong&gt;packages of chiplets&lt;/strong&gt; rather than as massive SOC projects: a change that has happened over a fairly short period of time.&lt;/p&gt;
&lt;p&gt;This interview with IMEC (a semiconductor industry research center)’s head of logic technologies breaks this out…&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IEEE Spectrum&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://spectrum.ieee.org/cmos-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“What we’re doing in CMOS 2.0 is pushing that idea further, with much finer-grained disintegration of functions and stacking of many more dies. A first sign of CMOS 2.0 is the imminent arrival of backside-power-delivery networks. On chips today, all interconnects—both those carrying data and those delivering power—are on the front side of the silicon [above the transistors]. Those two types of interconnect have different functions and different requirements, but they have had to exist in a compromise until now. Backside power moves the power-delivery interconnects to beneath the silicon, essentially turning the die into an active transistor layer which is sandwiched between two interconnect stacks, each stack having a different functionality.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-27-121702-1024x735.png&quot; alt=&quot;What is CMOS 2.0?&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://spectrum.ieee.org/cmos-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; What is CMOS 2.0? &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Samuel K. Moore&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IEEE Spectrum&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://spectrum.ieee.org/cmos-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>backside power delivery</category><category>chiplets</category><category>Intel</category><category>Intel EMIB</category><category>Intel Foveros</category><category>semiconductors</category><category>system-on-chip</category><category>tech</category><category>TSMC</category><category>TSMC InFO</category></item><item><title>Store all the things: clean electricity means thermal energy storage boom</title><link>https://benjamintseng.com/2024/03/store-all-the-things-clean-electricity-means-thermal-energy-storage-boom/</link><guid isPermaLink="true">https://benjamintseng.com/2024/03/store-all-the-things-clean-electricity-means-thermal-energy-storage-boom/</guid><description>Reading Note: Store all the things: clean electricity means thermal energy storage boom</description><pubDate>Fri, 01 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Thermal energy storage&lt;/strong&gt; has been a difficult place for climatetech in years past. The low cost of fossil fuels (the source for vast majority of high temperature industrial heat to date) and the failure of large scale &lt;a href=&quot;https://en.wikipedia.org/wiki/Solar_thermal_energy&quot;&gt;solar thermal&lt;/a&gt; power plants to compete with the rapidly scaling solar photovoltaic industry made thermal storage feel like, at best, a market reserved for niche applications with unique fossil fuel price dynamics. This is despite some incredibly cool (dad-joke intended 🔥🥵🤓) technological ingenuity in the space.&lt;/p&gt;
&lt;p&gt;But, in a classic case of how cheap universal inputs change market dynamics, the plummeting cost and soaring availability of renewable electricity and the growing desire for industrial companies to get “clean” sources of industrial heat has resulted in almost a renaissance for the space as &lt;a href=&quot;https://www.canarymedia.com/articles/energy-storage/cheap-clean-energy-could-unleash-the-power-of-thermal-storage&quot;&gt;this Canary Media article&lt;/a&gt; (with a very nice table of thermal energy startups) points out.&lt;/p&gt;
&lt;p&gt;With cheap renewables (especially if the price varies), companies can buy electricity at low (sometimes near-zero if in the middle of a sunny and windy day) prices, convert that to high-temperature heat with an electric furnace, and store it for use later.&lt;/p&gt;
&lt;p&gt;While the devil’s in the details, in particular the round trip energy efficiency (how much energy you can get out versus what you put in), the delivered heat temperature range and rate (how hot and how much power), and, of course, the cost of the system, technologies like this could represent a key technology to green sectors of the economy that would otherwise be extremely difficult to lower carbon output for.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Canary Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/energy-storage/cheap-clean-energy-could-unleash-the-power-of-thermal-storage&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Rocks and hotness have existed for billions of years, but it’s only now that the two can be used to help the world decarbonize — and it’s all because the insanely low cost of solar and wind power has made thermal storage economically possible.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/03/Screenshot-2024-03-01-102820-1024x590.png&quot; alt=&quot;Cheap clean energy could unleash the power of thermal storage&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/energy-storage/cheap-clean-energy-could-unleash-the-power-of-thermal-storage&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Cheap clean energy could unleash the power of thermal storage &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Eric Wesoff&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Canary Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/energy-storage/cheap-clean-energy-could-unleash-the-power-of-thermal-storage&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>cleantech</category><category>climatetech</category><category>heat</category><category>industrial</category><category>solar energy</category><category>thermal energy storage</category></item><item><title>The IE6 YouTube conspiracy</title><link>https://benjamintseng.com/2024/02/the-ie6-youtube-conspiracy/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/the-ie6-youtube-conspiracy/</guid><description>Reading Note: The IE6 YouTube conspiracy</description><pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An oldie but a goodie — the story of how the YouTube team, post-Google acquisition, put up a “we won’t support Internet Explorer 6 in the future” message without any permission from anyone. (HT: &lt;a href=&quot;https://www.ericsuh.com/&quot;&gt;Eric S&lt;/a&gt;)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Chris Zacharias&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://blog.chriszacharias.com/a-conspiracy-to-kill-ie6&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“IE6 had been the bane of our web development team’s existence. At least one to two weeks every major sprint cycle had to be dedicated to fixing new UI that was breaking in IE6. Despite this pain, we were told we had to continue supporting IE6 because our users might be unable to upgrade or might be working at companies that were locked in. IE6 users represented around 18% of our user base at that point. We understood that we could not just drop support for it. However, sitting in that cafeteria, having only slept about a few hours each in the previous days, our compassion for these users had completely eroded away. We began collectively fantasizing about how we could exact our revenge on IE6. One idea rose to the surface that quickly captured everyone’s attention. Instead of outright dropping IE6 support, what if we just threatened to? How would users react? Would they revolt against YouTube? Would they mail death threats to our team like had happened in the past? Or would they suddenly become loud advocates of modern browsers?”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/image.jpeg&quot; alt=&quot;A Conspiracy to Kill IE6&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://blog.chriszacharias.com/a-conspiracy-to-kill-ie6&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; A Conspiracy to Kill IE6 &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Chris Zacharias&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://blog.chriszacharias.com/a-conspiracy-to-kill-ie6&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Google</category><category>IE6</category><category>tech</category><category>YouTube</category></item><item><title>Using your ear to control devices</title><link>https://benjamintseng.com/2024/02/using-your-ear-to-control-devices/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/using-your-ear-to-control-devices/</guid><description>Reading Note: Using your ear to control devices</description><pubDate>Tue, 27 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Very cool that we’re still finding new things we can control that can be applied to making the lives of people better.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; EETimes&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.eetimes.com/meet-the-ear-muscle-that-could-hold-a-key-to-assistive-tech/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“I found that a small, middle-ear muscle called the tensor tympani can be tensed voluntarily, otherwise known as “ear rumbling.”
In studies funded by the National Institute for Health and Care Research (NIHR), we found that about 55% of people could tense the muscle in isolation, and about 80% could do so when yawning.
We believe that some people with neurological disabilities retain control over the tensor tympani, even when they’ve lost almost all other functionality. The muscle also moves physiologically as the eyes move, a fact that presents a further opportunity to track people’s intent or augment how we communicate non-verbally.
The ear isn’t just an auditory input device; it also has the potential to be a complex input and output tool.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-27-113608.png&quot; alt=&quot;Meet the Ear Muscle That Could Hold a Key to Assistive Tech&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.eetimes.com/meet-the-ear-muscle-that-could-hold-a-key-to-assistive-tech/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Meet the Ear Muscle That Could Hold a Key to Assistive Tech &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Nick Gompertz&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;EETimes&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.eetimes.com/meet-the-ear-muscle-that-could-hold-a-key-to-assistive-tech/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>ear</category><category>tech</category></item><item><title>Intel’s focus on chip packaging technology</title><link>https://benjamintseng.com/2024/02/intels-focus-on-chip-packaging-technology/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/intels-focus-on-chip-packaging-technology/</guid><description>Reading Note: Intel’s focus on chip packaging technology</description><pubDate>Mon, 26 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Intel has been interested in entering the foundry (semiconductor contract manufacturing) space for a long time. For years, Intel proudly boasted of being at the forefront of semiconductor technology — being first to market with the FinFET and smaller and smaller process geometries.&lt;/p&gt;
&lt;p&gt;So it’s interesting how, with the exception of the RibbonFET (the successor to the FinFET), almost all of Intel’s manufacturing technology announcements (&lt;a href=&quot;https://www.intel.com/content/dam/www/central-libraries/us/en/documents/2024-02/intel-tech-clearwater-wp.pdf&quot;&gt;see whitepaper&lt;/a&gt;) in it’s whitepaper to appeal to prospective foundry customers, all of it’s announcements pertain to packaging / “back end” technologies.&lt;/p&gt;
&lt;p&gt;I think it’s both a recognition that they are no longer the furthest ahead in that race, as well as recognition that Moore’s Law scaling has diminishing returns for many applications. Now, a major cost and performance driver is technology that was once considered easily outsourced to low cost assemblers in Asia is now front and center.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; IEEE Spectrum&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://spectrum.ieee.org/intel-18a&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“IN AN EXCLUSIVE INTERVIEW ahead of an invite-only event today in San Jose, Intel outlined new chip technologies it will offer its foundry customers by sharing a glimpse into its future data-center processors. The advances include more dense logic and a 16-fold increase in the connectivity within 3D-stacked chips, and they will be among the first top-end technologies the company has ever shared with chip architects from other companies.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-22-150724.png&quot; alt=&quot;A Peek at Intel\u2019s Future Foundry Tech&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://spectrum.ieee.org/intel-18a&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; A Peek at Intel\u2019s Future Foundry Tech &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Samuel K. Moore&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;IEEE Spectrum&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://spectrum.ieee.org/intel-18a&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>chip packaging</category><category>Intel</category><category>Moore&apos;s Law</category><category>RibbonFET</category><category>semiconductors</category><category>tech</category></item><item><title>Iovance brings cell therapy to solid tumors</title><link>https://benjamintseng.com/2024/02/iovance-brings-cell-therapy-to-solid-tumors/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/iovance-brings-cell-therapy-to-solid-tumors/</guid><description>Reading Note: Iovance brings cell therapy to solid tumors</description><pubDate>Sat, 24 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Immune cell therapy — the use of modified immune cells directly to control cancer and autoimmune disease — has shown incredible results in liquid tumors (cancers of the blood and bone marrow like lymphoma, leukemia, etc), but has stumbled in addressing solid tumors.&lt;/p&gt;
&lt;p&gt;Iovance, which recently had its drug lifileucel &lt;a href=&quot;https://www.fda.gov/news-events/press-announcements/fda-approves-first-cellular-therapy-treat-patients-unresectable-or-metastatic-melanoma&quot;&gt;approved by the FDA to treat advanced melanoma&lt;/a&gt;, has demonstrated an interesting spin on the cellular path which may prove to be effective in solid tumors. They extract &lt;strong&gt;Tumor-Infiltrating Lymphocytes (TILs)&lt;/strong&gt;, immune cells that are already “trying” to attack a solid tumor directly. Iovance then treats those TILs with their own proprietary process to expand the number of those cells and “further activate” them (to resist a tumor’s efforts to inactivate immune cells that may come after them) before reintroducing them to the patient.&lt;/p&gt;
&lt;p&gt;This is logistically very challenging (not dissimilar to &lt;a href=&quot;http://benjamintseng.com/2023/10/complex-operations-for-gene-editing-therapies/&quot;&gt;what patients awaiting other cell therapies or Vertex’s new sickle cell treatment need to go through&lt;/a&gt;) as it also requires chemotherapy for lymphocyte depletion in the patient prior to reintroduction of the activated TILs. But, the upshot is that you now have an expanded population of cells known to be predisposed to attacking a solid tumor that can now resist the tumor’s immune suppression efforts.&lt;/p&gt;
&lt;p&gt;And, &lt;a href=&quot;https://www.iovance.com/uploads/ESMO-IO-C-144-01-4-year-2577-publication.pdf&quot;&gt;they’ve presented some impressive 4-year followup data&lt;/a&gt; on a study of advanced melanoma in patients who have already failed immune checkpoint inhibitor therapy, enough to convince the FDA of their effectiveness!&lt;/p&gt;
&lt;p&gt;To me, &lt;strong&gt;the beauty of this method is that it can work &lt;em&gt;across tumor types&lt;/em&gt;&lt;/strong&gt;. Iovance’s process (from what I’ve gleamed from their posters &amp;amp; presentations) works by getting &lt;em&gt;more&lt;/em&gt; and &lt;em&gt;more activated&lt;/em&gt; immune cells. Because they’re derived from the patient, these cells are already predisposed to attack the particular molecular targets of their tumor.&lt;/p&gt;
&lt;p&gt;This is contrast to most other immune cell therapy approaches (&lt;a href=&quot;https://en.wikipedia.org/wiki/CAR_T_cell&quot;&gt;like CAR-T&lt;/a&gt;) where the process is inherently target-specific (i.e. get cells that go after this particular marker on this particular tumor) and each new target / tumor requires R&amp;amp;D work to validate. Couple this with the fact that TILs are already the body’s first line of defense against solid tumors and you may have an interesting platform for immune cell therapy in solid tumors.&lt;/p&gt;
&lt;p&gt;The devil’s in the details and requires more clinical study on more cancer types, but suffice to say, I think this is incredibly exciting!&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; BiopharmaDive&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/iovance-til-cell-therapy-melanoma-fda-approval-launch/707886/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“TIL therapy originated from research at the National Institutes of Health in the 1980s. It took decades to fine-tune, and Iovance had to overcome multiple regulatory delays bringing the therapy, formerly known as lifileucel, to market.
Its clearance is the “culmination of scientific and clinical research efforts,” said Peter Marks, director of the FDA’s Center for Biologics Evaluation and Research, in a statement.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-21-091826-1024x569.png&quot; alt=&quot;Iovance, with approval of \u2018TIL\u2019 cell therapy, readies for complex launch&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/iovance-til-cell-therapy-melanoma-fda-approval-launch/707886/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Iovance, with approval of \u2018TIL\u2019 cell therapy, readies for complex launch &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Ben Fidler&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;BiopharmaDive&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/iovance-til-cell-therapy-melanoma-fda-approval-launch/707886/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>CAR-T</category><category>cell therapy</category><category>Iovance</category><category>tumor infiltrating lymphocytes</category></item><item><title>Another Italian merchant invention: the decimal point!</title><link>https://benjamintseng.com/2024/02/another-italian-merchant-invention-the-decimal-point/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/another-italian-merchant-invention-the-decimal-point/</guid><description>Reading Note: Another Italian merchant invention: the decimal point!</description><pubDate>Fri, 23 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve always been astonished by how many things we use now came from Renaissance Italian merchants: &lt;a href=&quot;https://www.theguardian.com/technology/2000/jul/31/internetnews.internationalnews&quot;&gt;the @ sign&lt;/a&gt;, &lt;a href=&quot;https://www.mathvalues.org/masterblog/2019/4/26/how-double-entry-bookkeeping-changed-the-world&quot;&gt;double-entry bookkeeping&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/pulse/how-italian-bankers-renaissance-accelerated-money-98-arslanian/&quot;&gt;banking&lt;/a&gt;, &lt;a href=&quot;https://logistiq.com/the-origin-of-the-ocean-cargo-policy/&quot;&gt;maritime insurance&lt;/a&gt;, and now &lt;strong&gt;the decimal point&lt;/strong&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Nature&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-00473-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Van Brummelen suggests that Bianchini’s schooling in economics might have been key to his invention, because he wasn’t embedded in sexagesimal numbers from early in his career, as other astronomers were. But his approach was perhaps too revolutionary to catch on at first. “In order to understand what Bianchini was doing, you had to learn a completely new system of arithmetic,” he says.
A century and a half later, however, “decimal notation was in the air”. Astronomers working with smaller and smaller subdivisions were inventing different systems, desperate for ways to simplify complex calculations. Clavius’s work influenced later popularizers of decimal fractions, such as Flemish mathematician Simon Stevin, as well as Scottish astronomer and inventor of logarithms John Napier, who adopted the decimal point. Chabás argues that historians should reassess Bianchini’s importance. Although he has been “eclipsed” by other figures, there’s clearly “a path of ideas”, he says, leading back to Bianchini.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-20-133649-1024x598.png&quot; alt=&quot;The decimal point is 150 years older than historians thought&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-00473-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The decimal point is 150 years older than historians thought &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jo Marchant&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Nature&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-024-00473-2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>decimal point</category><category>history</category><category>Italian merchants</category></item><item><title>Wind and solar closing on fossil fuels in EU power generation</title><link>https://benjamintseng.com/2024/02/wind-and-solar-closing-on-fossil-fuels-in-eu-power-generation/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/wind-and-solar-closing-on-fossil-fuels-in-eu-power-generation/</guid><description>Reading Note: Wind and solar closing on fossil fuels in EU power generation</description><pubDate>Thu, 22 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This one chart (published in Canary Media) illustrates both the case for optimism for our ability to deal with climate change as well as a clear case of how geopolitical pressures can dramatically impact energy choices: the rapid increase in use of renewable energy (mainly at the expense of fossil fuels) as source of electricity in the EU.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Canary Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/clean-energy/chart-wind-and-solar-are-closing-in-on-fossil-fuels-in-the-eu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The cleanest sources of electricity could soon make up the largest share of electricity generation in the European Union. Wind and solar made huge strides last year, producing more than one-quarter of the EU’s electricity for the first time, while fossil fuel generation plummeted. Power-sector emissions fell by a record 19 percent in the region last year.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-16-150340-1024x899.png&quot; alt=&quot;Chart: Wind and solar are closing in on fossil fuels in the EU&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/clean-energy/chart-wind-and-solar-are-closing-in-on-fossil-fuels-in-the-eu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Chart: Wind and solar are closing in on fossil fuels in the EU &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Maria Virginia Olano&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Canary Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/clean-energy/chart-wind-and-solar-are-closing-in-on-fossil-fuels-in-the-eu&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>energy</category><category>Europe</category><category>fossil fuel</category><category>solar energy</category><category>wind energy</category></item><item><title>Don’t Pay for Adobe Acrobat to do Basic PDF Things</title><link>https://benjamintseng.com/2024/02/dont-pay-for-adobe-acrobat-to-do-basic-pdf-things/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/dont-pay-for-adobe-acrobat-to-do-basic-pdf-things/</guid><description>Don’t Pay for Adobe Acrobat to do Basic PDF Things</description><pubDate>Wed, 21 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you’re like me, every few months you have to do something with PDFs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Merge them&lt;/li&gt;
&lt;li&gt;Rotate them&lt;/li&gt;
&lt;li&gt;Crop them&lt;/li&gt;
&lt;li&gt;Add / remove a password&lt;/li&gt;
&lt;li&gt;Move pages around / remove pages&lt;/li&gt;
&lt;li&gt;Sign them&lt;/li&gt;
&lt;li&gt;Add text / annotations to them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This ends up either being a pain to do (via some combination of screen shots, printing, scanning, and exporting) or oddly expensive (buying a license to Adobe Acrobat or another pay-PDF manipulation tool).&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://stirlingtools.com/&quot;&gt;Stirling PDF tools&lt;/a&gt;, a set of free web-based PDF manipulation tools which can also be selfhosted on any server supporting Docker. Given my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;selfhosting journey these past couple of months&lt;/a&gt;, this seemed like a perfect project to take on.&lt;/p&gt;
&lt;p&gt;In the hopes that this helps anyone who has ever had to do some PDF manipulation work done, I will share how I set up Stirling PDF tools (on my &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt; v6 home server)&lt;/p&gt;
&lt;h2 id=&quot;stirling-pdf&quot;&gt;Stirling PDF&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://stirlingtools.com/&quot;&gt;Stirling tools&lt;/a&gt; started as a ChatGPT project which has since turned into an &lt;a href=&quot;https://github.com/Stirling-Tools/Stirling-PDF/tree/main&quot;&gt;open source project&lt;/a&gt; with millions of Docker pulls. It handles everything through a simple web interface and on the server (no calls to any remote service). Depending on the version you install, you can also get access to tools converting common Office files to PDF and OCR (optical character recognition, where software can recognize text — even handwriting — in images).&lt;/p&gt;
&lt;p&gt;And, best of all, it’s free! (As in beer and as in freedom!)&lt;/p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;To install the Stirling Tools on OpenMediaVault:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you haven’t already, make sure you have OMV Extras and Docker Compose installed (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;, you’ll want to follow all 10 steps as I refer to different parts of the process throughout this post) &lt;em&gt;and&lt;/em&gt; have a static local IP address assigned to your server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to your OpenMediaVault web admin panel, and then go to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/code&gt; in the sidebar. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the main interface to add a new Docker compose file.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Stirling&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, adapt the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;3.3&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   stirling-pdf:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; frooodle/s-pdf:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     ports:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;unused&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; like&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 7331&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:8080&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; DOCKER_ENABLE_SECURITY=&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/tesseract:/usr/share/tessdata&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/Stirling/configs:/config&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/Stirling/customFiles:/customFiles&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/Stirling/logs:/logs&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ports:&lt;/kbd&gt;, make sure to add an unused port number (I went with &lt;code&gt;7331&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; with the &lt;em&gt;absolute&lt;/em&gt; path to the &lt;strong&gt;config&lt;/strong&gt; folder where you want Docker-installed applications to store their configuration information (accessible by going to &lt;code&gt;[Storage &amp;gt; Shared Folders]&lt;/code&gt; in the administrative panel). You’ll notice there’s an extra line in there for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;tessdata&lt;/kbd&gt; — this corresponds to the stored files for the &lt;a href=&quot;https://github.com/tesseract-ocr/&quot;&gt;Tesseract&lt;/a&gt; tool that Stirling uses for OCR&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FreshRSS&lt;/kbd&gt; entry you created has a &lt;code&gt;Down&lt;/code&gt; status, showing the container has yet to be initialized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To start your Stirling container, click on the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Stirling&lt;/kbd&gt; entry and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run it.&lt;/p&gt;
&lt;p&gt;And that’s it! To prove it worked, go to &lt;code&gt;your-servers-static-ip-address:7331&lt;/code&gt; from a browser that’s on the same network as your server (replacing &lt;code&gt;7331&lt;/code&gt; if you picked a different port in the configuration above) and you should see the Stirling tools page (see below)&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/stirling-1.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can skip this step &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;if you didn’t (as I laid out in my last post) set up Pihole and local DNS / Nginx proxy&lt;/a&gt; or if you don’t care about having a user-readable domain name for these PDF tools. But, assuming you do and you followed my instructions, open up WeTTy (which you can do by going to &lt;code&gt;wetty.home&lt;/code&gt; in your browser if you followed my instructions or by going to &lt;code&gt;[Services &amp;gt; WeTTY]&lt;/code&gt; from OpenMediaVault administrative panel and pressing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Open UI&lt;/kbd&gt; button in the main panel) and login as the root user. Run:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/nginx/conf.d&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pick out the file you created before for your domains and run&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This opens up the text editor nano with the file you just listed. Use your cursor to go to the very bottom of the file and add the following lines (making sure to use tabs and end each line with a semicolon)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;             80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    server_name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;pdf.home&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; domain&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; you&amp;#39;d like to use&amp;amp;gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    location / {  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_pass     http://&amp;amp;lt;your-server-static-ip&amp;amp;gt;:&amp;amp;lt;PDF port number&amp;amp;gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the existing file. Then in the command line run the following to restart Nginx with your new configuration loaded.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, if your server sees a request for &lt;code&gt;pdf.home&lt;/code&gt; (or whichever domain you picked), it will direct them to the PDF tools.&lt;/p&gt;
&lt;p&gt;Login to your Pihole administrative console (you can just go to &lt;code&gt;pi.hole&lt;/code&gt; in a browser) and click on &lt;code&gt;[Local DNS &amp;gt; DNS Records]&lt;/code&gt; from the sidebar. Under the section called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a new domain/IP combination&lt;/kbd&gt;, fill out under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain:&lt;/kbd&gt; the domain you just added above (i.e. &lt;code&gt;pdf.home&lt;/code&gt;) and next to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;IP Address:&lt;/kbd&gt; you should add your server’s static IP address. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button and it will show up below.&lt;/p&gt;
&lt;p&gt;To make sure it all works, enter the domain you just added (&lt;code&gt;pdf.home&lt;/code&gt; if you went with my default) in a browser and you should see the Stirling PDF tools page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lastly, to make the PDF tools actually useable, you’ll want to increase the maximum allowable file upload size in OpenMediaVault’s default webserver Nginx (so that you can use the tools with PDFs larger than the incredibly tiny default minimum size of 1 MB). To do this, log back into your server using WeTTy (follow the instructions above) and run:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/nginx/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This opens up the text editor nano with the master configuration file for Nginx. Use your cursor to go to some spot after &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;http {&lt;/kbd&gt; but before the closing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;}&lt;/kbd&gt;. This configures how Nginx will process HTTP requests (basically anything coming from a website). Enter the two lines below (making sure to use tabs and end the second line with a semicolon; to be clear &lt;code&gt;&amp;quot;... stuff that comes by default...&amp;quot;&lt;/code&gt; is just placeholder text that you don’t need to write or add, it’s just to show that the two lines you enter need to be inside the &lt;code&gt;{}&lt;/code&gt;)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;http&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;    ...&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; stuff&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; comes&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; by&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    ## adding larger file upload limit  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    client_max_body_size&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 100M&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;    ...&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; more&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; stuff&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; comes&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; by&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the existing file. Then in the command line run the following to restart Nginx with your new configuration loaded.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, the PDF tools can handle file uploads up to 100 MB in size!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lastly, to make full use of OCR, you’ll want to download the language files you’re most interested in from Tesseract repository (&lt;a href=&quot;https://github.com/tesseract-ocr/tessdata&quot;&gt;the slower but more accurate files are here&lt;/a&gt; and &lt;a href=&quot;https://github.com/tesseract-ocr/tessdata_fast/&quot;&gt;the faster but less accurate files are here&lt;/a&gt;; simple click on the file you’re interested in from the list and then select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Download&lt;/kbd&gt; from the “three dot” menu or by hitting &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+Shift+s&lt;/kbd&gt;) and place them in the &lt;code&gt;/tesseract&lt;/code&gt; folder you mapped in the Docker compose file. To verify that those files are properly loaded, simply go to the PDF tools, select the one called &lt;code&gt;OCR / Cleanup scans&lt;/code&gt; (or visit &lt;code&gt;&amp;amp;lt;URL to PDF tools&amp;amp;gt;/ocr-pdf&lt;/code&gt;) and the language files that you’ve downloaded should show up as a checkbox.&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/stirling-2.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now, you have a handy set of PDF tools in your (home server) back pocket!&lt;/p&gt;
&lt;p&gt;(If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>container</category><category>Docker</category><category>OpenMediaVault</category><category>selfhost</category><category>Stirling PDF</category></item><item><title>The Opportunity in Lagging Edge Semiconductors</title><link>https://benjamintseng.com/2024/02/the-opportunity-in-lagging-edge-semiconductors/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/the-opportunity-in-lagging-edge-semiconductors/</guid><description>Reading Note: The Opportunity in Lagging Edge Semiconductors</description><pubDate>Tue, 20 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While much attention is (rightly) focused on the role of TSMC (and its rivals Samsung and Intel) in “leading edge” semiconductor technology, the opportunity at the so-called “lagging edge” — older semiconductor process technologies which continue to be used — is oftentimes completely ignored.&lt;/p&gt;
&lt;p&gt;The reality of the foundry model is that fab capacity is expensive to build and so the bulk of the profit made on a given process technology investment is when it’s years old. This is a natural consequence of three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Very few semiconductor designers have the R&amp;amp;D budget or the need to be early adopters of the most advanced technologies. (That is primarily relegated to the sexiest advanced CPUs, FPGAs, and GPUs, but ignores the huge bulk of the rest of the semiconductor market)&lt;/li&gt;
&lt;li&gt;Because only a small handful of foundries can supply “leading edge” technologies and because new technologies have a “yield ramp” (where the technology goes from low yield to higher as the foundry gets more experience), new process technologies are meaningfully more expensive.&lt;/li&gt;
&lt;li&gt;Some products have extremely long lives and need to be supported for decade-plus (i.e. automotive, industrial, and military immediately come to mind)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result, it was very rational for GlobalFoundries (formerly AMD’s in-house fab) to abandon producing advanced semiconductor technologies in 2018 to focus on building a profitable business at the lagging edge. Foundries like UMC and SMIC have largely made the same choice.&lt;/p&gt;
&lt;p&gt;This means giving up on some opportunities (those that require newer technologies) — as GlobalFoundries is finding recently in areas like communications and data center — but provided you have the service capability and capacity, can still lead to not only a profitable outcome, but one which is still incredibly important to the increasingly strategic semiconductor space.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Anandtech&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.anandtech.com/show/21266/globalfoundries-clients-are-migrating-to-sub10nm-faster-than-expected&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“When GlobalFoundries abandoned development of its 7 nm-class process technology in 2018 and refocused on specialty process technologies, it ceased pathfinding, research, and development of all technologies related to bleeding-edge sub-10nm nodes. At the time, this was the correct (and arguably only) move for the company, which was bleeding money and trailing behind both TSMC and Samsung in the bleeding-edge node race. But in the competitive fab market, that trade-off for reduced investment was going to eventually have consequences further down the road, and it looks like those consequences are finally starting to impact the company. In a recent earnings call, GlobalFoundries disclosed that some of the company’s clients are leaving for other foundries, as they adopt sub-10nm technologies faster than GlobalFoundries expected.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/globalfoundries-wafer-semiconductor-chips-678-1_678x452.jpg&quot; alt=&quot;GlobalFoundries: Clients Are Migrating to Sub-10nm Faster Than Expected&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.anandtech.com/show/21266/globalfoundries-clients-are-migrating-to-sub10nm-faster-than-expected&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; GlobalFoundries: Clients Are Migrating to Sub-10nm Faster Than Expected &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Anton Shilov&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Anandtech&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.anandtech.com/show/21266/globalfoundries-clients-are-migrating-to-sub10nm-faster-than-expected&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>CPU</category><category>foundry</category><category>FPGA</category><category>GlobalFoundries</category><category>GPU</category><category>lagging edge</category><category>leading edge</category><category>semiconductors</category><category>SMIC</category><category>tech</category><category>TSMC</category><category>UMC</category></item><item><title>NVIDIA to make custom AI chips? Tale as old as time</title><link>https://benjamintseng.com/2024/02/nvidia-to-make-custom-ai-chips-tale-as-old-as-time/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/nvidia-to-make-custom-ai-chips-tale-as-old-as-time/</guid><description>Reading Note: NVIDIA to make custom AI chips? Tale as old as time</description><pubDate>Sun, 18 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every standard products company (like NVIDIA) eventually gets lured by the prospect of gaining large volumes and high margins of a custom products business.&lt;/p&gt;
&lt;p&gt;And every custom products business wishes they could get into standard products to cut their dependency on a small handful of customers and pursue larger volumes.&lt;/p&gt;
&lt;p&gt;Given the above and the fact that NVIDIA did used to effectively build custom products (i.e. for game consoles and for some of its dedicated autonomous vehicle and media streamer projects) and the efforts by cloud vendors like Amazon and Microsoft to build their own Artificial Intelligence silicon it shouldn’t be a surprise to anyone that they’re pursuing this.&lt;/p&gt;
&lt;p&gt;Or that they may eventually leave this market behind as well.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Anandtech&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.anandtech.com/show/21263/report-nvidia-custom-chip-unit-for-cloud-computing-and-more&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“While using NVIDIA’s A100 and H100 processors for AI and high-performance computing (HPC) instances, major cloud service providers (CSPs) like Amazon Web Services, Google, and Microsoft are also advancing their custom processors to meet specific AI and general computing needs. This strategy enables them to cut costs as well as tailor capabilities and power consumption of their hardware to their particular needs. As a result, while NVIDIA’s AI and HPC GPUs remain indispensable for many applications, an increasing portion of workloads now run on custom-designed silicon, which means lost business opportunities for NVIDIA. This shift towards bespoke silicon solutions is widespread and the market is expanding quickly. Essentially, instead of fighting custom silicon trend, NVIDIA wants to join it.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/NVIDIA-Endeavor-building-logo-nvidia-hq_678x452.jpg&quot; alt=&quot;Report: NVIDIA Forms Custom Chip Unit for Cloud Computing and More&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.anandtech.com/show/21263/report-nvidia-custom-chip-unit-for-cloud-computing-and-more&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Report: NVIDIA Forms Custom Chip Unit for Cloud Computing and More &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Anton Shilov&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Anandtech&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.anandtech.com/show/21263/report-nvidia-custom-chip-unit-for-cloud-computing-and-more&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>NVIDIA</category><category>semiconductors</category><category>tech</category></item><item><title>Which jobs are the most [insert gender or race]?</title><link>https://benjamintseng.com/2024/02/which-jobs-are-the-most-insert-gender-or-race/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/which-jobs-are-the-most-insert-gender-or-race/</guid><description>Reading Note: Which jobs are the most [insert gender or race]?</description><pubDate>Fri, 16 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Fascinating data from the BLS on which jobs have the greatest share of a particular gender or race. The following two charts are from the WSJ article I linked. I never would have guessed that speech-language pathologists (women), property appraisers (white), postal service workers (black), or medical scientists (Asian) would have such a preponderance of a particular group.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/image-1-1024x881.png&quot; alt/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/image-2-654x1024.png&quot; alt/&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; WSJ&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.wsj.com/economy/jobs/workers-america-jobs-demographics-charts-94a5ff6c?mod=economy_lead_pos4&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The Bureau of Labor Statistics each year publishes data looking at the gender and racial composition of hundreds of occupations, offering a snapshot of how workers sort themselves into many of the most important jobs in the country.
There are sociology textbooks’ worth of explanations for these numbers. One clear conclusion: Many occupations skew heavily toward one gender or race, leading to a workforce where 96.7% of preschool and kindergarten teachers are women, two-thirds of manicurists and pedicurists are Asian, and 92.4% of pilots and flight engineers are white.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/image-1024x1024.png&quot; alt=&quot;40% of Lawyers Are Women. 7% Are Black. America\u2019s Workforce in Charts&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.wsj.com/economy/jobs/workers-america-jobs-demographics-charts-94a5ff6c?mod=economy_lead_pos4&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; 40% of Lawyers Are Women. 7% Are Black. America\u2019s Workforce in Charts &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Lauren Weber &amp;amp; Stephanie Stamm&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;WSJ&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.wsj.com/economy/jobs/workers-america-jobs-demographics-charts-94a5ff6c?mod=economy_lead_pos4&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Bureau of Labor Statistics</category><category>workforce statistics</category></item><item><title>Trouble in commercial real estate</title><link>https://benjamintseng.com/2024/02/trouble-in-commercial-real-estate/</link><guid isPermaLink="true">https://benjamintseng.com/2024/02/trouble-in-commercial-real-estate/</guid><description>Reading Note: Trouble in commercial real estate</description><pubDate>Thu, 15 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Commercial real estate (and, by extension, community banks) are in a world of hurt as hybrid/remote work, higher interest rates, and property bubbles deflating/popping collide…&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-02-14/real-estate-lenders-confront-falling-us-commercial-property-prices&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Many banks still prefer to work out deals with existing landlords, such as offering loan extensions in return for capital reinvestments toward building upgrades. Still, that approach may not be viable in many cases; big companies from Blackstone to a unit of Pacific Investment Management Co. have walked away from or defaulted on properties they don’t want to pour more money into. In some cases, buildings may be worth even less today than the land they sit on.
“When people hand back keys, that’s not the end of it — the equity is wiped but the debt is also massively impaired,” said Dan Zwirn, CEO of asset manager Arena Investors, which invests in real estate debt. “You’re talking about getting close to land value. In certain cases people are going to start demolishing things.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/02/Screenshot-2024-02-15-113924.png&quot; alt=&quot;The Brutal Reality of Plunging Office Values Is Here&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-02-14/real-estate-lenders-confront-falling-us-commercial-property-prices&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Brutal Reality of Plunging Office Values Is Here &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Natalie Wong &amp;amp; Patrick Clark&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2024-02-14/real-estate-lenders-confront-falling-us-commercial-property-prices&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>finance</category><category>real estate</category></item><item><title>Selfhosting FreshRSS</title><link>https://benjamintseng.com/2024/01/selfhosting-freshrss/</link><guid isPermaLink="true">https://benjamintseng.com/2024/01/selfhosting-freshrss/</guid><description>Selfhosting FreshRSS</description><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;It’s been a few months since I started down the selfhosting/home server journey.&lt;/a&gt; Thanks to Docker, it has been relatively smooth sailing. Today, I have a cheap mini-PC based server that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;blocks ads / online trackers on all devices&lt;/li&gt;
&lt;li&gt;stores and streams media (even for when I’m out of the house)&lt;/li&gt;
&lt;li&gt;acts as network storage (for our devices to store and share files)&lt;/li&gt;
&lt;li&gt;serves as a personal RSS/newsreader&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The last one is new &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;since my last post&lt;/a&gt; and, in the hopes that this helps others exploring what they can selfhost or who maybe have a home server and want to start deploying services, I wanted to share how I set up &lt;a href=&quot;https://freshrss.org/index.html&quot;&gt;FreshRSS&lt;/a&gt;, a self-hosted RSS reader (on an &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt; v6 server)&lt;/p&gt;
&lt;h2 id=&quot;why-a-rss-reader&quot;&gt;Why a RSS Reader?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.theverge.com/23778253/google-reader-death-2013-rss-social&quot;&gt;Like many who used it&lt;/a&gt;, I was a massive Google Reader fan. Until 2013 when it was unceremoniously shut down, it was probably the most important website I used after Gmail.&lt;/p&gt;
&lt;p&gt;I experimented with other RSS clients over the years, but found that I did not like most commercial web-based clients (which were focused on serving ads or promoting feeds I was uninterested in) or desktop clients (which were difficult to sync between devices). So, I switched to other alternatives (i.e. Twitter) for a number of years.&lt;/p&gt;
&lt;h2 id=&quot;freshrss&quot;&gt;FreshRSS&lt;/h2&gt;
&lt;p&gt;Wanting to return to the simpler days where I could simply follow the content I was interested in, I stumbled on the idea of self-hosting an RSS reader. Looking at the &lt;a href=&quot;https://awesome-selfhosted.net/tags/feed-readers.html&quot;&gt;awesome-selfhosted feed reader category&lt;/a&gt;, I looked at the different options and chose to go with FreshRSS for a few reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It had the most Github stars of any feed reader — an imperfect but reasonable sign of a well-liked project.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FreshRSS/FreshRSS/discussions/3840#discussioncomment-1310747&quot;&gt;It has been around for over 10 years!&lt;/a&gt; and as a result has attracted a &lt;a href=&quot;https://github.com/FreshRSS/Extensions&quot;&gt;community of extension developers&lt;/a&gt; and even &lt;a href=&quot;https://freshrss.org/cloud-providers.html&quot;&gt;cloud RSS service providers&lt;/a&gt; — suggests the product has real stability and traction which will be helpful if things go wrong&lt;/li&gt;
&lt;li&gt;It’s &lt;a href=&quot;https://docs.linuxserver.io/images/docker-freshrss/&quot;&gt;available as a Docker container on linuxserver.io&lt;/a&gt; — linuxserver.io is well-known for hosting and maintaining high quality and up-to-date Docker container images&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;To install FreshRSS on OpenMediaVault:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you haven’t already, make sure you have OMV Extras and Docker Compose installed (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;, you’ll want to follow all 10 steps as I refer to different parts of the process throughout this post) &lt;em&gt;and&lt;/em&gt; have a static local IP address assigned to your server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to your OpenMediaVault web admin panel, and then go to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/code&gt; in the sidebar. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the main interface to add a new Docker compose file.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FreshRSS&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, adapt the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   freshrss:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; freshrss&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; lscr.io/linuxserver/freshrss:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     ports:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;unused&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; like&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 3777&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TZ:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;America/Los_Angeles&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PUID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PGID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;GID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/FreshRSS:/config&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;UID of Docker User&amp;gt;&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;GID of Docker User&amp;gt;&lt;/kbd&gt; with the UID and GID of the Docker user you created (which will be &lt;code&gt;1000&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt; if you followed the steps I laid out, &lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;see Step 10 in the section “Docker and OMV-Extras” in my initial post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I live in the Bay Area so I set the timezone &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TZ&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;America/Los_Angeles&lt;/kbd&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;You can find yours here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ports:&lt;/kbd&gt;, make sure to add an unused port number (I went with &lt;code&gt;3777&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; with the &lt;em&gt;absolute&lt;/em&gt; path to the &lt;strong&gt;config&lt;/strong&gt; folder where you want Docker-installed applications to store their configuration information (accessible by going to &lt;code&gt;[Storage &amp;gt; Shared Folders]&lt;/code&gt; in the administrative panel).&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FreshRSS&lt;/kbd&gt; entry you created has a &lt;code&gt;Down&lt;/code&gt; status, showing the container has yet to be initialized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To start your FreshRSS container, click on the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FreshRSS&lt;/kbd&gt; entry and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run it.&lt;/p&gt;
&lt;p&gt;And that’s it! To prove it worked, go to &lt;code&gt;your-servers-static-ip-address:3777&lt;/code&gt; from a browser that’s on the same network as your server (replacing &lt;code&gt;3777&lt;/code&gt; if you picked a different port in the configuration above) and you should see the FreshRSS installation page (see below)&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/freshrss-install-1.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can skip this step &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;if you didn’t (as I laid out in my last post) set up Pihole and local DNS / Nginx proxy&lt;/a&gt; or if you don’t care about having a user-readable domain name for FreshRSS. But, assuming you do and you followed my instructions, open up WeTTy (which you can do by going to &lt;code&gt;wetty.home&lt;/code&gt; in your browser if you followed my instructions or by going to &lt;code&gt;[Services &amp;gt; WeTTY]&lt;/code&gt; from OpenMediaVault administrative panel and pressing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Open UI&lt;/kbd&gt; button in the main panel) and login as the root user. Run:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/nginx/conf.d&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pick out the file you created before for your domains and run&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This opens up the text editor nano with the file you just listed. Use your cursor to go to the very bottom of the file and add the following lines (making sure to use tabs and end each line with a semicolon)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;             80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    server_name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;rss.home&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; domain&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; you&amp;#39;d like to use&amp;amp;gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    location / {  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        proxy_pass     http://&amp;amp;lt;your-server-static-ip&amp;amp;gt;:&amp;amp;lt;FreshRSS port number&amp;amp;gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;    }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the existing file. Then in the command line run the following to restart Nginx with your new configuration loaded.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, if your server sees a request for &lt;code&gt;rss.home&lt;/code&gt; (or whichever domain you picked), it will direct them to FreshRSS.&lt;/p&gt;
&lt;p&gt;Login to your Pihole administrative console (you can just go to &lt;code&gt;pi.hole&lt;/code&gt; in a browser) and click on &lt;code&gt;[Local DNS &amp;gt; DNS Records]&lt;/code&gt; from the sidebar. Under the section called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a new domain/IP combination&lt;/kbd&gt;, fill out under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain:&lt;/kbd&gt; the domain you just added above (i.e. &lt;code&gt;rss.home&lt;/code&gt;) and next to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;IP Address:&lt;/kbd&gt; you should add your server’s static IP address. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button and it will show up below.&lt;/p&gt;
&lt;p&gt;To make sure it all works, enter the domain you just added (&lt;code&gt;rss.home&lt;/code&gt; if you went with my default) in a browser and you should see the FreshRSS installation page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Completing installation is easy. Thanks to the use of Docker, all of your PHP and files will be configured accurately so you should be able to proceed with the default options. Unless you’re planning to store millions of articles served to dozens of people, the default option of &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;SQLite&lt;/kbd&gt; as database type should be sufficient in Step 3 (see below)&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/freshrss-install-3.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;This leaves the final task of configuring a username and password (and, again, unless you’re serving this to many users whom you’re worried will hack you, the default authentication method of &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Web form&lt;/kbd&gt; will work)&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/freshrss-install-4.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Finally, press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Complete installation&lt;/kbd&gt; and you will be taken to the login page:&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/freshrss-login.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;advice&quot;&gt;Advice&lt;/h2&gt;
&lt;p&gt;Once you’ve logged in with the username and password you just set, the world is your oyster. If you’ve ever used an RSS reader, the interface is pretty straightforward, but the key is to use the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Subscription management&lt;/kbd&gt; button in the interface to add RSS feeds and categories as you see fit. FreshRSS will, on a regular basis, look for new content from those feeds and put it in the main interface. You can then step through and stay up to date on the sites that matter to you. There are a lot more features you can learn about from &lt;a href=&quot;https://freshrss.github.io/FreshRSS/en/&quot;&gt;the FreshRSS documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On my end, I’d recommend a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How to find the RSS feed for a page&lt;/strong&gt; — Many (but not all) blog/news pages have RSS feeds. The most reliable way to find it is to right click on the page you’re interested in from your browser and select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;View source&lt;/kbd&gt; (on Chrome you’d hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+U&lt;/kbd&gt;). Hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+F&lt;/kbd&gt; to trigger a search and look for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;rss&lt;/kbd&gt;. If there is an RSS feed, you’ll see something that says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;quot;application/rss+xml&amp;quot;&lt;/kbd&gt; and near it will usually be a URL that ends in &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/rss&lt;/kbd&gt; or &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/feed&lt;/kbd&gt; or something like that (my blog, for instance, hosted on &lt;code&gt;benjamintseng.com&lt;/code&gt; has a feed at &lt;code&gt;benjamintseng.com/rss&lt;/code&gt;).
&lt;ul&gt;
&lt;li&gt;Once you open up the feed,&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn the keyboard shortcuts&lt;/strong&gt; — they’re largely the same as found on Gmail (and the old Google Reader) but they make using this much faster:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;j&lt;/code&gt; to go to the next article&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt; to go to the previous article&lt;/li&gt;
&lt;li&gt;&lt;code&gt;r&lt;/code&gt; to toggle if something is read or not&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt; to open up the original page in a new tab&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the &lt;code&gt;normal&lt;/code&gt; view, sorted oldest first&lt;/strong&gt; — (you do this by tapping the Settings gear in the upper-right of the interface and then selecting &lt;code&gt;Reading&lt;/code&gt; under &lt;code&gt;Configuration&lt;/code&gt; in the menu). Even though I’ve aggressively curated the feeds I subscribe to, there is a &lt;em&gt;lot&lt;/em&gt; of material and the “normal view” allows me to quickly browse headlines to see which ones are more worth my time at a glance. I can also use my mouse to selectively mark somethings as read so I can take a quick &lt;a href=&quot;https://www.techtarget.com/whatis/definition/inbox-zero&quot;&gt;Inbox Zero&lt;/a&gt; style approach to my feeds. This allows me to think of the &lt;code&gt;j&lt;/code&gt; shortcut as “move forward in time” and the &lt;code&gt;k&lt;/code&gt; shortcut as “move backwards” and I can use the pulldown menu next to &lt;code&gt;Mark as read&lt;/code&gt; button to mark content older than one day / one week as read if I get overwhelmed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subscribe to good feeds&lt;/strong&gt; — probably a given, but here are a few I follow to get you started:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://xkcd.com/&quot;&gt;xkcd&lt;/a&gt; (&lt;a href=&quot;https://xkcd.com/atom.xml&quot;&gt;feed URL&lt;/a&gt;): classic webcomic&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.smbc-comics.com/&quot;&gt;Saturday Morning Breakfast Cereal&lt;/a&gt; (&lt;a href=&quot;https://www.smbc-comics.com/comic/rss&quot;&gt;feed URL&lt;/a&gt;): another great webcomic&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://paulgraham.com/articles.html&quot;&gt;Paul Graham’s Essays&lt;/a&gt; (&lt;a href=&quot;http://www.aaronsw.com/2002/feeds/pgessays.rss&quot;&gt;feed URL&lt;/a&gt;): love or hate him, Paul Graham does some great work writing very simple but thoughtful pieces&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://collabfund.com/blog/&quot;&gt;Collaborative Fund blog&lt;/a&gt; (&lt;a href=&quot;https://feeds.feedburner.com/collabfund&quot;&gt;feed URL&lt;/a&gt;): Morgan Housel is one of my favorite writers and he is responsible for most of the posts here&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://benjamintseng.com/blog/&quot;&gt;Benjamin Tseng’s blog&lt;/a&gt; (&lt;a href=&quot;http://benjamintseng.com/feed/&quot;&gt;feed URL&lt;/a&gt;): you’re already here, aren’t you? 😇 You can also subscribe via email. I write about interesting things I’m reading, how-to guides like this, and my thoughts on tech / science / finance&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this helps you get started!&lt;/p&gt;
&lt;p&gt;(If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>container</category><category>Docker</category><category>FreshRSS</category><category>OpenMediaVault</category><category>RSS feeds</category><category>selfhost</category></item><item><title>Stocks for the Long Run? Maybe not all the Time</title><link>https://benjamintseng.com/2024/01/stocks-for-the-long-run-maybe-not-all-the-time/</link><guid isPermaLink="true">https://benjamintseng.com/2024/01/stocks-for-the-long-run-maybe-not-all-the-time/</guid><description>Reading Note: Stocks for the Long Run? Maybe not all the Time</description><pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the core assumptions of modern financial planning and finance is that &lt;strong&gt;stocks have better returns over the long-run than bonds&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The reason “seems” obvious: stocks are riskier. There is, after all, a greater chance of going to zero since bond investors come before stock investors in a legal line to get paid out after a company fails. Furthermore, stocks let an investor participate in the upside (if a company grows rapidly) whereas bonds limits your upside to the interest payments.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot;&gt;A fascinating article&lt;/a&gt; by Santa Clara University &lt;a href=&quot;https://www.edwardfmcquarrie.com/&quot;&gt;Professor Edward McQuarrie&lt;/a&gt; published in late 2023 in &lt;em&gt;Financial Analysts Journal&lt;/em&gt; puts that entire foundation into doubt. McQuarrie collects a tremendous amount of data to compute total US stock and bond returns going back to 1792 using newly available historical records and data from periodicals from that timeframe. The result is a lot more data including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;coverage of bonds and stocks traded outside of New York&lt;/li&gt;
&lt;li&gt;coverage of companies which failed (such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Second_Bank_of_the_United_States&quot;&gt;The Second Bank of the United States&lt;/a&gt; which, at one point, was ~30% of total US market capitalization and unceremoniously failed after its charter was not renewed)&lt;/li&gt;
&lt;li&gt;includes data on dividends (which were omitted in many prior studies)&lt;/li&gt;
&lt;li&gt;calculates results on a capitalization-weighted basis (as opposed to price-weighted / equal-weighted which is easier to do but less accurately conveys returns investors actually see)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The data is fascinating, as it shows that, contrary to the opinion of most “financial experts” today, it is &lt;em&gt;not true&lt;/em&gt; that stocks always beat bonds in the long-run. In fact, &lt;strong&gt;much better performance for stocks in the US seems to be mainly a 1940s-1980s phenomena&lt;/strong&gt; (see Figure 1 from the paper below)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/image-1024x739.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Stock and bond performance (normalized to $1 in 1792, and renormalized in 1982) on a logarithmic scale&lt;br/&gt;
Source: Figure 1, &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot;&gt;McQuarrie et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Put another way, if you had looked at stocks vs bonds in 1862, the sensible thing to tell someone was “well, some years stocks do better, some years bonds do better, but over the long haul, it seems bonds do better (see Table 1 from the paper below).&lt;/p&gt;
&lt;p&gt;The exact opposite of what you would tell them today / having only looked at the post-War world.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/image-1-1024x366.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Table 1, &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot;&gt;McQuarrie et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This problem is compounded if you look at non-US stock returns where, even after excluding select stock market performance periods due to war (i.e. Germany and Japan following World War II), focusing even on the last 5 decades shows comparable performance for non-US stocks as non-US government bonds.&lt;/p&gt;
&lt;p&gt;Even assumptions viewed as sacred, like how stocks and bonds can balance each other out because their returns are poorly correlated, shows huge variation over history — with the two assets being highly correlated pre-Great Depression, but much less so (and swinging wildly) afterwards (see Figure 6 below)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/image-2-1024x735.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Stock and Bond Correlation over Time&lt;br/&gt;
Source: Figure 6, &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot;&gt;McQuarrie et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now neither I nor the paper’s author are suggesting you change your fundamental investment strategy as you plan for the long-term (I, for one, intend to continue allocating a significant fraction of my family’s assets to stocks for now).&lt;/p&gt;
&lt;p&gt;But, beyond some wild theorizing on why these changes have occurred throughout history, what this has reminded me is that &lt;strong&gt;the future can be wildly unknowable.&lt;/strong&gt; Things can work one way and then suddenly stop. &lt;a href=&quot;https://www.morningstar.com/stocks/stocks-have-not-always-beaten-bonds-should-you-care&quot;&gt;As McQuarrie pointed out recently in a response to a Morningstar commenter&lt;/a&gt;, “The rate of death from disease and epidemics stayed at a relatively high and constant level from 1793 to 1920. Then advances in modern medicine fundamentally and permanently altered the trajectory … or so it seemed until COVID-19 hit in February 2020.”&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; *Financial Analysts Journal*&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“If stocks are risky, investors will demand a premium to invest. But if stocks cease to be risky once held for a long enough period—if stocks are certain to have strong returns after 20 years and certain to outperform bonds—then investors have no reason to expect a premium over these longer periods, given that no shortfall risk had to be assumed. The expanded historical record shows that stocks can perform poorly in absolute terms and underperform bonds, whether the holding period is 20, 30, 50, or 100 years. That documentation of risk resolves the conundrum.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/image-1024x739.png&quot; alt=&quot;Stocks for the Long Run? Sometimes Yes, Sometimes No&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Stocks for the Long Run? Sometimes Yes, Sometimes No &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Edward F. McQuarrie&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;*Financial Analysts Journal*&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.tandfonline.com/doi/full/10.1080/0015198X.2023.2268556&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>bonds</category><category>finance</category><category>investing</category><category>stocks</category></item><item><title>InVision founder retro</title><link>https://benjamintseng.com/2024/01/invision-founder-retro/</link><guid isPermaLink="true">https://benjamintseng.com/2024/01/invision-founder-retro/</guid><description>Reading Note: InVision founder retro</description><pubDate>Tue, 09 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.theinformation.com/briefings/design-startup-invision-once-valued-at-2b-is-shutting-down&quot;&gt;As reported in &lt;em&gt;The Information&lt;/em&gt; a few days ago&lt;/a&gt;, former design tool giant InVision, once valued at $2 billion, is shutting down at the end of this year.&lt;/p&gt;
&lt;p&gt;While much of the commentary has been about Figma’s rapid rise and InVision’s inability to respond, I saw &lt;a href=&quot;https://twitter.com/ClarkValberg/status/1743850775829246134&quot;&gt;this post on Twitter/X from one of InVision’s founders Clark Valberg&lt;/a&gt; about what happened. The screenshotted message he left is well-worth a read. It is a great (if slightly self-serving / biased) retrospective.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/GDNmEPFXcAAfAnl-609x1024.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;As someone who was a mere bystander during the events (as a newly minted Product Manager working with designers), it felt very true to the moment.&lt;/p&gt;
&lt;p&gt;I remember being blown away by how the entire product design community moved to Sketch (from largely Adobe-based solutions) and then, seemingly overnight, from Sketch to Figma.&lt;/p&gt;
&lt;p&gt;While it’s fair to criticize the leadership for not seeing web-based design as a place to invest, I think the piece just highlights how because it wasn’t a direct competitor to InDesign (but to Sketch &amp;amp; Adobe XD) and because the idea of web-based wasn’t on anyone’s radar at the time, it became a lethal blind spot for the company. &lt;a href=&quot;http://benjamintseng.com/2009/07/tech-strategy-101/&quot;&gt;It’s Tech Strategy 101&lt;/a&gt; and perfectly highlights Andy Grove’s old saying: “(in technology,) only the paranoid survive”.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Twitter/X&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://twitter.com/ClarkValberg/status/1743850775829246134&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Hey Jason…
“Clark from InVision” here…
I’ve been somewhat removed from the InVision business since transitioning out ~2 years ago, and this is the first time I’ve reacted to the latest news publicly. I’m choosing to do so here because in many ways your post is a full-circle moment for me. MANY (perhaps most) of the underlying philosophies that drove InVision from the very beginning were inspired by my co-founder @BenNadel and I reading and re-reading Getting Real. It was our early-stage hymnal.
Apologies for steam of consciousness rant and admitted inherent bias — I’m a founder after all 🙂”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2024/01/GDNmEPFXcAAfAnl-609x1024.jpg&quot; alt=&quot;Tweet from @ClarkValberg&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://twitter.com/ClarkValberg/status/1743850775829246134&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Tweet from @ClarkValberg &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Clark Valberg&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Twitter/X&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://twitter.com/ClarkValberg/status/1743850775829246134&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Adobe</category><category>Andy Grove</category><category>Clark Valberg</category><category>Figma</category><category>InVision</category><category>tech</category></item><item><title>The only 3 things a startup CEO needs to master</title><link>https://benjamintseng.com/2023/12/the-only-3-things-a-startup-ceo-needs-to-master/</link><guid isPermaLink="true">https://benjamintseng.com/2023/12/the-only-3-things-a-startup-ceo-needs-to-master/</guid><description>The only 3 things a startup CEO needs to master</description><pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So, you watched &lt;em&gt;&lt;a href=&quot;https://www.hbo.com/silicon-valley&quot;&gt;Silicon Valley&lt;/a&gt;&lt;/em&gt; and read some articles on &lt;a href=&quot;https://techcrunch.com/&quot;&gt;Techcrunch&lt;/a&gt; and you envision yourself as a startup CEO 🤑. What does it take to succeed? Great engineering skills? Salesmanship? Financial acumen?&lt;/p&gt;
&lt;p&gt;As someone who has been on both sides of the table (as a venture investor and on multiple startup executive leadership teams), &lt;strong&gt;there are three — &lt;em&gt;and only three&lt;/em&gt; — things a startup CEO needs to master&lt;/strong&gt;. In order of importance:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Raise Money from Investors&lt;/strong&gt; &lt;strong&gt;(now and in the future)&lt;/strong&gt;: The single most important job of a startup CEO is to secure funding from investors. Funding is the lifeblood of a company, and raising it is a job that &lt;em&gt;only&lt;/em&gt; the CEO can drive. Not being great at it means slower growth / fewer resources, regardless of how brilliant you are, or how great your vision. Being good at raising money buys you a lot of buffer in every other area.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hire Amazing People into the Right Roles&lt;/strong&gt; &lt;strong&gt;(and retain them!)&lt;/strong&gt;: No startup, no matter how brilliant the CEO, succeeds without a team. Thus, recruiting the right people into the right positions is the second most vital job of a CEO. Without the right people in place, your plans are not worth the paper on which they are written. Even if you have the right people, if they are not entrusted with the right responsibilities or they are unhappy, the wrong outcomes will occur. There is a reason that when CEOs meet to trade notes, they oftentimes trade recruiting tips.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspire the Team During Tough Times&lt;/strong&gt;: Every startup inevitably encounters stormy seas. It could be a recession causing a slowdown, a botched product launch, a failed partnership, or the departure of key employees. During these challenging times, the CEO’s job is to serve as chief motivator. Teams that can resiliently bounce back after crises can stand a better chance of surviving until things turn a corner.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It’s a short list. And it doesn’t include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deep technical expertise&lt;/li&gt;
&lt;li&gt;an encyclopedic knowledge of your industry&lt;/li&gt;
&lt;li&gt;financial / accounting skills&lt;/li&gt;
&lt;li&gt;marketing wizardry&lt;/li&gt;
&lt;li&gt;design talent&lt;/li&gt;
&lt;li&gt;intellectual property / legal acumen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s not that those skills aren’t important for building a successful company — they are. It’s not even that these skills aren’t helpful for a would-be startup CEO — these skills would be valuable for &lt;em&gt;anyone&lt;/em&gt; working at a startup to have. For startup CEOs in particular, these skills can help sell investors as to why the CEO is the right one to invest in or convince talent to join or inspire the team that the strategy a CEO has chosen is the right one.&lt;/p&gt;
&lt;p&gt;But, the reality is that these skills can be &lt;em&gt;hired&lt;/em&gt; into the company. They are &lt;em&gt;not&lt;/em&gt; what separates great startup CEOs from the rest of the pack.&lt;/p&gt;
&lt;p&gt;What makes a startup CEO great is their ability to nail the jobs that &lt;strong&gt;cannot be delegated&lt;/strong&gt;. And that boils down to fundraising, hiring and retaining the best, and lifting spirits when things are tough. And that is the job.&lt;/p&gt;
&lt;p&gt;After all, startup investors write checks because they believe in the vision and leadership of a CEO, not a lackey. And startup employees expect to work for a CEO with a vision, not just a mouthpiece.&lt;/p&gt;
&lt;p&gt;So, want to become a startup CEO? Work on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Storytelling&lt;/strong&gt; — Learn how to tell stories that compel listeners. This is vital for fundraising (convincing investors to take a chance on you because of your vision), but also for recruiting &amp;amp; retaining people as well as inspiring a team during difficult times.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading People&lt;/strong&gt; — Learn how to accurately read people. You can’t hire a superstar employee with other options, retain an unhappy worker through tough times, or overcome an investor’s concerns unless you understand their position. This means being attentive to what they tell you directly (i.e., over email, text, phone / video call, or in person, etc.) as well as paying attention to what they don’t (i.e., body language, how they act, what topics they discussed vs. didn’t, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioritization&lt;/strong&gt; — Many startup CEOs got to where they are because they were superstars at one or more of the “unnecessary to be a great startup CEO” skills. But, continuing to focus on that skill and ignoring the skills that a startup CEO needs to be stellar at confuses the path to the starting point with the path to the finish line. It is the CEO’s job to prioritize those tasks that they cannot delegate and to ruthlessly delegate everything else.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>startups</category><category>Venture Capital</category></item><item><title>Real World Effectiveness vs. Clinical Trial Efficacy</title><link>https://benjamintseng.com/2023/12/real-world-effectiveness-vs-clinical-trial-efficacy/</link><guid isPermaLink="true">https://benjamintseng.com/2023/12/real-world-effectiveness-vs-clinical-trial-efficacy/</guid><description>Real World Effectiveness vs. Clinical Trial Efficacy</description><pubDate>Tue, 19 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Randomized controlled trials (RCTs) are the “gold standard” in healthcare for proving a treatment works. And for good reason. A well-designed and well-powered (i.e., large enough) clinical trial establishes what is really due to a treatment as opposed to another factor (e.g., luck, reversion to the mean, patient selection, etc.), and it’s a good thing that drug regulation is tied to successful trial results.&lt;/p&gt;
&lt;p&gt;But, there’s one wrinkle. &lt;em&gt;&lt;strong&gt;Randomized controlled trials are not reality&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;RCTs are tightly controlled, where only specific patients (those fulfilling specific “inclusion criteria”) are allowed to participate. Follow-up is organized and adherence to protocol is tightly tracked. Typically, related medical care is also provided free of cost.&lt;/p&gt;
&lt;p&gt;This is exactly what you want from a scientific and patient volunteer safety perspective, but, as we all know, &lt;em&gt;&lt;strong&gt;the real world is messier&lt;/strong&gt;&lt;/em&gt;. In the real world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Physicians prescribe treatments to patients that don’t have to fit the exact inclusion criteria of the clinical trial. After all, many clinical trials exclude people who are extremely sick or who are children or pregnant.&lt;/li&gt;
&lt;li&gt;Patients may not take their designated treatment on time or in the right dose … and nobody finds out.&lt;/li&gt;
&lt;li&gt;Follow-up on side effects and progress is oftentimes random&lt;/li&gt;
&lt;li&gt;Cost and free time considerations may change how and when a patient comes in&lt;/li&gt;
&lt;li&gt;Physicians also have greater choice in the real world. They only prescribe treatments they think will work, whereas in a RCT, you get the treatment you’ve been randomly assigned to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These differences beg the question: just how different is the real world from an randomized controlled trial?&lt;/p&gt;
&lt;p&gt;A group in Canada studied this question and presented their findings at &lt;a href=&quot;https://www.hematology.org/meetings/annual-meeting&quot;&gt;the recent ASH (American Society of Hematology) meeting&lt;/a&gt;. The researchers looked at ~4,000 patients in Canada with &lt;a href=&quot;https://www.mayoclinic.org/diseases-conditions/multiple-myeloma/symptoms-causes/syc-20353378&quot;&gt;multiple myeloma&lt;/a&gt;, a cancer with multiple treatment regimens that have been developed and approved, and used Canada’s national administrative database to track how they did after 7 different treatment regimes and compared it to published RCT results for each treatment.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ash.confex.com/ash/2023/webprogram/Paper189506.html&quot;&gt;&lt;strong&gt;The findings are eye-opening.&lt;/strong&gt;&lt;/a&gt; While there is big variation from treatment to treatment, in general, &lt;em&gt;&lt;strong&gt;real world effectiveness&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;was significantly worse, by a wide margin, than &lt;em&gt;efficacy published in randomized controlled trial&lt;/em&gt;&lt;/strong&gt; (see table below).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/12/image-1024x789.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ash.confex.com/ash/2023/webprogram/Paper189506.html&quot;&gt;Source: ASH 2023 abstract, Visram et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While the safety profiles (as measured by the rate of “adverse events”) seemed similar between real world and RCT, &lt;strong&gt;real world patients did, in aggregate, 44% worse on progression free survival and 75% worse on overall survival&lt;/strong&gt; when compared with their RCT counterparts!&lt;/p&gt;
&lt;p&gt;The only treatment where the real world did better than the RCT was in a study where it’s likely the trial volunteers were much sicker than on average. (Note: that one of seven treatment regimes went the other way but the aggregate still is 40%+ worse shows you that some of the comparisons were vastly worse)&lt;/p&gt;
&lt;p&gt;The lesson here is not that we should stop doing or listening to randomized controlled trials. After all, this study shows that they were reasonably good at predicting safety, not to mention that they continue to be our only real tool for establishing whether a treatment has real clinical value prior to giving it to the general public.&lt;/p&gt;
&lt;p&gt;But this study imparts two key lessons for healthcare:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Do not assume that the results you see in a clinical trial are what you will see in the real world&lt;/strong&gt;. Different patient populations, resources, treatment adherence, and many other factors will impact what you see.&lt;/li&gt;
&lt;li&gt;Especially for treatments we expect to use with many people, &lt;strong&gt;real world monitoring studies are valuable&lt;/strong&gt; in helping to calibrate expectations and, potentially, identify patient populations where a treatment is better or worse suited.&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>multiple myeloma</category><category>randomized controlled trial</category><category>real world evidence</category></item><item><title>Public EV chargers suck</title><link>https://benjamintseng.com/2023/12/public-ev-chargers-suck/</link><guid isPermaLink="true">https://benjamintseng.com/2023/12/public-ev-chargers-suck/</guid><description>Reading Note: Public EV chargers suck</description><pubDate>Sun, 17 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We have a Nissan Ariya and currently DON’T have a home charger (yet — waiting on solar which is another boondoggle for another post). As we live in a town with abundant EVGo chargers (and the Ariya came with 1 yr of free EVGo charging), we thought we could manage.&lt;/p&gt;
&lt;p&gt;When it works, its amazing. But it doesn’t … a frustrating proportion of the time. And, as a result, we’ve become oddly superstitious about which chargers we go to and when.&lt;/p&gt;
&lt;p&gt;I’m glad the charging companies are aware and are trying to address the problem. As someone who’s had to ship and support product, I also recognize that creating charging infrastructure in all kinds of settings which need to handle all kinds of electric vehicles is not trivial.&lt;/p&gt;
&lt;p&gt;But, it’s damn frustrating to not be able to count on these (rest assured, we will be installing our own home charger soon), so I do hope that future Federal monies will have strict uptime requirements and penalties. Absent this, vehicle electrification becomes incredibly difficult outside of the surburban homeowner market.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Canary Media&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/ev-charging/ev-chargers-have-a-big-reliability-problem-can-the-government-fix-it&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“J.D. Power reported in August that 20 percent of all non-Tesla EV drivers in its most recent study said they visited a charger but did not charge their vehicle, whether because the charger was inoperable or because of long wait times to use it, up from 15 percent in the first quarter of 2021.
Fear of inadequate public charging has now overtaken ​“range anxiety” as the chief concern about EVs among the car-buying public, according to J.D. Power. ​“Although the majority of EV charging occurs at home” — about 80 percent of it, according to industry data — ​“public charging needs to provide a much better experience across the board, not just for the users of today, but also to alleviate the concerns of skeptical future customers,” said Brent Gruber, executive director of J.D. Power’s global automotive practice.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/12/Screenshot-2023-12-17-151916-1024x766.png&quot; alt=&quot;EV chargers have a big reliability problem. Can the government fix it?&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/ev-charging/ev-chargers-have-a-big-reliability-problem-can-the-government-fix-it&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; EV chargers have a big reliability problem. Can the government fix it? &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jeff St. John&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Canary Media&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.canarymedia.com/articles/ev-charging/ev-chargers-have-a-big-reliability-problem-can-the-government-fix-it&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>electric vehicle charging</category><category>electric vehicles</category></item><item><title>Will Hong Kong Put the Fear Into China’s Property Builders?</title><link>https://benjamintseng.com/2023/11/will-hong-kong-put-the-fear-into-chinas-property-builders/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/will-hong-kong-put-the-fear-into-chinas-property-builders/</guid><description>Reading Note: Will Hong Kong Put the Fear Into China’s Property Builders?</description><pubDate>Tue, 28 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The collapse of China’s massive property bubble is under way and it is wreaking havoc as significant amounts of the debt raised by Chinese property builders is from offshore investors.&lt;/p&gt;
&lt;p&gt;Because of (well-founded) concerns on how Chinese Mainland courts would treat foreign concerns, most of these agreements have historically been conducted under Hong Kong law. As a result, foreign creditors have (understandably) hauled their deadbeat Chinese property builder debtors to court there.&lt;/p&gt;
&lt;p&gt;While the judgements (especially from Linda Chan, &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-11-28/evergrande-under-pressure-in-hong-kong-court-to-repay-creditors&quot;&gt;the subject of this Bloomberg article&lt;/a&gt;) are unsurprisingly against the Chinese property builders (who have been slow to release credible debt restructuring plans), the big question remains whether the Mainland Chinese government will actually enforce these rulings. It certainly would make life harder on (at least until recently very well-connected) Chinese property builders at a moment of weakness in the sector.&lt;/p&gt;
&lt;p&gt;But, failure to do so would also hurt the Chinese government’s goal of encouraging more foreign investment: after all, why would you invest in a country where you can’t trust the legal paper?&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-11-28/evergrande-under-pressure-in-hong-kong-court-to-repay-creditors&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Never before has there been such a wave of Chinese corporate defaults on bonds sold to foreign investors. And never in recent memory has a bankruptcy judge in Hong Kong, the de-facto home for such cases, earned a reputation for holding deadbeat companies to account quite like Chan.
Chan, 54, has displayed an unwavering determination to give creditors a fair shot at recouping as much of their money as they can. One morning in early May, she shocked the packed courtroom by suddenly ordering the liquidation of Jiayuan. She had peppered the company’s lawyers that day as they tried, unsuccessfully, to explain why they needed more time to iron out their debt restructuring proposal.
And then, late last month, Chan put lawyers for Evergrande, the most indebted developer of them all, on notice: Either turn over a concrete restructuring proposal in five weeks or face the same fate as Jiayuan.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/image-2.jpeg&quot; alt=&quot;The Hong Kong Judge Who Puts Fear Into China\u2019s Deadbeat Builders&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-11-28/evergrande-under-pressure-in-hong-kong-court-to-repay-creditors&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Hong Kong Judge Who Puts Fear Into China\u2019s Deadbeat Builders &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Dorothy Ma and Alice Huang&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-11-28/evergrande-under-pressure-in-hong-kong-court-to-repay-creditors&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category><category>Evergrande</category><category>Hong Kong</category><category>legal</category><category>property</category></item><item><title>Amazon Delivers More US Packages than UPS and Fedex</title><link>https://benjamintseng.com/2023/11/amazon-delivers-more-us-packages-than-ups-and-fedex/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/amazon-delivers-more-us-packages-than-ups-and-fedex/</guid><description>Reading Note: Amazon Delivers More US Packages than UPS and Fedex</description><pubDate>Mon, 27 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s both unsurprising but also astonishing at the same time.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; WSJ&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.wsj.com/business/amazon-vans-outnumber-ups-fedex-750f3c04&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Amazon.com has grabbed the crown of biggest delivery business in the U.S., surpassing both UPS and FedEx in parcel volumes.
The Seattle e-commerce giant delivered more packages to U.S. homes in 2022 than UPS, after eclipsing FedEx in 2020, and it is on track to widen the gap this year, according to internal Amazon data and people familiar with the matter. The U.S. Postal Service is still the biggest parcel service by volume; it handles hundreds of millions of packages for all three companies.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/image-1.jpeg&quot; alt=&quot;The Biggest Delivery Business in the U.S. Is No Longer UPS or FedEx&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.wsj.com/business/amazon-vans-outnumber-ups-fedex-750f3c04&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Biggest Delivery Business in the U.S. Is No Longer UPS or FedEx &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Dana Mattioli and Esther Fung&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;WSJ&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.wsj.com/business/amazon-vans-outnumber-ups-fedex-750f3c04&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Amazon</category><category>Fedex</category><category>UPS</category></item><item><title>Going from Formula One to Odd One Out</title><link>https://benjamintseng.com/2023/11/going-from-formula-one-to-odd-one-out/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/going-from-formula-one-to-odd-one-out/</guid><description>Reading Note: Going from Formula One to Odd One Out</description><pubDate>Mon, 20 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Market phase transitions have a tendency to be incredibly disruptive to market participants. A company or market segment used to be the “alpha wolf” can suddenly find themselves an outsider in a short time. Look at how quickly Research in Motion (makers of the Blackberry) went from industry darling to laggard after Apple’s iPhone transformed the phone market.&lt;/p&gt;
&lt;p&gt;Something similar is happening in the high performance computing (HPC) world (colloquially known as supercomputers). Built to do the highly complex calculations needed to simulate complex physical phenomena, HPC was, for years, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Formula_One&quot;&gt;“Formula One”&lt;/a&gt; of the computing world. New memory, networking, and processor technologies oftentimes got their start in HPC, as it was the application that was most in need of pushing the edge (and had the cash to spend on exotic new hardware to do it).&lt;/p&gt;
&lt;p&gt;The use of GPUs (graphical processing units) outside of games, for example, was a HPC calling card. &lt;a href=&quot;https://en.wikipedia.org/wiki/CUDA&quot;&gt;NVIDIA’s CUDA framework&lt;/a&gt; which has helped give it such a lead in the AI semiconductor race was originally built to accelerate the types of computations that HPC could benefit from.&lt;/p&gt;
&lt;p&gt;The success of &lt;a href=&quot;https://en.wikipedia.org/wiki/Deep_learning&quot;&gt;Deep Learning&lt;/a&gt; as the chosen approach for AI benefited greatly from this initial work in HPC, as the math required to make deep learning worked was similar enough that existing GPUs and programming frameworks could be adapted. And, as a result, HPC benefited as well, as more interest and investment flowed into the space.&lt;/p&gt;
&lt;p&gt;But, we’re now seeing a market transition. Unlike with HPC which performs mathematical operations requiring every last iota of precision on mostly dense matrices, AI inference works on &lt;a href=&quot;https://en.wikipedia.org/wiki/Sparse_matrix&quot;&gt;sparse matrices&lt;/a&gt; and does not require much precision at all. This has resulted in a shift in industry away from software and hardware that works for &lt;em&gt;both&lt;/em&gt; HPC and AI and towards the much larger AI market specifically.&lt;/p&gt;
&lt;p&gt;Couple that with the recent semiconductor shortage (making it harder and more expensive to build HPC system with the latest GPUs) and the fact that research &lt;a href=&quot;https://insidehpc.com/2021/08/how-machine-learning-is-revolutionizing-hpc-simulations/&quot;&gt;suggests some HPC calculations are more efficiently simulated with AI methods than actually run&lt;/a&gt; (in the same way that &lt;a href=&quot;https://en.wikipedia.org/wiki/Deep_learning_super_sampling&quot;&gt;NVIDIA now uses AI to take a game rendered at a lower resolution and simulate what it would look like at a higher resolution&lt;/a&gt; more effectively than actually rendering the game at a higher resolution natively), I think we’re beginning to see traditional HPC shift from “Formula One of computing” to increasingly the “odd one out”.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Next Platform&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nextplatform.com/2023/11/20/trying-to-do-more-real-hpc-in-an-increasingly-ai-world/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The HPC community is used to being first, and we always considered ourselves as the F1 racing team of computing. We invent the turbochargers and fuel injection and the carbon fiber and then we put that into more general purpose vehicles, to use an analogy. I worry that the HPC community has sort of taken the backseat when it comes to AI and is not leading the charge. Like you, I’m seeing a lot of this AI stuff being led out of the hyperscalers and clouds. And we’ve got to find a way to take that back and carve our own use cases. There are a lot more HPC sites around the world than there are cloud sites, and we have got access to all a lot of data.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/image.jpeg&quot; alt=&quot;Trying to Do More Real HPC in an Increasingly AI World&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nextplatform.com/2023/11/20/trying-to-do-more-real-hpc-in-an-increasingly-ai-world/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Trying to Do More Real HPC in an Increasingly AI World &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Timothy Prickett Morgan&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Next Platform&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nextplatform.com/2023/11/20/trying-to-do-more-real-hpc-in-an-increasingly-ai-world/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Blackberry</category><category>CUDA</category><category>deep learning</category><category>Formula One</category><category>GPU</category><category>HPC</category><category>iPhone</category><category>NVIDIA</category></item><item><title>Are Driverless Cars Safer? (This time with data)</title><link>https://benjamintseng.com/2023/11/are-driverless-cars-safer-this-time-with-data/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/are-driverless-cars-safer-this-time-with-data/</guid><description>Reading Note: Are Driverless Cars Safer? (This time with data)</description><pubDate>Sun, 19 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m over two months late to seeing this study, but a brilliant study design (use insurance data to measure rate of bodily injury and property damage) and strong, noteworthy conclusion (doesn’t matter how you cut it, &lt;strong&gt;Waymo’s autonomous vehicle service resulted in fewer injuries per mile and less property damage per mile than human drivers&lt;/strong&gt; in the same area) make this worthwhile to return to! Short and sweet paper from researchers from Waymo, Swiss Re (the re-insurer), and Stanford that is well worth the 10 minute read!&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; ArXiV&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://arxiv.org/abs/2309.01206&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“When TO and RO datasets were combined, totaling 39,096,826 miles, there was a significant reduction in bodily injury claims frequency by 93% (0.08 vs 1.09 claims per million miles), TO+ROBI 95% CI [0.02, 0.22], Baseline 95% CI [1.08, 1.09]. Property damage claims frequency was significantly reduced by 93% (0.23 vs 3.17 claims per million miles), TO+ROPDL 95% CI [0.11, 0.44], Baseline 95% CI [3.16,3.18].”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/Screenshot-2023-11-19-15.26.57-1024x493.png&quot; alt=&quot;Comparative Safety Performance of Autonomous- and Human Drivers: A Real-World Case Study of the Waymo One Service&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://arxiv.org/abs/2309.01206&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Comparative Safety Performance of Autonomous- and Human Drivers: A Real-World Case Study of the Waymo One Service &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Lillo et. al&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;ArXiV&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://arxiv.org/abs/2309.01206&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>autonomous vehicles</category><category>insurance</category><category>Waymo</category></item><item><title>AI for Defense</title><link>https://benjamintseng.com/2023/11/ai-for-defense/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/ai-for-defense/</guid><description>Reading Note: AI for Defense</description><pubDate>Mon, 13 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My good friend Danny Goodman (and Co-Founder at &lt;a href=&quot;https://swarmaero.com/&quot;&gt;Swarm Aero&lt;/a&gt;) recently wrote &lt;a href=&quot;https://quiet.com/essays/supercharging-americas-national-defense-with-ai/&quot;&gt;a great essay&lt;/a&gt; on how AI can help with America’s defense. He outlines 3 opportunities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Affordable mass”: Balancing/augmenting America’s historical strategy of pursuing only extremely expensive, long-lived “exquisite” assets (e.g. F-35’s, aircraft carriers) with autonomous and lower cost units which can safely increase sensor capability &amp;amp;, if it comes to it, serve as alternative targets to help safeguard human operators&lt;/li&gt;
&lt;li&gt;Smarter war planning: Leveraging modeling &amp;amp; simulation to devise better tactics and strategies (think AlphaCraft on steroids)&lt;/li&gt;
&lt;li&gt;Smarter procurement: Using AI to evaluate how programs and budget line items will actually impact America’s defensive capabilities to provide objectivity in budgeting&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Danny Goodman&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://quiet.com/essays/supercharging-americas-national-defense-with-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“With the proper rules in place, AI is poised to be a transformative force that will strengthen America’s national defense. It will give our military new weapons systems and capabilities, smarter ways to plan for increasingly complex conflicts, and better ways to decide what to build and buy, and when. Along the way, it will help save both taxpayer dollars and, more importantly, lives.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/image-3.png&quot; alt=&quot;Supercharging America\u2019s National Defense with AI&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://quiet.com/essays/supercharging-americas-national-defense-with-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Supercharging America\u2019s National Defense with AI &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;Danny Goodman&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://quiet.com/essays/supercharging-americas-national-defense-with-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>defense</category></item><item><title>Why Childcare *is* Economic Infrastructure</title><link>https://benjamintseng.com/2023/11/why-childcare-is-economic-infrastructure/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/why-childcare-is-economic-infrastructure/</guid><description>Reading Note: Why Childcare *is* Economic Infrastructure</description><pubDate>Mon, 06 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a parent myself, few things throw off my work day as much as a wrench in my childcare — like a kid being sick and needing to come home or a school/childcare center being closed for the day. The time required to change plans while balancing work, the desire to check-in on your child throughout the work day to make sure they’re doing okay… and this is as someone with a fair amount of work flexibility, a spouse who also has flexibility, and nearby family who can pitch in.&lt;/p&gt;
&lt;p&gt;Childcare, while expensive, is a vital piece of the infrastructure that makes my and my spouse’s careers possible — and hence the (hopefully positive 😇) economic impact we have possible. It’s made me very sympathetic to the notion that we need to take childcare policy much more seriously — something that I think played out for millions of households when COVID disrupted schooling and childcare plans.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.washingtonpost.com/opinions/2023/11/06/child-care-cliff-funding-parents-employers/&quot;&gt;The Washington Post’s Catherine Rampell also lays this out clearly in an Opinion piece&lt;/a&gt;, tracking how the closure of one Wisconsin day-care had cascading impacts on the affected parents and then their employers.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Washington Post&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.washingtonpost.com/opinions/2023/11/06/child-care-cliff-funding-parents-employers/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Census data suggest that, as things are, the child-care industry nationwide has been operating in the red for two straight years. Now, as programs still stressed by the pandemic lose a major source of public funds, many programs around the country are considering closure. When these businesses do shut down, they can send shock waves throughout their local economies. The shuttered child-care business sheds jobs; parents that relied on that business lose care arrangements for their kids, which in turn disrupts parents’ ability to work; and the employers of those parents must then scramble to adjust for lost workforce hours.
While each of those can feel like an individual misfortune, they are all part of a larger system of how our country cares for our young while adults work — or fails to do so. And the ripple effects can be enormous. Here’s one story of what happened downstream when a single day-care center in Wisconsin shut its doors.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/Screenshot-2023-11-06-110251.png&quot; alt=&quot;Opinion | What happened to this Wisconsin day-care should concern us all&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.washingtonpost.com/opinions/2023/11/06/child-care-cliff-funding-parents-employers/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Opinion | What happened to this Wisconsin day-care should concern us all &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Catherine Rampell&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Washington Post&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.washingtonpost.com/opinions/2023/11/06/child-care-cliff-funding-parents-employers/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>childcare</category><category>economic infrastructure</category></item><item><title>Good Windows on ARM at last?</title><link>https://benjamintseng.com/2023/11/good-windows-on-arm-at-last/</link><guid isPermaLink="true">https://benjamintseng.com/2023/11/good-windows-on-arm-at-last/</guid><description>Reading Note: Good Windows on ARM at last?</description><pubDate>Wed, 01 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Silicon nerd 🤓 that I am, I have gone through multiple cycles of excited-then-disappointed for Windows-on-ARM, especially considering the success of ChromeOS with ARM, the Apple M1/M2 (Apple’s own ARM silicon which now powers its laptops), and AWS Graviton (Amazon’s own ARM chip for its cloud computing services).&lt;/p&gt;
&lt;p&gt;I may just be setting myself up for disappointment here but these (admittedly vendor-provided) specs for their new Snapdragon X (based on technology they acquired from Nuvia and &lt;a href=&quot;https://www.reuters.com/legal/chips-tech-firm-arm-sues-qualcomm-nuvia-breach-license-trademark-2022-08-31/&quot;&gt;are currently being sued for by ARM&lt;/a&gt;) look &lt;em&gt;very impressive&lt;/em&gt;. Biased as they may be, the fact that these chips are performing in the same performance range as Intel/AMD/Apple’s silicon on single-threaded benchmarks (not to mention the multi-threaded applications which work well with the Snapdragon X’s 12 cores) hopefully bodes well for the state of CPU competition in the PC market!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/Snapdragon-Summit-2023_Benchmarking-Presentation_09_575px.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Single-threaded CPU performance (Config A is a high performance tuned offering, Config B is a “thin &amp;amp; light” configuration)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/11/Snapdragon-Summit-2023_Benchmarking-Presentation_10_575px.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Multi-threaded CPU performance (Config A is a high performance tuned offering, Config B is a “thin &amp;amp; light” configuration)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Anandtech&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.reuters.com/legal/chips-tech-firm-arm-sues-qualcomm-nuvia-breach-license-trademark-2022-08-31/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Overall, Qualcomm’s early benchmark disclosure offers an interesting first look at what to expect from their forthcoming laptop SoC. While the competitive performance comparisons are poorly-timed given that next-generation hardware is just around the corner from most of Qualcomm’s rivals, the fact that we’re talking about the Snapdragon X Elite in the same breath as the M2 or Raptor Lake is a major achievement for Qualcomm. Coming from the lackluster Snapdragon 8cx SoCs, which simply couldn’t compete on performance, the Snapdragon X Elite is clearly going to be a big step up in virtually every way.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://images.anandtech.com/doci/21112/SDX_Reference_Car_678x452.jpg&quot; alt=&quot;Qualcomm Snapdragon X Elite Performance Preview: A First Look at What\u2019s to Come&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.reuters.com/legal/chips-tech-firm-arm-sues-qualcomm-nuvia-breach-license-trademark-2022-08-31/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Qualcomm Snapdragon X Elite Performance Preview: A First Look at What\u2019s to Come &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Ryan Smith&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Anandtech&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.reuters.com/legal/chips-tech-firm-arm-sues-qualcomm-nuvia-breach-license-trademark-2022-08-31/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Apple</category><category>ARM</category><category>AWS</category><category>Qualcomm</category><category>semiconductors</category><category>Snapdragon</category><category>Windows</category></item><item><title>Complex operations for gene editing therapies</title><link>https://benjamintseng.com/2023/10/complex-operations-for-gene-editing-therapies/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/complex-operations-for-gene-editing-therapies/</guid><description>Reading Note: Complex operations for gene editing therapies</description><pubDate>Mon, 30 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gene editing makes possible new therapies and actual &lt;em&gt;cures&lt;/em&gt; (not just treatments) that were previously not. But, one thing that doesn’t get discussed a great deal is how these new gene editing-based therapies throw the “take two and call me in the morning” model out the window.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.biopharmadive.com/news/vertex-crispr-exa-cel-sickle-cell-launch-preparations/697996/&quot;&gt;This interesting piece in BioPharmaDive&lt;/a&gt; gives a fascinating look at all the steps for a gene editing therapy for &lt;a href=&quot;https://en.wikipedia.org/wiki/Sickle_cell_disease&quot;&gt;sickle cell disease&lt;/a&gt; that &lt;a href=&quot;https://www.fiercebiotech.com/biotech/crispr-vertexs-gene-editing-1st-get-narrow-review-fda-committee-and-thats-good-thing&quot;&gt;Vertex Pharmaceuticals is awaiting FDA approval for&lt;/a&gt;. The steps include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;referral by hematologist (not to mention insurance approval!)&lt;/li&gt;
&lt;li&gt;collection of cells (probably via bone marrow extraction)&lt;/li&gt;
&lt;li&gt;(partial) myeloablation of the patient&lt;/li&gt;
&lt;li&gt;shipping the cells to a manufacturing facility&lt;/li&gt;
&lt;li&gt;manufacturing facility applies gene editing on the cells&lt;/li&gt;
&lt;li&gt;shipping of cells back&lt;/li&gt;
&lt;li&gt;infusion of the gene edited cells to the patient (so they hopefully engraft back in their bone marrow)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each step is complicated and has their own set of risks. And, while there are many economic aspects of this that are similar to more traditional drug regimens (high price points, deep biological understanding of disease, complicated manufacturing [esp for biologicals], medical / insurance outreach, patient education, etc.), gene editing-based therapies (which can also include &lt;a href=&quot;https://en.wikipedia.org/wiki/CAR_T_cell&quot;&gt;CAR-T therapy&lt;/a&gt;) now require a level of &lt;em&gt;ongoing&lt;/em&gt; operational complexity that the biotech/pharmaceutical industries will need to adapt to if we want to bring these therapies to more people.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; BioPharma Dive&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/vertex-crispr-exa-cel-sickle-cell-launch-preparations/697996/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“To make and administer the therapy is laborious, first requiring a referral from a hematologist. If the patient is eligible, their cells are collected and shipped to a manufacturing facility where they’re genetically edited to express a form of an essential protein called hemoglobin.
The cells are then shipped back to a treatment facility that infuses them into the patient’s bone marrow. But to make sure there’s enough room for these new cells, patients first undergo myeloablation — a chemotherapy regimen that can be very difficult on their bodies and comes with the risk of infertility. Older patients may not be healthy enough to receive this treatment.
“This is an extensive and expensive process,” Arbuckle said.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/Vertex_boston_headquarters-1024x576.jpg&quot; alt=&quot;Vertex gearing up for launch as sickle cell therapy review advances&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/vertex-crispr-exa-cel-sickle-cell-launch-preparations/697996/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Vertex gearing up for launch as sickle cell therapy review advances &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jacob Bell&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;BioPharma Dive&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.biopharmadive.com/news/vertex-crispr-exa-cel-sickle-cell-launch-preparations/697996/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>CAR-T</category><category>cell therapy</category><category>CRISPR</category><category>gene editing</category><category>sickle cell anemia</category><category>Vertex</category></item><item><title>The World Runs on Excel… and its Mistakes</title><link>https://benjamintseng.com/2023/10/the-world-runs-on-excel-and-its-mistakes/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/the-world-runs-on-excel-and-its-mistakes/</guid><description>The World Runs on Excel… and its Mistakes</description><pubDate>Mon, 23 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/CHIPS_and_Science_Act&quot;&gt;The 2022 CHIPS and Science Act&lt;/a&gt; earmarked hundreds of billions in subsidies and tax credits to bolster a U.S. domestic semiconductor (and especially semiconductor &lt;em&gt;manufacturing&lt;/em&gt;) industry. If it works, it will dramatically reposition the U.S. in the global semiconductor value chain (especially relative to China).&lt;/p&gt;
&lt;p&gt;With such large amounts of taxpayer money practically “gifted” to large (already very profitable) corporations like Intel, the U.S. taxpayer can reasonably assume that these funds should be allocated carefully and thoughtfully and with processes in place to make sure every penny furthered the U.S.’s strategic goals.&lt;/p&gt;
&lt;p&gt;But, when the world’s financial decisions are powered by Excel spreadsheets, even the best laid plans can go awry.&lt;/p&gt;
&lt;p&gt;The team behind the startup &lt;a href=&quot;https://www.rowsie.ai/&quot;&gt;Rowsie&lt;/a&gt; created a large language model (LLM)-powered tool which can understand Excel spreadsheets and answer questions posed to it. They &lt;a href=&quot;https://www.nist.gov/document/chips-nofo-commercial-fabrication-facilities-pre-application-example-financial-model&quot;&gt;downloaded a spreadsheet that the US government provided&lt;/a&gt; as an example of the information and calculations they want applicants fill out in order to qualify. They then applied their AI tool to the spreadsheet to understand it’s structure and formulas.&lt;/p&gt;
&lt;p&gt;Interestingly, Rowsie was able to find a single-cell spreadsheet error (see images below) which resulted in &lt;strong&gt;a $178 million understatement of interest payments&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/image-1-1024x316.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Control Panel&lt;/em&gt; tab in the &lt;code&gt;Example Pre-App-Simple-Financial-Model&lt;/code&gt; spreadsheet from &lt;a href=&quot;https://www.nist.gov/chips/guides-and-templates-chips-incentives-program-commercial-fabrication-facilities&quot;&gt;the CHIPS Act funding application website&lt;/a&gt;. Notice cells &lt;code&gt;C51&lt;/code&gt; and &lt;code&gt;D51&lt;/code&gt; corresponding to the senior debt interest rate (&lt;code&gt;5%&lt;/code&gt;) and the subordinated debt interest rate (&lt;code&gt;8%&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/image-3-1024x266.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Assumptions Processing&lt;/em&gt; tab in the &lt;code&gt;Example Pre-App-Simple-Financial-Model&lt;/code&gt; spreadsheet from &lt;a href=&quot;https://www.nist.gov/chips/guides-and-templates-chips-incentives-program-commercial-fabrication-facilities&quot;&gt;the CHIPS Act funding application website&lt;/a&gt;. Notice row 50. Despite the section being about Subordinated Debt (see Cell B50), they’re using cell &lt;code&gt;C51&lt;/code&gt; from the &lt;em&gt;Control Panel&lt;/em&gt; tab (which points to the Senior Debt rate of 5%) rather than the correct cell of D51 (which points to the Subordinated Debt rate of 8%).&lt;/p&gt;
&lt;p&gt;To be clear, this is not a criticism of the spreadsheet’s architects. In this case, what seems to have happened, is that the spreadsheet creator copied an earlier row (row 40) and forgot to edit the formula to account for the fact that row 50 is about subordinated debt and row 40 is about senior debt. It’s a familiar story to anyone who’s ever been tasked with doing something complicated in Excel. Features like copy and paste and complex formulas are very powerful, but also make it very easy for a small mistake to cascade. It’s also remarkably hard to catch!&lt;/p&gt;
&lt;p&gt;Hopefully the Department of Commerce catches on and fixes this little clerical mishap, and that applicants are submitting good spreadsheets, free of errors. But, this case underscores how (1) so many of the world’s financial and policy decisions rest on Excel spreadsheets and you just have to hope 🤞🏻 no large mistakes were made, and (2) the potential for tools like Rowsie to be tireless proofreaders and assistants who can help us avoid mistakes and understand those critical spreadsheets quickly.&lt;/p&gt;
&lt;p&gt;If you’re interested in checking out Rowsie, check it out at &amp;lt;&lt;a href=&quot;https://www.rowsie.ai/&quot;&gt;https://www.rowsie.ai/&lt;/a&gt;&amp;gt;!&lt;/p&gt;
&lt;p&gt;DISCLAIMER: I happen to be friends with the founders of Rowsie which is how I found out about this&lt;/p&gt;</content:encoded><category>CHIPS Act</category><category>Excel</category><category>large language models</category><category>Rowsie</category><category>semiconductors</category><category>spreadsheets</category></item><item><title>The Problem with the MCU</title><link>https://benjamintseng.com/2023/10/the-problem-with-the-mcu/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/the-problem-with-the-mcu/</guid><description>Reading Note: The Problem with the MCU</description><pubDate>Fri, 13 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Something is wrong with the state of the Marvel Cinematic Universe (MCU).&lt;/p&gt;
&lt;p&gt;In 2019, Disney/Marvel topped off an amazing decade-plus run of films with &lt;em&gt;Avengers: Endgame&lt;/em&gt;, becoming (until &lt;em&gt;Avatar&lt;/em&gt; was re-released in China) the highest grossing film of all time. This was in spite of an objectively complicated plot which required a deep understanding of all of Marvel Cinematic Universe continuity to follow.&lt;/p&gt;
&lt;p&gt;And yet critics and fans (myself included! 🙋🏻‍♂️) &lt;em&gt;loved&lt;/em&gt; it! It seemed like Marvel could do no wrong.&lt;/p&gt;
&lt;p&gt;It doesn’t feel that way anymore. While I’ve personally enjoyed &lt;em&gt;Black Panther: Wakanda Forever&lt;/em&gt; and &lt;em&gt;Shang-Chi&lt;/em&gt;, &lt;a href=&quot;https://time.com/6319815/marvel-cinematic-universe-future/&quot;&gt;this Time article&lt;/a&gt; does a good job of critiquing how complicated the MCU has become, so much so that a layperson can’t just watch one casually.&lt;/p&gt;
&lt;p&gt;But it misses one additional thing which I think gets to the heart of why the MCU just doesn’t feel right anymore. The MCU is now so commercially large, that the scripts &lt;em&gt;feel like&lt;/em&gt; they’re written by a committee of businesspeople (oh make sure you’re setting up this other show/movie! let’s get in an action scene with some kind of viral quip!) rather than writers/directors trying to tell an entertaining story for the sake of the story.&lt;/p&gt;
&lt;p&gt;And until they get to that, I’m not sure even &lt;a href=&quot;https://ew.com/movies/kevin-feige-marvel-phase-5-exclusive-interview/&quot;&gt;Marvel’s plans to cut down on the number of productions&lt;/a&gt; will deliver.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Time&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://time.com/6319815/marvel-cinematic-universe-future/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Does all this sound like gobbledygook? For years now, audiences have not been able to watch Marvel shows and movies casually. But watching Loki Season 2, I felt I could not even look down at my phone for a second without getting completely lost. Heck, even if you’re watching with rapt attention, you’ll probably have a difficult time keeping up with the convoluted time travel shenanigans. The various MacGuffins, Easter eggs, and pseudoscientific explanations of superpowers used to be fun. Now they feel like homework.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/Screenshot-2023-10-07-005056-1024x763.png&quot; alt=&quot;How Marvel Lost Its Way&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://time.com/6319815/marvel-cinematic-universe-future/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; How Marvel Lost Its Way &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Eliana Dockterman&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Time&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://time.com/6319815/marvel-cinematic-universe-future/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Marvel</category><category>Marvel Cinematic Universe</category></item><item><title>The Parents Trying to Pass Down a Language They Hardly Speak</title><link>https://benjamintseng.com/2023/10/the-parents-trying-to-pass-down-a-language-they-hardly-speak/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/the-parents-trying-to-pass-down-a-language-they-hardly-speak/</guid><description>Reading Note: The Parents Trying to Pass Down a Language They Hardly Speak</description><pubDate>Mon, 09 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article resonates with me on so many levels: both as the child who came to the US and saw his language skills deteriorate as he assimilated and as the parent trying to preserve his kids’ connection to their cultural heritage&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; **[a Language They Hardly Speak](https://www.theatlantic.com/family/archive/2023/09/children-learning-immigrant-family-languages/675423/)**&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theatlantic.com/family/archive/2023/09/children-learning-immigrant-family-languages/675423/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“In the U.S., bringing a heritage language back into a family usually comes down to the efforts of individuals. The parents I spoke with who taught their children a heritage language that they themselves didn’t speak fluently had essentially organized their own lives around the effort.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/Screenshot-2023-10-09-083551-1024x573.png&quot; alt=&quot;The Parents Trying to Pass Down&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theatlantic.com/family/archive/2023/09/children-learning-immigrant-family-languages/675423/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The Parents Trying to Pass Down &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;**[a Language They Hardly Speak](https://www.theatlantic.com/family/archive/2023/09/children-learning-immigrant-family-languages/675423/)**&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theatlantic.com/family/archive/2023/09/children-learning-immigrant-family-languages/675423/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>language</category><category>parenting</category><category>US culture</category></item><item><title>Pixel’s Parade of AI</title><link>https://benjamintseng.com/2023/10/pixels-parade-of-ai/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/pixels-parade-of-ai/</guid><description>Reading Note: Pixel’s Parade of AI</description><pubDate>Sat, 07 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am a big Google Pixel fan, being an owner and user of multiple Google Pixel line products. As a result, I tuned in to &lt;a href=&quot;https://www.youtube.com/watch?v=pxlaUCJZ27E&quot;&gt;the recent MadeByGoogle stream&lt;/a&gt;. While it was hard not to be impressed with the demonstrations of Google’s AI prowess, I couldn’t help but be a little baffled…&lt;/p&gt;
&lt;p&gt;What was the point of making everything AI-related?&lt;/p&gt;
&lt;p&gt;Given how low Pixel’s market share is in the smartphone market, you’d think the focus ought to be on explaining why “normies” should buy the phone or find the price tag compelling, but instead every feature had to tie back to AI in some way.&lt;/p&gt;
&lt;p&gt;Don’t get me wrong, AI is a compelling enabler of new technologies. Some of the call and photo functionalities are amazing, both as technological demonstrations but also in terms of pure utility for the user.&lt;/p&gt;
&lt;p&gt;But, every product person learns early that customers care less about &lt;em&gt;how&lt;/em&gt; something gets done and more about &lt;em&gt;whether the product does what they want it too&lt;/em&gt;. And, as someone who very much wants a meaningful rival to Apple and Samsung, I hope Google doesn’t forget that either.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Verge&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theverge.com/2023/10/6/23905985/google-pixel-8-launch-artificial-intelligence-ai-hype-parade&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“But while Google can call itself an AI company all it likes, people ultimately just want phones filled with useful features. At a certain point, it risks putting the AI technology cart in front of the feature horse.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/image.jpeg&quot; alt=&quot;Google\u2019s Pixel 8 launch was a parade of AI&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theverge.com/2023/10/6/23905985/google-pixel-8-launch-artificial-intelligence-ai-hype-parade&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Google\u2019s Pixel 8 launch was a parade of AI &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jon Porter&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Verge&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theverge.com/2023/10/6/23905985/google-pixel-8-launch-artificial-intelligence-ai-hype-parade&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Google</category><category>Google Pixel</category></item><item><title>Artificial Wombs</title><link>https://benjamintseng.com/2023/10/artificial-wombs/</link><guid isPermaLink="true">https://benjamintseng.com/2023/10/artificial-wombs/</guid><description>Reading Note: Artificial Wombs</description><pubDate>Mon, 02 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anyone who’s ever seen a NICU or &lt;a href=&quot;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8744861/&quot;&gt;statistics on the health outcomes for extremely premature babies&lt;/a&gt; understands how artificial womb technology could be incredibly impactful.&lt;/p&gt;
&lt;p&gt;At the same time, it poses some tricky ethical challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How can you get informed, ethical consent to trial this? It’s nigh impossible to predict who will need a premature delivery.&lt;/li&gt;
&lt;li&gt;In places like the US with limitations / controversy on reproductive rights, how do you push this forward without impacting assessments of “fetal viability” that may impact the abortion debate?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Great piece in Nature News below 👇🏻&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; **[start soon. Here\u2019s what you need to know](https://www.nature.com/articles/d41586-023-02901-1)**&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-023-02901-1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Now, the researchers at CHOP are seeking approval for the first human clinical trials of the device they’ve been testing, named the Extra-uterine Environment for Newborn Development, or EXTEND. The team has emphasized that the technology is not intended — or able — to support development from conception to birth. Instead, the scientists hope that simulating some elements of a natural womb will increase survival and improve outcomes for extremely premature babies. In humans, that’s anything earlier than 28 weeks of gestation — less than 70% of the way to full term, which is typically between 37 and 40 weeks.
The CHOP group has made bold predictions about the technology’s potential. In another 2017 video describing the project, Alan Flake, a fetal surgeon at CHOP who has been leading the effort, said: “If it’s as successful as we think it can be, ultimately, the majority of pregnancies that are predicted at-risk for extreme prematurity would be delivered early onto our system rather than being delivered premature onto a ventilator.” In 2019, several members of the CHOP team joined a start-up company, Vitara Biomedical in Philadelphia, which has since raised US$100 million to develop EXTEND. (Flake declined to comment for this article, citing “conflicts of interest” and “restrictions on proprietary information”. His co-authors on the 2017 paper did not respond to Nature’s request for comment.)”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/10/d41586-023-02901-1_26042070-698x1024.png&quot; alt=&quot;Human trials of artificial wombs could&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-023-02901-1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Human trials of artificial wombs could &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;**[start soon. Here\u2019s what you need to know](https://www.nature.com/articles/d41586-023-02901-1)**&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.nature.com/articles/d41586-023-02901-1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>artificial womb</category><category>Science</category></item><item><title>The “Large Vision Model” (LVM) Era is Upon Us</title><link>https://benjamintseng.com/2023/09/the-large-vision-model-lvm-era-is-upon-us/</link><guid isPermaLink="true">https://benjamintseng.com/2023/09/the-large-vision-model-lvm-era-is-upon-us/</guid><description>Reading Note: The “Large Vision Model” (LVM) Era is Upon Us</description><pubDate>Thu, 28 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Unless you’ve been under a rock, you’ll know the tech industry has been rocked by the rapid advance in performance by large language models (LLMs) such as &lt;a href=&quot;https://openai.com/blog/chatgpt&quot;&gt;ChatGPT&lt;/a&gt;. By adapting &lt;a href=&quot;https://en.wikipedia.org/wiki/Self-supervised_learning&quot;&gt;self-supervised learning methods&lt;/a&gt;, LLMs “learn” to sound like a human being by learning how to fill in gaps in language and, by doing so, become remarkably adept at solving not just language problems but understanding &amp;amp; creativity.&lt;/p&gt;
&lt;p&gt;Interestingly, the same is happening in imaging, as models largely trained to fill in “gaps” in images are becoming amazingly adept. A friend of mine, &lt;a href=&quot;https://twitter.com/pearsekeane&quot;&gt;Pearse Keane’s group at University College of London&lt;/a&gt;, for instance, &lt;a href=&quot;https://www.nature.com/articles/s41586-023-06555-x/&quot;&gt;just published a model trained using self-supervised learning methods on ophthalmological images&lt;/a&gt; which is capable of not only diagnosing diabetic retinopathy and glaucoma relatively accurately, but relatively good at predicting cardiovascular events and Parkinson’s.&lt;/p&gt;
&lt;p&gt;At a talk, Andrew Ng captured it well, by pointing out the parallels between the advances in language modeling that happened after &lt;a href=&quot;https://arxiv.org/abs/1706.03762&quot;&gt;the seminal Transformer paper&lt;/a&gt; and what is happening in the “large vision model” world with this great illustration.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/image-1024x512.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;From Andrew Ng (&lt;a href=&quot;https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/&quot;&gt;Image credit: EETimes&lt;/a&gt;)&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; **[Is Coming to Images](https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/)**&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;““The revolution we’ve seen for text will be coming to images,” renowned computer scientist Andrew Ng asserted in a keynote talk he gave at the recent AI Hardware Summit here.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/image-1024x512.png&quot; alt=&quot;Andrew Ng: The AI Text Revolution&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Andrew Ng: The AI Text Revolution &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;**[Is Coming to Images](https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/)**&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.eetimes.com/andrew-ng-the-ai-text-revolution-is-coming-to-images/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>AI</category><category>Andrew Ng</category><category>ChatGPT</category><category>large language models</category><category>Pearse Keane</category><category>self supervised learning</category></item><item><title>I want your market and you to pay for it</title><link>https://benjamintseng.com/2023/09/i-want-your-market-and-you-to-pay-for-it/</link><guid isPermaLink="true">https://benjamintseng.com/2023/09/i-want-your-market-and-you-to-pay-for-it/</guid><description>Reading Note: I want your market and you to pay for it</description><pubDate>Mon, 25 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2008/02/made-in-taiwan/&quot;&gt;I have followed TSMC very closely&lt;/a&gt; since I started my career in the semiconductor industry. A brilliant combination of bold business bet (by founder Morris Chang), industry tailwinds (with the rise of fabless semiconductor model), forward-thinking from the Taiwanese government (who helped launch TSMC), and technological progress, it’s been fascinating to see the company enter the public consciousness.&lt;/p&gt;
&lt;p&gt;In hearing about TSMC’s investment in the very aptly-named ESMC (European Semiconductor Manufacturing Company), I can’t help but think this is another brilliant TSMC-esque play. TSMC gets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guarantee outsized market share in leading edge semiconductor technology in Europe&lt;/li&gt;
&lt;li&gt;Paid for in part by some of their largest customers (Infineon, Bosch, and NXP) who will likely commit / guarantee some of their volumes to fill this new manufacturing facility&lt;/li&gt;
&lt;li&gt;AND (likely) additional subsidies / policy support from the European Union government (who increasingly doesn’t want to be left out of advanced chip manufacturing given Asia’s current dominance and the US’s Inflation Reduction Act push)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;TSMC has managed to turn what could have been a disaster for them (growing nationalism in semiconductor manufacturing) into a subsidized, volume-committed factory.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; EETimes&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.eetimes.com/driving-europes-chip-renaissance-tsmcs-vision-with-esmc/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“TSMC, in collaboration with Bosch, Infineon and NXP, is planning to invest in the European Semiconductor Manufacturing Company (ESMC), based in Dresden, Germany. This strategic move aims to meet the burgeoning demand for advanced semiconductor-manufacturing services, particularly in the automotive and industrial sectors.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/Screenshot-2023-09-25-163359.png&quot; alt=&quot;Driving Europe\u2019s Chip Renaissance: TSMC\u2019s Vision with ESMC&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.eetimes.com/driving-europes-chip-renaissance-tsmcs-vision-with-esmc/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Driving Europe\u2019s Chip Renaissance: TSMC\u2019s Vision with ESMC &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Maurizio di Paolo Emilio&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;EETimes&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.eetimes.com/driving-europes-chip-renaissance-tsmcs-vision-with-esmc/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Europe</category><category>semiconductors</category><category>TSMC</category></item><item><title>The cable bundle of the future</title><link>https://benjamintseng.com/2023/09/the-cable-bundle-of-the-future/</link><guid isPermaLink="true">https://benjamintseng.com/2023/09/the-cable-bundle-of-the-future/</guid><description>Reading Note: The cable bundle of the future</description><pubDate>Sat, 23 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Charter and Disney recently made peace over &lt;a href=&quot;https://www.theverge.com/2023/9/3/23857501/disney-charter-spectrum-espn-blackout-cable-carriage-dispute&quot;&gt;the recent ESPN carriage fee dispute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Three things are happening in video delivery world that are colliding here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;People are “cutting the cord” as they become less dependent on cable for high quality content (due to things like YouTube and Netflix)&lt;/li&gt;
&lt;li&gt;Because you’ve lost the “cable bundle” economics (where cable subscribers would cross-subsidize each other’s viewing — you pay because you really want ESPN &amp;amp; I pay because I really want HBO and, as a result, we both end up paying less for more content), video streaming services like Disney+ inevitably increase prices &amp;amp; introduce ad models to cover their (very high) cost (of content production). This naturally means new bundles will emerge as consumers look to find ways to pay less for more content.&lt;/li&gt;
&lt;li&gt;High speed internet today is largely subsidized by the investments from cable industry to deliver video. If ‘cord cutting’ (as in canceling cable) continues, then eventually the cost of high speed internet will go up as it becomes the “main event” for the company’s financials. Given (2), I think this likely means “cable companies” will increasingly become “bundled internet + streaming service” companies soon.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All this is ironically &lt;em&gt;not that different&lt;/em&gt; from the original cable bundle, only this time we have a few new logos (i.e. Netflix) and a little more price transparency since you can see what the unsubsidized streaming video service cost (i.e. Disney+, Hulu, etc.) would be outside of the bundle.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Verge&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theverge.com/23868355/disney-charter-bundle-espn-abc-broadcast&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Charter is taking a page from the book of Amazon and Apple, allowing you to essentially combine your bills. Do you have to get Spectrum cable because that’s the only internet provider in town? Well, soon, you might be able to bundle in your Hulu with Live TV service, too. Multiple services, one bill. That’s a step up from the HBO situation where you’ll have to cancel HBO and then go subscribe directly to Max if you want the pricier 4K version of that service.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/acastro_STK080_disneyPlus_02.jpg&quot; alt=&quot;The cable bundle of the future is officially here&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theverge.com/23868355/disney-charter-bundle-espn-abc-broadcast&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; The cable bundle of the future is officially here &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Alex Cranz&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Verge&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theverge.com/23868355/disney-charter-bundle-espn-abc-broadcast&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Charter</category><category>Disney</category><category>media</category><category>Netflix</category><category>streaming video</category><category>video</category><category>YouTube</category></item><item><title>Yummy AND durable 🍅</title><link>https://benjamintseng.com/2023/09/yummy-and-durable-%f0%9f%8d%85/</link><guid isPermaLink="true">https://benjamintseng.com/2023/09/yummy-and-durable-%f0%9f%8d%85/</guid><description>Reading Note: Yummy AND durable 🍅</description><pubDate>Wed, 20 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One reason much of the modern produce we buy tastes so bland is because our agricultural system has bred modern varieties for ship-ability and the ability of produce to be picked by machine, rather than flavor.&lt;/p&gt;
&lt;p&gt;While this has expanded the access to produce (both geographically but also in terms of cost due to the ability to use automation), it’s meant that consumers often have to choose between shelf life and good taste.&lt;/p&gt;
&lt;p&gt;But, advances in plant genetics could change that. If we could understand the genes that are responsible for durability, that could inform how we breed or gene-edit varieties that can combine desirable taste attributes with durability.&lt;/p&gt;
&lt;p&gt;Researchers in China &lt;a href=&quot;https://www.nature.com/articles/s41477-023-01522-w&quot;&gt;published a paper in &lt;em&gt;Nature Plants&lt;/em&gt;&lt;/a&gt; identifying the gene (&lt;em&gt;fs8.1&lt;/em&gt;) responsible for making roma tomatoes elongated and crush-resistant enough to be machine-harvestable and even demonstrated that it would work in alternative varieties &lt;em&gt;without&lt;/em&gt; changing their taste.&lt;/p&gt;
&lt;p&gt;Both the paper and the Science article on it are worth checking out.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Science&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.science.org/content/article/how-make-fresh-tomatoes-less-squishable&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“To confirm the strength of the fruit, the researchers squashed nearly 150 tomatoes in a laboratory press to measure their breaking points, a bit like a crash test for vehicles. “The juice spurts out like a bomb exploding,” Li says. Knocking out the gene did not alter the flavor of either TB0249 or Ailsa Craig.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/20230918_on_roma_tomato_harvest_lede-1024x677.jpg&quot; alt=&quot;How to make fresh tomatoes less squishable&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.science.org/content/article/how-make-fresh-tomatoes-less-squishable&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; How to make fresh tomatoes less squishable &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Erik Stokstad&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Science&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.science.org/content/article/how-make-fresh-tomatoes-less-squishable&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>agriculture</category><category>genetics</category><category>Science</category></item><item><title>UAW Strike vs. the Detroit Three EV Transition</title><link>https://benjamintseng.com/2023/09/uaw-strike-vs-the-detroit-three-ev-transition/</link><guid isPermaLink="true">https://benjamintseng.com/2023/09/uaw-strike-vs-the-detroit-three-ev-transition/</guid><description>Reading Note: UAW Strike vs. the Detroit Three EV Transition</description><pubDate>Mon, 18 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.bloomberg.com/news/features/2023-09-17/uaw-strike-2023-inside-the-union-walkout-against-gm-ford-stellantis&quot;&gt;Bloomberg had a great article&lt;/a&gt; over the weekend about the events leading up to the (partial) UAW strike against the Detroit Three (GM, Ford, and Stellantis [fka Chrysler]).&lt;/p&gt;
&lt;p&gt;I’m not surprised (nor should anyone) by the strike. New UAW management, years-long grievances, and tight labor market favoring workers means a strike was almost certainly always going to be the first move by the UAW.&lt;/p&gt;
&lt;p&gt;The bigger question is what this will do to the Detroit Three’s electrification push. The UAW’s challenge here (as it has been since the 80s) is that the Detroit Three are in a weak and uncertain position as it relates to foreign auto makers and new EV giants like Tesla. While the Inflation Reduction Act may give US auto makers the US EV market, going into a technology transition with a large labor cost &amp;amp; agility disadvantage is a surefire way to (continue to) cede the much larger global market which, in the end, hurts all of the US auto industry (not to mention the Biden administration’s hopes that this creates new jobs and centers green manufacturing in the US).&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Bloomberg News&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-09-17/uaw-strike-2023-inside-the-union-walkout-against-gm-ford-stellantis&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“[UAW President] Fain will need to deliver agreements he can leverage into a more compelling case for workers at carmakers and battery companies the union hasn’t organized. Otherwise, Detroit risks starting the EV age in a position similar to the one they were in when the oil crisis hit half a century ago: stuck with labor costs that put Motor City companies at an untenable disadvantage.
“Breathing down the neck of the Big Three are the so-called foreign transplants and Tesla, which are eating up a bigger part of the market and remain unorganized,” said William Gould, a chair of the National Labor Relations Board under President Bill Clinton and professor emeritus at Stanford Law School. “That’s the Achilles’ heel of organized labor.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/09/image.jpeg&quot; alt=&quot;How Auto Executives Misread the UAW Ahead of Historic Strike&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-09-17/uaw-strike-2023-inside-the-union-walkout-against-gm-ford-stellantis&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; How Auto Executives Misread the UAW Ahead of Historic Strike &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;David Welch, Keith Naughton, Gabrielle Coppola, and Josh Eidelson&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Bloomberg News&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.bloomberg.com/news/features/2023-09-17/uaw-strike-2023-inside-the-union-walkout-against-gm-ford-stellantis&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>automotive</category><category>electric vehicles</category><category>Inflation Reduction Act</category><category>United Auto Workers</category></item><item><title>Hopelessness in China’s Youth</title><link>https://benjamintseng.com/2023/08/hopelessness-in-chinas-youth/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/hopelessness-in-chinas-youth/</guid><description>Reading Note: Hopelessness in China’s Youth</description><pubDate>Tue, 22 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.economist.com/briefing/2023/08/17/chinas-defeated-youth&quot;&gt;This article in the Economist&lt;/a&gt; paints a dismal picture of the state of life for the youth in China: &lt;a href=&quot;https://www.nytimes.com/2023/08/15/business/china-youth-unemployment.html&quot;&gt;youth unemployment so high the government has stopped reporting on it&lt;/a&gt; (as if that was going to change anything…), housing and childcare costs so high that young people have given up on having traditional families, a government and state-run media that actively scolds them for being soft and pampered, and the best and brightest fleeing to Singapore…&lt;/p&gt;
&lt;p&gt;How’s that “Chinese dream 中國夢” going?&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Economist&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.economist.com/briefing/2023/08/17/chinas-defeated-youth&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Some 360m Chinese (a quarter of the population) are between the ages of 16 and 35. Their gloom has profound implications for the future of China, its economy and the party’s ambitions. But rather than soothe the young, the government tends to scold them. Last year Mr Xi said they must “abandon arrogance and pampering”. Editorials in state media encourage them to “embrace struggle” and sacrifice their youth to the cause of national rejuvenation, as defined by the party. Repression is increasing. “Eat bitterness,” Mr Xi tells youngsters. His admonition, though a worn Chinese cliché, is sure to strike a nerve”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-22-091433-1024x573.png&quot; alt=&quot;China\u2019s Defeated Youth&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.economist.com/briefing/2023/08/17/chinas-defeated-youth&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; China\u2019s Defeated Youth &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;The Economist&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.economist.com/briefing/2023/08/17/chinas-defeated-youth&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>China</category></item><item><title>Smart Home Manifesto</title><link>https://benjamintseng.com/2023/08/smart-home-manifesto/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/smart-home-manifesto/</guid><description>Reading Note: Smart Home Manifesto</description><pubDate>Sat, 19 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is an older piece (written in 2016) but remarkable in how well it resonates even 7 years later.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;Given that I have a home server&lt;/a&gt; and &lt;a href=&quot;http://benjamintseng.com/2023/08/why-thread-is-matters-biggest-problem-right-now/&quot;&gt;opinions on Matter/Thread&lt;/a&gt;, it shouldn’t be a surprise that I have many smart home gadgets in my house. And while I’ve made many purchasing and configuration choices in the spirit of this manifesto, it still boggles my mind that I still fall short of the seamless vision the writer (Paulus Schoutsen, founder of &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;) lays out.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; **[Perfect Home Automation](https://www.home-assistant.io/blog/2016/01/19/perfect-home-automation/)**&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.pexels.com/photo/portable-speaker-on-brown-wooden-table-4893862/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Home automation should blend with your current workflow, not replace it. For most devices, there is no faster way to control most devices than how you are already doing it today. Most of the time, the best app is no app.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/pexels-photo-4893862.jpeg&quot; alt=&quot;Pexels.com&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.pexels.com/photo/portable-speaker-on-brown-wooden-table-4893862/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Pexels.com &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt;   &lt;span&gt;**[Perfect Home Automation](https://www.home-assistant.io/blog/2016/01/19/perfect-home-automation/)**&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.pexels.com/photo/portable-speaker-on-brown-wooden-table-4893862/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Home Assistant</category><category>smart home</category></item><item><title>Psychedelics in the Clinic</title><link>https://benjamintseng.com/2023/08/psychedelics-in-the-clinic/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/psychedelics-in-the-clinic/</guid><description>Reading Note: Psychedelics in the Clinic</description><pubDate>Fri, 18 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I first heard about the use of psychedelics (like ketamine and psilocybin) for treatment of mental illness, I was skeptical. It just seemed too ripe for abuse.&lt;/p&gt;
&lt;p&gt;But, there is a growing body of credible academic work suggesting that psychedelics &lt;em&gt;when dosed properly and used in conjunction with therapy / other drugs&lt;/em&gt; can be a gamechanger — especially for treatment-resistant depression and suicidality — and that is incredibly exciting.&lt;/p&gt;
&lt;p&gt;At the same time, as a former telemedicine startup operator, this makes me more alarmed by the numerous companies working to commercialize these. In the bid for venture-style growth, it’s all too easy to lose track of the &lt;em&gt;“when dosed properly and used in conjunction with therapy / other drugs”&lt;/em&gt; part.&lt;/p&gt;
&lt;p&gt;In any event, &lt;a href=&quot;https://www.michiganmedicine.org/medicine-michigan/serious-about-psychedelics&quot;&gt;this article from Medicine at Michigan&lt;/a&gt; is a good overview of the recent research highlights in the field and why so many clinicians and scientists are excited.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; Medicine at Michigan&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.michiganmedicine.org/medicine-michigan/serious-about-psychedelics&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;““Ketamine has properties that make you stop thinking of suicide,” Parikh says. “We now have this potential of treating someone who’s been suffering a while in acute suicidal risk, and within 1.5 hours of being in the emergency room, they are no longer suicidal.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/web-psychedelic-spread-2-1024x576.png&quot; alt=&quot;Serious about psychedelics&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.michiganmedicine.org/medicine-michigan/serious-about-psychedelics&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Serious about psychedelics &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Katie Whitney&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;Medicine at Michigan&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.michiganmedicine.org/medicine-michigan/serious-about-psychedelics&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>drugs</category><category>ketamine</category><category>psychedelics</category><category>telemedicine</category></item><item><title>Hawaiian Electric having a PG&amp;E Moment</title><link>https://benjamintseng.com/2023/08/hawaiian-electric-having-a-pge-moment/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/hawaiian-electric-having-a-pge-moment/</guid><description>Reading Note: Hawaiian Electric having a PG&amp;E Moment</description><pubDate>Thu, 17 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The fires in Maui have had a devastating human toll (&lt;a href=&quot;https://www.cnn.com/2023/08/17/us/hawaii-maui-wildfires-death-toll-thursday/index.html&quot;&gt;111 dead, 1000 missing as of this writing&lt;/a&gt;). It is not surprising that it’s raising some questions about the role of Hawaii’s utility (Hawaiian Electric/HECO) played in the disaster.&lt;/p&gt;
&lt;p&gt;While it will take time to sort out the investigation and &lt;a href=&quot;https://www.cnn.com/2023/08/14/investing/hawaiian-electric-maui-fires-lawsuit/index.html&quot;&gt;the class action lawsuit&lt;/a&gt;, it’s clear that investors and Hawaiian Electric management are scrambling, with &lt;a href=&quot;https://www.wsj.com/articles/hawaiian-electric-in-talks-with-financial-restructuring-professionals-maui-wildfires-e47fd1e&quot;&gt;the WSJ reporting that Hawaiian Electric is now talking to restructuring advisors&lt;/a&gt; to explore their next steps, in a crisis that very much parallels &lt;a href=&quot;https://en.wikipedia.org/wiki/Pacific_Gas_and_Electric_Company#Butte_Fire&quot;&gt;the series of wildfires that were ultimately blamed on Northern California utility PG&amp;amp;E&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Pacific_Gas_and_Electric_Company#2019_bankruptcy&quot;&gt;resulted in bankruptcy proceedings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Utilities now face three simultaneous problems (arguably of their own making):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;climate change escalating the risks of catastrophic wildfires and storms&lt;/li&gt;
&lt;li&gt;utilities across the country having aging energy infrastructure&lt;/li&gt;
&lt;li&gt;homeownership patterns, disaster insurance coverage &amp;amp; premiums, and utility risk management plans built for a pre-climate-change risk environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The smart ones will be proactively overhauling their processes and infrastructure to cope with this. The less smart ones will potentially be dragged kicking and screaming into this world in much the same way that PG&amp;amp;E and Hawaiian Electric currently are.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; WSJ&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.wsj.com/articles/hawaiian-electric-in-talks-with-financial-restructuring-professionals-maui-wildfires-e47fd1e&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Hawaiian Electric is speaking with firms that specialize in restructuring advisory work, exploring options to address the electric utility’s financial and legal challenges arising from the Maui wildfires, said people familiar with the matter. 
Hawaiian Electric is facing a selloff in its stock and bonds, and has been hit with lawsuits alleging that its actions both before and during the wildfires exacerbated the devastation Maui residents have suffered.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/image.jpeg&quot; alt=&quot;Hawaiian Electric is in Talks with Restructuring Firms&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.wsj.com/articles/hawaiian-electric-in-talks-with-financial-restructuring-professionals-maui-wildfires-e47fd1e&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Hawaiian Electric is in Talks with Restructuring Firms &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Alexander Gladstone&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;WSJ&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.wsj.com/articles/hawaiian-electric-in-talks-with-financial-restructuring-professionals-maui-wildfires-e47fd1e&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>climate change</category><category>energy</category><category>grid infrastructure</category><category>Hawaiian Electric</category><category>PG&amp;amp;E</category><category>wildfire</category></item><item><title>Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault</title><link>https://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/</guid><description>Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault</description><pubDate>Thu, 10 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I recently shared &lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;how I set up a (OpenMediaVault) home server on a cheap mini-PC&lt;/a&gt;. After posting it, I received a number of suggestions that inspired me to make a few additional tweaks to improve the security and usability of my server.&lt;/p&gt;
&lt;p&gt;Read more if you’re interested in setting up (on an OpenMediaVault v6 server):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pi-hole.net/&quot;&gt;Pihole&lt;/a&gt;, a “DNS filter” that blocks ads / trackers&lt;/li&gt;
&lt;li&gt;using Pihole as a local DNS server to have custom web addresses for software services running on your network and &lt;a href=&quot;https://www.nginx.com/&quot;&gt;Nginx&lt;/a&gt; to handle port forwarding&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twingate.com/&quot;&gt;Twingate&lt;/a&gt; (a better alternative to opening up a port and setting up Dynamic DNS to grant secure access to your network)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;pihole&quot;&gt;Pihole&lt;/h2&gt;
&lt;p&gt;Pihole is a lightweight &lt;em&gt;local&lt;/em&gt; &lt;a href=&quot;https://www.cloudflare.com/learning/dns/what-is-a-dns-server/&quot;&gt;DNS server&lt;/a&gt; (it gets its name from the &lt;a href=&quot;https://www.raspberrypi.com/products/raspberry-pi-4-desktop-kit/&quot;&gt;Raspberry &lt;em&gt;&lt;strong&gt;Pi&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;, a &amp;lt;$100 device popular with hobbyists, that it can run fully on).&lt;/p&gt;
&lt;p&gt;A DNS (or &lt;a href=&quot;https://en.wikipedia.org/wiki/Name_server&quot;&gt;Domain Name Server&lt;/a&gt;) converts human readable addresses (like &lt;code&gt;www.google.com&lt;/code&gt;) into IP addresses (like &lt;code&gt;142.250.191.46&lt;/code&gt;). As a result, every piece of internet-connected technology is routinely making DNS requests when using the internet. Internet service providers typically offer their own DNS servers for their customers. But, some technology vendors (like &lt;a href=&quot;https://developers.google.com/speed/public-dns&quot;&gt;Google&lt;/a&gt; and &lt;a href=&quot;https://www.cloudflare.com/learning/dns/what-is-1.1.1.1/&quot;&gt;CloudFlare&lt;/a&gt;) also offer their own DNS services with optimizations on speed, security, and privacy.&lt;/p&gt;
&lt;p&gt;A home-grown DNS server like Pihole can layer additional functionality on top:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DNS “filter” for ad / tracker blocking&lt;/strong&gt;: Pihole can be configured to return dummy IP addresses for specific domains. This can be used to block online tracking or ads (by blocking the domains commonly associated with those activities). While not foolproof, one advantage this approach has over traditional ad blocking software is that, because this blocking happens at the network level, the blocking extends to &lt;em&gt;all&lt;/em&gt; devices on the network (such as internet-connected gadgets, smart TVs, and smartphones) without needing to install any extra software.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS caching for performance improvements&lt;/strong&gt;: In addition to the performance gains from blocking ads, Pihole also boosts performance by caching commonly requested domains, reducing the need to “go out to the internet” to find a particular IP address. While this won’t speed up a video stream or download, it will make content from frequently visited sites on your network load faster by skipping that internet lookup step.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To install Pihole using Docker on OpenMediaVault:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you haven’t already, make sure you have OMV Extras and Docker Compose installed (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;) and have a static local IP address assigned to the server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to your OpenMediaVault web admin panel, go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;], and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[PIHOLE]
&lt;/span&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, adapt the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   pihole:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; pihole&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; pihole/pihole:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     ports:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;53:53/tcp&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;53:53/udp&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;8000:80/tcp&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       TZ:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;America/Los_Angeles&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       WEBPASSWORD:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;Password for the web admin panel&amp;amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       FTLCONF_LOCAL_IPV4:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;your server IP address&amp;amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/pihole:/etc/pihole&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;&amp;amp;lt;absolute path to shared config folder&amp;amp;gt;/dnsmasq.d:/etc/dnsmasq.d&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;Password for the web admin panel&amp;gt;&lt;/kbd&gt; with the password you’ll want to use to be access the Pihole web configuration interface, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;your server IP address&amp;gt;&lt;/kbd&gt; with the static local IP address for your server, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; with the &lt;em&gt;absolute&lt;/em&gt; path to the &lt;strong&gt;config&lt;/strong&gt; folder where you want Docker-installed applications to store their configuration information (accessible by going to &lt;code&gt;[Storage &amp;gt; Shared Folders]&lt;/code&gt; in the administrative panel).&lt;/p&gt;
&lt;p&gt;I live in the Bay Area so I set timezone &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TZ&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;America/Los_Angeles&lt;/kbd&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;You can find yours here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ports&lt;/kbd&gt;, I’ve kept the port &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;53&lt;/kbd&gt; reservation (as this is the standard port for DNS requests) but I’ve chosen to map the Pihole administrative console to port &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;8000&lt;/kbd&gt; (instead of the default of port &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;80&lt;/kbd&gt; to avoid a conflict with the OpenMediaVault admin panel default). &lt;em&gt;Note: This will prevent you from using Pihole’s default &lt;code&gt;pi.hole&lt;/code&gt; domain as a way to get to the Pihole administrative console out-of-the-box. Because standard web traffic goes to port 80 (and this configuration has Pihole listening at port 8080), &lt;code&gt;pi.hole&lt;/code&gt; would likely just direct you to the OpenMediaVault panel. While you could let &lt;code&gt;pi.hole&lt;/code&gt; take over port 80, you would need to move OpenMediaVault’s admin panel to a different port (which itself has complexity). I ultimately opted with keeping OpenMediaVault at port 80 knowing that I could configure Pihole and Nginx proxy (see below) to redirect &lt;code&gt;pi.hole&lt;/code&gt; to the right port.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You’ll notice this configures two &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;volumes&lt;/kbd&gt;, one for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;dnsmasq.d&lt;/kbd&gt;, which is the DNS service, and one for &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[PIHOLE]
&lt;/span&gt; which provides an easy way to configure &lt;code&gt;dnsmasq.d&lt;/code&gt; and download blocklists.&lt;/p&gt;
&lt;p&gt;Note: the above instructions assume your home network, like most, is IPv4 only. If you have an IPv6 network, you will need to add an &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;IPv6: True&lt;/kbd&gt; line under &lt;code&gt;environment:&lt;/code&gt; and replace the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FTLCONF_LOCAL_IPV4:&amp;#39;&amp;lt;server IPv4 address&amp;gt;&amp;#39;&lt;/kbd&gt; with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;FTLCONF_LOCAL_IPV6:&amp;#39;&amp;lt;server IPv6 address&amp;gt;&amp;#39;&lt;/kbd&gt;. For more information, see the &lt;a href=&quot;https://github.com/pi-hole/docker-pi-hole&quot;&gt;official Pihole Docker instructions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the new &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[PIHOLE]
&lt;/span&gt; entry you created has a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Down&lt;/kbd&gt; status, showing the container has yet to be initiated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Disabling &lt;code&gt;systemd-resolved&lt;/code&gt;&lt;/strong&gt;: Most modern Linux operating systems include a built-in DNS resolver that listens on port 53 called &lt;code&gt;systemd-resolved&lt;/code&gt;. Prior to initiating the Pihole container, you’ll need to disable this to prevent that port conflict. Use WeTTy (&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;refer to the section &lt;code&gt;Docker and OMV-Extras&lt;/code&gt; in my previous post&lt;/a&gt;) or SSH to login as the &lt;code&gt;root&lt;/code&gt; user to your OpenMediaVault command line. Enter the following command:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/systemd/resolved.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Look for the line that says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;#DNSStubListener=yes&lt;/kbd&gt; and replace it with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;DNSStubListener=no&lt;/kbd&gt;, making sure to remove the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;#&lt;/kbd&gt; at the start of the line. (Hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the file). This configuration will tell &lt;code&gt;systemd-resolved&lt;/code&gt; to stop listening to port 53.&lt;/p&gt;
&lt;p&gt;To complete the configuration change, you’ll need to edit the symlink &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/etc/resolv.conf&lt;/kbd&gt; to point to the file you just edited by running:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sh&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -c&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;rm /etc/resolv.conf &amp;amp;&amp;amp; ln -s /etc/systemd/resolved.conf /etc/resolv.conf&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now all that remains is to restart &lt;code&gt;systemd-resolved&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemd-resolved&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How to start / update / stop / remove your Pihole container&lt;/strong&gt;: You can manage all of your Docker Compose files by going to &lt;code&gt;[Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;] in the OpenMediaVault admin panel. Click on the &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[PIHOLE]
&lt;/span&gt; entry (which should turn it yellow) and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and, if you properly disabled &lt;code&gt;systemd-resolved&lt;/code&gt; in the last step, initiate Pihole.&lt;/p&gt;
&lt;p&gt;And that’s it! To prove it worked, go to &lt;code&gt;your-server-ip:8000&lt;/code&gt; in a browser and you should see the login for the Pihole admin webpage (see below).&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-08-173835.png&quot; alt/&gt;&lt;br/&gt;
From time to time, you’ll want to update the container. OMV makes this very easy. Every time you press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-121737.png&quot; alt/&gt; (pull) button in the [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;] interface, Docker will pull &lt;a href=&quot;https://hub.docker.com/r/pihole/pihole&quot;&gt;the latest version (maintained by the Pihole team)&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now that you have Pihole running, it is time to enable and configure it for your network.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test Pihole from a computer:&lt;/strong&gt; Before you change your network settings, it’s a good idea to make sure everything works.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On your computer, &lt;em&gt;manually&lt;/em&gt; set your DNS service to your Pihole by putting in your server IP address as the address for your computer’s primary DNS server (&lt;a href=&quot;https://support.apple.com/lt-lt/guide/mac-help/mh14127/mac&quot;&gt;Mac OS instructions&lt;/a&gt;; &lt;a href=&quot;https://www.zdnet.com/article/how-to-change-the-dns-settings-on-your-windows-pc/&quot;&gt;Windows instructions&lt;/a&gt;; &lt;a href=&quot;https://www.linuxfordevices.com/tutorials/linux/change-dns-on-linux&quot;&gt;Linux instructions&lt;/a&gt;). Be sure to leave any alternate / secondary addresses blank (many computers will issue DNS requests to every server they have on their list and if an alternative exists you may not end up blocking anything).&lt;/li&gt;
&lt;li&gt;(Temporarily) disable any ad blocking service you may have on your computer / browser you want to test with (so that this is a good test of Pihole as opposed to your ad blocking software). Then try to go to &lt;code&gt;https://consumerproductsusa.com/&lt;/code&gt; — this is a URL that is blocked by default by Pihole. If you see a very spammy website promising rewards, either your Pihole does not work or you did not configure your DNS correctly.&lt;/li&gt;
&lt;li&gt;Finally login to the Pihole configuration panel (&lt;code&gt;your-server-ip:8000&lt;/code&gt;) using the password you set up during installation. From the dashboard click on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Queries Blocked&lt;/kbd&gt; box at the top (your colors may vary but it’s the red box on my panel, see below).&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-09-093013.png&quot; alt/&gt;&lt;br/&gt;
On the next screen, you should see the domain &lt;code&gt;consumerproductsusa.com&lt;/code&gt; next to the IP address of your computer, confirming that the address was blocked.&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-09-092940.png&quot; alt/&gt;&lt;br/&gt;
You can now turn your ad blocking software back on!&lt;/li&gt;
&lt;li&gt;You should now set the DNS service on your computer back to “automatic” or “DHCP” so that it will inherit its DNS settings from the network/router (and especially if this is a laptop that you may use on another network).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure DNS on router&lt;/strong&gt;: Once you’ve confirmed that the Pihole service works, you should configure the default DNS settings on your router to make Pihole the DNS service for your entire network. The instructions for this will vary by router manufacturer. If you use Google Wifi as I do, &lt;a href=&quot;https://support.google.com/googlenest/answer/6274141?hl=en&quot;&gt;here are the instructions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once this is completed, every device which inherits DNS settings from the router will now be using Pihole for their DNS requests.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: one downside of this approach is that the Pihole becomes a single point of failure for the entire network. If the Pihole crashes or fails, for any reason, none of your network’s DNS requests will go through until the router’s settings are changed or the Pihole becomes functional again. Pihole generally has good reliability so this is unlikely to be an issue most of the time, but I am currently using Google’s DNS as a fallback on my Google Wifi (for the times when something goes awry with my server) and I would also encourage you to know how to change the DNS settings for your router in case things go bad so that your access to the internet is not taken out unnecessarily.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure Pihole:&lt;/strong&gt; To get the most out of Pihole’s ad blocking functionality, I would suggest three things&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Select Good Upstream DNS Servers&lt;/strong&gt;: From the Pihole administrative panel, click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Settings&lt;/kbd&gt;. Then select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;DNS&lt;/kbd&gt; tab. Here, Pihole allows you to configure which external DNS services the DNS requests on your network should go to if they aren’t going to be blocked and haven’t yet been cached. I would recommend selecting the checkboxes next to Google and Cloudflare given their reputations for providing fast, secure, and high quality DNS services (and selecting multiple will provide redundancy).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update Gravity periodically:&lt;/strong&gt; Gravity is the system by which Pihole updates its list of domains to block. From the Pihole administrative panel, click on &lt;code&gt;[Tools &amp;gt; Update Gravity]&lt;/code&gt; and click the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Update&lt;/kbd&gt; button. If there are any updates to the blocklists you are using, these will be downloaded and “turned on”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure Domains to block/allow&lt;/strong&gt;: Pihole allows administrators to granularly customize the domains to block (blacklist) or allow (whitelist). From the Pihole administrative panel, click on &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domains&lt;/kbd&gt;. Here, an admin can add a domain (or a &lt;a href=&quot;https://en.wikipedia.org/wiki/Regular_expression&quot;&gt;regular expression&lt;/a&gt; for a family of domains) to the blacklist (if it’s not currently blocked) or the whitelist (if it currently is) to change what happens when a user on the network accesses the DNS.&lt;/p&gt;
&lt;p&gt;I added whitelist exclusions for &lt;code&gt;link.axios.com&lt;/code&gt; to let me click through links from the Axios email newsletters I receive and &lt;code&gt;www.googleadservices.com&lt;/code&gt; to let my wife click through Google-served ads. Pihole also makes it easy to manually take a domain that a device on your network has requested to block/allow. Tap on &lt;code&gt;Total Queries&lt;/code&gt; from the Pihole dashboard, click on the IP address of the device making the request, and you’ll see every DNS request (including those which were blocked) with a link beside them to add to the domain whitelist or blacklist.&lt;/p&gt;
&lt;p&gt;Pihole will also allow admins to configure different rules for different sets of devices. This can be done by calling out clients (which can be done by clicking on &lt;code&gt;Clients&lt;/code&gt; and picking their IP address / MAC address / hostnames), assigning them to groups (which can be defined by clicking on &lt;code&gt;Groups&lt;/code&gt;), and then configuring domain rules to go with those groups (in &lt;code&gt;Domains&lt;/code&gt;). Unfortunately because Google Wifi simply forwards DNS requests rather than distributes them, I can only do this for devices that are configured to directly point at the Pihole, but this could be an interesting way to impose parental internet controls.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you have a Pihole network-level ad blocker and DNS cache!&lt;/p&gt;
&lt;h2 id=&quot;local-dns-and-nginx-proxy&quot;&gt;Local DNS and Nginx proxy&lt;/h2&gt;
&lt;p&gt;As a local DNS server, Pihole can do more than just block ads. It also lets you create human readable addresses for services running on your network. In my case, I created one for the OpenMediaVault admin panel (&lt;code&gt;omv.home&lt;/code&gt;), one for WeTTy (&lt;code&gt;wetty.home&lt;/code&gt;), and one for Ubooquity (&lt;code&gt;ubooquity.home&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;If your setup is like mine (all services use the same IP address but different ports), you will need to set up a &lt;a href=&quot;https://en.wikipedia.org/wiki/Proxy_server&quot;&gt;proxy&lt;/a&gt; as DNS does not handle port forwarding. Luckily, OpenMediaVault has &lt;a href=&quot;https://en.wikipedia.org/wiki/Nginx&quot;&gt;Nginx&lt;/a&gt;, a popular web server with a performant proxy, built-in. While many online tutorials suggest installing &lt;a href=&quot;https://nginxproxymanager.com/&quot;&gt;Nginx Proxy Manager&lt;/a&gt;, that felt like overkill, so I decided to configure Nginx directly.&lt;/p&gt;
&lt;p&gt;To get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the A records for the domains you want in Pihole:&lt;/strong&gt; Login to your Pihole administrative console (&lt;code&gt;your-server-ip:8000&lt;/code&gt;) and click on &lt;code&gt;[Local DNS &amp;gt; DNS Records]&lt;/code&gt; from the sidebar. Under the section called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add a new domain/IP combination&lt;/kbd&gt;, fill out the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Domain:&lt;/kbd&gt; you want for a given service (like &lt;code&gt;omv.home&lt;/code&gt; or &lt;code&gt;wetty.home&lt;/code&gt;) and the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;IP Address:&lt;/kbd&gt; (if you’ve been following my guides, this will be &lt;code&gt;your-server-ip&lt;/code&gt;). Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button and it will show up below. Repeat for all the domains you want. If you have a setup similar to mine, you will see many domains pointed at the same IP address (because the different services are simply different ports on my server).&lt;/p&gt;
&lt;p&gt;To test if these work, enter any of the domains you just put in to a browser and it should take you to the login page for the OpenMediaVault admin panel (as currently they are just pointing at your server IP address).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note 1: while you can generally use whatever domains you want, it is suggested that you don’t use a TLD that could conflict with an actual website (i.e. &lt;code&gt;.com&lt;/code&gt;) or that are commonly used by networking systems (i.e. &lt;code&gt;.local&lt;/code&gt; or &lt;code&gt;.lan&lt;/code&gt;). This is why I used &lt;code&gt;.home&lt;/code&gt; for all of my domains (&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6762#appendix-G&quot;&gt;the IETF has a list they recommend&lt;/a&gt;, although it includes &lt;code&gt;.lan&lt;/code&gt; which I would advise against as some routers such as Google Wifi use this)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note 2: Pihole itself automatically tries to forward &lt;code&gt;pi.hole&lt;/code&gt; to its web admin panel, so you don’t need to configure that domain. The next step (configuring proxy port forwarding) will allow &lt;code&gt;pi.hole&lt;/code&gt; to work.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Edit the Nginx proxy configuration&lt;/strong&gt;: Pihole’s Local DNS server will send users looking for one of the domains you set up (i.e. &lt;code&gt;wetty.home&lt;/code&gt;) to the IP address you configured. Now you need your server to forward that request to the appropriate port to get to the right service.&lt;/p&gt;
&lt;p&gt;You can do this by taking advantage of the fact that Nginx, by default, will load any &lt;code&gt;.conf&lt;/code&gt; file in the &lt;code&gt;/etc/nginx/conf.d/&lt;/code&gt; directory as a proxy configuration. Pick any file name you want (I went with &lt;code&gt;dothome.conf&lt;/code&gt; because all of my service domains end with &lt;code&gt;.home&lt;/code&gt;) and after using WeTTy or SSH to login as root, run:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/nginx/conf.d/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first time you run this, it will open up a blank file. Nginx looks at the information in this file for how to redirect incoming requests. What we’ll want to do is tell Nginx that when a request comes in for a particular domain (i.e. &lt;code&gt;ubooquity.home&lt;/code&gt; or &lt;code&gt;pi.hole&lt;/code&gt;) that request should be sent to a particular IP address and port.&lt;/p&gt;
&lt;p&gt;Manually writing these configuration files can be a little daunting and, truth be told, the text file I share below is the result of a lot of trial and error, but in general there are 2 types of proxy commands that are relevant for making your domain setup work.&lt;/p&gt;
&lt;p&gt;One is a &lt;code&gt;proxy_pass&lt;/code&gt; where Nginx will basically take any traffic to a given domain and just pass it along (sometimes with additional configuration headers). I use this below for &lt;code&gt;wetty.home&lt;/code&gt;, &lt;code&gt;pi.hole&lt;/code&gt;, &lt;code&gt;ubooquityadmin.home&lt;/code&gt;, and &lt;code&gt;ubooquity.home&lt;/code&gt;. It worked without the need to pass any additional headers for WeTTy and Ubooquity, but for &lt;code&gt;pi.hole&lt;/code&gt;, I had to set several additional proxy headers (which I learned &lt;a href=&quot;https://www.reddit.com/r/pihole/comments/x6hl02/comment/j2699nu/&quot;&gt;from this post on Reddit&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The other is a &lt;strong&gt;301 redirect&lt;/strong&gt; where you tell the client to simply forward itself to another location. I use this for &lt;code&gt;ubooquityadmin.home&lt;/code&gt; because the actual URL you need to reach is not &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/&lt;/kbd&gt; but &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/admin/&lt;/kbd&gt; and the 301 makes it easy to setup an automatic forward. I then use the regex match &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;~ /(.*)$&lt;/kbd&gt; to make sure every other URL is &lt;code&gt;proxy_pass&lt;/code&gt;‘d to the appropriate domain and port.&lt;/p&gt;
&lt;p&gt;You’ll notice I did not include the domain I configured for my OpenMediaVault console (&lt;code&gt;omv.home&lt;/code&gt;). That is because &lt;code&gt;omv.home&lt;/code&gt; already goes to the right place without needing any proxy to port forward.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;        80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        server_name&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;   pi.hole&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        location&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_pass&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        http://&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your-server-ip&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:8000&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  Host&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;            $host;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  X-Real-IP&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;       $host;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  X-ForwardedFor&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  $proxy_add_x_forwarded_for;             &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_hide_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; X-Frame-Options&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  X-Frame-Options&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;SAMEORIGIN&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_read_timeout&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 90&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;       }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;}  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;        80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        server_name&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;   wetty.home&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        location&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_pass&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;       http://&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your-server-ip&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:2222&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  Host&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;            $host;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  X-Real-IP&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;       $host;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_set_header&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  X-ForwardedFor&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  $proxy_add_x_forwarded_for;             &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;}  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;        80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        server_name&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;   ubooquity.home&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        location&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_pass&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;       http://&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your-server-ip&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:2202&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;}  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        listen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;        80&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        server_name&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;   ubooquityadmin.home&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        location&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; =/&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 301&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://ubooquityadmin.home/admin&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;        location&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ~&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;)$ &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;                proxy_pass&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;        http://&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your-server-ip&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:2203/$1&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;        }  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you are using other domains, ports, or IP addresses, adjust accordingly. Be sure all your curly braces have their mates (&lt;code&gt;{}&lt;/code&gt;) and that each line ends with a semicolon (&lt;code&gt;;&lt;/code&gt;) or Nginx will crash. I use &lt;code&gt;Tab&lt;/code&gt;‘s between statements (i.e. between &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;listen&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;80&lt;/kbd&gt;) to format them more nicely but Nginx will accept any number or type of whitespace.&lt;/p&gt;
&lt;p&gt;To test if your new configuration worked, save your changes (hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; to save, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to overwrite the file if you are editing a pre-edited one). In the command line, run the following command to restart Nginx with your new configuration loaded.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Try to login to your OpenMediaVault administrative panel in a browser. If that works, it means Nginx is up and running and you at least didn’t make any obvious syntax errors!&lt;/p&gt;
&lt;p&gt;Next try to access one of the domains you just configured (for instance &lt;code&gt;pi.hole&lt;/code&gt;) to test if the proxy was configured correctly.&lt;/p&gt;
&lt;p&gt;If either of those steps failed, use WeTTy or SSH to log back in to the command line and use the command above to edit the file (you can delete everything if you want to start fresh) and rerun the restart command after you’ve made changes to see if that fixes it. It may take a little bit of doing if you have a tricky configuration but once you’re set, everyone on the network can now use your configured addresses to access the services on your network.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;twingate&quot;&gt;Twingate&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;In my previous post, I set up Dynamic DNS and a Wireguard VPN&lt;/a&gt; to grant secure access to the network from external devices (i.e. a work computer, my smartphone when I’m out, etc.). While it worked, the approach had two flaws:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The work required to set up each device for Wireguard is quite involved (you have to configure it on the VPN server and then pass credentials to the device via QR code or file)&lt;/li&gt;
&lt;li&gt;It requires me to open up a port on my router for external traffic (a security risk) and maintain a Dynamic DNS setup that is vulnerable to multiple points of failure and could make changing domain providers difficult.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A friend of mine, after reading my post, suggested I look into &lt;a href=&quot;https://www.twingate.com/&quot;&gt;Twingate&lt;/a&gt; instead. &lt;a href=&quot;https://www.twingate.com/docs/twingate-vs-vpn&quot;&gt;Twingate offers several advantages&lt;/a&gt;, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simple graphical configuration of which resources should be made available to which devices&lt;/li&gt;
&lt;li&gt;Easier to use client software with secure (but still easy to use) authentication&lt;/li&gt;
&lt;li&gt;No need to configure Dynamic DNS or open a port&lt;/li&gt;
&lt;li&gt;Support for local DNS rules (i.e. the domains I configured in Pihole)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was intrigued (it didn’t hurt that &lt;a href=&quot;https://www.twingate.com/pricing&quot;&gt;Twingate has a generous free Starter plan&lt;/a&gt; that should work for most home server setups). To set up Twingate to enable remote access:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a Twingate account and Network&lt;/strong&gt;: Go to &lt;a href=&quot;https://auth.twingate.com/signup&quot;&gt;their signup page&lt;/a&gt; and create an account. You will then be asked to set up a unique Network name. The resulting address, &lt;code&gt;&amp;amp;lt;yournetworkname&amp;amp;gt;.twingate.com&lt;/code&gt;, will be your Network configuration page from where you can configure remote access.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add a Remote Network:&lt;/strong&gt; Click the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button on the right-hand-side of the screen. Select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;On Premise&lt;/kbd&gt; for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Location&lt;/kbd&gt; and enter any name you choose (I went with &lt;code&gt;Home network&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add Resources&lt;/strong&gt;: Select the Remote Network you just created (if you haven’t already) and use the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add Resource&lt;/kbd&gt; button to add an individual domain name or IP address and then grant access to a group of users (by default, it will go to everyone).&lt;/p&gt;
&lt;p&gt;With my configuration, I added 5 domains (&lt;code&gt;pi.hole&lt;/code&gt; + the four &lt;code&gt;.home&lt;/code&gt; domains I configured through Pihole) and 1 IP address (for the server, to handle the &lt;code&gt;ubooquityadmin.home&lt;/code&gt; forwarding and in case there was ever a need to access an additional service on my server that I had not yet created a domain for).&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-10-000908-e1691652152751.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install Connector Docker Container&lt;/strong&gt;: To make the selected network resources available through Twingate requires installing a Twingate &lt;strong&gt;Connector&lt;/strong&gt; to something internet-connected on the network.&lt;/p&gt;
&lt;p&gt;Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Deploy Connector&lt;/kbd&gt; button on one of the connectors on the right-hand-side of the Remote Network page (mine is called &lt;code&gt;flying-mongrel&lt;/code&gt;). Select &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[DOCKER]
&lt;/span&gt; in Step 1 to get Docker instructions (see below). Then press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Generate Tokens&lt;/kbd&gt; button under Step 2 to create the tokens that you’ll need to link your Connector to your Twingate network and resources.&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-10-001530.png&quot; alt/&gt;&lt;br/&gt;
With the Access Token and Refresh Token saved, you are ready to configure Docker to install. Login to the OpenMediaVault administrative panel and go to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/code&gt; and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Twingate Connector&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, enter the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   twingate_connector:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; twingate_connector&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;twingate/connector:latest&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TWINGATE_API_ENDPOINT=/connector.stock&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TWINGATE_NETWORK=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; network&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TWINGATE_ACCESS_TOKEN=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; connector&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; access&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TWINGATE_REFRESH_TOKEN=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;your&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; connector&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; refresh&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TWINGATE_LOG_LEVEL=&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;your network name&amp;gt;&lt;/kbd&gt; with the name of the Twingate network you created, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;your connector access token&amp;gt;&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;your connector refresh token&amp;gt;&lt;/kbd&gt; with the access token and refresh token generated from the Twingate website. Do not add any single or double quotation marks around the network name or the tokens as they will result in a failed authentication with Twingate (as I was forced to learn through experience).&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files. Click on the entry for &lt;code&gt;Twingate Connector&lt;/code&gt; you just created and then press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button to initialize the container.&lt;/p&gt;
&lt;p&gt;Go back to your Twingate network page and select the Remote Network your Connector is associated with. If you were successful, within a few moments, the Connector’s status will reflect this (see below for the before and after).&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-10-003628.png&quot; alt/&gt;&lt;br/&gt;
If, after a few minutes there is still no change, you should check the container logs. This can be done by going to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Services]&lt;/code&gt; in the OpenMediaVault administrative panel. Select the &lt;code&gt;Twingate Connector&lt;/code&gt; container and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/Screenshot-2023-08-10-004101.png&quot; alt/&gt; (logs) button in the menubar. The &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TWINGATE_LOG_LEVEL=7&lt;/kbd&gt; setting in the Docker configuration file sets the Twingate Connector to report all activities in great detail and should give you (or a helpful participant on the &lt;a href=&quot;https://forum.twingate.com/&quot;&gt;Twingate forum&lt;/a&gt;) a hint as to what went wrong.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add Users and Install Clients&lt;/strong&gt;: Once the configuration is done and the Connector is set up, all that remains is to add user accounts and install the Twingate client software on the devices that should be able to access the network resources.&lt;/p&gt;
&lt;p&gt;Users can be added (or removed) by going to your Twingate network page and clicking on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Team&lt;/kbd&gt; link in the menu bar. You can &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add User&lt;/kbd&gt; (via email) or otherwise customize Group policies. Be mindful of the Twingate Starter plan limit to 5 users…&lt;/p&gt;
&lt;p&gt;As for the devices, the client software can be found at &amp;lt;&lt;a href=&quot;https://get.twingate.com/&quot;&gt;https://get.twingate.com/&lt;/a&gt;&amp;gt;. Once installed, to access the network, the user will simply need to authenticate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Remove my old VPN / Dynamic DNS setup&lt;/strong&gt;. This is not strictly necessary, but if you &lt;a href=&quot;http://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/&quot;&gt;followed my instructions from before&lt;/a&gt;, you can now undo those by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Closing the port you opened from your Router configuration&lt;/li&gt;
&lt;li&gt;Disabling Dynamic DNS setup from your domain provider&lt;/li&gt;
&lt;li&gt;“Down”-ing and deleting the container and configuration file for DDClient (you can do this by going to &lt;code&gt;[Services &amp;gt; Compose &amp;gt; Files]&lt;/code&gt; from OpenMediaVault admin panel)&lt;/li&gt;
&lt;li&gt;Deleting the configured Wireguard clients and tunnels (you can do this by going to &lt;code&gt;[Services &amp;gt; Wireguard]&lt;/code&gt; from the OpenMediaVault admin panel) and then disabling the Wireguard plugin (go to &lt;code&gt;[System &amp;gt; Plugins]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Removing the Wireguard client from my devices&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And there you have it! A secure means of accessing your network while retaining your local DNS settings and avoiding the pitfalls of Dynamic DNS and opening a port.&lt;/p&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;p&gt;There were a number of resources that were very helpful in configuring the above. I’m listing them below in case they are helpful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.pi-hole.net/main/basic-install/&quot;&gt;The Official Pi-hole Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/pihole/&quot;&gt;r/pihole&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/pi-hole/docker-pi-hole&quot;&gt;The official Docker Pi-hole setup guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nginx.org/en/docs/beginners_guide.html#proxy&quot;&gt;Nginx Beginner’s Guide to Setting up Proxy Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.twingate.com/docs/quick-start&quot;&gt;Twingate Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.twingate.com/docs/deploy-connector-with-docker-compose&quot;&gt;Twingate Guide to Deploying Connectors with Docker Compose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.twingate.com/docs/homelab-personal-use-case&quot;&gt;Twingate Homelab &amp;amp; Personal Use Cases page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.twingate.com/&quot;&gt;Twingate Forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>container</category><category>Docker</category><category>Linux</category><category>local DNS</category><category>Nginx</category><category>OpenMediaVault</category><category>Pihole</category><category>proxy</category><category>selfhost</category><category>software</category><category>Twingate</category></item><item><title>Why Thread is Matter’s biggest problem right now</title><link>https://benjamintseng.com/2023/08/why-thread-is-matters-biggest-problem-right-now/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/why-thread-is-matters-biggest-problem-right-now/</guid><description>Reading Note: Why Thread is Matter’s biggest problem right now</description><pubDate>Tue, 08 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2011/08/standards-have-no-standards/&quot;&gt;Stop me if you’ve heard this one before…&lt;/a&gt; Adoption of a technology is being impeded by too many standards. The solution? A new standard, of course, and before you know it, we now have another new standard to deal with.&lt;/p&gt;
&lt;p&gt;The smart home industry needs to figure out how to properly embrace Thread (and Matter). It (or something like it) will be necessary for broader smart home / Internet of Things adoption.&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Verge&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theverge.com/23820078/matters-biggest-problem-apple-google-thread-border-router-interoperability&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“The Thread protocol offers a robust mesh network designed to solve many of the smart home’s biggest problems. But only if everyone can agree on how to use it.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://duet-cdn.vox-cdn.com/thumbor/0x0:554x454/1080x885/filters:focal(277x227:278x228&quot; alt=&quot;Why Thread is Matter\u2019s biggest problem right now&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theverge.com/23820078/matters-biggest-problem-apple-google-thread-border-router-interoperability&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Why Thread is Matter\u2019s biggest problem right now &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Jennifer Pattison Tuohy&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Verge&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theverge.com/23820078/matters-biggest-problem-apple-google-thread-border-router-interoperability&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>Internet of Things</category><category>Matter</category><category>smart home</category><category>standards</category><category>tech</category><category>Thread</category></item><item><title>The next big thing on ESPN is… Microsoft Excel</title><link>https://benjamintseng.com/2023/08/the-next-big-thing-on-espn-is-microsoft-excel/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/the-next-big-thing-on-espn-is-microsoft-excel/</guid><description>Reading Note: The next big thing on ESPN is… Microsoft Excel</description><pubDate>Fri, 04 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a former “Excel monkey”, I am extremely tickled by the fact that what used to be analyst bravado about Excel skills (being able to create big spreadsheet models without touching the mouse was a big thing) is now a sport with viewers.&lt;/p&gt;
&lt;p&gt;But it’s a testament to how powerful and versatile spreadsheets are. And how many people know what it is.&lt;/p&gt;
&lt;p&gt;The joke in SaaS is that every SaaS product is basically competing with Excel. Well, apparently, Excel’s competing with e-sports and games now too!&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; The Verge&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://www.theverge.com/2023/8/3/23817220/excel-esports-espn-the-ocho-championship-start-time-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“This year, there’s a new wrinkle: it’s an elimination race. Every five minutes, the player with the fewest points will be eliminated until there’s only one Excel-er remaining. “We have already shot the game,” says Andrew Grigolyunovich, the founder and CEO of the Financial Modeling World Cup, the organization that oversees the event. It’s now being edited down for ESPN consumption, he says, and the whole match will come out on Friday as well. “It’s a really fun, exciting event.””&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://duet-cdn.vox-cdn.com/thumbor/0x0:2285x1121/828x552/filters:focal(1143x561:1144x562&quot; alt=&quot;Excel\u2019s esports revolution is coming back to ESPN this week&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://www.theverge.com/2023/8/3/23817220/excel-esports-espn-the-ocho-championship-start-time-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Excel\u2019s esports revolution is coming back to ESPN this week &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;David Pierce&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;The Verge&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://www.theverge.com/2023/8/3/23817220/excel-esports-espn-the-ocho-championship-start-time-watch&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>ESPN</category><category>Excel</category><category>Financial Modeling World Cup</category></item><item><title>Flow Batteries Resurgent?</title><link>https://benjamintseng.com/2023/08/flow-batteries-resurgent/</link><guid isPermaLink="true">https://benjamintseng.com/2023/08/flow-batteries-resurgent/</guid><description>Reading Note: Flow Batteries Resurgent?</description><pubDate>Wed, 02 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been pitched by numerous flow battery companies in my days as a deeptech/climatetech investor. The promise of the technology has always been:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long cycle life (the number of charge-discharge cycles you can do before the performance degrades)&lt;/li&gt;
&lt;li&gt;Easy to scale: you want 2x the storage? Just get 2x the electrolyte!&lt;/li&gt;
&lt;li&gt;Low fire risk: most flow batteries use water-based electrolytes which won’t ignite in the air (the way the lithium in lithium-ion batteries do)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despite compelling benefits, this category never achieved the level of success or scale as lithium-ion did. This was due in part to a variety of technological limitations (poor energy density, lower cycle efficiency, concerns around the amount of Vanadium-containing electrolyte “lying around” in a system, etc). But, the main cause was the breath-taking progress lithium-ion batteries have made in cost, energy density, and safety driven first by consumer electronics demand and then by electric vehicle demand.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cen.acs.org/materials/energy-storage/Flow-batteries-forgotten-energy-storage/101/i25&quot;&gt;This C&amp;amp;EN article&lt;/a&gt; covers the renewed optimism the flow battery world is experiencing as market interest in the technology revitalizes.&lt;/p&gt;
&lt;p&gt;My hot-take🔥: while technological improvements play a part, once again, what is driving the flow battery market is what’s happening in lithium-ion world. There simply is too much demand for energy storage and growing uncertainty about the ability of lithium-ion to handle it in the face of the conflict between the West and China (the leading supplier of lithium ion batteries) and supply chain concerns about critical minerals for lithium ion batteries (like nickel and cobalt). Grid storage players have to look elsewhere. (Electric vehicle companies would probably like to but do not have the option!)&lt;/p&gt;
&lt;p&gt;Considering the importance of grid energy storage in electrifying our world and onboarding new renewable generation, I think having and seeing more options is a good thing. So I, too, am optimistic here 👍🏻&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: this is the first in a (hopefully ongoing) series of posts called “What I’m Reading” where I’ll share &amp;amp; comment on an interesting article I’ve come across!&lt;/em&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;aside class=&quot;my-10 rounded-xl border border-[#CBD5E1] bg-[#FFFFFF] overflow-hidden shadow-xs not-prose&quot;&gt; &lt;!-- Top Dossier Bar --&gt; &lt;div class=&quot;bg-[#F8FAFC] border-b border-[#E2E8F0] px-4 sm:px-6 py-2.5 flex items-center justify-between text-xs font-mono-data&quot;&gt; &lt;div class=&quot;flex items-center gap-2&quot;&gt; &lt;span class=&quot;inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-semibold text-[11px] uppercase tracking-wider&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt; &lt;path d=&quot;M4 19.5A2.5 2.5 0 0 1 6.5 17H20&quot;&gt;&lt;/path&gt; &lt;path d=&quot;M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Reading Excerpt
&lt;/span&gt; &lt;span class=&quot;text-[#64748B] font-medium hidden sm:inline&quot;&gt;&amp;bull; C&amp;amp;EN&lt;/span&gt; &lt;/div&gt; &lt;a href=&quot;https://cen.acs.org/materials/energy-storage/Flow-batteries-forgotten-energy-storage/101/i25&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1 text-[#1E3A8A] hover:text-[#1E40AF] font-medium hover:underline transition-colors&quot;&gt; &lt;span&gt;Original Source&lt;/span&gt; &lt;svg class=&quot;w-3.5 h-3.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; viewBox=&quot;0 0 24 24&quot;&gt; &lt;path stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14&quot;&gt;&lt;/path&gt; &lt;/svg&gt; &lt;/a&gt; &lt;/div&gt; &lt;div class=&quot;p-5 sm:p-7 space-y-6&quot;&gt; &lt;!-- Excerpt Body with Serif Styling &amp; Editorial Pull --&gt; &lt;div class=&quot;relative bg-[#F8FAFC] border border-[#E2E8F0] border-l-4 border-l-[#1E3A8A] rounded-r-lg p-5 sm:p-6 shadow-2xs&quot;&gt; &lt;div class=&quot;absolute top-2 right-4 text-5xl font-serif text-[#CBD5E1] select-none pointer-events-none leading-none opacity-50&quot;&gt;
&amp;rdquo;
&lt;/div&gt; &lt;div class=&quot;relative z-10 text-[#1E293B] font-serif-heading text-base sm:text-lg leading-relaxed italic space-y-3&quot;&gt; &lt;p&gt;“Redox flow batteries have a reputation of being second best. Less energy intensive and slower to charge and discharge than their lithium-ion cousins, they fail to meet the performance requirements of snazzy, mainstream applications, such as cars and cell phones. There’s no such thing as a flow-battery Tesla.
But the companies at the International Flow Battery Forum in Prague in late June were adamant that flow batteries are now cheaper, more reliable, and safer than lithium ion in a growing number of real-world stationary energy applications. Flow-battery makers say their technology—and not lithium ion—should be the first choice for capturing excess renewable energy and returning it when the sun is not out and the wind is not blowing.”&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- Source Article Citation Dossier (Horizontal card matching Ben&apos;s original post layout) --&gt; &lt;div class=&quot;bg-[#F8FAFC] border border-[#E2E8F0] rounded-lg p-4 sm:p-5 flex flex-col sm:flex-row items-start sm:items-center gap-4 sm:gap-5 shadow-2xs&quot;&gt; &lt;div class=&quot;w-full sm:w-44 h-36 sm:h-28 rounded-md overflow-hidden bg-white border border-[#E2E8F0] shrink-0&quot;&gt; &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/08/10125-feature1-battery.jpg&quot; alt=&quot;Flow batteries, the forgotten energy storage device&quot; class=&quot;w-full h-full object-cover&quot; loading=&quot;lazy&quot;&gt; &lt;/div&gt; &lt;div class=&quot;flex-1 min-w-0&quot;&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-base sm:text-lg text-[#0F172A] leading-snug mb-1.5&quot;&gt; &lt;a href=&quot;https://cen.acs.org/materials/energy-storage/Flow-batteries-forgotten-energy-storage/101/i25&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;text-[#1E3A8A] hover:underline&quot;&gt; Flow batteries, the forgotten energy storage device &lt;/a&gt; &lt;/h4&gt; &lt;p class=&quot;text-xs font-mono-data text-[#64748B] mb-3&quot;&gt; &lt;span class=&quot;font-medium text-[#334155]&quot;&gt;Alex Scott&lt;/span&gt; &lt;span&gt; | &lt;/span&gt; &lt;span&gt;C&amp;amp;EN&lt;/span&gt; &lt;/p&gt; &lt;a href=&quot;https://cen.acs.org/materials/energy-storage/Flow-batteries-forgotten-energy-storage/101/i25&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;inline-flex items-center gap-1.5 text-xs font-mono-data bg-[#1E3A8A] text-white hover:bg-[#1E40AF] px-3.5 py-1.5 rounded-md font-semibold transition-colors shadow-2xs&quot;&gt; &lt;span&gt;Read Original Article&lt;/span&gt; &lt;span&gt;&amp;rarr;&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/aside&gt;</content:encoded><category>deeptech</category><category>energy</category><category>energy storage</category><category>flow battery</category><category>lithium ion</category><category>vanadium</category></item><item><title>Setting Up an OpenMediaVault Home Server with Docker, Plex, Ubooquity, and WireGuard</title><link>https://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/</link><guid isPermaLink="true">https://benjamintseng.com/2023/07/setting-up-an-openmediavault-home-server-with-docker-plex-ubooquity-and-wireguard/</guid><description>Setting Up an OpenMediaVault Home Server with Docker, Plex, Ubooquity, and WireGuard</description><pubDate>Wed, 26 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;(Note: this is part of my &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;ongoing series on cheaply selfhosting&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I spent a few days last week setting up a cheap home server which now serves my family as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;a href=&quot;https://en.wikipedia.org/wiki/Media_server&quot;&gt;media server&lt;/a&gt; — stores and streams media to phones, tablets, computers, and internet-connected TVs (even when I’m out of the house!)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Network-attached_storage&quot;&gt;network-attached storage (NAS)&lt;/a&gt; — lets computers connected to my home network store and share files&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Virtual_private_network&quot;&gt;VPN&lt;/a&gt; — lets me connect to my storage and media server when I’m outside of my home&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until about a week ago, I had run a &lt;a href=&quot;https://www.plex.tv/&quot;&gt;Plex&lt;/a&gt; media server on my aging (8 years old!) &lt;a href=&quot;https://www.nvidia.com/en-us/shield/shield-tv-pro/&quot;&gt;NVIDIA SHIELD TV&lt;/a&gt;. While I loved the device, it was starting to show it’s age – it would sometimes overheat and not boot for several days. My home technology setup had also shifted. I bought the SHIELD all those years ago to put &lt;a href=&quot;https://en.wikipedia.org/wiki/Android_TV&quot;&gt;Android TV&lt;/a&gt; functionality onto my “dumb” TV.&lt;/p&gt;
&lt;p&gt;But, about a year ago, I upgraded to a newer Sony TV which had it built-in. Now, the SHIELD felt “extra” and the media server felt increasingly constrained by what it could not do (e.g., slow network access speeds, can only run services that are Android apps, etc.)&lt;/p&gt;
&lt;p&gt;I considered buying a high-end consumer NAS from Synology or QNAP (which would have been much simpler!), but decided to build my own to both get better hardware for less money but also as a &lt;a href=&quot;https://www.reddit.com/r/homelab/&quot;&gt;fun project which would teach me more about servers&lt;/a&gt; and let me configure everything to my heart’s content.&lt;/p&gt;
&lt;p&gt;If you’re interested in doing something similar, let me walk you through my hardware choices and the steps I took to get to my current home server setup.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: on the recommendation of a friend, I’ve since reconfigured how external access works to not rely on a VPN with an open port and Dynamic DNS and instead use Twingate. For more information, &lt;em&gt;refer to my post on &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault&lt;/a&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;hardware&quot;&gt;Hardware&lt;/h2&gt;
&lt;p&gt;I purchased a &lt;a href=&quot;https://www.amazon.com/Beelink-Lake-N100-PCIe3-0-Desktop-Computer/dp/B0BZH87GPK/ref=sr_1_3&quot;&gt;Beelink EQ12 Mini&lt;/a&gt;, a “&lt;a href=&quot;https://en.wikipedia.org/wiki/Mini_PC&quot;&gt;mini PC&lt;/a&gt;” (fits in your hand, power-efficient, but still capable of handling a web browser, office applications, or a media server), during Amazon’s Prime Day sale &lt;strong&gt;for just under $200&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/image-1024x576.png&quot; alt=&quot;Beelink EQ12 Mini&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Beelink EQ12 Mini (Image Source: &lt;a href=&quot;https://www.youtube.com/watch?v=Qkz2p5msQKQ&quot;&gt;Chigz Tech Review&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;While I’m very happy with the choice I made, for those of you contemplating something similar, the exact machine isn’t important. Many of the mini PC brands ultimately produce very similar hardware, and by the time you read this, there will probably be a newer and better product. But, I chose this particular model because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;It was from one of the more reputable Mini PC brands&lt;/strong&gt; which gave me more confidence in its build quality (and my ability to return it if something went wrong). Other reputable vendors beyond Beelink include Geekom, Minisforum, Chuwi, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It had a USB-C port&lt;/strong&gt; which helps with futureproofing, and the option to convert this into something else useful if this server experiment doesn’t work out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It had an Intel CPU&lt;/strong&gt;. While AMD makes excellent CPUs, the benefit of going with Intel is support for &lt;a href=&quot;https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video&quot;&gt;Intel Quick Sync&lt;/a&gt;, which allows for hardware accelerated video transcode (converting video and audio streams to different formats and resolutions – so that other devices can play them – without overwhelming the system or needing a beefy graphics card). Many popular media servers support Intel Quick Sync-powered transcode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It was not a i3/5/7/9 chip&lt;/strong&gt;. Intel’s higher end chips have names that include “i3” or “i5” or “i7”. Those are generally overkill on performance, power consumption, and price for a simple file and media server. All I needed for my purposes was a lower-end &lt;a href=&quot;https://en.wikipedia.org/wiki/Celeron&quot;&gt;Celeron-type device&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It was the most advanced Intel architecture I could find for ≤$200&lt;/strong&gt;. While I didn’t need the best performance, there was no reason to avoid more advanced technology. Thankfully, the N100 chip in the EQ12 Mini uses &lt;a href=&quot;https://en.wikipedia.org/wiki/Alder_Lake&quot;&gt;Intel’s 12th Generation Core architecture (Alder Lake)&lt;/a&gt;. Many of the other mini-PCs at this price range had older (10th and 11th generation) CPUs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I went with the smallest RAM and onboard storage option&lt;/strong&gt;. I wasn’t planning on putting much on the included storage (because you want to isolate the operating system for the server away from the data) nor did I expect to tax the computer memory for my use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also considered purchasing a &lt;a href=&quot;https://www.raspberrypi.com/products/raspberry-pi-4-desktop-kit/&quot;&gt;Raspberry Pi&lt;/a&gt;, a &amp;lt;$100 low-power device popular with hobbyists, but the lack of transcode and the non-x86 architecture (Raspberry Pi’s use ARM CPUs and won’t be compatible with all server software) pushed me towards an Intel-based mini PC.&lt;/p&gt;
&lt;p&gt;In addition to the mini-PC, I also needed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;: a media server / NAS without storage is not very useful. I had a 4 TB USB hard drive (previously connected to my SHIELD TV) which I used here, and I also bought a 4 TB SATA SSD (for ~$150) to mount inside the mini-PC.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Note 1: if you decide to go with OpenMediaVault as I have, install the Linux distribution&lt;/em&gt; &lt;strong&gt;before&lt;/strong&gt; &lt;em&gt;you install the SATA drive. The installer (foolishly) tries to install itself to the first drive it finds, so don’t give it any bad options.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Note 2: most Mini PC manufacturers say their systems only support additional drives up to 2 TB. This appears to be mainly the manufacturers being overly conservative. My 4 TB SATA SSD works like a charm.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A USB stick&lt;/strong&gt;: Most Linux distributions (especially those that power open source NAS solutions) are installed from a bootable USB stick. I used one that was lying around that had 2 GB on it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ethernet cables and a “dumb” switch&lt;/strong&gt;: I use &lt;a href=&quot;https://store.google.com/product/google_wifi?hl=en-US&quot;&gt;Google Wifi&lt;/a&gt; in my home and I wanted to connect both my TV and my new media server to the router in my living room. To do that, I bought a simple Ethernet switch (you don’t need anything fancy because it’s just bridging several devices) and 3 Ethernet cables to tie it all together (one to connect the router to the switch, one to connect the TV to the switch, and one to connect the server to the switch). Depending on your home configuration, you may want something different.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Monitor &amp;amp; Keyboard&lt;/strong&gt;: if you decide to go with OpenMediaVault as I have, you’ll only need this during the installation phase as the server itself is controllable through a web interface. So, I used an old keyboard and monitor (that I’ve since given away).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;openmediavault&quot;&gt;OpenMediaVault&lt;/h2&gt;
&lt;p&gt;There are a number of open source home server / NAS solutions you can use. But I chose to go with &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt; because it’s:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;built on &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian&lt;/a&gt; (a well-supported, widely used flavor of Linux)&lt;/li&gt;
&lt;li&gt;still being actively developed (&lt;a href=&quot;https://www.openmediavault.org/?p=3535&quot;&gt;last update as of this writing was literally today&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;considered easy to use&lt;/li&gt;
&lt;li&gt;lightweight enough to be able to run on a Raspberry Pi&lt;/li&gt;
&lt;li&gt;backed by a solid &lt;a href=&quot;https://forum.openmediavault.org/&quot;&gt;community forum&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/OpenMediaVault/&quot;&gt;subreddit&lt;/a&gt; (something I knew I would need!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To install OpenMediaVault on the mini PC, you just need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;a href=&quot;https://www.openmediavault.org/download.html&quot;&gt;installation image ISO&lt;/a&gt; and burn it to a bootable USB stick (&lt;a href=&quot;https://rufus.ie/en/&quot;&gt;if you use Windows, you can use Rufus&lt;/a&gt; to do so)&lt;/li&gt;
&lt;li&gt;Plug the USB stick into the mini PC (and make sure to connect the monitor and keyboard) and then turn the machine on. If it goes to Windows (i.e. it doesn’t boot from your USB stick), you’ll need to restart and go into BIOS (you can usually do this by pressing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Delete&lt;/kbd&gt; or &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;F2&lt;/kbd&gt; or &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;F7&lt;/kbd&gt; after turning on the machine) to configure the machine to boot from a USB drive.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.openmediavault.org/en/latest/installation/via_iso.html&quot;&gt;Follow the on-screen instructions&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You should pick a good root password and write it down&lt;/strong&gt; (it gates administrative access to the machine, and you’ll need it to make some of the changes below).&lt;/li&gt;
&lt;li&gt;You can pick pretty much any name you want for the hostname and domain name (it shouldn’t affect anything but it will be what your machine calls itself).&lt;/li&gt;
&lt;li&gt;Make sure to select the right drive for installation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;And that should be it! After you complete the installation, you will be prompted to enter the root password you created to login.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unfortunately for me, OpenMediaVault did not recognize my mini PC’s ethernet ports or wireless card. If it detects your network adapter just fine, you can skip this next block of steps. But, if you run into this, select the “does not have network card” option and “minimal setup” options during install. You should still be able to get the end of the process. Then, once the OpenMediaVault operating system installs and reboots:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Login by entering the root password you picked during the installation and make sure your system is plugged in to your router via ethernet. Note: Linux is known to have issues recognizing some wireless cards and it’s considered best practice to run a media server off of Ethernet rather than WiFi.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the command line, enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;omv-firstaid&lt;/kbd&gt;. This is a gateway to a series of commonly used tools to fix an OpenMediaVault install. In this case, select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Configure Network Interface&lt;/kbd&gt; option and say yes to all the IPv4 DHCP options (you can decide if you want to set up IPv6).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step 2 should fix the issue where OpenMediaVault could not see your internet connection. To prove this, you should try two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ping google.com -c 3&lt;/kbd&gt; in the command line. You should see 3 lines with something like &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;64 bytes from random-url.blahurl.net&lt;/kbd&gt; showing that your system could reach Google (and thus the internet). If it doesn’t work, try again in a few minutes (sometimes it takes some time for your router to register a new system).&lt;/li&gt;
&lt;li&gt;Enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ip addr&lt;/kbd&gt; in the command line. Somewhere on the screen, you should see something that probably looks like &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;inet 192.168.xx.xx/xx&lt;/kbd&gt;. That is your &lt;em&gt;local&lt;/em&gt; IP address and it’s a sign that the mini PC has connected to your router.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now you need to update the Linux operating system so that it knows where to look for updates to Debian. As of this writing, &lt;a href=&quot;https://www.openmediavault.org/?p=3201&quot;&gt;the latest version of OpenMediaVault (6) is based on Debian 11 (codenamed Bullseye)&lt;/a&gt;, so you may need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;bullseye&lt;/kbd&gt; with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;name of Debian codename that your OpenMediaVault is based on&amp;gt;&lt;/kbd&gt; in the text below if your version is based on a different version of Debian (i.e. Bookworm, Trixie, etc.).&lt;/p&gt;
&lt;p&gt;In the command line, enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;nano /etc/apt/sources.list&lt;/kbd&gt;. This will let you edit the file that contains all the information on where your Linux operating system will find valid software updates. Enter the text below underneath all the lines that start with &lt;code&gt;#&lt;/code&gt; (replacing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;bullseye&lt;/kbd&gt; with the name of the Debian version that underlies your version of OpenMediaVault if needed).&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb-src&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian-security/&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye-security&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb-src&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian-security/&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye-security&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye-updates&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;deb-src&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; http://deb.debian.org/debian&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bullseye-updates&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; when asked if you want to save your changes, and finally &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to confirm that you want to overwrite the existing file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To prove that this worked, in the command line enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;apt-get update&lt;/kbd&gt; and you should see some text fly by that includes some of the URLs you entered into &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;sources.list&lt;/kbd&gt;. Next enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;apt-get upgrade -y&lt;/kbd&gt;, and this should install all the updates the system found.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Congratulations, you’ve installed OpenMediaVault!&lt;/p&gt;
&lt;h2 id=&quot;setting-up-the-file-server&quot;&gt;Setting up the File Server&lt;/h2&gt;
&lt;p&gt;You should now connect any storage (internal or USB) that you want to use for your server. You can turn off the machine if you need to by pulling the plug, or holding the physical power button down for a few seconds, or by entering &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;shutdown now&lt;/kbd&gt; in the command line. After connecting the storage, turn the system back on.&lt;/p&gt;
&lt;p&gt;Once setup is complete, OpenMediaVault can generally be completely controlled and managed from the web. But to do this, you need your server’s local IP address. Log in (if you haven’t already) using the root password you set up during the installation process. Enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ip addr&lt;/kbd&gt; in the command line. Somewhere on the screen, you should see something that looks like &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;inet 192.168.xx.xx/xx&lt;/kbd&gt;. That set of numbers connected by decimal points but &lt;em&gt;before&lt;/em&gt; the slash (for example: &lt;code&gt;192.168.444.23&lt;/code&gt;) is &lt;strong&gt;your local IP address&lt;/strong&gt;. Write that down.&lt;/p&gt;
&lt;p&gt;Now, go into any other computer connected to the same network (i.e. on WiFi or plugged into the router) as the media server and enter the local IP address you wrote down into the address bar of a browser. If you configured everything correctly, you should see something like this (you may have to change the language to English by clicking on the globe icon in the upper right):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/image-1-1024x612.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The OpenMediaVault administrative panel login&lt;/p&gt;
&lt;p&gt;Congratulations, &lt;strong&gt;you no longer need to connect a keyboard or mouse to your server&lt;/strong&gt;, because you can manage it from any other computer on the network!&lt;/p&gt;
&lt;p&gt;Login using the default username &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;admin&lt;/kbd&gt; and default password &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;openmediavault&lt;/kbd&gt;. Below are the key things to do first. (&lt;em&gt;Note: after hitting &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; on a major change, as an &lt;del&gt;annoying&lt;/del&gt; extra precaution, OpenMediaVault will ask you to confirm the change again with a bright yellow confirmation banner at the top. You can wait until you have several changes, but you need to make sure you hit the check mark at least once or your changes won’t be reflected&lt;/em&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change your password&lt;/strong&gt;: This panel controls the configuration for your system, so it’s best not to let it be the default. You can do this by clicking on the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-174737.png&quot; alt/&gt; (user settings) icon in the upper-right and selecting &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Change Password&lt;/kbd&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Some useful odds &amp;amp; ends&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Make auto logout (time before the panel logs you out automatically) longer. You can do this by going to &lt;code&gt;[System&lt;/code&gt; &amp;gt; &lt;code&gt;Workbench&lt;/code&gt;] in the menu and changing &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Auto logout&lt;/kbd&gt; to something like &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;60 minutes&lt;/kbd&gt;&lt;/li&gt;
&lt;li&gt;Set the system timezone. You can do this by going to [&lt;code&gt;System&lt;/code&gt; &amp;gt; &lt;code&gt;Date &amp;amp; Time&lt;/code&gt;] and changing the Time zone field.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update the software&lt;/strong&gt;: On the left-hand side, select [&lt;code&gt;System&lt;/code&gt; &amp;gt; &lt;code&gt;Update Management&lt;/code&gt; &amp;gt; &lt;code&gt;Updates&lt;/code&gt;]. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120259.png&quot; alt/&gt; button to search for new updates. If any show up press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120217.png&quot; alt/&gt; button to install everything on the list that it can. (see below, &lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#creating_a_network_share:~:text=When%20the%20Install%20button%20is%20clicked%2C%20all%20applicable%20upgrades%20will%20be%20installed.%20(Recommended%20for%20beginners.)%0A*Note*%20that%20it%20is%20possible%20to%20%E2%80%9Cselectively%E2%80%9D%20upgrade%20by%20highlighting%20a%20single%20package%20and%20clicking%20the%20Install%20button.&quot;&gt;Image credit: OMV-extras Wiki&lt;/a&gt;)&lt;a href=&quot;https://wiki.omv-extras.org/lib/exe/fetch.php?w=800&amp;tok=4a7e88&amp;media=omv6ug_-_40.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/omv6ug_-_40.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mount your storage:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;From the menu, select [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Disks&lt;/code&gt;]. The table that results (see below) shows everything OpenMediaVault sees connected to your server. If you’re missing anything, time to troubleshoot (check the connection and then make sure the storage works on another computer).&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/image-2.png&quot; alt/&gt;&lt;/li&gt;
&lt;li&gt;It’s a good idea (although not strictly necessary) to reformat any un-empty disks before using them with OpenMediaVault for performance. You can do this by selecting the disk entry (marking it yellow) and then pressing the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120547.png&quot; alt/&gt; (Wipe) button&lt;/li&gt;
&lt;li&gt;Go to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;File Systems&lt;/code&gt;]. This shows what drives (and what file systems) are accessible to OpenMediaVault. To properly mount your storage:
&lt;ul&gt;
&lt;li&gt;Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120638.png&quot; alt/&gt; button for every unformatted drive added you may want to mount to OpenMediaVault. This will add a disk with an existing file system to the purview of your file server.&lt;/li&gt;
&lt;li&gt;Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the upper-left (just to the right of the triangular button) to add a drive that’s just been formatted. Of the file system options that come up, I would choose &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;EXT4&lt;/kbd&gt; (it’s what modern Linux operating systems tend to use). This will result in your chosen file system being added to the drive before it’s ultimately mounted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set up your File Server:&lt;/strong&gt; Ok, you’ve got storage! Now you want to make it available for the computers on your network. To do this, you need to do three things:
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enabling SMB/CIFS&lt;/strong&gt;: Windows, Mac OS, and Linux systems tend to work pretty well with SMB/CIFS for network file shares. From the menu, select [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;SMB/CIFS&lt;/code&gt; &amp;gt; &lt;code&gt;Settings&lt;/code&gt;].&lt;/p&gt;
&lt;p&gt;Check the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enabled&lt;/kbd&gt; box. If your LAN workgroup is something other than the default &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;WORKGROUP&lt;/kbd&gt; you should enter it. Now any device on your network that supports SMB/CIFS will be able to see the folders that OpenMediaVault shares. (see below, &lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#creating_a_smb_cif_samba_network_share&quot;&gt;Image credit: OMV-extras Wiki&lt;/a&gt;)&lt;br/&gt;
&lt;a href=&quot;https://wiki.omv-extras.org/lib/exe/fetch.php?w=800&amp;tok=e9f1bd&amp;media=omv6ug_-_56.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/omv6ug_-_56.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Selecting folders to share&lt;/strong&gt;: On the left-hand-side of the administrative panel, select [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;]. This will list all the folders that can be shared.&lt;/p&gt;
&lt;p&gt;To make a folder available to your network, select the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the upper-left, and fill out the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; (what you want the folder to be called when other’s access it) and select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File System&lt;/kbd&gt; you’ve previously mounted that the folder will connect to. You can write out the name of the directory you want to share and/or use the directory folder icon to the right of the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Relative Path&lt;/kbd&gt; field to help select the right folder. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Permissions&lt;/kbd&gt;, for simplicity I would assign &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Everyone: read/write&lt;/kbd&gt;. (see below, &lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#creating_a_network_share:~:text=Under%20Storage%2C%20click,Everyone%3A%20read/write&quot;&gt;Image credit: OMV-extras Wiki&lt;/a&gt;)&lt;br/&gt;
&lt;a href=&quot;https://wiki.omv-extras.org/lib/exe/fetch.php?w=800&amp;tok=0fa1c1&amp;media=omv6ug_-_54.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/omv6ug_-_54.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; to return to the list of folder shares (see below for what a completed entry looks like, &lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#creating_a_network_share:~:text=and%20Confirm.-,The%20End%20Result%3A,-Creating%20a%20SMB&quot;&gt;Image credit: OMV-extras Wiki&lt;/a&gt;). Repeat the process to add as many Shared Folders as you’d like.&lt;br/&gt;
&lt;a href=&quot;https://wiki.omv-extras.org/lib/exe/fetch.php?w=800&amp;tok=29fdd3&amp;media=omv6ug_-_55.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/omv6ug_-_55.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Make the shared folders available to SMB/CIFS:&lt;/strong&gt; To do this go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;SMB/CIFS&lt;/code&gt; &amp;gt; &lt;code&gt;Shares&lt;/code&gt;]. Hit the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button and, in, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Shared Folder&lt;/kbd&gt;, select the Shared Folder you configured from the dropdown. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Public&lt;/kbd&gt;, select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Guests allowed&lt;/kbd&gt; – this will allow users on the network to access the folder without supplying a username or password. Check the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Inherit Permissions&lt;/kbd&gt;, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Extended attributes&lt;/kbd&gt;, and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Store DOS attributes&lt;/kbd&gt; boxes as well and then hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;. Repeat this for all the shared folders you want to make available. (&lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#creating_a_smb_cif_samba_network_share&quot;&gt;Image credit: OMV-extras Wiki&lt;/a&gt;)&lt;br/&gt;
&lt;a href=&quot;https://wiki.omv-extras.org/lib/exe/fetch.php?w=800&amp;tok=7dd668&amp;media=omv6ug_-_57.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/omv6ug_-_57.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set a static local IP&lt;/strong&gt;: Home networks typically dynamically assign IP addresses to the devices on the network (something called &lt;a href=&quot;https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol&quot;&gt;DHCP&lt;/a&gt;). As a result, the IP address for your server may suddenly change. To give your server a consistent address to connect to, you should configure your router to assign a static IP to your server. The exact instructions will vary by router so you’ll need to consult your router’s documentation. In my household, we use Google Wifi and, if you do too, &lt;a href=&quot;https://support.google.com/googlenest/answer/6274660?hl=en&quot;&gt;here are the instructions for doing so&lt;/a&gt;. (&lt;em&gt;Make sure to write down the static IP you assign to the server as you will need it later. If you change the IP from what it already was, make sure to log into the OpenMediaVault panel from that new address before proceeding.&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check that the shared folders show up on your network&lt;/strong&gt;: &lt;a href=&quot;https://support.zadarastorage.com/hc/en-us/articles/213024986-How-to-Mount-a-SMB-Share-in-Ubuntu&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;https://support.apple.com/lt-lt/guide/mac-help/mchlp1140/mac&quot;&gt;Mac OS&lt;/a&gt;, and &lt;a href=&quot;https://wiki.omv-extras.org/doku.php?id=omv6:new_user_guide#explore_the_new_network_share&quot;&gt;Windows&lt;/a&gt; all have separate ways of mounting a SMB/CIFS file share. The steps above hopefully simplify this by:
&lt;ul&gt;
&lt;li&gt;letting users connect as a Guest (no extra authentication needed)&lt;/li&gt;
&lt;li&gt;providing a Static IP address for the file share&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;docker-and-omv-extras&quot;&gt;Docker and OMV-Extras&lt;/h2&gt;
&lt;p&gt;Once upon a time, &lt;a href=&quot;https://github.com/awesome-selfhosted/awesome-selfhosted&quot;&gt;setting up other software you might want to run on your home server&lt;/a&gt; required a lot of command line work. While efficient, it made worse the consequences of entering the wrong command or having two applications with conflicting dependencies. After all, &lt;a href=&quot;http://benjamintseng.com/2021/01/mea-culpa/&quot;&gt;a certain blogger accidentally deleted his entire blog&lt;/a&gt; because he didn’t understand what he was doing.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;https://en.wikipedia.org/wiki/Containerization_(computing)&quot;&gt;containers&lt;/a&gt;. Containers are “portable environments” for software, first popularized by the company &lt;a href=&quot;https://en.wikipedia.org/wiki/Docker_(software)&quot;&gt;Docker&lt;/a&gt;, that gives software a predictable background to run on. This makes it easier to run applications reliably, regardless of machine (because the application only sees what the container shows it). It also means a greatly reduced risk of a misconfigured app affecting another since the application “lives” in its own container.&lt;/p&gt;
&lt;p&gt;While this has tremendous implications for software in general, for our purposes, this just makes it a lot easier to install software … &lt;em&gt;provided you have Docker installed&lt;/em&gt;. For OpenMediaVault, the best way to get Docker is to install &lt;strong&gt;&lt;a href=&quot;https://wiki.omv-extras.org/&quot;&gt;OMV-extras&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you know how to use &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ssh&lt;/kbd&gt;, go ahead and use it to access your server’s IP address, login as the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;root&lt;/kbd&gt; user, and skip to Step 4. But, if you don’t, the easiest way to proceed is to set up WeTTY (Steps 1-3):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install WeTTY&lt;/strong&gt;: Go to [&lt;code&gt;System &amp;gt; Plugins&lt;/code&gt;] and search or scroll until you find the row for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;openmediavault-wetty&lt;/kbd&gt;. Click on it to mark it yellow and then press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120217.png&quot; alt/&gt; button to install it. WeTTY is a web-based terminal which will let you access the server command line from a browser.&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/wetty-install.png&quot; alt/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enable WeTTY:&lt;/strong&gt; Once the install is complete, go to &lt;code&gt;[Services&lt;/code&gt; &amp;gt; &lt;code&gt;WeTTY&lt;/code&gt;], check the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enabled&lt;/kbd&gt; box, and hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;. You’ll be prompted by OpenMediaVault to confirm the pending change.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Open UI&lt;/kbd&gt;&lt;/strong&gt; &lt;strong&gt;button on the page to access WeTTY&lt;/strong&gt;: It should open up a new tab that takes you to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;your-ip-address:2222&lt;/kbd&gt; which should open up a black screen which is basically the command line for your server! Enter &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;root&lt;/kbd&gt; when prompted for your username and then your root password that you configured during installation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enter this into the command line&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;wget&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -O&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installation will take a while but once it’s complete, you can verify it by going back to your administrative panel, refreshing the page, and seeing if there is a new menu item [&lt;code&gt;System &amp;gt; omv-extras&lt;/code&gt;].&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enable the Docker repo&lt;/strong&gt;: From the administrative panel, go to &lt;code&gt;[System &amp;gt; omv-extras]&lt;/code&gt; and check the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Docker repo&lt;/kbd&gt; box. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;apt clean&lt;/kbd&gt; button once you have.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install the Docker-compose plugin&lt;/strong&gt;: Go to &lt;code&gt;[System&lt;/code&gt; &amp;gt; &lt;code&gt;Plugins&lt;/code&gt;] and search or scroll down until you find the entry for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;openmediavault-compose&lt;/kbd&gt;. Click on it to mark it yellow and then press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120217.png&quot; alt/&gt; button on the upper-left to install it. To confirm that it’s been installed, you should see a new menu item [&lt;code&gt;Services &amp;gt; Compose&lt;/code&gt;]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update the System&lt;/strong&gt;: As before, select [&lt;code&gt;System&lt;/code&gt; &amp;gt; &lt;code&gt;Update Management&lt;/code&gt; &amp;gt; &lt;code&gt;Updates&lt;/code&gt;]. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120259.png&quot; alt/&gt; button to search for new updates. Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120217.png&quot; alt/&gt; button which will automatically install everything.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create three shared folders: &lt;code&gt;compose&lt;/code&gt;, &lt;code&gt;containers&lt;/code&gt;, and &lt;code&gt;config&lt;/code&gt;:&lt;/strong&gt; Just as with setting up the network folder shares, you can do this by going to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;] and pressing the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button in the upper left. You can generally pick any location you’d like, but make sure it’s on a file system with a decent amount of storage as media server applications can store quite a bit of configuration and temporary data (e.g. preview thumbnails).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;compose&lt;/code&gt; and &lt;code&gt;containers&lt;/code&gt; will be used by Docker to store the information it needs to set up and operate the containers you’ll want.&lt;/p&gt;
&lt;p&gt;I would also recommend sharing &lt;code&gt;config&lt;/code&gt; on the local network to make it easier to see and change the application configuration files (go to [&lt;code&gt;Services &amp;gt; SMB/CIFS &amp;gt; Shares&lt;/code&gt;] and add it in the same way you did for the File Server step). Later below, I use this to add a custom theme to Ubooquity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure Docker Compose&lt;/strong&gt;: Go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Settings&lt;/code&gt;]. Where it says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Shared folder&lt;/kbd&gt; under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Compose Files&lt;/kbd&gt;, select the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;compose&lt;/kbd&gt; folder you created in Step 8. Where it says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Docker storage&lt;/kbd&gt; under &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[DOCKER]
&lt;/span&gt;, copy the &lt;em&gt;absolute path&lt;/em&gt; (not the relative path) for the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;containers&lt;/kbd&gt; folder (which you can get from [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;]). Once that’s all set. Press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Reinstall Docker&lt;/kbd&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set up a User for Docker&lt;/strong&gt;: You’ll need to create a separate user for Docker as it is dangerous to give any application full access to your &lt;code&gt;root&lt;/code&gt; user. Go to [&lt;code&gt;Users&lt;/code&gt; &amp;gt; &lt;code&gt;Users&lt;/code&gt;] (yes, that is Users twice). Press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button to create a new user. You can give it whatever name (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;dockeruser&lt;/kbd&gt;) and password you want, but under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Groups&lt;/kbd&gt; make sure to select both &lt;span class=&quot;inline-flex items-center px-2 py-0.5 rounded text-[11px] font-mono-data font-semibold bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] align-baseline shadow-2xs&quot;&gt;
[DOCKER]
&lt;/span&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;users&lt;/kbd&gt;. Hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and once you’re set you should see your new user on the table. Make a note of the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;UID&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;GID&lt;/kbd&gt; (they’ll probably be &lt;code&gt;1000&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt;, respectively, if this is your first user other than the &lt;code&gt;root&lt;/code&gt;) as you’ll need it when you install applications.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That was a lot! But, now you’ve set up Docker Compose. Now let’s use it to install some applications!&lt;/p&gt;
&lt;h2 id=&quot;setting-up-media-servers&quot;&gt;Setting up Media Server(s)&lt;/h2&gt;
&lt;p&gt;Before you set up the applications that access your data, you should make sure all of that data (i.e. photos you’ve taken, music you’ve downloaded, movies you’ve ripped / bought, PDFs you’d like to make available, etc.) are on your server and organized.&lt;/p&gt;
&lt;p&gt;My suggestion is to set up a shared folder accessible to the network (mine is called &lt;code&gt;Media&lt;/code&gt;) and have subdirectories in that folder corresponding for the different types of files that you may want your media server(s) to handle (for example: &lt;code&gt;Videos&lt;/code&gt;, &lt;code&gt;Photos&lt;/code&gt;, &lt;code&gt;Files&lt;/code&gt;, etc). Then, use the network to move the files over (you should get comparable, if not faster, speeds as a USB transfer on a local area network).&lt;/p&gt;
&lt;p&gt;The two media servers I’ve set up on my system are &lt;strong&gt;&lt;a href=&quot;https://www.plex.tv/your-media/&quot;&gt;Plex&lt;/a&gt;&lt;/strong&gt; (to serve videos, photos, and music) and &lt;strong&gt;&lt;a href=&quot;http://vaemendis.net/ubooquity/&quot;&gt;Ubooquity&lt;/a&gt;&lt;/strong&gt; (to serve files and especially ePUB/PDFs). There are &lt;a href=&quot;https://github.com/awesome-selfhosted/awesome-selfhosted&quot;&gt;other options out there&lt;/a&gt;, many of which can be similarly deployed using Docker compose, but I’m just going to cover my setup with Plex and Ubooquity below.&lt;/p&gt;
&lt;h3 id=&quot;plex&quot;&gt;Plex&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Why I chose it&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’ve been using Plex for many years now, having set up clients on virtually all of my devices (phones, tablets, computers, and smart TVs).&lt;/li&gt;
&lt;li&gt;I bought a lifetime Plex Pass a few years back which gives me access to even more functionality (including Intel Quick Sync transcode).&lt;/li&gt;
&lt;li&gt;It has a wealth of automatic features (i.e. automatic video detection and tagging, authenticated access through the web without needing to configure a VPN, etc.) that have worked reliably over the years.&lt;/li&gt;
&lt;li&gt;With a for-profit company backing it, (I believe) there’s a better chance that the platform will grow (&lt;a href=&quot;https://www.plex.tv/watch-free-tv/&quot;&gt;they built a surprisingly decent free &amp;amp; ad-sponsored Live TV offering&lt;/a&gt; a few years ago) and be supported over the long-term&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How to set up Docker Compose&lt;/strong&gt;: Go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;] and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Plex&lt;/kbd&gt; and under &lt;code&gt;File&lt;/code&gt;, paste the following (making sure the number of spaces are consistent)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;  plex:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; lscr.io/linuxserver/plex:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; plex&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    network_mode:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; host&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PUID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PGID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;GID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TZ=America/Los_Angeles&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; VERSION=docker&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    devices:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /dev/dri/:/dev/dri/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/plex:/config&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;      -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Media&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;:/media&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;    restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;UID of Docker User&amp;gt;&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;GID of Docker User&amp;gt;&lt;/kbd&gt; with the UID and GID of the Docker user you created when you set up Docker Compose (Step 10 above), which will likely be &lt;code&gt;1000&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt; if you followed the steps I laid out.&lt;/p&gt;
&lt;p&gt;You can get the the &lt;em&gt;absolute&lt;/em&gt; paths to your &lt;code&gt;config&lt;/code&gt; folder and the location of your &lt;code&gt;media&lt;/code&gt; files by going to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;] in the administrative panel. I added a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/plex&lt;/kbd&gt; to the &lt;code&gt;config&lt;/code&gt; folder path under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;volumes:&lt;/kbd&gt;. This way you can install as many apps through Docker as you want and consolidate all of their configuration files in one place, while still keeping them separate.&lt;/p&gt;
&lt;p&gt;If you have an Intel QuickSync CPU, the two lines that start with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;devices:&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/dev/dri/&lt;/kbd&gt; will allow Plex to use it (provided you also paid for a Plex Pass). If you don’t have a chip with Intel QuickSync, haven’t paid for Plex Pass, or don’t want it, leave out those two lines.&lt;/p&gt;
&lt;p&gt;I live in the Bay Area so I set timezone &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TZ&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;America/Los_Angeles&lt;/kbd&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;You can find yours here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the new &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Plex&lt;/kbd&gt; entry you created has a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Down&lt;/kbd&gt; status, showing the container has yet to be initiated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How to start / update / stop / remove your Plex container&lt;/strong&gt;: You can manage all of your Docker Compose files by going to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;]. Click on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Plex&lt;/kbd&gt; entry (which should turn it yellow) and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run it.&lt;/p&gt;
&lt;p&gt;And that’s it! To prove it worked, go to &lt;code&gt;http://your-ip-address:32400/web&lt;/code&gt; in a browser and you should see a login screen (see image below)&lt;br/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-121246.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;From time to time, you’ll want to update your software. Docker makes this very easy. Because of the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;image: lscr.io/linuxserver/plex:latest&lt;/kbd&gt; line, every time you press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-121737.png&quot; alt/&gt; (pull) button, Docker will pull the latest version from &lt;a href=&quot;https://www.linuxserver.io/&quot;&gt;linuxserver.io&lt;/a&gt; (a group that maintains commonly used Linux containers) and, usually, you can get away with an update without needing to stop or restart your container.&lt;/p&gt;
&lt;p&gt;Similarly, to stop the Plex container, simply tap the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-122000.png&quot; alt/&gt; (stop) button. And to delete the container, tap the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-122026.png&quot; alt/&gt; (down) button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Getting started with Plex:&lt;/strong&gt; &lt;a href=&quot;https://support.plex.tv/articles/200264746-quick-start-step-by-step-guides/#toc-3&quot;&gt;There are great guides that have been written on the subject&lt;/a&gt; but my main recommendations are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.plex.tv/articles/200288896-basic-setup-wizard/&quot;&gt;Do the setup wizard&lt;/a&gt;. It has good default settings (automatic library scans, remote access, etc.) — and I haven’t had to make many tweaks.&lt;/li&gt;
&lt;li&gt;Take advantage of remote access — You can access your Plex server even when you’re not at home just by going to &lt;a href=&quot;https://www.plex.tv/&quot;&gt;plex.tv&lt;/a&gt; and logging in.&lt;/li&gt;
&lt;li&gt;Install Plex clients everywhere — It’s available on pretty much everything (Web, iOS, Android) and, with remote access, becomes a pretty easy way to get access to all of your content&lt;/li&gt;
&lt;li&gt;I hide most of Plex’s default content in the Plex clients I’ve setup. While their ad-sponsored offerings are actually pretty good, I’m rarely consuming those. You can do this by configuring which things are pinned, and I pretty much only leave the things on my media server up.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ubooquity&quot;&gt;Ubooquity&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Why I chose it&lt;/strong&gt;: &lt;a href=&quot;http://vaemendis.net/ubooquity/blog&quot;&gt;Ubooquity has, sadly, not been updated in almost 5 years as of this writing&lt;/a&gt;. But, I still chose it for two reasons. First, unlike many alternatives, it does not require me to create a new file organization structure or manually tag my old files to work. It simply shows me my folder structure, lets me open the files one page at a time, maintains read location across devices, and lets me have multiple users.&lt;/p&gt;
&lt;p&gt;Second, it’s &lt;a href=&quot;https://docs.linuxserver.io/images/docker-ubooquity&quot;&gt;available as a container on linuxserver.io&lt;/a&gt; (like Plex) which makes it easy to install and means that the infrastructure (if not the application) will continue to be updated as new container software comes out.&lt;/p&gt;
&lt;p&gt;I may choose to switch (and the beauty of Docker is that it’s very easy to just install another content server to try it out) but for now Ubooquity made the most sense.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How to set up the Docker Compose configuration&lt;/strong&gt;: Like with Plex, go to &lt;code&gt;[Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;] and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ubooquity&lt;/kbd&gt; and under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;File&lt;/kbd&gt;, paste the following&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   ubooquity:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; lscr.io/linuxserver/ubooquity:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ubooquity&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PUID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PGID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;GID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TZ=America/Los_Angeles&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; MAXMEM=&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;512&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/ubooquity:/config&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Media&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/Books:/books&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Media&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/Comics:/comics&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Media&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/Files:/files&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     ports:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 2202:2202&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 2203:2203&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;UID of Docker User&amp;gt;&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;GID of Docker User&amp;gt;&lt;/kbd&gt; with the UID and GID of the Docker user you created when you set up Docker Compose (Step 10 above), which will likely be &lt;code&gt;1000&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt; if you followed the steps I laid out.&lt;/p&gt;
&lt;p&gt;You can get the the &lt;em&gt;absolute&lt;/em&gt; paths to your &lt;code&gt;config&lt;/code&gt; folder and the location of your &lt;code&gt;media&lt;/code&gt; files by going to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;] in the administrative panel. I added a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/ubooquity&lt;/kbd&gt; to the &lt;code&gt;config&lt;/code&gt; folder path under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;volumes:&lt;/kbd&gt;. This way you can install as many apps through Docker as you want and consolidate all of their configuration files in one place, while still keeping them separate.&lt;/p&gt;
&lt;p&gt;I live in the Bay Area so I set timezone &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TZ&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;America/Los_Angeles&lt;/kbd&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;You can find yours here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files for the next step. Notice that the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ubooquity&lt;/kbd&gt; entry you created has a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Down&lt;/kbd&gt; status, showing it has yet to be initiated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;How to start / update / stop / remove your Ubooquity container&lt;/strong&gt;: You can manage all of your Docker Compose files by going to &lt;code&gt;[Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;]. Click on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ubooquity&lt;/kbd&gt; entry (which should turn it yellow) and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run the system.&lt;/p&gt;
&lt;p&gt;And that’s it! To prove it worked, go to &lt;code&gt;your-ip-address:2202/ubooquity&lt;/code&gt; in a browser and you should see the user interface (&lt;a href=&quot;http://vaemendis.net/ubooquity/static3/screenshots&quot;&gt;image credit: Ubooquity&lt;/a&gt;)&lt;br/&gt;
&lt;a href=&quot;http://vaemendis.net/ubooquity/data/images/screenshots/09_library_-homepage-.jpg&quot;&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/ubooquity-home.jpg&quot; alt/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From time to time, you’ll want to update your software. Docker makes this very easy. Because of the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;image: lscr.io/linuxserver/ubooquity:latest&lt;/kbd&gt; line, every time you press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-121737.png&quot; alt/&gt; (pull) button, Docker will pull the latest version from &lt;a href=&quot;https://www.linuxserver.io/&quot;&gt;linuxserver.io&lt;/a&gt; (a group that maintains commonly used Linux containers) and, usually, you can get away with an update without needing to stop or restart your container.&lt;/p&gt;
&lt;p&gt;Similarly, to stop the Ubooquity container, simply tap the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-122000.png&quot; alt/&gt; (stop) button. And to remove the container, tap the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-122026.png&quot; alt/&gt; (down) button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Getting started with Ubooquity:&lt;/strong&gt; While Ubooquity will more or less work out of the box, if you want to really configure your setup you’ll need to go to the admin panel at &lt;code&gt;your-ip-address:2203/ubooquity/admin&lt;/code&gt; (you will be prompted to create a password the first time)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;General&lt;/kbd&gt; tab, you can see how many files are tracked in the table at the top, configure how frequently Ubooquity scans your folders for new files under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Automatic scan period&lt;/kbd&gt;, manually launch a scan if you just added files with &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Launch New Scan&lt;/kbd&gt;, and select a theme for the interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to create User accounts to have separate read state management or to segment which users can access specific content, you can create these users in the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Security&lt;/kbd&gt; tab of the administrative panel. By doing so, you’ll need to manually go into the content type tabs (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Comics&lt;/kbd&gt;, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Books&lt;/kbd&gt;, &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Raw Files&lt;/kbd&gt;) and manually configure which users have access to which shared folders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The base Ubooquity interface is pretty dated so I &lt;a href=&quot;https://bit.ly/2Khd29R&quot;&gt;am using a Plex-inspired theme&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The easiest way to do this is to download the ZIP file at the link I gave. Unzip it on your computer (in this case it will result in the creation of a directory called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;plextheme-reading&lt;/kbd&gt;). Then, assuming the &lt;code&gt;config&lt;/code&gt; shared folder you set up previously is shared across the network, take the unzipped directory and put it into the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/ubooquity/themes&lt;/kbd&gt; subdirectory of the &lt;code&gt;config&lt;/code&gt; folder.&lt;/p&gt;
&lt;p&gt;Lastly, go back to the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;General&lt;/kbd&gt; tab in Ubooquity admin and, next to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Current theme&lt;/kbd&gt; select &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;plextheme-reading&lt;/kbd&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Edit (10-Aug-2023): I’ve since switched to using a Local DNS service powered by Pihole to access Ubooquity using a human readable web address &lt;code&gt;ubooquity.home&lt;/code&gt; that every device on my network can access. For information on how to do this, refer to my post on &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;
~~Because entering in a local ip address and remembering 2202 or 2203 and the folders afterwards is a pain, I created keyword shortcuts for these in Chrome. The instructions for doing this will vary by browser, but to do this in Chrome, go to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;chrome://settings/searchEngines&lt;/kbd&gt;. There is a section of the page called &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Site search&lt;/kbd&gt;. Press the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add&lt;/kbd&gt; button next to it. Even though the dialog box says &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Add Search Engine&lt;/kbd&gt;, in practice you can use this to add keywords to any URL, just put a name for the shortcut in the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Search Engine&lt;/kbd&gt; field, the shortcut you want to use in &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Shortcut&lt;/kbd&gt; (I used &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ubooquity&lt;/kbd&gt; for the core application and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ubooquityadmin&lt;/kbd&gt; for the administrative console) and the URLs in &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;URL with %s in place of query&lt;/kbd&gt; (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;http://your-ip-address:2202/ubooquity&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;http://your-ip-address:2203/ubooquity/admin&lt;/kbd&gt;).&lt;/p&gt;
&lt;p&gt;Now to get to Ubooquity, I simply type in &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;ubooquity&lt;/kbd&gt; in the Chrome address bar rather than a hodge podge of numbers and slashes that I’ll probably forget~~&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;external-access&quot;&gt;External Access&lt;/h2&gt;
&lt;p&gt;One of Plex’s best features is making it very easy to access your media server even when you’re not on your home network. Having experienced that, I wanted the same level of access when I was out of the house to my network file share and applications like Ubooquity.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Edit (10-Aug-2023): I’ve since switched my method of granting external access to Twingate. This provides secure access to network resources without needing to configure Dynamic DNS, a VPN, or open up a port. For more information on how to do this, refer to my post on &lt;a href=&quot;http://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/&quot;&gt;Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;There are a few ways to do this, but the most secure path is through a VPN (virtual private network). VPNs are secure connections between computers that mimic actually being directly networked together. In our case, it lets a device securely access local network resources (like your server) even when it’s not on the home network.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;OpenMediaVault makes it relatively easy to use &lt;a href=&quot;https://www.wireguard.com/&quot;&gt;Wireguard&lt;/a&gt;, a fast and popular VPN technology with support for many different types of devices. To set up Wireguard for your server for remote access, you’ll need to do six things:&lt;/del&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Get a domain name and enable Dynamic DNS on it&lt;/strong&gt; Most residential internet customers do not have a static IP. This means that the IP address for your home, as the rest of the world sees it, can change without warning. This makes it difficult to access externally (in much the same way that DHCP makes it hard to access your home server internally).&lt;/p&gt;
&lt;p&gt;To address this, many domain providers offer &lt;a href=&quot;https://en.wikipedia.org/wiki/Dynamic_DNS&quot;&gt;Dynamic DNS&lt;/a&gt;, where a domain name (for example: myurl.com) can point to a different IP address depending on when you access it, so long as the domain provider is told what the IP address should be whenever it changes.&lt;/p&gt;
&lt;p&gt;The exact instructions for how to do this will vary based on who your domain provider is. I use &lt;a href=&quot;https://www.namecheap.com/&quot;&gt;Namecheap&lt;/a&gt; and took an existing domain I owned and followed &lt;a href=&quot;https://www.namecheap.com/support/knowledgebase/article.aspx/36/11/how-do-i-start-using-dynamic-dns/&quot;&gt;their instructions for enabling Dynamic DNS&lt;/a&gt; on it. I personally configured mine to use my &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;vpn.&lt;/kbd&gt; subdomain, but you should use the setup you’d like, so long as you make a note of it for step 3 below.&lt;/p&gt;
&lt;p&gt;If you don’t want to buy your own domain and are comfortable using someone else’s, you can also sign up for &lt;a href=&quot;https://www.duckdns.org/&quot;&gt;Duck DNS&lt;/a&gt; which is a free Dynamic DNS service tied to a Duck DNS subdomain.~~&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Set up DDClient&lt;/strong&gt;. To update the IP address your domain provider maps the domain to, you’ll need to run a background service on your server that will regularly check its IP address. One common way to do this is a software package called DDClient.&lt;/p&gt;
&lt;p&gt;Thankfully, setting up DDClient is fairly easy thanks (again!) to a &lt;a href=&quot;https://docs.linuxserver.io/images/docker-ddclient&quot;&gt;linuxserver.io container&lt;/a&gt;. Like with Plex &amp;amp; Ubooquity, go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Compose&lt;/code&gt; &amp;gt; &lt;code&gt;Files&lt;/code&gt;] and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; button. Under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; put down &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;DDClient&lt;/kbd&gt; and under &lt;code&gt;File&lt;/code&gt;, paste the following&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; version:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; services:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;   ddclient:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     image:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; lscr.io/linuxserver/ddclient:latest&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     container_name:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ddclient&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     environment:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PUID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;UID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PGID=&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;GID&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; of&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; Docker&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; User&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; TZ=America/Los_Angeles&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     volumes:&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;       -&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/ddclient:/config&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;     restart:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unless-stopped&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You need to replace &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;UID of Docker User&amp;gt;&lt;/kbd&gt; and &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;GID of Docker User&amp;gt;&lt;/kbd&gt; with the UID and GID of the Docker user you created when you set up Docker Compose (Step 10 above), which will likely be &lt;code&gt;1000&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt; if you followed the steps I laid out.&lt;/p&gt;
&lt;p&gt;You can get the the &lt;em&gt;absolute&lt;/em&gt; path to your &lt;code&gt;config&lt;/code&gt; folder by going to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;] in the administrative panel. I added a &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;/ddclient&lt;/kbd&gt; to the &lt;code&gt;config&lt;/code&gt; folder path. This way you can install as many apps through Docker as you want and consolidate all of their configuration files in one place, while still keeping them separate.&lt;/p&gt;
&lt;p&gt;I live in the Bay Area so I set timezone &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;TZ&lt;/kbd&gt; to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;America/Los_Angeles&lt;/kbd&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&quot;&gt;You can find yours here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you’re done, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you should be returned to your list of Docker compose files. Click on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;DDClient&lt;/kbd&gt; entry (which should turn it yellow) and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115455.png&quot; alt/&gt; (up) button. This will create the container, download any files needed, and run DDClient. Now, it is ready for configuration.~~&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Configure DDClient to work with your domain provider&lt;/strong&gt;. While the precise configuration of DDClient will vary by domain provider, the process will always involve editing a text file. To do this, login to your server using SSH or WeTTy (see the section above on Installing OMV-Extras) and enter into the command line:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;nano&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;absolute&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; shared&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; folder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;gt&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;/ddclient/ddclient.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Remember to substitute &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;&amp;lt;absolute path to shared config folder&amp;gt;&lt;/kbd&gt; with the &lt;em&gt;absolute&lt;/em&gt; path to the &lt;code&gt;config&lt;/code&gt; folder you set up for your applications (which you can access by going to [&lt;code&gt;Storage&lt;/code&gt; &amp;gt; &lt;code&gt;Shared Folders&lt;/code&gt;] in the administrative panel).&lt;/p&gt;
&lt;p&gt;This will open up Linux’s native text editor. Scroll to the very bottom and enter the configuration information that your domain provider requires for DynamicDNS to work. As I use Namecheap, I &lt;a href=&quot;https://www.namecheap.com/support/knowledgebase/article.aspx/583/11/how-do-i-configure-ddclient/&quot;&gt;followed these instructions&lt;/a&gt;. In general, you’ll need to supply some type of information about the protocol, the server, your login / password for the domain provider, and the subdomain you intend to map to your IP address.&lt;/p&gt;
&lt;p&gt;Then press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Ctrl+X&lt;/kbd&gt; to exit, press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Y&lt;/kbd&gt; when asked if you want to save, and finally &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enter&lt;/kbd&gt; to confirm that you want to overwrite the old file.~~&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Set up Port Forwarding on your router&lt;/strong&gt;. Dynamic DNS gives devices outside of your network a consistent “address” to get to your server but it won’t do any good if your router doesn’t pass those external requests through. In this case, you’ll need to tell your router to let &lt;strong&gt;incoming UDP requests from port 51820&lt;/strong&gt; through to your server to line up with Wireguard’s defaults.&lt;/p&gt;
&lt;p&gt;The exact instructions will vary by router so you’ll need to consult your router’s documentation. In my household, we use Google Wifi and, if you do too, &lt;a href=&quot;https://support.google.com/googlenest/answer/6274503?hl=en&quot;&gt;here are the instructions for doing so&lt;/a&gt;.~~&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Enable Wireguard&lt;/strong&gt;. If you installed &lt;a href=&quot;https://wiki.omv-extras.org/&quot;&gt;OMV-Extras&lt;/a&gt; above as I suggested, you’ll have access to a Plugin that turns on Wireguard. Go to [&lt;code&gt;System&lt;/code&gt; &amp;gt; &lt;code&gt;Plugins&lt;/code&gt;] on the administrative panel and then search or scroll down until you find the entry for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;openmediavault-wireguard&lt;/kbd&gt;. Click on it to mark it yellow and then press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-120217.png&quot; alt/&gt; button to install it.&lt;/p&gt;
&lt;p&gt;Now go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Wireguard&lt;/code&gt; &amp;gt; &lt;code&gt;Tunnels&lt;/code&gt;] and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; (create) button to set up a VPN tunnel. You can give it any &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt; you want (i.e. &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;omv-vpn&lt;/kbd&gt;). Select your server’s main network connection for &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Network adapter&lt;/kbd&gt;. But, most importantly, under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Endpoint&lt;/kbd&gt;, add the domain you just configured for DynamicDNS/DDClient (for example, &lt;code&gt;vpn.myurl.com&lt;/code&gt;). Press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt;~~&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~~&lt;strong&gt;Set up Wireguard on your devices.&lt;/strong&gt; With a Wireguard tunnel configured, your next step is to set up the devices (called clients or peers) to connect. This has two parts.&lt;/p&gt;
&lt;p&gt;First, install the Wireguard applications on the devices themselves. Go to &lt;a href=&quot;https://www.wireguard.com/install/&quot;&gt;wireguard.com/install&lt;/a&gt; and download or set up the Wireguard apps. There are apps for Windows, MacOS, Android, iOS, and many flavors of Linux&lt;/p&gt;
&lt;p&gt;Then, go back into your administrative panel and go to [&lt;code&gt;Services&lt;/code&gt; &amp;gt; &lt;code&gt;Wireguard&lt;/code&gt; &amp;gt; &lt;code&gt;Clients&lt;/code&gt;] and press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-115733.png&quot; alt/&gt; (create) button to create a valid client for the VPN. Check the box next to &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Enable&lt;/kbd&gt;, select the tunnel you just created under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Tunnel number&lt;/kbd&gt;, put a name for the device you’re going to connect under &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Name&lt;/kbd&gt;, and assign a &lt;em&gt;unique&lt;/em&gt; (or it will not work) client number in &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Client Number&lt;/kbd&gt; . Press &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Save&lt;/kbd&gt; and you’ll be brought back to the Client list. Make sure to approve the change and then press the &lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2023/07/Screenshot-2023-07-26-152938.png&quot; alt/&gt; (client config) button. What you should do next depends on what kind of client device you’re configuring.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If the device you’re configuring&lt;/em&gt; is not &lt;em&gt;a smartphone&lt;/em&gt; (i.e. a computer), copy the text that shows up in the &lt;code&gt;Client Config&lt;/code&gt; popup that comes up and save that as a &lt;code&gt;.conf&lt;/code&gt; file (for example: &lt;code&gt;work_laptop_wireguard.conf&lt;/code&gt;). Send that file to the device in question as that file will be used by the Wireguard app on that device to configure and access the VPN. Hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Close&lt;/kbd&gt; when you’re done&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If the device you’re configuring&lt;/em&gt; is &lt;em&gt;a smartphone&lt;/em&gt;, hit &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Close&lt;/kbd&gt; button on the &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Client Config&lt;/kbd&gt; popup that comes up as you will be presented with a QR code that your smartphone Wireguard app can capture to configure the VPN connection.&lt;/p&gt;
&lt;p&gt;Now go into your Wireguard app on the client device and use it to either take a picture of the QR code when prompted or load the &lt;code&gt;.conf&lt;/code&gt; file. Your device is now configured to connect to your server securely no matter where you are. A good test of this is to disconnect a set up smartphone from your home WiFi and enable the VPN. Since you’re no longer on WiFi you should not be on the same network as your server. If you can enter &lt;code&gt;http://your-ip-address&lt;/code&gt; in this mode into a browser and still reach the administrative panel for OpenMediaVault, you’re home free!&lt;/p&gt;
&lt;p&gt;One additional note: by default, Wireguard also acts as a &lt;a href=&quot;https://en.wikipedia.org/wiki/Proxy_server&quot;&gt;proxy&lt;/a&gt;, meaning all internet traffic you send from the device will be routed through the server. This can be valuable if you’re trying to access a blocked website or pretend to be from a different location, but it can also be unnecessarily slow (and bandwidth consuming). I have my Wireguard configured to &lt;em&gt;only&lt;/em&gt; route traffic that is going to my server’s local IP address through Wireguard. You can do this by configuring your client device’s &lt;kbd class=&quot;inline-flex items-center px-2 py-0.5 rounded text-xs font-mono-data bg-[#EFF6FF] text-[#1E3A8A] border border-[#BFDBFE] font-medium align-baseline shadow-2xs&quot;&gt;Allowed IPs&lt;/kbd&gt; to &lt;code&gt;your-ip-address&lt;/code&gt; (for example: &lt;code&gt;192.168.99.99&lt;/code&gt;) from the Wireguard app.~~&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Congratulations, you have now configured a file server and media server that you can securely access from anywhere!&lt;/p&gt;
&lt;h2 id=&quot;concluding-thoughts&quot;&gt;Concluding Thoughts&lt;/h2&gt;
&lt;p&gt;A few concluding thoughts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;This was probably way too complicated for most people.&lt;/strong&gt; Believe it or not, what was written above is a &lt;em&gt;shortened&lt;/em&gt; version of what I went through. Even holding aside that use of the command line and Docker automatically makes this hard for many consumers, I still had to deal with missing drivers, Linux not recognizing my USB drive through the USB C port (but through the USB A one?), puzzling over different external access configurations (VPN vs Let’s Encrypt SSL on my server vs self-sign certificate), and minimal feedback when my initial attempts to use Wireguard failed. While I learned a great deal, for most people, it makes more sense to go completely third party (i.e. use Google / Amazon / Apple for everything) or, if you have some pain tolerance, with a high-end NAS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker/containerization is extremely powerful.&lt;/strong&gt; Prior to this, I had thought of Docker as just a “flavor” of &lt;a href=&quot;https://en.wikipedia.org/wiki/System_virtual_machine&quot;&gt;virtual machine&lt;/a&gt;, a software technology underlying cloud computing which abstracts server software from server hardware. And, while there is some overlap, I completely misunderstood why containers were so powerful for software deployment. By using 3 fairly simple blocks of text, I was able to deploy 3 complicated applications which needed different levels of hardware and network access (Ubooquity, DDClient, Plex) in minutes without issue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I was pleasantly surprised by how helpful the blogs and forums were&lt;/strong&gt;. While the amount of work needed to find the right advice can be daunting, every time I ran into an issue, I was able to find some guidance online (often in a forum or subreddit). While there were certainly … abrasive personalities, by in large many of the questions being asked were by non-experts and they were answered by experts showing patience and generosity of spirit. Part of the reason I wrote this is to pay this forward for the next set of people who want to experiment with setting up their own server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I am excited to try still more applications&lt;/strong&gt;. Lists about what hobbyists are running on their home servers like &lt;a href=&quot;https://news.ycombinator.com/item?id=34271167&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/OpenMediaVault/comments/1280la7/what_do_you_run_alongside_omv/&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/selfhosted/comments/srkjcl/raspberry_pi_users_how_many_services_do_you_have/&quot;&gt;this&lt;/a&gt; make me very intrigued by the possibilities. I’m currently considering a network-wide adblocker like &lt;a href=&quot;https://pi-hole.net/&quot;&gt;Pi-Hole&lt;/a&gt; and backup tools like &lt;a href=&quot;https://www.borgbackup.org/&quot;&gt;BorgBackup&lt;/a&gt;. There is a tremendous amount of creativity out there!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more help on setting any of this stuff up, here are a few additional resources that proved helpful to me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.omv-extras.org/&quot;&gt;OMV Extras Wiki&lt;/a&gt; — probably the single best source of help I turned to in setting up OpenMediaVault, Docker Compose, and Wireguard&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.openmediavault.org/&quot;&gt;The OpenMediaVault Forum&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/OpenMediaVault/&quot;&gt;r/OpenMediaVault&lt;/a&gt; have an amazing wealth of information&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.linuxserver.io/&quot;&gt;linuxserver.io documentation&lt;/a&gt; — Nice listing of available images and basics on how to run containers and configure those text files&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vaemendis.net/ubooquity/&quot;&gt;Ubooquity website&lt;/a&gt; — sadly hasn’t been updated in a while but still useful information&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.debian.org/SourcesList&quot;&gt;the Debian SourcesList documentation page&lt;/a&gt; — this saved me when I was trying to figure out how to get Debian to update itself&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.plex.tv/articles/200264746-quick-start-step-by-step-guides/#toc-3&quot;&gt;Plex Support site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wireguard.com/&quot;&gt;Wireguard website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(If you’re interested in how to setup a home server on OpenMediaVault or how to self-host different services, &lt;a href=&quot;http://benjamintseng.com/tag/selfhost/&quot;&gt;check out all my posts on the subject&lt;/a&gt;)&lt;/p&gt;</content:encoded><category>container</category><category>Docker</category><category>Intel</category><category>Linux</category><category>media server</category><category>open source</category><category>OpenMediaVault</category><category>Plex</category><category>selfhost</category><category>SMB/CIFS</category><category>software</category><category>tech</category><category>Ubooquity</category></item><item><title>It’s not just the GOP who misunderstands Section 230</title><link>https://benjamintseng.com/2021/02/its-not-just-the-gop-who-misunderstands-section-230/</link><guid isPermaLink="true">https://benjamintseng.com/2021/02/its-not-just-the-gop-who-misunderstands-section-230/</guid><description>It’s not just the GOP who misunderstands Section 230</description><pubDate>Sun, 07 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/02/image.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://www.npr.org/sections/alltechconsidered/2018/03/21/591622450/section-230-a-key-legal-shield-for-facebook-google-is-about-to-change&quot;&gt;NPR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Section_230&quot;&gt;Section 230 of the Communications Decency Act&lt;/a&gt; has been rightfully called &lt;a href=&quot;https://www.amazon.com/dp/B07JKGZ8XQ/&quot;&gt;“the twenty-six words that created the Internet.”&lt;/a&gt; It is a valuable legal shield which allows internet hosts and platforms the ability to distribute user-generated content and practice moderation without unreasonable fear of being sued, something which forms the basis of all social media, user review, and user forum, and internet hosting services.&lt;/p&gt;
&lt;p&gt;In recent months, &lt;a href=&quot;http://benjamintseng.com/2019/03/how-to-regulate-big-tech/&quot;&gt;as big tech companies have drawn greater scrutiny&lt;/a&gt; for the role they play in shaping our discussions, Section 230 has become a scapegoat for many of the ills of technology. Until 2021, much of that criticism has come from the Republican Party who &lt;a href=&quot;https://www.eff.org/deeplinks/2020/12/its-not-section-230-president-trump-hates-its-first-amendment&quot;&gt;argue incorrectly that it promotes bias on platforms&lt;/a&gt; with &lt;a href=&quot;https://www.theverge.com/2020/12/23/22197796/trump-ndaa-veto-section-230-defense-bill-facebook-twitter&quot;&gt;President Trump even vetoing unrelated defense legislation&lt;/a&gt; because it did not repeal Section 230.&lt;/p&gt;
&lt;p&gt;So, it’s refreshing (and distressing) to see the Democrats now take their turn in misunderstanding what Section 230 does for the internet. This critique is based mainly on Senator Mark Warner’s &lt;a href=&quot;https://assets.documentcloud.org/documents/20473310/section-230-as-a-redline.pdf&quot;&gt;proposed changes to Section 230&lt;/a&gt; and &lt;a href=&quot;https://assets.documentcloud.org/documents/20473311/the-safe-tech-faq.pdf&quot;&gt;the FAQ his office posted&lt;/a&gt; about the SAFE TECH act he (alongside Senators Hirono and Klobuchar) is proposing but apply to many commentators from the Democratic Party and &lt;a href=&quot;https://www.wired.com/story/section-230-reform-safe-tech-act/&quot;&gt;the press which seems to have misunderstood the practical implications and have received this positively&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While I think it’s reasonable to modify Section 230 to obligate platforms to help victims of clearly heinous acts like cyberstalking, swatting, violent threats, and human rights violations, what the Democratic Senators are proposing goes far beyond that in several dangerous ways.&lt;/p&gt;
&lt;p&gt;First, Warner and his colleagues have proposed carving out from Section 230 all content which accompanies payment (see below). While I sympathize with what I believe was the intention (to put a different bar on advertisements), this is remarkably short-sighted, because Section 230 applies to far more than companies with ad / content moderation policies Democrats dislike such as Facebook, Google, and Twitter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/02/image-1.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://Dassets.documentcloud.org/documents/20473310/section-230-as-a-redline.pdf&quot;&gt;Mark Warner’s “redlines” of Section 230&lt;/a&gt;; highlighting is mine&lt;/p&gt;
&lt;p&gt;It also encompasses email providers, web hosts, user generated review sites, and more. Any service that currently receives payment (for example: a paid blog hosting service, any eCommerce vendor who lets users post reviews, a premium forum, etc) could be made liable for any user posted content. This would make it legally and financially untenable to host any potentially controversial content.&lt;/p&gt;
&lt;p&gt;Secondly, these rules will disproportionately impact smaller companies and startups. This is because these smaller companies lack the resources that larger companies have to deal with the new legal burdens and moderation challenges that such a change to Section 230 would call for. It’s hard to know if Senator Warner’s glip answer in his FAQ that people don’t litigate small companies (see below) is ignorance or a willful desire to mislead, but &lt;a href=&quot;https://techcrunch.com/2013/01/19/patent-troll-effects-on-startups-and-small-businesses/&quot;&gt;ask tech startups how they feel about patent trolls&lt;/a&gt; and whether or not being small protects them from frivolous lawsuits&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/02/image-2.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://assets.documentcloud.org/documents/20473311/the-safe-tech-faq.pdf&quot;&gt;Mark Warner’s FAQ on SAFE TECH Act&lt;/a&gt;; highlighting mine&lt;/p&gt;
&lt;p&gt;Third, the use of the language “affirmative defense” and “injunctive relief” may have far-reaching consequences that go beyond minor changes in legalese (see below). By reducing Section 230 from an immunity to an affirmative defense, it means that companies hosting content will cease to be able to dismiss cases that clearly fall within Section 230 because they now have a “burden of [proof] by a preponderance of the evidence.”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/02/image-4.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://assets.documentcloud.org/documents/20473310/section-230-as-a-redline.pdf&quot;&gt;Mark Warner’s “redlines” of Section 230&lt;/a&gt;; highlighting is mine&lt;/p&gt;
&lt;p&gt;Similarly, carving out “injunctive relief” from Section 230 protections (see below) means that Section 230 doesn’t apply if the party suing is only interested in taking something down (but not financial damages)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/02/image-5.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://assets.documentcloud.org/documents/20473310/section-230-as-a-redline.pdf&quot;&gt;Mark Warner’s “redlines” of Section 230&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I suspect the intention of these clauses is to make it harder for large tech companies to dodge legitimate concerns, but what this practically means is that anyone who has the money to pursue legal action can simply tie up any internet company or platform hosting content that they don’t like.&lt;/p&gt;
&lt;p&gt;That may seem like hyperbole, but &lt;a href=&quot;https://en.wikipedia.org/wiki/Libel_tourism&quot;&gt;this is what happened in the UK until 2014&lt;/a&gt; where libel / slander laws making it easy for wealthy individuals and corporations to sue anyone for negative press due to weak protections. Imagine Jeffrey Epstein being able to sue any platform for carrying posts or links to stories about his actions or any individual for forwarding an unflattering email about him.&lt;/p&gt;
&lt;p&gt;There is no doubt that we need new tools and incentives (both positive and negative) to tamp down on online harms like cyberbullying and cyberstalking, and that we need to come up with new and fair standards for dealing with “fake news”. But, it is distressing that elected officials will react by proposing far-reaching changes that show a lack of thoughtfulness as it pertains to how the internet works and the positives of existing rules and regulations.&lt;/p&gt;
&lt;p&gt;It is my hope that this was only an early draft that will go through many rounds of revisions with people with real technology policy and technology industry expertise.&lt;/p&gt;</content:encoded><category>Big Tech</category><category>Mark Warner</category><category>policy</category><category>SAFE TECH Act</category><category>Section 230</category></item><item><title>It’s Even Easier Now to Set up Let’s Encrypt on WordPress with AWS Lightsail</title><link>https://benjamintseng.com/2021/01/its-even-easier-now-to-set-up-lets-encrypt-on-wordpress-with-aws-lightsail/</link><guid isPermaLink="true">https://benjamintseng.com/2021/01/its-even-easier-now-to-set-up-lets-encrypt-on-wordpress-with-aws-lightsail/</guid><description>It’s Even Easier Now to Set up Let’s Encrypt on WordPress with AWS Lightsail</description><pubDate>Sun, 31 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com/lightsail/&quot;&gt;Amazon’s Lightsail service&lt;/a&gt; has made it remarkably cheap and simple for people hosting webpages (&lt;a href=&quot;http://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/&quot;&gt;including this blog&lt;/a&gt;) and simple web applications to get access to high quality virtual private servers (VPS). &lt;a href=&quot;http://benjamintseng.com/2021/01/mea-culpa/&quot;&gt;Beyond the ability to do really stupid things with your VPS powers&lt;/a&gt;, my only real complaint with the experience thus far has been that getting HTTPS working with Let’s Encrypt’s free SSL certificates has been a a hassle, requiring a lot more DNS configuration and manual command-line tweaking than is really necessary.&lt;/p&gt;
&lt;p&gt;Because of &lt;a href=&quot;http://benjamintseng.com/2021/01/mea-culpa/&quot;&gt;my recent server mishap&lt;/a&gt;, I discovered that &lt;a href=&quot;https://bitnami.com/&quot;&gt;Bitnami&lt;/a&gt;, creator of the WordPress “package” which Lightsail uses to get users up and running quickly with WordPress, &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-enabling-https-on-wordpress&quot;&gt;has made it much simpler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress&quot;&gt;Whereas the previous experience using Let’s Encrypt’s &lt;code&gt;certbot&lt;/code&gt;&lt;/a&gt; required:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manually adjusting your DNS configuration with TXT records to confirm domain ownership (each renewal)&lt;/li&gt;
&lt;li&gt;Manually copying of certificate files to the right directory&lt;/li&gt;
&lt;li&gt;Requires you to manually setup URL redirection (i.e. moving your HTTP URLs to HTTPS, figuring out how to handle “&lt;a href=&quot;http://www.%E2%80%9D&quot;&gt;www.”&lt;/a&gt; subdomain, etc)&lt;/li&gt;
&lt;li&gt;Manual renewal every cycle (Let’s Encrypt certificates expire every 90 days)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bitnami’s new command line tool (&lt;code&gt;bncert&lt;/code&gt;) is vastly simpler to use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assuming you’ve already linked the domain you wish to enable HTTPS for to the public IP address for your server, the domain certification is handled automatically without any effort (if it’s not, you may need to add TXT records)&lt;/li&gt;
&lt;li&gt;Automatically configures URL redirection for you based on what you enter when prompted&lt;/li&gt;
&lt;li&gt;Automatically puts the certificates where they need to be&lt;/li&gt;
&lt;li&gt;Automatically renews your certificates in 80 days (right before they expire)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only downside I can see from the new &lt;code&gt;bncert&lt;/code&gt; tool is that it does not support a wildcard certificate (which would work with any subdomain the way that &lt;code&gt;certbot&lt;/code&gt; did), so if you’re planning on using multiple subdomains, it may be worth first planning out which domains you intend to use prior to using &lt;code&gt;bncert&lt;/code&gt; (or to continue with &lt;code&gt;certbot&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;If you’re using a recent Bitnami WordPress image, &lt;code&gt;bncert&lt;/code&gt; should already be present (and you can simply follow the instructions on &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-enabling-https-on-wordpress&quot;&gt;the Lightsail documentation page&lt;/a&gt; and skip Step 4) — if not, you can either install the tool (Step 4 of the instructions) or (and this is the path I’d recommend) create a new Lightsail image and migrate your WordPress blog over. It’s a bit of a pain but it’s worth the effort as if you’ve been using an older version of Bitnami WordPress, there’s a good chance you’re using an out of date PHP installation. For help, here is a guide I wrote to &lt;a href=&quot;http://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/&quot; title=&quot;http://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/&quot;&gt;how to move an old WordPress blog to a new WordPress setup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then the only remaining step is to change your WordPress Domain name in the wp-config.php file (so that your WordPress install thinks of itself as an https rather than an http domain). To do this, use the Lightsail command line interface and enter&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /opt/bitnami/wordpress/wp-config.php&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This opens up a text editor (&lt;code&gt;nano&lt;/code&gt;). Use the down key until you see a pair of lines that say:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;define(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;WP_SITEURL&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;http://&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; $_SERVER&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;[&amp;#39;HTTP_HOST&amp;#39;]&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;define(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;WP_HOME&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;http://&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; $_SERVER&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;[&amp;#39;HTTP_HOST&amp;#39;]&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;Code&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; language:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PHP&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; (php)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add an ‘s’ to the ‘http’ so that you end up with:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;define(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;WP_SITEURL&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;https://&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; $_SERVER&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;[&amp;#39;HTTP_HOST&amp;#39;]&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;define(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;&amp;#39;WP_HOME&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;https://&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; $_SERVER&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;[&amp;#39;HTTP_HOST&amp;#39;]&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; .&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;Code&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; language:&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; PHP&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; (php)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hit Ctrl+X to exit and when it prompts you to “Save modified buffer?”, tap “Y” (for yes) and you are done.&lt;/p&gt;</content:encoded><category>AWS</category><category>Bitnami</category><category>blogwork</category><category>HTTPS</category><category>Let&apos;s Encrypt</category><category>Lightsail</category></item><item><title>Is Gamestop a Win for the Little Guy?</title><link>https://benjamintseng.com/2021/01/is-gamestop-a-win-for-the-little-guy/</link><guid isPermaLink="true">https://benjamintseng.com/2021/01/is-gamestop-a-win-for-the-little-guy/</guid><description>Is Gamestop a Win for the Little Guy?</description><pubDate>Thu, 28 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’ve been exposed to any financial news in the last few days, you’ll have heard of &lt;a href=&quot;https://www.gamestop.com/&quot;&gt;Gamestop&lt;/a&gt;, the mostly brick and mortar video gaming retailer who’s stock has been caught between many retail investors on &lt;a href=&quot;https://www.reddit.com/r/wallstreetbets&quot;&gt;the subreddit r/WallstreetBets&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Melvin_capital&quot;&gt;hedge fund Melvin Capital&lt;/a&gt; which had been actively betting against the company. The resulting &lt;a href=&quot;https://en.wikipedia.org/wiki/Short_squeeze&quot;&gt;short squeeze&lt;/a&gt; (where a rising stock price forces investors betting against a company to buy shares to cover their own potential losses — which itself can push the stock price even higher) has been amazing to behold with the worth of Gamestop shares increasing over 10-fold in a matter of months.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-87-1024x907.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://finance.yahoo.com/chart/GME#eyJpbnRlcnZhbCI6ImRheSIsInBlcmlvZGljaXR5IjoxLCJjYW5kbGVXaWR0aCI6Ni4wMDU5ODgwMjM5NTIwOTYsImZsaXBwZWQiOmZhbHNlLCJ2b2x1bWVVbmRlcmxheSI6dHJ1ZSwiYWRqIjp0cnVlLCJjcm9zc2hhaXIiOnRydWUsImNoYXJ0VHlwZSI6ImxpbmUiLCJleHRlbmRlZCI6ZmFsc2UsIm1hcmtldFNlc3Npb25zIjp7fSwiYWdncmVnYXRpb25UeXBlIjoib2hsYyIsImNoYXJ0U2NhbGUiOiJsaW5lYXIiLCJwYW5lbHMiOnsiY2hhcnQiOnsicGVyY2VudCI6MSwiZGlzcGxheSI6IkdNRSIsImNoYXJ0TmFtZSI6ImNoYXJ0IiwiaW5kZXgiOjAsInlBeGlzIjp7Im5hbWUiOiJjaGFydCIsInBvc2l0aW9uIjpudWxsfSwieWF4aXNMSFMiOltdLCJ5YXhpc1JIUyI6WyJjaGFydCIsIuKAjHZvbCB1bmRy4oCMIl19fSwibGluZVdpZHRoIjoyLCJzdHJpcGVkQmFja2dyb3VuZCI6ZmFsc2UsImV2ZW50cyI6dHJ1ZSwiY29sb3IiOiIjMDA4MWYyIiwic3RyaXBlZEJhY2tncm91ZCI6dHJ1ZSwicmFuZ2UiOnsicGVyaW9kaWNpdHkiOnsiaW50ZXJ2YWwiOiJkYXkiLCJwZXJpb2QiOjF9LCJkdExlZnQiOiIyMDIwLTA2LTAxVDA3OjAwOjAwLjAwMFoiLCJkdFJpZ2h0IjoiMjAyMS0wMS0yN1QwODowMDowMC4wMDBaIiwicGFkZGluZyI6MH0sImV2ZW50TWFwIjp7ImNvcnBvcmF0ZSI6W10sInNpZ0RldiI6e319LCJjdXN0b21SYW5nZSI6eyJzdGFydCI6MTU5MDk5NDgwMDAwMCwiZW5kIjoxNjExNjQ4MDAwMDAwfSwic3ltYm9scyI6W3sic3ltYm9sIjoiR01FIiwic3ltYm9sT2JqZWN0Ijp7InN5bWJvbCI6IkdNRSIsInF1b3RlVHlwZSI6IkVRVUlUWSIsImV4Y2hhbmdlVGltZVpvbmUiOiJBbWVyaWNhL05ld19Zb3JrIn0sInBlcmlvZGljaXR5IjoxLCJpbnRlcnZhbCI6ImRheSJ9XSwic3R1ZGllcyI6eyLigIx2b2wgdW5kcuKAjCI6eyJ0eXBlIjoidm9sIHVuZHIiLCJpbnB1dHMiOnsiaWQiOiLigIx2b2wgdW5kcuKAjCIsImRpc3BsYXkiOiLigIx2b2wgdW5kcuKAjCJ9LCJvdXRwdXRzIjp7IlVwIFZvbHVtZSI6IiMwMGIwNjEiLCJEb3duIFZvbHVtZSI6IiNmZjMzM2EifSwicGFuZWwiOiJjaGFydCIsInBhcmFtZXRlcnMiOnsid2lkdGhGYWN0b3IiOjAuNDUsImNoYXJ0TmFtZSI6ImNoYXJ0IiwicGFuZWxOYW1lIjoiY2hhcnQifX19fQ--&quot;&gt;Yahoo Finance (pulled 28 Jan 2021)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While it’s hard not to get swept up in the idea of “the little guy winning one over on a hedge fund”, the narrative that this is Main Street winning over Wall Street is overblown.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Chasing the big short 💎✊🏼 – &lt;a href=&quot;https://twitter.com/hashtag/GME?src=hash&amp;ref_src=twsrc%5Etfw&quot;&gt;#GME&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/HoldTheLine?src=hash&amp;ref_src=twsrc%5Etfw&quot;&gt;#HoldTheLine&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/wallstreetbets?src=hash&amp;ref_src=twsrc%5Etfw&quot;&gt;#wallstreetbets&lt;/a&gt; &lt;a href=&quot;https://t.co/E2J2IxE4GQ&quot;&gt;pic.twitter.com/E2J2IxE4GQ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— Synon (@nonysv) &lt;a href=&quot;https://twitter.com/nonysv/status/1354613162071437313?ref_src=twsrc%5Etfw&quot;&gt;January 28, 2021&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A brief sampling of &lt;a href=&quot;https://twitter.com/hashtag/HoldTheLine&quot;&gt;#HoldTheLine&lt;/a&gt; on Twitter&lt;/p&gt;
&lt;p&gt;First, speaking practically, it’s hard to argue that giving one hedge fund a black eye by making &lt;a href=&quot;https://news.gamestop.com/corporate-governance/highlights&quot;&gt;Gamestop executives &amp;amp; directors&lt;/a&gt; and &lt;a href=&quot;https://news.gamestop.com/stock-information/institutional-ownership&quot;&gt;large investment funds holding $100M’s of Gamestop prior to the increase&lt;/a&gt; wealthier is anyone winning anything over on Wall Street. And that’s not even accounting for the fact that hedge funds are usually managing a significant amount of money on behalf of pension funds and foundation / university endowments.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/realmeme.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Winning one over on Wall Street? &lt;a href=&quot;https://imgflip.com/memegenerator/Running-Away-Balloon&quot;&gt;Created using Imgflip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Second, while the paper value of recent investments in Gamestop has clearly jumped through the roof, what these investors will actually “win” is unclear. Even holding aside &lt;a href=&quot;https://www.bloomberg.com/news/articles/2021-01-26/tax-for-trading-stocks-robinhood-investors-confused-over-how-much-they-must-pay&quot;&gt;short-term capital gains taxes that many retail investors are unclear on&lt;/a&gt;, the reality is that, to make money on an investment, &lt;strong&gt;you not only have to buy low, you have to successfully sell high&lt;/strong&gt;. By definition, any company experiencing a short-squeeze is volume-limited — meaning that it’s the lack of sellers that is causing the increase in price (the only way to get someone to sell is to offer them a higher price). If the stock price changes direction, it could trigger a flood of investors flocking to sell to try to hold on to their gains which can create the opposite problem: too many people trying to sell relative to people trying to buy which can cause the price to crater.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/buyhighselllow.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Buy high sell low? &lt;a href=&quot;https://imgflip.com/memegenerator/Buff-Doge-vs-Cheems&quot;&gt;Created using Imgflip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regulatory and legal experts are better suited to weigh in on whether or not this constitutes market manipulation that needs to be regulated. For whatever it’s worth, I personally feel that Redditors egging each other on is no different than an institutional investor hyping their investments on cable TV.&lt;/p&gt;
&lt;p&gt;But &lt;strong&gt;what is not in doubt is that these sorts of trades are extremely risky for all parties involved&lt;/strong&gt; — whether you’re betting against a popular stock or trying to &lt;a href=&quot;https://twitter.com/hashtag/HoldTheLine&quot;&gt;“hold the line”&lt;/a&gt; on a short-squeeze. For that reason, I’m sympathetic to &lt;a href=&quot;https://blog.robinhood.com/news/2021/1/28/keeping-customers-informed-through-market-volatility&quot;&gt;the brokerages which are limiting investor activity in some of these speculative tickers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While many retail investors view these restrictions as a move by Wall Street to screw the little guy, there’s a practical reality here that the brokerages are probably fearful of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lawsuits from investors, some of whom will eventually lose quite a bit of money here&lt;/li&gt;
&lt;li&gt;SEC actions and punishments due to eventual outcry from investors losing money&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the third reason I’m worried the Gamestop story will ultimately be a bad thing for Main Street. If the resulting lawsuits and/or regulatory actions cause brokerages to put more restrictions on investors, this could put additional friction on investors in terms of how they can &lt;a href=&quot;http://benjamintseng.com/2020/08/visualizing-how-market-volatility-impacts-risk-and-returns/&quot;&gt;participate in long-term wealth creation&lt;/a&gt;, something &lt;a href=&quot;https://www.nerdwallet.com/article/investing/the-average-retirement-savings-by-age-and-why-you-need-more&quot;&gt;more households need given the paltry state of retirement savings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I love stories of hedge funds facing the consequences of the risks they take on — but the idea that this is a clear win for Main Street is suspect (as is the idea that the right answer for most retail investors is to &lt;a href=&quot;https://en.wikipedia.org/wiki/Hodl&quot;&gt;HODL&lt;/a&gt; through thick and through thin).&lt;/p&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>finance</category><category>Gamestop</category><category>Melvin Capital</category><category>r/wallstreetbets</category><category>SEC</category><category>short squeeze</category></item><item><title>Mea Culpa</title><link>https://benjamintseng.com/2021/01/mea-culpa/</link><guid isPermaLink="true">https://benjamintseng.com/2021/01/mea-culpa/</guid><description>Mea Culpa</description><pubDate>Sun, 17 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://www.merriam-webster.com/dictionary/mea%20culpa&quot;&gt;Mea culpa&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I’ve been a big fan of &lt;a href=&quot;http://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/&quot;&gt;moving my personal page over to AWS Lightsail&lt;/a&gt;. But, if I had one complaint, it’s the dangerous combination of (1) their pre-packaged WordPress image being hard to upgrade software on and (2) the training-wheel-lacking full root access that Lightsail gives to its customers. That combination led me to make some regrettable mistakes yesterday which resulted in &lt;strong&gt;the complete loss of my old blog posts and pages&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s the most painful when you know your problems are your own fault. Thankfully, with the very same AWS Lightsail, it’s easy enough to start up a new WordPress instance. With the help of site visit and search engine analytics, I’ve prioritized the most popular posts and pages to resurrect using &lt;a href=&quot;https://support.google.com/websearch/answer/1687222?hl=en&quot;&gt;Google’s cache&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, that process led to my email subscribers receiving way too many emails from me as I recreated each post. For that, I’m sorry — &lt;em&gt;mea culpa&lt;/em&gt; — it shouldn’t happen again.&lt;/p&gt;
&lt;p&gt;I’ve come to terms with the fact that I’ve lost the majority of the 10+ years of content I’ve created. But, I’ve now learned the value of systematically backing up things (especially my AWS Lightsail instance), and hopefully I’ll write some good content in the future to make up for what was lost.&lt;/p&gt;</content:encoded><category>AWS</category><category>blogwork</category><category>Google</category><category>Lightsail</category><category>Wordpress</category></item><item><title>Visualizing How Market Volatility Impacts Risk and Returns</title><link>https://benjamintseng.com/2020/08/visualizing-how-market-volatility-impacts-risk-and-returns/</link><guid isPermaLink="true">https://benjamintseng.com/2020/08/visualizing-how-market-volatility-impacts-risk-and-returns/</guid><description>Visualizing How Market Volatility Impacts Risk and Returns</description><pubDate>Wed, 19 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-60-1024x466.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;S&amp;amp;P500 Performance for 2020 (&lt;a href=&quot;https://yhoo.it/2XKMdSz&quot;&gt;Yahoo Finance&lt;/a&gt;), pulled Jan 17, 2021&lt;/p&gt;
&lt;p&gt;2020 has seen the &lt;a href=&quot;https://ofdollarsanddata.com/the-craziest-month-in-stock-market-history/&quot;&gt;greatest market volatility in history for American stocks&lt;/a&gt;. The &lt;a href=&quot;https://yhoo.it/2XKMdSz&quot;&gt;roller-coaster ride investors have experienced over the last 6 months&lt;/a&gt; included a steep ~33% single-month drop followed by a four-month bull market run taking the S&amp;amp;P500 back roughly to where it started.&lt;/p&gt;
&lt;p&gt;While not usually so dramatic, volatility is a fact of life for investors. In researching how to create a long-term investment strategy that can cope with volatility, I found a lot of the writing on the subject unsatisfying for two reasons:&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;much of the writing on investment approaches leans heavily on historical comparisons (or “backtesting”)&lt;/strong&gt;. While it’s important to understand how a particular approach would play out in the past, it is dangerous to assume that volatility will always play out in the same way. For example, take a series of coin tosses. It’s possible that during the most recent 100 flips, the coin came up heads 10 times in a row. Relying mainly on backtesting this particular sequence of coin tosses could lead to conclusions that rely on a long sequences of heads always coming up. In a similar way, investment strategies that lean heavily on backtesting recent history may be well-situated for handling the 2008 crash and the 2010-2019 bull market but fall apart if the next boom or bust happens in a different way.&lt;/p&gt;
&lt;p&gt;Second, &lt;strong&gt;much of the analysis on investment allocation is overly focused on &lt;em&gt;arithmetic&lt;/em&gt; mean returns rather than &lt;em&gt;geometric&lt;/em&gt; means&lt;/strong&gt;. This sounds like a minor technical distinction, but to illustrate why it’s significant, imagine that you’ve invested $1,000 in a stock that doubled in the first year (annual return: 100%) and then halved the following year (annual return: -50%). Simple math shows that, since you’re back where you started, you experienced a return over those two years (in this case, the &lt;em&gt;geometric mean return&lt;/em&gt;) of 0%. The &lt;em&gt;arithmetic mean&lt;/em&gt;, on the other hand, comes back with a market-beating 25% return [1/2 x (100% + -50%)]! One of these numbers suggests this is an amazing investment and the other correctly calls it as a terrible one! Yet despite &lt;a href=&quot;https://en.wikipedia.org/wiki/Inequality_of_arithmetic_and_geometric_means&quot;&gt;the fact that the arithmetic mean always overestimates the (geometric mean) return that an investor experiences&lt;/a&gt;, much of the practice of asset allocation and portfolio theory is still focused on arithmetic mean returns because they are easier to calculate and build precise analytical solutions around.&lt;/p&gt;
&lt;h2 id=&quot;visualizing-a-40-year-investment-in-the-sp500&quot;&gt;Visualizing a 40-Year Investment in the S&amp;amp;P500&lt;/h2&gt;
&lt;p&gt;To overcome these limitations, I used &lt;a href=&quot;https://en.wikipedia.org/wiki/Monte_Carlo_method&quot;&gt;Monte Carlo simulations&lt;/a&gt; to visualize what volatility means for investment returns and risk. For simplicity, I assumed an &lt;strong&gt;investment in the S&amp;amp;P500 would see annual returns that look like a normal distribution based on how the S&amp;amp;P500 has performed &lt;a href=&quot;http://pages.stern.nyu.edu/~adamodar/New_Home_Page/datafile/histretSP.html&quot;&gt;from 1928 – 2019&lt;/a&gt;&lt;/strong&gt;. I ran 100,000 simulations of 40 years of returns and looked at what sorts of (geometric mean) returns an investor would see.&lt;/p&gt;
&lt;p&gt;This first chart below is a heatmap showing the likelihood that an investor will earn a certain return in each year (the darker the shade of blue, the more simulations wound up with that geometric return in that year).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-61.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Density Map of 40-Year&lt;/strong&gt; &lt;strong&gt;Returns for Investment in S&amp;amp;P500&lt;/strong&gt;&lt;br/&gt;
Densities are log (base 10)-adjusted; Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns; Years go from 0-39 (rather than 1-40)&lt;/p&gt;
&lt;p&gt;This second chart below is a different view of the same data, calling out what the median return (the light blue-green line in the middle; where you have a 50-50 shot at doing better or worse) looks like. Going “outward” from the median line are lines representing the lower and upper bounds of the middle 50%, 70%, and 90% of returns.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-62.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Confidence Interval Map of 40-Year Return for Investment in S&amp;amp;P500&lt;/strong&gt;&lt;br/&gt;
(from outside to middle) 90%, 70%, and 50% confidence interval + median investment returns. Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns&lt;/p&gt;
&lt;p&gt;Finally, the third chart below captures the probability that an investment in the S&amp;amp;P500 over 40 years will result not in a loss (the darkest blue line at the top), will beat 5% (the second line), will beat 10% (the third line), and will beat 15% (the lightest blue line at the bottom) returns.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-63.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probability 40-Year Investment in S&amp;amp;P500 will Exceed 0%, 5%, 10%, and 15% Returns&lt;/strong&gt;&lt;br/&gt;
(from top to bottom/darkest to lightest) Probability that 40-year S&amp;amp;P500 returns simulation beat 0%, 5%, 10%, and 15% geometric mean return. Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns&lt;/p&gt;
&lt;p&gt;The charts are a nice visual representation of what uncertainty / volatility mean for an investor and show two things.&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;the level of uncertainty around what an investor will earn declines the longer they can go without touching the investment.&lt;/strong&gt; In the early years, there is a much greater spread in returns because of the high level of volatility in any given year’s stock market returns. From 1928 – 2019, stock markets saw returns ranging from a 53% increase to a 44% drop. Over time, however, &lt;a href=&quot;https://en.wikipedia.org/wiki/Reversion_to_the_mean&quot;&gt;reversion to the mean&lt;/a&gt; (a fancy way of saying a good or bad year is more likely to be followed by more normal looking years) narrows the variation an investor is likely to see. As a result, while the median return stays fairly constant over time (starting at ~11.6% in year 1 — in line with the historical arithmetic mean return of the market — but dropping slowly to ~10% by year 10 and to ~9.8% starting in year 30), the “spread” of returns narrows. In year 1, you would expect a return between -21% and 44% around 90% of the time. But by year 5, this narrows to -5% to 25%. By year 12, this narrows further to just above 0% to 19.4% (put another way, the middle 90% of returns does not include a loss). And at year 40, this narrows to 4.6% to 15%.&lt;/p&gt;
&lt;p&gt;Secondly, **the risk an investor faces depends on the return threshold they “need”.**As the probability chart shows, if the main concern is about losing money over the long haul, then the risk of that happening starts relatively low (~28% in year 1) and drops rapidly (~10% in year 7, ~1% in year 23). If the main concern is about getting at least a 5% return, this too drops from ~37% in year 1 to ~10% by year 28. However, if one needs to achieve a return greater than the median (~9.8%), then the probability gets worse over time and gets worse the greater the return threshold needed. To beat a 15% return, in year 1, there is a ~43% chance that this will happen. But this rapidly shrinks to ~20% by year 11, ~10% by year 24, and ~5% by year 40.&lt;/p&gt;
&lt;h2 id=&quot;the-impact-of-increasing-average-annual-return&quot;&gt;The Impact of Increasing Average Annual Return&lt;/h2&gt;
&lt;p&gt;These simulations are a useful way to explore how long-term returns vary. Let’s see what happens if we increase the (arithmetic) average annual return by 1% from the S&amp;amp;P500 historical average.&lt;/p&gt;
&lt;p&gt;As one might expect, the heatmap for returns (below) generally looks about the same:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-64.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Density Map of 40-Year&lt;/strong&gt; &lt;strong&gt;Returns for Higher Average Annual Return Investment&lt;/strong&gt;&lt;br/&gt;
Densities are log (base 10)-adjusted; Assumes an asset with normally distributed annual returns (clipped from -90% to +100%) based on 1928-2019 S&amp;amp;P500 annual returns but with 1% higher mean. Years go from 0-39 (rather than 1-40)&lt;/p&gt;
&lt;p&gt;Looking more closely at the contour lines and overlaying them with the contour lines of the original S&amp;amp;P500 distribution (below, green is the new, blue the old), it looks like all the lines have roughly the same shape and spread, but have just been shifted upward by ~1%.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-65.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Confidence Interval Map of 40-Year Return for Higher Average Return Investment (Green) vs. S&amp;amp;P500 (Blue)&lt;/strong&gt;&lt;br/&gt;
(from outside to middle/darkest to lightest) 90%, 50% confidence interval, and median investment returns for S&amp;amp;P500 (blue lines; assuming normal distribution clipped from -90% to +100% based on 1928-2019 annual returns) and hypothetical investment with identical variance but 1% higher mean (green lines)&lt;/p&gt;
&lt;p&gt;This is reflected in the shifts in the probability chart (below). The different levels of movement correspond to the impact an incremental 1% in returns makes to each scenario. For fairly low returns (i.e. the probability of a loss), the probability will not change much as it was low to begin with. Similarly, for fairly high returns (i.e., 15%), adding an extra 1% is unlikely to make you earn vastly above the median. On the other hand, for returns that are much closer to the median return, the extra 1% will have a much larger relative impact on an investment’s ability to beat those moderate return thresholds.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-66.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probability Higher Average Return Investment (Green) and S&amp;amp;P500 (Blue) will Exceed 0%, 5%, 10%, and 15% Returns&lt;/strong&gt;&lt;br/&gt;
(from top to bottom/darkest to lightest) Probability that 40-year S&amp;amp;P500 returns simulation beat 0%, 5%, 10%, and 15% geometric mean return. Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns. Higher average return investment is a hypothetical asset with identical variance but 1% higher mean&lt;/p&gt;
&lt;p&gt;Overall, there isn’t much of a surprise from increasing the mean: &lt;strong&gt;returns go up roughly in line with the change&lt;/strong&gt; and the probability that you beat different thresholds goes up overall but more so for moderate returns closer to the median than the extremes.&lt;/p&gt;
&lt;p&gt;What about volatility?&lt;/p&gt;
&lt;h2 id=&quot;the-impact-of-decreasing-volatility&quot;&gt;The Impact of Decreasing Volatility&lt;/h2&gt;
&lt;p&gt;Having completed the prior analysis, I expected that tweaking volatility (in the form of adjusting the variance of the distribution) would result in preserving the basic distribution shape and position but narrowing or expanding it’s “spread”. However, I was surprised to find that &lt;strong&gt;adjusting the volatility didn’t just impact the “spread” of the distribution, it impacted the median returns as well!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Below is the returns heatmap for an investment that has the same mean as the S&amp;amp;P500 from 1928-2019 but 2% lower variance. A quick comparison with the first heat/density map shows that, as expected, the overall shape looks similar but is clearly narrower.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-67.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Density Map of 40-Year&lt;/strong&gt; &lt;strong&gt;Returns for Low Volatility Investment&lt;/strong&gt;&lt;br/&gt;
Densities are log (base 10)-adjusted; Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns but with 2% lower variance. Years go from 0-39 (rather than 1-40)&lt;/p&gt;
&lt;p&gt;Looking more closely at the contour lines (below) of the new distribution (in red) and comparing with the original S&amp;amp;P500 distribution (in blue) reveals, however, that the difference is more than just in the “spread” of returns, but in their relative position as well! The red lines are all shifted upward and the upward shift seems to increase over time. It turns out a &lt;strong&gt;~2% decrease in variance appears to buy a 1% increase in the median return&lt;/strong&gt; and a 1.5% increase in the lower bound of the 50% confidence interval at year 40!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/lowvarvsnormconfintervals.png&quot; alt/&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/lowvarvsnormmedians.png&quot; alt/&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Confidence Interval Map of 40-Year Return for Low Volatility Investment (Red) vs. S&amp;amp;P500 (Blue)&lt;/strong&gt;&lt;br/&gt;
Left: (from outside to middle/darkest to lightest) 90%, 50% confidence interval, and median investment returns for S&amp;amp;P500 (blue lines; assuming normal distribution clipped from -90% to +100% based on 1928-2019 annual returns) and hypothetical investment with identical mean but 2% lower variance (red lines).&lt;br/&gt;
Right: Zoomed-in look just at the median lines and 50% confidence interval bounds&lt;/p&gt;
&lt;p&gt;The probability comparison (below) makes the impact of this clear. With lower volatility, not only is an investor better able to avoid a loss / beat a moderate 5% return (the first two red lines having been meaningfully shifted upwards from the first two blue lines), but by raising the median return, the probability of beating a median-like return (10%) gets better over time as well! The one area the lower volatility distribution under-performs the original is in the probability of beating a high return (15%). This too makes sense — because the hypothetical investment experiences lower volatility, it becomes less likely to get the string of high returns needed to consistently beat the median over the long term.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-68.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probability Low Volatility Investment (Red) and S&amp;amp;P500 (Blue) will Exceed 0%, 5%, 10%, and 15% Returns&lt;/strong&gt;&lt;br/&gt;
(from top to bottom/darkest to lightest) Probability that 40-year S&amp;amp;P500 returns simulation beat 0%, 5%, 10%, and 15% geometric mean return. Assumes S&amp;amp;P500 returns are normally distributed (clipped from -90% to +100%) based on 1928-2019 annual returns. Low volatility investment is a hypothetical asset with identical mean but 2% lower variance&lt;/p&gt;
&lt;h2 id=&quot;the-risk-reward-tradeoff&quot;&gt;The Risk-Reward Tradeoff&lt;/h2&gt;
&lt;p&gt;Unfortunately, it’s not easy to find a “S&amp;amp;P500 but less volatile” or a “S&amp;amp;P500 but higher return”. In general, higher returns tend to go with greater volatility and vice versa.&lt;/p&gt;
&lt;p&gt;While the exact nature of the tradeoff will depend on the specific numbers, to see what happens when you combine the two effects, I charted out the contours and probability curves for two distributions with roughly the same median return (below): one investment with a higher return (+1%) and higher volatility (+2% variance) than the S&amp;amp;P500 and another with a lower return (-1%) and lower volatility (-2% variance) than the S&amp;amp;P500:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/highmeanvarvslowmeanvarconfintervals.png&quot; alt/&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/highmeanvarvslowmeanvarmedians.png&quot; alt/&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Confidence Interval Map for Low Volatility/Low Return (Purple) vs. High Volatility/High Return (Gray)&lt;/strong&gt;&lt;br/&gt;
Left: (from outside to middle/darkest to lightest) 90%, 50% confidence interval, and median investment returns for hypothetical investment with 1% higher mean and 2% higher variance than S&amp;amp;P500 (gray) and one with 1% lower mean and 2% lower variance than S&amp;amp;P500 (purple). Both returns assume normal distribution clipped from -90% to +100% with mean/variance based on 1928-2019 annual returns for S&amp;amp;P500.&lt;br/&gt;
Right: Zoomed-in look just at the median lines and 50% confidence interval bounds&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-69.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probability Low Volatility/Low Return (Purple) vs. High Volatility/High Return (Gray)&lt;/strong&gt; Exceed 0%, 5%, 10%, and 15% Returns&lt;br/&gt;
(from top to bottom/darkest to lightest) Probability that 40-year returns simulation for hypothetical investment with 1% higher mean and 2% higher variance than S&amp;amp;P500 (gray) and one with 1% lower mean and 2% lower variance than S&amp;amp;P500 (purple) beat 0%, 5%, 10%, and 15% geometric mean return. Both returns assume normal distribution clipped from -90% to +100% with mean/variance based on 1928-2019 annual returns for S&amp;amp;P500.&lt;/p&gt;
&lt;p&gt;The results show how two different ways of targeting the same long-run median return compare. The lower volatility investment, despite the lower (arithmetic) average annual return, still sees a much improved chance of avoiding loss and clearing the 5% return threshold. On the other hand, the higher return investment has a distinct advantage at outperforming the median over the long term and even provides a consistent advantage in beating the 10% return threshold close to the median.&lt;/p&gt;
&lt;h2 id=&quot;takeaways&quot;&gt;Takeaways&lt;/h2&gt;
&lt;p&gt;The simulations above made it easy to profile unconventional metrics (geometric mean returns and the probability to beat different threshold returns) across time without doing a massive amount of hairy, symbolic math. By charting out the results, they also helped provide a richer, visual understanding of investment risk that goes beyond the overly simple and widely held belief that “volatility is the same thing as risk”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;**Time horizon matters as uncertainty in returns decreases with time:**As the charts above showed, “reversion to the mean” reduces the uncertainty (or “spread”) in returns over time. What this means is that the same level of volatility can be viewed wildly differently by two different investors with two different time horizons. An investor who needs the money in 2 years could find one level of variance unbearably bumpy while the investor saving for a goal 20 years away may see it very differently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The investment return “needed” is key to assessing risk&lt;/strong&gt;: An investor who needs to avoid a loss at all costs should have very different preferences and assessments of risk level than an investor who must generate higher returns in order to retire comfortably, even at the same time. The first investor should prioritize lower volatility investments and longer holding periods, while the latter should prioritize higher volatility investments and shorter holding periods. It’s not just a question of personal preferences about gambling &amp;amp; risk, as much of the discussion on risk tolerance seems to suggest, because the same level of volatility should rationally be viewed differently by different investors with different financial needs.&lt;/li&gt;
&lt;li&gt;**Volatility impacts long-run returns:**Higher volatility decreases long-term median returns, and lower volatility increases long-term returns. From some of my own testing, this seems to happen at roughly a 2:1 ratio (where a 2% increase in variance decreases median returns by 1% and vice versa — at least for values of return / variance near the historical values for S&amp;amp;P500). The result is that understanding volatility is key to formulating the right investment approach, and it creates an interesting framework with which to evaluate how much to hold of lower risk/”riskless” things like cash and government bonds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h2&gt;
&lt;p&gt;Having demonstrated how simulations can be applied to get a visual understanding of investment decisions and returns, I want to apply this analysis to other problems. I’d love to hear requests for other questions of interest, but for now, I plan to look into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Diversification&lt;/li&gt;
&lt;li&gt;Rebalancing&lt;/li&gt;
&lt;li&gt;Withdrawal levels&lt;/li&gt;
&lt;li&gt;Dollar cost averaging&lt;/li&gt;
&lt;li&gt;Asset allocation&lt;/li&gt;
&lt;li&gt;Alternative investment return distributions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>arithmetic mean</category><category>confidence interval</category><category>contour map</category><category>finance</category><category>geometric mean</category><category>heatmap</category><category>investing</category><category>Monte Carlo simulations</category><category>reversion to the mean</category><category>S&amp;amp;P500</category><category>stocks</category><category>variance</category><category>volatility</category></item><item><title>What I’ve Changed My Mind on Over the 2010s</title><link>https://benjamintseng.com/2020/01/what-ive-changed-my-mind-on-over-the-2010s/</link><guid isPermaLink="true">https://benjamintseng.com/2020/01/what-ive-changed-my-mind-on-over-the-2010s/</guid><description>What I’ve Changed My Mind on Over the 2010s</description><pubDate>Wed, 01 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-10.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;It me. (&lt;a href=&quot;https://theycantalk.com/post/189946804365/reflect&quot;&gt;Source: They Can Talk&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I’ve been reading a lot of year-end/decade-end reflections (as one does this time of year) — and while a part of me wanted to #humblebrag about how I got a 🏠/💍/👶🏻 this decade 😇 — I thought it would be more interesting &amp;amp; profound to instead call out 10 worldviews &amp;amp; beliefs I had going into the 2010s that I no longer hold.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Sales is an unimportant skill relative to hard work / being smart&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
As a stereotypical “good Asian kid” 🤓, I was taught to focus on nailing the task. I still think that focus is important early in one’s life &amp;amp; career, but this decade has made me realize that everyone, whether they know it or not, has to sell — you sell to employers to hire you, academics/nonprofits sell to attract donors and grant funding, even institutional investors have to sell to their investors/limited partners. Its a skill at least as important (if not more so).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Marriage is about finding your soul-mate and living happily ever after&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
Having been married for slightly over half the decade, I’ve now come to believe that marriage is less about finding the perfect soul-mate (the “Hollywood version”) as it is about finding a life partner who you can actively choose to celebrate (despite and including their flaws, mistakes, and baggage). Its not that passionate love is unimportant, but its hard to rely on that alone to make a lifelong partnership work. I now believe that really boring-sounding things like how you make #adulting decisions and compatibility of communication style matter a lot more than things usually celebrated in fiction like the wedding planning, first dates, how nice your vacations together are, whether you can finish each other’s sentences, etc.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Industrial policy doesn’t work&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
I tend to be a big skeptic of big government policy — both because of unintended consequences and the risks of politicians picking winners. But, a decade of studying (and working with companies who operate in) East Asian economies and watching how subsidies and economies of scale have made Asia the heart of much of advanced manufacturing have forced me to reconsider. Its not that the negatives don’t happen (there are many examples of China screwing things up with heavy-handed policy) but its hard to seriously think about how the world works without recognizing the role that industrial policy played. For more on how land management and industrial policies impacted economic development in different Asian countries, check out Joe Studwell’s book &lt;em&gt;&lt;a href=&quot;https://www.amazon.com/How-Asia-Works-Joe-Studwell/dp/0802121322/&quot;&gt;How Asia Works&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Obesity &amp;amp; weight loss are simple — its just calories in &amp;amp; calories out&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
From a pure physics perspective, weight gain is a “simple” thermodynamic equation of “calories in minus calories out”. But in working with companies focused on dealing with prediabetes/obesity, I’ve come to appreciate that this “logic” not only ignores the economic and social factors that make obesity a public health problem, it also overlooks that different kinds of foods drive different physiological responses. As an example that just begins to scratch the surface, one very well-controlled study (sadly, a rarity in the field) &lt;a href=&quot;https://www.cell.com/cell-metabolism/fulltext/S1550-4131(19)30248-7&quot;&gt;published in July&lt;/a&gt; showed that, even after controlling for exercise and calories, carbs, fat, fiber, and other nutrients present in a meal, diets consisting of processed foods resulted in greater weight-gain than a diet consisting of unprocessed foods&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Revering luminaries &amp;amp; leaders is a good thing&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
Its very natural to be so compelled by an idea / movement that you find yourself idolizing the people spearheading it. The media feeds into this with popular memoirs &amp;amp; biographies and numerous articles about how you can think/be/act more like [Steve Jobs/Jeff Bezos/Warren Buffett/Barack Obama/etc]. But, over the past decade, I’ve come to feel that this sort of reverence leads to a pernicious laziness of thought. I can admire Steve Jobs for his brilliance in product design but do I want to copy &lt;a href=&quot;https://www.businessinsider.com/steve-jobs-jerk-2011-10&quot;&gt;his approach to management&lt;/a&gt; or &lt;a href=&quot;https://www.forbes.com/sites/alicegwalton/2011/10/24/steve-jobs-cancer-treatment-regrets/&quot;&gt;his use of alternative medicine to treat his cancer&lt;/a&gt; or condoning &lt;a href=&quot;https://www.theguardian.com/global/2018/sep/01/daughter-steve-jobs-denied-lisa-brennan-jobs&quot;&gt;how he treated his illegitimate daughter&lt;/a&gt;. I think its far better to appreciate an idea and the work of the key people behind it than to equate the piece of work with the person and get sucked in to that cult of personality.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Startups are great place for everyone&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
Call it being sucked into the Silicon valley ethos but for a long time I believed that startups were a great place for everyone to build a career: high speed path to learning &amp;amp; responsibility, ability to network with other folks, favorable venture funding, one of the only paths to getting stock in rapidly growing companies, low job seeking risk (since there’s an expectation that startups often fail or pivot). Several years spent working in VC and startups later, and, while I still agree with my list above, I’ve come to believe that startups are really not a great place for most people. The risk-reward is generally not great for all but the earliest of employees and the most successful of companies, and the “startups are great for learning” Kool-aid is oftentimes used to &lt;a href=&quot;https://www.theverge.com/2019/12/5/20995453/away-luggage-ceo-steph-korey-toxic-work-environment-travel-inclusion&quot;&gt;justify poor management and work practices&lt;/a&gt;. I still think its a great place for some (i.e. people who can tolerate more risk [b/c of personal wealth or a spouse with a stable high-paying job], who are knowingly optimizing for learning &amp;amp; responsibility, or who are true believers in a startup’s mission), but I frankly think most people don’t fit the bill.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Microaggressions are just people being overly sensitive&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
I’ve been blessed at having only rarely faced overt racism (telling me to go back to China 🙄 / or that I don’t belong in this country). It’s a product of both where I’ve spent most of my life (in urban areas on the coasts) and my career/socioeconomic status (it’s not great to be overtly racist to a VC you’re trying to raise money from). But, having spent some dedicated time outside of those coastal areas this past decade and speaking with minorities who’ve lived there, I’ve become exposed to and more aware of &lt;a href=&quot;https://en.wikipedia.org/wiki/Microaggression&quot;&gt;“microaggressions”&lt;/a&gt;, forms of non-overt prejudice that are generally perpetrated without ill intent: questions like ‘so where are you really from?’ or comments like ‘you speak English really well!’. I once believed people complaining about these were simply being overly sensitive, but I’ve since become an active convert to the idea that, while these are certainly nowhere near as awful as overt hate crimes / racism, they are their own form of systematic prejudice which can, over time, grate and eat away at your sense of self-worth.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;The Western model (liberal democracy, free markets, global institutions) will reign unchallenged as a model for prosperity&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
I once believed that the Western model of (relatively) liberal democracy, (relatively) free markets, and US/Europe-led global institutions was the only model of prosperity that would reign falling the collapse of the Soviet Union. While I probably wouldn’t have gone as far as &lt;a href=&quot;https://en.wikipedia.org/wiki/The_End_of_History_and_the_Last_Man&quot;&gt;Fukuyama did in proclaiming “the end of history”&lt;/a&gt;, I believed that the world was going to see authoritarian regimes increasingly globalize and embrace Western institutions. What I did not expect was the simultaneous rise of different models of success by countries like China and Saudi Arabia (who, frighteningly, now serve as models for still other countries to embrace), as well as a lasting backlash within the Western countries themselves (i.e. the rise of Trump, Brexit, “anti-globalism”, etc). This has fractured traditional political divides (hence the soul-searching that both major parties are undergoing in the US and the UK) and the election of illiberal populists in places like Mexico, Brazil, and Europe.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Strategy trumps execution&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
As a cerebral guy who spent the first years of his career in the last part of the 2000s as a strategy consultant, it shouldn’t be a surprise that much of my focus was on formulating smart business strategy. But having spent much of this decade focused on startups as well as having seen large companies like Apple, Amazon, and Netflix brilliantly out-execute companies with better ‘strategic positioning’ (Nokia, Blackberry, Walmart, big media), I’ve come around to a different understanding of how the two balance each other.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;We need to invent radically new solutions to solve the climate crisis&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;
Its going to be hard to do this one justice in this limited space — especially since I net out here very differently &lt;a href=&quot;https://www.washingtonpost.com/news/energy-environment/wp/2016/02/23/bill-gates-we-need-a-energy-miracle-to-prevent-catastrophic-climate-change/&quot;&gt;from Bill Gates&lt;/a&gt; — but going into this decade, I never would have expected that &lt;a href=&quot;https://insideclimatenews.org/news/25032019/coal-energy-costs-analysis-wind-solar-power-cheaper-ohio-valley-southeast-colorado&quot;&gt;the cost of &lt;em&gt;new&lt;/em&gt; solar or wind energy facilities could be cheaper than the cost of operating an existing coal plant&lt;/a&gt;. I never thought that &lt;a href=&quot;https://about.bnef.com/blog/behind-scenes-take-lithium-ion-battery-prices/&quot;&gt;lithium batteries&lt;/a&gt; or &lt;a href=&quot;https://thinkprogress.org/5-charts-that-illustrate-the-remarkable-led-lighting-revolution-83ecb6c1f472/&quot;&gt;LEDs&lt;/a&gt; would get as cheap or as good as they are today (with signs that this progress will continue) or that &lt;a href=&quot;https://www.cnbc.com/2019/09/14/beyond-meat-stock-how-the-alternative-meat-company-surged-500-percent.html&quot;&gt;the hottest IPO of the year would be an alternative food technology company (Beyond Meat)&lt;/a&gt; which will play a key role in helping us mitigate food/animal-related emissions. Despite the challenges of being a cleantech investor for much of the decade, its been a surprising bright spot to see how much pure smart capital and market forces have pushed many of the technologies we need. I still think we will need new policies and a huge amount of political willpower — I’d also like to see more progress made on long-duration energy storage, carbon capture, and industrial — but whereas I once believed that we’d need radically new energy technologies to thwart the worst of climate change, I am now much more of an optimist here than I was when the decade started.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here’s to more worldview shifts in the coming decade!&lt;/p&gt;</content:encoded><category>Bill Gates</category><category>cleantech</category><category>execution</category><category>industrial policy</category><category>marriage</category><category>microaggression</category><category>obesity</category><category>sales</category><category>startups</category><category>strategy</category><category>weight loss</category></item><item><title>Calculating the Financial Returns to College</title><link>https://benjamintseng.com/2019/05/calculating-the-financial-returns-to-college/</link><guid isPermaLink="true">https://benjamintseng.com/2019/05/calculating-the-financial-returns-to-college/</guid><description>Calculating the Financial Returns to College</description><pubDate>Mon, 13 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Despite the recent spotlight on &lt;a href=&quot;https://en.wikipedia.org/wiki/Student_loans_in_the_United_States&quot;&gt;the staggering $1.5 trillion in student debt that 44 million Americans owe in 2019&lt;/a&gt;, there has been surprisingly little discussion on &lt;strong&gt;how to measure the value of a college education&lt;/strong&gt; relative to its rapidly growing price tag (which is the reason so many take on debt to pay for it).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-53.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://money.usnews.com/money/personal-finance/articles/ways-to-save-for-your-childs-college-education&quot;&gt;US News&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While it’s impossible to quantify all the intangibles of a college education, the tools of finance offers a practical, quantitative way to look at the tangible costs and benefits which can shed light on (1) whether to go to college / which college to go to, (2) whether taking on debt to pay for college is a wise choice, and (3) how best to design policies around student debt.&lt;/p&gt;
&lt;p&gt;The below briefly walks through how finance would view the value of a college education and the soundness of taking on debt to pay for it and how it can help guide students / families thinking about applying and paying for colleges and, surprisingly, how &lt;strong&gt;there might actually be too little college debt&lt;/strong&gt; and where policy should focus to address some of the issues around the burden of student debt.&lt;/p&gt;
&lt;h2 id=&quot;the-finance-view-college-as-an-investment&quot;&gt;The Finance View: College as an Investment&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Through the lens of finance, the choice to go to college looks like an investment decision&lt;/strong&gt; and can be evaluated in the same way that a company might evaluate investing in a new factory. Whereas a factory turns an upfront investment of construction and equipment into profits on production from the factory, the choice to go to college turns an upfront investment of cash tuition and missed salary while attending college into higher after-tax wages.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2007/06/communicating-answers/&quot;&gt;Finance has come up with different ways to measure returns for an investment&lt;/a&gt;, but one that is well-suited here is the &lt;strong&gt;internal rate of return (IRR)&lt;/strong&gt;. The IRR boils down all the aspects of an investment (i.e., timing and amount of costs vs. profits) into a single percentage that can be compared with the rates of return on another investment or with the interest rate on a loan. If an investment’s IRR is higher than the interest rate on a loan, then it makes sense to use the loan to finance the investment (i.e., borrowing at 5% to make 8%), as it suggests that, even if the debt payments are relatively onerous in the beginning, the gains from the investment will more than compensate for it.&lt;/p&gt;
&lt;p&gt;To gauge what these returns look like, I put together a financial model in Google Sheets which generated the figures and charts below (&lt;a href=&quot;https://www.investopedia.com/terms/i/irr.asp&quot;&gt;this article in Investopedia&lt;/a&gt; explains the math in greater detail). I used publicly available data around wages (from &lt;a href=&quot;https://www.census.gov/data/tables/time-series/demo/income-poverty/historical-income-people.html&quot;&gt;the 2017 Current Population Survey&lt;/a&gt;, &lt;a href=&quot;https://www.gobankingrates.com/making-money/jobs/starting-salary-best-colleges/&quot;&gt;GoBankingRate’s starting salaries by school&lt;/a&gt;, and &lt;a href=&quot;https://www.naceweb.org/about-us/press/2018/overall-starting-salary-for-class-of-2017-remains-flat/&quot;&gt;National Association of Colleges and Employer’s starting salaries by major&lt;/a&gt;), tax brackets (&lt;a href=&quot;https://www.cnbc.com/2019/02/07/how-to-find-out-what-tax-bracket-youre-in-under-the-new-tax-law.html&quot;&gt;using the 2018 income tax&lt;/a&gt;), and costs associated with college (from &lt;a href=&quot;https://trends.collegeboard.org/sites/default/files/2017-trends-in-college-pricing_0.pdf&quot;&gt;College Board’s statistics [PDF]&lt;/a&gt; and &lt;a href=&quot;https://college.harvard.edu/financial-aid/how-aid-works/cost-attendance&quot;&gt;the Harvard admissions website&lt;/a&gt;). To simplify the comparisons, I assumed a retirement age of 65, and that nobody gets a degree more advanced than a Bachelor’s.&lt;/p&gt;
&lt;div class=&quot;my-6 border border-[#BBF7D0] bg-[#F0FDF4] rounded-md p-4 sm:p-5 not-prose&quot;&gt; &lt;div class=&quot;flex items-start justify-between gap-4&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#166534] font-semibold mb-1 flex items-center gap-1.5&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5 text-[#166534]&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt; &lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H6v-2h3v2zm0-4H6v-2h3v2zm0-4H6V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Interactive Spreadsheet Model
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A] mb-1&quot;&gt; College Degree Financial Returns &amp;amp; IRR Model &lt;/h4&gt; &lt;p class=&quot;text-xs text-[#334155] mb-3&quot;&gt; Interactive discounted cash flow workbook modeling college as a capital investment: incorporates CPS wage distributions, age-matched wage trajectories, federal income tax brackets, tuition net costs, and loan amortization. &lt;/p&gt; &lt;div class=&quot;flex flex-wrap items-center gap-1.5 mb-1&quot;&gt; &lt;span class=&quot;text-[11px] font-mono-data text-[#15803D] font-medium&quot;&gt;Tabs:&lt;/span&gt; &lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Overview &amp;amp; Scenarios &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; CPS Wage Tables (2017) &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Net Tuition &amp;amp; Costs &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; IRR &amp;amp; Payback Sensitivity &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1Xa0_HyA0wBxNBV3ogVtZKmV_uz4pPI3nEPTWSDHTglU/edit#gid=0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-emerald text-xs font-mono-data font-semibold px-3 py-2 rounded-md whitespace-nowrap transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Model &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;p&gt;To give an example: if Sally Student can get a starting salary after college in line with the average salary of an 18-24 year old Bachelor’s degree-only holder ($47,551), would have earned the average salary of an 18-24 year old high school diploma-only holder had she not gone to college ($30,696), and expects wage growth similar to what age-matched cohorts saw from 1997-2017, then the IRR of a 4-year degree at a non-profit private school if Sally pays the average net (meaning after subtracting grants and tax credits) tuition, fees, room &amp;amp; board ($26,740/yr in 2017, or a 4-year cost of ~$106,960), &lt;strong&gt;the IRR of that investment in college would be 8.1%&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-to-benchmark-rates-of-return&quot;&gt;How to Benchmark Rates of Return&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-54-1024x460.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Is that a good or a bad return? Well, in my opinion, &lt;strong&gt;8.1% is pretty good&lt;/strong&gt;. Its much higher than what you’d expect from a &lt;a href=&quot;https://www.fdic.gov/regulations/resources/rates/&quot;&gt;typical savings account (~0.1%)&lt;/a&gt; or a CD or a Treasury Bond (as of this writing), and is also meaningfully higher than &lt;a href=&quot;https://studentaid.ed.gov/sa/types/loans/interest-rates&quot;&gt;the 5.05% rate charged for federal subsidized loans for 2018-2019 school year&lt;/a&gt; — this means borrowing to pay for college would be a sensible choice. That being said, its not higher than the stock market (&lt;a href=&quot;https://www.cnbc.com/2017/06/18/the-sp-500-has-already-met-its-average-return-for-a-full-year.html&quot;&gt;the S&amp;amp;P500 90-year total return is ~9.8%&lt;/a&gt;) or &lt;a href=&quot;https://files.pitchbook.com/website/files/pdf/PitchBook_2017_PE_VC_Fund_Performance_Report_as_of_4Q_2016.pdf&quot;&gt;the 20% that you’d need to get into the top quartile of Venture Capital/Private Equity funds [PDF]&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-drives-better--worse-rates-of-return&quot;&gt;What Drives Better / Worse Rates of Return&lt;/h2&gt;
&lt;p&gt;Playing out different scenarios shows which factors are important in determining returns. An obvious factor is the &lt;strong&gt;cost of college:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-55-1024x568.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;T&amp;amp;F: Tuition &amp;amp; Fees; TFR&amp;amp;B: Tuition, Fees, Room &amp;amp; Board&lt;/em&gt;&lt;br/&gt;
&lt;em&gt;List: Average List Price; Net: Average List Price Less Grants and Tax Benefits&lt;/em&gt;&lt;br/&gt;
&lt;em&gt;Blue: In-State Public; Green: Private Non-Profit; Red: Harvard&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As evident from the chart, there is huge difference between the rate of return Sally would get if she landed the same job but instead attended an in-state public school, did not have to pay for room &amp;amp; board, and got a typical level of financial aid (a stock-market-beating IRR of 11.1%) versus the world where she had to pay full list price at Harvard (IRR of 5.3%). In one case, attending college is a fantastic investment and Sally borrowing money to pay for it makes great sense (investors everywhere would love to borrow at ~5% and get ~11%). In the other, the decision to attend college is less straightforward (financially), and it would be very risky for Sally to borrow money at anything near subsidized rates to pay for it.&lt;/p&gt;
&lt;p&gt;Some other trends jump out from the chart. **Attending an in-state public university improves returns for the average college wage-earner by 1-2%**compared with attending private universities (comparing the blue and green bars). &lt;strong&gt;Getting an average amount of financial aid (paying net vs list) also seems to improve returns by 0.7-1% for public schools and 2% for private&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;As with college costs, the returns also understandably vary by &lt;strong&gt;starting salary&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-56-1024x566.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;There is a night and day difference between the returns Sally would see making $40K per year (~$10K more than an average high school diploma holder) versus if she made what the average Caltech graduate does post-graduation (4.6% vs 17.9%), let alone if she were to start with a six-figure salary (IRR of over 21%). If Sally is making six figures, she would be making better returns than the vast majority of venture capital firms, but if she were starting at $40K/yr, her rate of return would be lower than the interest rate on subsidized student loans, making borrowing for school financially unsound.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time spent in college&lt;/strong&gt; also has a big impact on returns:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-57-1024x544.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Graduating sooner not only reduces the amount of foregone wages, it also means earning higher wages sooner and for more years. As a result, if Sally graduates in two years while still paying for four years worth of education costs, she would experience a higher return (12.6%) than if she were to graduate in three years and save one year worth of costs (11.1%)! Similarly, if Sally were to finish school in five years instead of four, this would lower her returns (6.3% if still only paying for four years, 5.8% if adding an extra year’s worth of costs). &lt;strong&gt;The result is that an extra / less year spent in college is a ~2% hit / boost to returns!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finally, &lt;strong&gt;how quickly a college graduate’s wages grow&lt;/strong&gt; &lt;strong&gt;relative to a high school diploma holder’s&lt;/strong&gt; also has a significant impact on the returns to a college education:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-58-1024x436.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Census/BLS data suggests that, between 1997 and 2017, wages of bachelor’s degree holders grew faster on an annualized basis by ~0.7% per year than for those with only a high school diploma (6.7% vs 5.8% until age 35, 4.0% vs 3.3% for ages 35-55, both sets of wage growth appear to taper off after 55).&lt;/p&gt;
&lt;p&gt;The numbers show that if Sally’s future wages grew at the same rate as the wages of those with only a high school diploma, her rate of return drops to 5.3% (just barely above the subsidized loan rate). On the other hand, if Sally’s wages end up growing 1% faster until age 55 than they did for similar aged cohorts from 1997-2017, her rate of return jumps to a stock-market-beating 10.3%.&lt;/p&gt;
&lt;h2 id=&quot;lessons-for-students--families&quot;&gt;Lessons for Students / Families&lt;/h2&gt;
&lt;p&gt;What do all the charts and formulas tell a student / family considering college and the options for paying for it?&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;college can be an amazing investment, well worth taking on student debt and the effort to earn grants and scholarships&lt;/strong&gt;. While there is well-founded concern about the impact that debt load and debt payments can have on new graduates, in many cases, &lt;strong&gt;the financial decision to borrow is a good one&lt;/strong&gt;. Below is a sensitivity table laying out the rates of return across a wide range of starting salaries (the rows in the table) and costs of college (the columns in the table) and color codes how the resulting rates of return compare with the cost of borrowing and with returns in the stock market (red: risky to borrow at subsidized rates; white: does make sense to borrow at subsidized rates but it’s sensible to be mindful of the amount of debt / rates; green: returns are better than the stock market).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-59-1024x682.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Except for graduates with well below average starting salaries (less than or equal to $40,000/yr), most of the cells are white or green. At the average starting salary, &lt;strong&gt;except for those without financial aid attending a private school, the returns are generally better than subsidized student loan rates. For those attending public schools with financial aid, the returns are better than what you’d expect from the stock market.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Secondly, &lt;strong&gt;there are ways to push returns to a college education higher&lt;/strong&gt;. They involve effort and sometimes painful tradeoffs but, financially, they are well worth considering. Students / families choosing where to apply or where to go should keep in mind costs, average starting salaries, quality of career services, and availability of financial aid / scholarships / grants, as all of these factors will have a sizable impact on returns. After enrollment, student choices / actions can also have a meaningful impact: graduating in fewer semesters/quarters, taking advantage of career resources to research and network into higher starting salary jobs, applying for scholarships and grants, and, where possible, going for a 4th/5th year masters degree can all help students earn higher returns to help pay off any debt they take on.&lt;/p&gt;
&lt;p&gt;Lastly, &lt;strong&gt;use the &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1Xa0_HyA0wBxNBV3ogVtZKmV_uz4pPI3nEPTWSDHTglU/edit#gid=0&quot;&gt;spreadsheet&lt;/a&gt;*!&lt;/strong&gt; The figures and charts above are for a very specific set of scenarios and don’t factor in any particular individual’s circumstances or career trajectory, nor is it very intelligent about selecting what the most likely alternative to a college degree would be. These are all factors that are important to consider and may dramatically change the answer.&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;To use the Google Sheet, you must be logged into a Google account; use the “Make a Copy” command in the File menu to save a version to your Google Drive and edit the tan cells with red numbers in them to whatever best matches your situation and see the impact on the yellow highlighted cells for IRR and the age when investment pays off&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;implications-for-policy-on-student-debt&quot;&gt;Implications for Policy on Student Debt&lt;/h2&gt;
&lt;p&gt;Given the growing concerns around student debt and rising tuitions, I went into this exercise expecting to find that the rates of return across the board would be mediocre for all but the highest earners. I was (pleasantly) surprised to discover that a college graduate earning an average starting salary would be able to achieve a rate of return well above federal loan rates even at a private (non-profit) university.&lt;/p&gt;
&lt;p&gt;While the rate of return is not a perfect indicator of loan affordability (as it doesn’t account for how onerous the payments are compared to early salaries), the fact that the rates of return are so high is a sign that, contrary to popular opinion, &lt;strong&gt;there may actually be &lt;em&gt;too little&lt;/em&gt; student debt rather than too much&lt;/strong&gt;, and that the right policy goal may actually be to find ways to encourage the public and private sector to make more loans to more prospective students.&lt;/p&gt;
&lt;p&gt;As for concerns around affordability, &lt;a href=&quot;https://www.cnbc.com/2019/05/09/elizabeth-warrens-plan-to-cancel-student-debt-popular-with-voters.html&quot;&gt;while proposals to cancel all student debt plays well to younger voters&lt;/a&gt;, the fact that many graduates are enjoying very high returns suggests that such a blanket policy is likely unnecessary, anti-progressive (after all, why should the government zero out the costs on high-return investments for the soon-to-be upper and upper-middle-classes), and fails to address the root cause of the issue (mainly that there shouldn’t be institutions granting degrees that fail to be good financial investments). Instead, a more effective approach might be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Require all institutions to publish basic statistics (i.e. on costs, availability of scholarships/grants, starting salaries by degree/major, time to graduation, etc.) to help students better understand their own financial equation&lt;/li&gt;
&lt;li&gt;Hold educational institutions accountable when too many students graduate with unaffordable loan burdens/payments (i.e. as a fraction of salary they earn and/or fraction of students who default on loans) and require them to make improvements to continue to qualify for federally subsidized loans&lt;/li&gt;
&lt;li&gt;Making it easier for students to discharge student debt upon bankruptcy and increasing government oversight of collectors / borrower rights to prevent abuse&lt;/li&gt;
&lt;li&gt;Government-supported loan modifications (deferrals, term changes, rate modifications, etc.) where short-term affordability is an issue (but long-term returns story looks good); loan cancellation in cases where debt load is unsustainable in the long-term (where long-term returns are not keeping up) or where debt was used for an institution that is now being denied new loans due to unaffordability&lt;/li&gt;
&lt;li&gt;Making the path to public service loan forgiveness (where graduates who spend 10 years working for non-profits and who have never missed an interest payment get their student loans forgiven) clearer and addressing some of the issues which have led to &lt;a href=&quot;https://www.wsj.com/articles/program-to-relieve-student-debt-proves-unforgiving-11557221400&quot;&gt;99% of applications to date being rejected&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Special thanks Sophia Wang, Kathy Chen, and Dennis Coyle for reading an earlier version of this and sharing helpful comments!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>college</category><category>college tuition</category><category>finance</category><category>higher education</category><category>internal rate of return</category><category>policy</category><category>student debt</category><category>student loans</category></item><item><title>Lyft vs Uber: A Tale of Two S-1’s</title><link>https://benjamintseng.com/2019/04/lyft-vs-uber-a-tale-of-two-s-1s/</link><guid isPermaLink="true">https://benjamintseng.com/2019/04/lyft-vs-uber-a-tale-of-two-s-1s/</guid><description>Lyft vs Uber: A Tale of Two S-1’s</description><pubDate>Sun, 14 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-8.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;You can learn a great deal from reading and comparing the financial filings of two close competitors. &lt;a href=&quot;http://benjamintseng.com/2017/02/snap-inc-unit-economics/&quot;&gt;Tech-finance nerd that I am&lt;/a&gt;, you can imagine how excited I was to see &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft’s&lt;/a&gt; and &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber’s&lt;/a&gt; respective S-1’s become public within mere weeks of each other.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.latimes.com/business/hiltzik/la-fi-hiltzik-lyft-ipo-disclosure-20190307-story.html&quot;&gt;While the general financial press&lt;/a&gt; &lt;a href=&quot;https://www.reuters.com/article/us-uber-ipo/uber-unveils-ipo-with-warning-it-may-never-make-a-profit-idUSKCN1RN2SK&quot;&gt;has covered a lot of the top-level figures&lt;/a&gt; &lt;a href=&quot;https://www.cnbc.com/2019/03/28/lyft-ipo-profitability-not-coming-soon.html&quot;&gt;on profitability (or lack thereof)&lt;/a&gt; &lt;a href=&quot;https://www.forbes.com/sites/richardwindsoreurope/2019/04/12/uber-ipo-a-platform-with-no-profit-isnt-worth-anything/&quot;&gt;and revenue growth&lt;/a&gt;, I was more interested in understanding the &lt;strong&gt;unit economics&lt;/strong&gt; — what is the individual “unit” (i.e. a user, a sale, a machine, etc.) of the business and what does the history of associated costs and revenues say about how the business will (or will not) create durable value over time.&lt;/p&gt;
&lt;p&gt;For two-sided regional marketplaces like Lyft and Uber, an investor should understand the full economic picture for (1) the users/riders, (2) the drivers, and (3) the regional markets. Sadly, their S-1’s don’t make it easy to get much on (2) or (3) — probably because the companies consider the pertinent data to be highly sensitive information. They did, however, provide a fair amount of information on users/riders and rides and, after doing some quantitative modeling, a couple of interesting findings emerged:&lt;/p&gt;
&lt;div class=&quot;my-6 border border-[#BBF7D0] bg-[#F0FDF4] rounded-md p-4 sm:p-5 not-prose&quot;&gt; &lt;div class=&quot;flex items-start justify-between gap-4&quot;&gt; &lt;div&gt; &lt;div class=&quot;text-[11px] font-mono-data uppercase tracking-wider text-[#166534] font-semibold mb-1 flex items-center gap-1.5&quot;&gt; &lt;svg class=&quot;w-3.5 h-3.5 text-[#166534]&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt; &lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H6v-2h3v2zm0-4H6v-2h3v2zm0-4H6V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V7h3v2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;
Interactive Spreadsheet Model
&lt;/div&gt; &lt;h4 class=&quot;font-serif-heading font-semibold text-lg text-[#0F172A] mb-1&quot;&gt; Lyft vs. Uber S-1 Marketplace Unit Economics Model &lt;/h4&gt; &lt;p class=&quot;text-xs text-[#334155] mb-3&quot;&gt; Comparative financial workbook breaking down quarterly S-1 metrics from 2016 to 2018: bookings per ride, monthly rides per user, revenue monetization rates, and take-rate trajectories. &lt;/p&gt; &lt;div class=&quot;flex flex-wrap items-center gap-1.5 mb-1&quot;&gt; &lt;span class=&quot;text-[11px] font-mono-data text-[#15803D] font-medium&quot;&gt;Tabs:&lt;/span&gt; &lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Lyft Quarterly Data &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Uber Quarterly Data &lt;/span&gt;&lt;span class=&quot;text-[11px] font-mono-data bg-white text-[#166534] border border-[#BBF7D0] px-2 py-0.5 rounded&quot;&gt; Comparative Take Rates &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1J0Tm8qiKFgW8AdAI2TxtK27Sw-HlplEOY-uGVnLRzvk/edit?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; class=&quot;btn-emerald text-xs font-mono-data font-semibold px-3 py-2 rounded-md whitespace-nowrap transition-colors flex items-center gap-1 shadow-xs&quot;&gt;
Open Model &amp;nearr;
&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;h3 id=&quot;ubers-users-spend-more-despite-cheaper-rides&quot;&gt;Uber’s Users Spend More, Despite Cheaper Rides&lt;/h3&gt;
&lt;p&gt;As someone who first knew of Uber as the UberCab “black-car” service, and who first heard of Lyft as the Zimride ridesharing platform, I was surprised to discover that &lt;strong&gt;Lyft’s average ride price is significantly more expensive than Uber’s and the gap is growing!&lt;/strong&gt; In Q1 2017, Lyft’s average bookings per ride was $11.74 and Uber’s was $8.41, a difference of $3.33. But, in Q4 2018, Lyft’s average bookings per ride had gone up to $13.09 while Uber’s had declined to $7.69, increasing the gap to $5.40.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-9.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is especially striking considering the different definitions that Lyft and Uber have for “bookings” — Lyft excludes “ &lt;em&gt;pass-through amounts paid to drivers and regulatory agencies, including sales tax and other fees such as airport and city fees, as well as tips, tolls, cancellation, and additional fees&lt;/em&gt;” whereas Uber’s includes “ &lt;em&gt;applicable taxes, tolls, and fees&lt;/em&gt; “. This gap is likely also due to Uber’s heavier international presence (where they now generate 52% of their bookings). It would be interesting to see this data on a country-by-country basis (or, more importantly, a market-by-market one as well).&lt;/p&gt;
&lt;p&gt;Interestingly, &lt;strong&gt;an average Uber rider appears to also take ~2.3 more rides per month than an average Lyft rider&lt;/strong&gt;, a gap which has persisted fairly stably over the past 3 years even as both platforms have boosted the number of rides an average rider takes. While its hard to say for sure, this suggests Uber is either having more luck in markets that favor frequent use (like dense cities), with its lower priced Pool product vs Lyft’s Line product (where multiple users can share a ride), or its general pricing is encouraging greater use.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-10.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: the “~monthly” that you’ll see used throughout the charts in this post are because the aggregate data — rides, bookings, revenue, etc — given in the regulatory filings is quarterly, but the rider/user count provided is monthly. As a result, the figures here are approximations based on available data, i.e. by dividing quarterly data by 3&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What does that translate to in terms of how much an average rider is spending on each platform? Perhaps not surprisingly, &lt;strong&gt;Lyft’s average rider spend has been growing and has almost caught up to Uber’s&lt;/strong&gt; which is slightly down.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-11.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, &lt;strong&gt;Uber’s new businesses like UberEats are meaningfully growing its share of wallet with users&lt;/strong&gt; (and nearly perfectly dollar for dollar re-opens the gap on spend per user that Lyft narrowed over the past few years). In 2018 Q4, the gap between the yellow line (total bookings per user, including new businesses) and the red line (total bookings per user just for rides) is almost &lt;em&gt;$10 / user / month!&lt;/em&gt; Its no wonder that in its filings, Lyft calls its users “riders”, but Uber calls them “Active Platform Consumers”.&lt;/p&gt;
&lt;h3 id=&quot;despite-pocketing-more-per-ride-lyft-loses-more-per-user&quot;&gt;Despite Pocketing More per Ride, Lyft Loses More per User&lt;/h3&gt;
&lt;p&gt;Long-term unit profitability is more than just how much an average user is spending, its also how much of that spend hits a company’s bottom line. Perhaps not surprisingly, because they have more expensive rides, &lt;strong&gt;a larger percent of Lyft bookings ends up as gross profit&lt;/strong&gt; (revenue less direct costs to serve it, like insurance costs) — ~13% in Q4 2018 compared with ~9% for Uber. While Uber’s has bounced up and down, &lt;strong&gt;Lyft’s has steadily increased (up nearly 2x from Q1 2017)&lt;/strong&gt;. I would hazard a guess that Uber’s has also increased in its more established markets but that their expansion efforts into new markets (here and abroad) and new service categories (UberEats, etc) has kept the overall level lower.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-12.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: the gross margin I’m using for Uber adds back a depreciation and amortization line which were separated to keep the Lyft and Uber numbers more directly comparable. There may be other variations in definitions at work here, including the fact that Uber includes taxes, tolls, and fees in bookings that Lyft does not. In its filings, Lyft also calls out an analogous “Contribution Margin” which is useful but I chose to use this gross margin definition to try to make the numbers more directly comparable.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The main driver of this seems to be higher take rate (% of bookings that a company keeps as revenue) — nearly 30% in the case of Lyft in Q4 2018 but only 20% for Uber (and under 10% for UberEats)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-13.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: Uber uses a different definition of take rate in their filings based on a separate cut of “Core Platform Revenue” which excludes certain items around referral fees and driver incentives. I’ve chosen to use the full revenue to be more directly comparable&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The higher take rate and higher bookings per user has translated into an impressive increase in gross profit per user. &lt;strong&gt;Whereas Lyft once lagged Uber by almost 50% on gross profit per user at the beginning of 2017, Lyft has now surpassed Uber&lt;/strong&gt; even after adding UberEats and other new business revenue to the mix.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-14.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All of this data begs the question, given Lyft’s growth and lead on gross profit per user, can it grow its way into greater profitability than Uber? Or, to put it more precisely, are Lyft’s other costs per user declining as it grows? Sadly, the data does not seem to pan out that way&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-15.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;While Uber had significantly higher OPEX (expenditures on sales &amp;amp; marketing, engineering, overhead, and operations) per user at the start of 2017, the two companies have since reversed positions&lt;/strong&gt;, with Uber making significant changes in 2018 which lowered its OPEX per user spend to under $9 whereas Lyft’s has been above $10 for the past two quarters. The result is &lt;strong&gt;Uber has lost less money per user than Lyft since the end of 2017&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-16.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The story is similar for profit per ride&lt;/strong&gt;. Uber has consistently been more profitable since 2017, and they’ve only increased that lead since. This is despite the fact that I’ve included the costs of Uber’s other businesses in their cost per ride.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-17.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;does-lyfts-growth-justify-its-higher-spend&quot;&gt;Does Lyft’s Growth Justify Its Higher Spend?&lt;/h3&gt;
&lt;p&gt;One possible interpretation of Lyft’s higher OPEX spend per user is that Lyft is simply investing in operations and sales and engineering to open up new markets and create new products for growth. To see if this strategy has paid off, I took a look at the Lyft and Uber’s respective user growth during this period of time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-18.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The data shows that &lt;strong&gt;Lyft’s compounded quarterly growth rate (CQGR) from Q1 2016 to Q4 2018 of 16.4% is only barely higher than Uber’s at 15.3%&lt;/strong&gt; which makes it hard to justify spending nearly $2 more per user on OPEX in the last two quarters.&lt;/p&gt;
&lt;p&gt;Interestingly, &lt;a href=&quot;https://www.washingtonpost.com/news/dr-gridlock/wp/2017/05/16/deleteuber-will-have-lasting-fallout-for-ride-hailing-app-study-says/&quot;&gt;despite all the press and commentary about #deleteUber&lt;/a&gt;, it doesn’st seem to have really made a difference in their overall user growth (its actually pretty hard to tell from the chart above that the whole thing happened around mid-Q1 2017).&lt;/p&gt;
&lt;h3 id=&quot;how-are-drivers-doing&quot;&gt;How are Drivers Doing?&lt;/h3&gt;
&lt;p&gt;While there is much less data available on driver economics in the filings, this is a vital piece of the unit economics story for a two-sided marketplace. Luckily, Uber and Lyft both provide some information in their S-1’s on the number of drivers on each platform in Q4 2018 which are illuminating.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/586/1*f0wS0WYffnWhT1OTq8vuyA.jpeg&quot; alt=&quot;Image for post&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Sources: &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1759509/000119312519059849/d633517ds1.htm&quot;&gt;Lyft S-1&lt;/a&gt;; &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1543151/000119312519103850/d647752ds1.htm&quot;&gt;Uber S-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The average Uber driver on the platform in Q4 2018 took home nearly double what the average Lyft driver did!&lt;/strong&gt; They were also more likely to be “utilized” given that they handled 136% more rides than the average Lyft driver and, despite Uber’s lower price per ride, saw more total bookings.&lt;/p&gt;
&lt;p&gt;It should be said that this is only a point in time comparison (and its hard to know if Q4 2018 was an odd quarter or if there is odd seasonality here) and it papers over many other important factors (what taxes / fees / tolls are reflected, none of these numbers reflect tips, are some drivers doing shorter shifts, what does this look like specifically in US/Canada vs elsewhere, are all Uber drivers benefiting from doing both UberEats and Uber rideshare, etc). But the comparison is striking and should be alarming for Lyft.&lt;/p&gt;
&lt;h3 id=&quot;closing-thoughts&quot;&gt;Closing Thoughts&lt;/h3&gt;
&lt;p&gt;I’d encourage investors thinking about investing in either to do their own deeper research (especially as the competitive dynamic is not over one large market but over many regional ones that each have their own attributes). That being said, there are some interesting takeaways from this initial analysis&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lyft has made impressive progress at increasing the value of rides on its platform and increasing the share of transactions it gets. One would guess that, Uber, within established markets in the US has probably made similar progress.&lt;/li&gt;
&lt;li&gt;Despite the fact that Uber is rapidly expanding overseas into markets that face more price constraints than in the US, it continues to generate significantly better user economics and driver economics (if Q4 2018 is any indication) than Lyft.&lt;/li&gt;
&lt;li&gt;Something happened at Uber at the end of 2017/start of 2018 (which looks like it coincides nicely with Dara Khosrowshahi’s assumption of CEO role) which led to better spending discipline and, as a result, better unit economics despite falling gross profits per user&lt;/li&gt;
&lt;li&gt;Uber’s new businesses (in particular UberEats) have had a significant impact on Uber’s share of wallet.&lt;/li&gt;
&lt;li&gt;Lyft will need to find more cost-effective ways of growing its business and servicing its existing users &amp;amp; drivers if it wishes to achieve long-term sustainability as its current spend is hard to justify relative to its user growth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Special thanks to&lt;/em&gt;&lt;a href=&quot;https://www.ericsuh.com/&quot;&gt;&lt;em&gt;Eric Suh&lt;/em&gt;&lt;/a&gt;&lt;em&gt;for reading and editing an earlier version!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>finance</category><category>gross margin</category><category>Lyft</category><category>S-1</category><category>Uber</category><category>unit economics</category></item><item><title>How to Regulate Big Tech</title><link>https://benjamintseng.com/2019/03/how-to-regulate-big-tech/</link><guid isPermaLink="true">https://benjamintseng.com/2019/03/how-to-regulate-big-tech/</guid><description>How to Regulate Big Tech</description><pubDate>Tue, 12 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There’s been a fair amount of talk lately about proactively regulating — and maybe even breaking up — the “Big Tech” companies.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Full disclosure: this post discusses regulating large tech companies. I own shares in several of these both directly (in the case of Facebook and Microsoft) and indirectly (through ETFs that own stakes in large companies)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-2-1024x341.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://mitsloan.mit.edu/ideas-made-to-matter/will-regulating-big-tech-stifle-innovation&quot;&gt;MIT Sloan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Like many, I have become increasingly uneasy over the fact that a small handful of companies, with few credible competitors, have amassed so much power over our personal data and what information we see. As a startup investor and former product executive at a social media startup, I can especially sympathize with concerns that these large tech companies have created an unfair playing field for smaller companies.&lt;/p&gt;
&lt;p&gt;At the same time, though, I’m mindful of all the benefits that the tech industry — including the “tech giants” — have brought: amazing products and services, broader and cheaper access to markets and information, and a tremendous wave of job and wealth creation vital to may local economies. For that reason, despite my concerns of “big tech”‘s growing power, I am wary of reaching for “quick fixes” that might change that.&lt;/p&gt;
&lt;p&gt;As a result, I’ve been disappointed that much of the discussion has centered on knee-jerk proposals like &lt;a href=&quot;https://www.economist.com/leaders/2018/04/05/america-should-borrow-from-europes-data-privacy-law&quot;&gt;imposing blanket stringent privacy regulations&lt;/a&gt; and &lt;a href=&quot;https://www.axios.com/warren-proposes-big-tech-breakup-1552054215-6fef9c39-5e26-4b7d-9437-2979269c7621.html&quot;&gt;forcefully breaking up large tech companies&lt;/a&gt;. These are policies which I fear are not only self-defeating but will potentially put into jeopardy the benefits of having a flourishing tech industry.&lt;/p&gt;
&lt;h3 id=&quot;the-challenges-with-regulating-tech&quot;&gt;The Challenges with Regulating Tech&lt;/h3&gt;
&lt;p&gt;Technology is hard to regulate. The ability of software developers to collaborate and build on each other’s innovations means &lt;strong&gt;the tech industry moves far faster than standard regulatory / legislative cycles.&lt;/strong&gt; As a result, &lt;a href=&quot;https://en.wikipedia.org/wiki/Telecommunications_Act_of_1996&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Electronic_Communications_Privacy_Act&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act&quot;&gt;key&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act&quot;&gt;laws&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Communications_Decency_Act&quot;&gt;on&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Stored_Communications_Act&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Omnibus_Crime_Control_and_Safe_Streets_Act_of_1968&quot;&gt;books&lt;/a&gt; today that apply to tech date back decades — before Facebook or the iPhone even existed, making it important to remember that &lt;a href=&quot;https://www.eff.org/deeplinks/2018/12/want-more-competition-tech-get-rid-outdated-computer-copyright-and-contract-rules&quot;&gt;even well-intentioned laws and regulations governing tech&lt;/a&gt; &lt;a href=&quot;https://www.motherjones.com/politics/2013/07/3-most-outdated-tech-laws/&quot;&gt;can cement in place rules which don’t keep up&lt;/a&gt; &lt;a href=&quot;https://misti.com/infosec-insider/why-are-outdated-laws-governing-current-technology-usage&quot;&gt;when the companies and the social &amp;amp; technological forces involved change&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another factor which complicates tech policy is that &lt;strong&gt;the traditional “big is bad” mentality ignores the benefits to having large platforms&lt;/strong&gt;. While Amazon’s growth has hurt many brick &amp;amp; mortar retailers and eCommerce competitors, its extensive reach and infrastructure enabled businesses like &lt;a href=&quot;https://www.theverge.com/2017/5/22/15673712/anker-battery-charger-amazon-empire-steven-yang-interview&quot;&gt;Anker&lt;/a&gt; and &lt;a href=&quot;https://www.cnbc.com/2018/11/26/how-instant-pot-became-a-kitchen-appliance-with-a-cult-following.html&quot;&gt;Instant Pot&lt;/a&gt; to get to market in a way which would’ve been virtually impossible before. While the dominance of Google’s Android platform in smartphones raised concerns from European regulators, its hard to argue that the companies which built &lt;a href=&quot;https://www.blog.google/around-the-globe/google-europe/android-has-created-more-choice-not-less/&quot;&gt;millions of mobile apps and tens of thousands of different types of devices running on Android&lt;/a&gt; would have found it much more difficult to build their businesses without such a unified software platform. Policy aimed at “Big Tech” should be wary of dismantling the platforms that so many current and future businesses rely on.&lt;/p&gt;
&lt;p&gt;Its also important to remember that poorly crafted regulation in tech can be self-defeating. &lt;strong&gt;The most effective way to deal with the excesses of “Big Tech”, historically, has been creating opportunities for new market entrants.&lt;/strong&gt; After all, many tech companies previously thought to be dominant (like Nokia, IBM, and Microsoft) lost their positions, not because of regulation or antitrust, but because new technology paradigms (i.e. smartphones, cloud), business models (i.e. subscription software, ad-sponsored), and market entrants (i.e. Google, Amazon) had the opportunity to flourish. &lt;a href=&quot;https://www.forbes.com/sites/jonmarkman/2018/05/22/gdpr-is-great-news-for-google-and-facebook-really/&quot;&gt;Because rules (i.e. Article 13/GDPR) aimed at big tech companies generally fall hardest on small companies&lt;/a&gt; (who are least able to afford the infrastructure / people to manage it), its important to keep in mind how solutions for “Big Tech” problems affect smaller companies and new concepts as well.&lt;/p&gt;
&lt;h3 id=&quot;framework-for-regulating-big-tech&quot;&gt;Framework for Regulating “Big Tech”&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-21-1024x344.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;If only it were so easy… Source: &lt;a href=&quot;https://xkcd.com/1523/&quot;&gt;XKCD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To be 100% clear, I’m &lt;em&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/em&gt; saying that the tech industry and big platforms should be given a pass on rules and regulation. If anything, I believe that laws and regulation play a vital role in creating flourishing markets.&lt;/p&gt;
&lt;p&gt;But, instead of treating “Big Tech” as just a problem to kill, I think we’d be better served by laws / regulations that recognize the limits of regulation on tech and, instead, focus on making sure emerging companies / technologies can compete with the tech giants on a level playing field. To that end, I hope to see more ideas that embrace the following four pillars:&lt;/p&gt;
&lt;h4 id=&quot;i-tiering-regulation-based-on-size-of-the-company&quot;&gt;I. Tiering regulation based on size of the company&lt;/h4&gt;
&lt;p&gt;Regulations on tech companies should be tiered based on size with the most stringent rules falling on the largest companies. Size should include traditional metrics like revenue but also, in this age of marketplace platforms and freemium/ad-sponsored business models, account for the number of users (i.e. Monthly Active Users) and third party partners.&lt;/p&gt;
&lt;p&gt;In this way, the companies with the greatest potential for harm and the greatest ability to bear the costs face the brunt of regulation, leaving smaller companies &amp;amp; startups with greater flexibility to innovate and iterate.&lt;/p&gt;
&lt;h4 id=&quot;ii-championing-data-portability&quot;&gt;II. Championing data portability&lt;/h4&gt;
&lt;p&gt;One of the reasons it’s so difficult for competitors to challenge the tech giants is the user lock-in that comes from their massive data advantage. After all, how does a rival social network compete when a user’s photos and contacts are locked away inside Facebook?&lt;/p&gt;
&lt;p&gt;While Facebook (and, to their credit, some of the other tech giants) does offer &lt;a href=&quot;https://www.facebook.com/help/1701730696756992?helpref=hc_global_nav&quot;&gt;ways to export user data&lt;/a&gt; and &lt;a href=&quot;https://www.facebook.com/help/250563911970368/?helpref=hc_fnav&quot;&gt;to delete user data from their systems&lt;/a&gt;, these tend to be unwieldy, manual processes that make it difficult for a user to bring their data to a competing service. Requiring the largest tech platforms to make this functionality easier to use (i.e., letting others import your contact list and photos with the ease in which you can login to many apps today using Facebook) would give users the ability to hold tech companies accountable for bad behavior or not innovating (by being able to walk away) and fosters competition by letting new companies compete &lt;em&gt;not&lt;/em&gt; on data lock-in but on features and business model.&lt;/p&gt;
&lt;h4 id=&quot;iii-preventing-platforms-from-playing-unfairly&quot;&gt;III. Preventing platforms from playing unfairly&lt;/h4&gt;
&lt;p&gt;3rd party platform participants (i.e., websites listed on Google, Android/iOS apps like Spotify, sellers on Amazon) are understandably nervous when the platform owners compete with their own offerings (i.e., &lt;a href=&quot;https://gizmodo.com/yelp-and-tripadvisor-team-up-to-pile-on-google-over-sea-1826184776&quot;&gt;Google Places,&lt;/a&gt; &lt;a href=&quot;https://www.timetoplayfair.com/timeline/&quot;&gt;Apple Music,&lt;/a&gt; &lt;a href=&quot;https://www.forbes.com/sites/retailwire/2014/10/30/is-amazon-undercutting-third-party-sellers-using-their-own-data/&quot;&gt;Amazon first party sales)&lt;/a&gt;. &lt;a href=&quot;https://medium.com/@teamwarren/heres-how-we-can-break-up-big-tech-9ad9e0da324c&quot;&gt;As a result, some have even called for banning platform owners from offering their own products and services&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I believe that is an overreaction. Platform owners offering attractive products and services (i.e., Google offering turn-by-turn navigation on Android phones) can be a great thing for users (after all, most prominent platforms started by providing compelling first-party offerings) and for 3rd party participants if these offerings improve the attractiveness of the platform overall.&lt;/p&gt;
&lt;p&gt;What is hard to justify is when platform owners stack the deck in their favor using anti-competitive moves such as &lt;a href=&quot;https://techcrunch.com/2018/12/04/facebook-allows-competitors/&quot;&gt;banning or reducing the visibility of competitors,&lt;/a&gt; &lt;a href=&quot;https://www.howtogeek.com/184283/why-third-party-browsers-will-always-be-inferior-to-safari-on-iphone-and-ipad/&quot;&gt;crippling third party offerings&lt;/a&gt;, &lt;a href=&quot;https://www.recode.net/2018/11/29/18023132/amazon-brand-policy-changes-marketplace-control-one-vendor&quot;&gt;making excessive demands on 3rd parties,&lt;/a&gt; etc. Its these sorts of actions by the largest tech platforms that pose a risk to consumer choice and competition and should face regulatory scrutiny. Not just the fact that a large platform exists or that the platform owner chooses to participate in it.&lt;/p&gt;
&lt;h4 id=&quot;iv-modernizing-how-anti-trust-thinks-about-defensive-acquisitions&quot;&gt;IV. Modernizing how anti-trust thinks about defensive acquisitions&lt;/h4&gt;
&lt;p&gt;The rise of the tech giants has led to many calls to &lt;a href=&quot;https://www.theverge.com/2018/9/4/17816572/tim-wu-facebook-regulation-interview-curse-of-bigness-antitrust&quot;&gt;unwind some of the pivotal mergers and acquisitions in the space&lt;/a&gt;. As much as I believe that anti-trust regulators made the wrong calls on some of these transactions, I am not convinced, beyond just wanting to punish “Big Tech” for being big, that the Pandora’s Box of legal and financial issues (for the participants, employees, users, and for the tech industry more broadly) that would be opened would be worthwhile relative to pursuing other paths to regulate bad behavior directly.&lt;/p&gt;
&lt;p&gt;That being said, its become clear that anti-trust needs to move beyond narrow revenue share and pricing-based definitions of anti-competitiveness (which do not always apply to freemium/ad-sponsored business models). Anti-trust prosecutors and regulators need to become much more thoughtful and assertive around how some acquisitions are done simply to avoid competition (i.e., &lt;a href=&quot;https://qz.com/92496/waze-may-be-bought-by-google-the-company-that-needs-it-the-least/&quot;&gt;Google’s acquisition of Waze&lt;/a&gt; and &lt;a href=&quot;https://gigaom.com/2014/02/19/the-irrational-rationality-behind-facebooks-16-billion-acquisition-of-whatsapp/&quot;&gt;Facebook’s acquisition of WhatsApp&lt;/a&gt; are two examples of landmark acquisitions which probably should have been evaluated more closely).&lt;/p&gt;
&lt;h3 id=&quot;wrap-up&quot;&gt;Wrap-Up&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-22-1024x426.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://www.oecd-forum.org/users/67548-rod-freeman/posts/31747-evolution-or-revolution-the-future-of-regulation-and-liability-for-ai&quot;&gt;OECD Forum Network&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is hardly a complete set of rules and policies needed to approach growing concerns about “Big Tech”. Even within this framework, there are many details (i.e., who the specific regulators are, what specific auditing powers they have, the details of their mandate, the specific thresholds and number of tiers to be set, whether pre-installing an app counts as unfair, etc.) that need to be defined which could make or break the effort. But, I believe this is a good set of principles that balances both the need to foster a tech industry that will continue to grow and drive innovation as well as the need to respond to growing concerns about “Big Tech”.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Special thanks to Derek Yang and Anthony Phan for reading earlier versions and giving me helpful feedback!&lt;/em&gt;&lt;/p&gt;</content:encoded><category>Amazon</category><category>antitrust</category><category>Apple</category><category>Big Tech</category><category>data portability</category><category>Facebook</category><category>GDPR</category><category>M&amp;amp;A</category><category>Microsoft</category><category>policy</category><category>regulation</category></item><item><title>Why Tech Success Doesn’t Translate to Deeptech</title><link>https://benjamintseng.com/2019/02/different-paths-to-success-for-tech-and-deeptech-startups/</link><guid isPermaLink="true">https://benjamintseng.com/2019/02/different-paths-to-success-for-tech-and-deeptech-startups/</guid><description>Why Tech Success Doesn’t Translate to Deeptech</description><pubDate>Mon, 25 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.erichamilton.info/2010/05/&quot;&gt;Eric Hamilton&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Having been lucky enough to invest in both tech (cloud, mobile, software) and “deeptech” (materials, cleantech, energy, life science) startups (and having also ran product at a mobile app startup), it has been striking to see how fundamentally different the paradigms that drive success in each are.&lt;/p&gt;
&lt;p&gt;Whether knowingly or not, &lt;strong&gt;most successful tech startups over the last decade have followed a basic playbook:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Take advantage of rising smartphone penetration and improvements in cloud technology&lt;/strong&gt; to build digital products that solve challenges in big markets pertaining to access (e.g., to suppliers, to customers, to friends, to content, to information, etc.)&lt;/li&gt;
&lt;li&gt;Build a solid team of engineers, designers, growth, sales, marketing, and product people to &lt;strong&gt;execute on lean software development and growth methodologies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hire the right executives to carry out &lt;strong&gt;the right mix of tried-and-true as well as “out of the box” channel and business development&lt;/strong&gt; &lt;strong&gt;strategies&lt;/strong&gt; to scale bigger and faster&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This playbook appears deceptively simple but is very difficult to execute well. It works because for markets where &lt;a href=&quot;https://a16z.com/2011/08/20/why-software-is-eating-the-world/&quot;&gt;“software is eating the world”&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-1.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://techcrunch.com/2013/11/07/disrupt-this/disrupt-aol/&quot;&gt;Techcrunch&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;There is relatively little technology risk:&lt;/strong&gt; With the exception of some of the most challenging AI, infrastructure, and security challenges, most tech startups are primarily dealing with engineering and product execution challenges — what is the right thing to build and how do I build it on time, under budget? — rather than fundamental technology discovery and feasibility challenges&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills &amp;amp; knowledge are broadly transferable:&lt;/strong&gt; Modern software development and growth methodologies work across a wide range of tech products and markets. This means that effective engineers, salespeople, marketers, product people, designers, etc. at one company will generally be effective at another. As a result, its a lot easier for investors/executives to both gauge the caliber of a team (by looking at their experience) and augment a team when problems arise (by recruiting the right people with the right backgrounds).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribution is cheap and fast:&lt;/strong&gt; Cloud/mobile technology means that a new product/update is a server upgrade/browser refresh/app store download away. This has three important effects:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;The first is that startups can launch with incomplete or buggy solutions because they can readily provide hotfixes and upgrades.&lt;/li&gt;
&lt;li&gt;The second is that startups can quickly release new product features and designs to respond to new information and changing market conditions.&lt;/li&gt;
&lt;li&gt;The third is that adoption is relatively straightforward. While there may be some integration and qualification challenges, in general, the product is accessible via a quick download/browser refresh, and the core challenge is in getting enough people to use a product in the right way.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In contrast, if you look at deeptech companies, a very different set of rules apply:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-19.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://xkcd.com/1428/&quot;&gt;XKCD&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Technology risk/uncertainty is inherent:&lt;/strong&gt; One of the defining hallmarks of a deeptech company is dealing with uncertainty from constraints imposed by reality (i.e. the laws of physics, the underlying biology, the limits of current technology, etc.). As a result, deeptech startups regularly face feasibility challenges — &lt;em&gt;what is even possible to build?&lt;/em&gt; — and uncertainty around the R&amp;amp;D cycles to get to a good outcome — &lt;em&gt;how long will it take / how much will it cost to figure this all out?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills &amp;amp; knowledge are not easily transferable:&lt;/strong&gt; Because the technical and business talent needed in deeptech is usually specific to the field, talent and skills are not necessarily transferable from sector to sector or even company to company. The result is that it is much harder for investors/executives to evaluate team caliber (whether on technical merits or judging past experience) or to simply put the right people into place if there are problems that come up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product iteration is slow and costly:&lt;/strong&gt; The tech startup ethos of &lt;a href=&quot;https://xkcd.com/1428/&quot;&gt;“move fast and break things”&lt;/a&gt; is just harder to do with deeptech.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;At the most basic level, it just costs a lot more and takes a lot more time to iterate on a physical product than a software one. It’s not just that physical products require physical materials and processing, but the availability of low cost technology platforms like &lt;a href=&quot;http://benjamintseng.com/tag/amazon-web-services/&quot;&gt;Amazon Web Services&lt;/a&gt; and &lt;a href=&quot;http://benjamintseng.com/tag/open-source/&quot;&gt;open source&lt;/a&gt; software dramatically lower the amount of time / cash needed to make something testable in tech than in deeptech.&lt;/li&gt;
&lt;li&gt;Furthermore, because deeptech innovations tend to have real-world physical impacts (to health, to safety, to a supply chain/manufacturing line, etc.), deeptech companies generally face far more regulatory and commercial scrutiny. These groups are generally less forgiving of incomplete/buggy offerings and their assessments can lengthen development cycles. Deeptech companies generally can’t take the “ask for forgiveness later” approaches that some tech companies (i.e. &lt;a href=&quot;https://www.wsj.com/articles/brash-tech-innovators-are-starting-to-ask-permission-rather-than-forgiveness-1532016963&quot;&gt;Uber and AirBnb&lt;/a&gt;) have been able to get away with (exhibit 1: &lt;a href=&quot;https://amzn.to/2EvaMcV&quot;&gt;Theranos&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result, while there is no single playbook that works across all deeptech categories, the most successful deeptech startups tend to embody a few basic principles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Go after markets where there is a very clear, unmet need:&lt;/strong&gt; The best deeptech entrepreneurs tend to take very few chances with market risk and only pursue challenges where a very well-defined unmet need (i.e., there are no treatments for Alzheimer’s, this industry needs a battery that can last at least 1000 cycles, etc) blocks a significant market opportunity. This reduces the risk that a (likely long and costly) development effort achieves technical/scientific success without also achieving business success. This is in contrast with tech where creating or iterating on poorly defined markets (i.e., Uber and Airbnb) is oftentimes at the heart of what makes a company successful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on “one miracle” problems&lt;/strong&gt;: Its tempting to fantasize about what could happen if you could completely re-write every aspect of an industry or problem but the best deeptech startups focus on innovating where they won’t need the rest of the world to change dramatically in order to have an impact (e.g., compatible with existing channels, business models, standard interfaces, manufacturing equipment, etc). Its challenging enough to advance the state of the art of technology — why make it even harder?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pursue technologies that can significantly over-deliver on what the market needs:&lt;/strong&gt; Because of the risks involved with developing advanced technologies, the best deeptech entrepreneurs work in technologies where even a partial success can clear the bar for what is needed to go to market. At the minimum, this reduces the risk of failure. But, hopefully, it gives the company the chance to fundamentally transform the market it plays in by being 10x better than the alternatives. This is in contrast to many tech markets where market success often comes less from technical performance and more from identifying the right growth channels and product features to serve market needs (i.e., Facebook, Twitter, and Snapchat vs. MySpace, Orkut, and Friendster; Amazon vs. brick &amp;amp; mortar bookstores and electronics stores)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All of this isn’t to say that there aren’t similarities between successful startups in both categories — strong vision, thoughtful leadership, and success-oriented cultures are just some examples of common traits in both. Nor is it to denigrate one versus the other. But, practically speaking, investing or operating successfully in both requires very different guiding principles and speaks to the heart of why its relatively rare to see individuals and organizations who can cross over to do both.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Special thanks to &lt;a href=&quot;https://sywang.people.stanford.edu/&quot;&gt;Sophia Wang&lt;/a&gt;, Ryan Gilliam, and &lt;a href=&quot;https://twitter.com/kevinleeme&quot;&gt;Kevin Lin Lee&lt;/a&gt; for reading an earlier draft and making this better!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>cleantech</category><category>cloud</category><category>deeptech</category><category>distribution</category><category>energy</category><category>hardtech</category><category>life science</category><category>materials</category><category>one miracle problem</category><category>smartphone</category><category>tech</category><category>technology risk</category><category>Venture Capital</category></item><item><title>Migrating WordPress to AWS Lightsail and Going with Let’s Encrypt!</title><link>https://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/</link><guid isPermaLink="true">https://benjamintseng.com/2019/02/migrating-wordpress-to-aws-lightsail-and-going-with-lets-encrypt/</guid><description>Migrating WordPress to AWS Lightsail and Going with Let’s Encrypt!</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;(Update Jan 2021: Bitnami has made available a new tool &lt;code&gt;bncert&lt;/code&gt; which makes it even easier to enable HTTPS with a Let’s Encrypt certificate; the instructions below using Let’s Encrypt’s &lt;code&gt;certbot&lt;/code&gt; still work but I would recommend people looking to enable HTTPS to &lt;a href=&quot;http://benjamintseng.com/2021/01/its-even-easier-now-to-set-up-lets-encrypt-on-wordpress-with-aws-lightsail/&quot;&gt;use Bitnami’s new &lt;code&gt;bncert&lt;/code&gt; process&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I recently made two big changes to the backend of this website to keep up with the times as internet technology continues to evolve.&lt;/p&gt;
&lt;p&gt;First, I migrated from &lt;a href=&quot;http://benjamintseng.com/2012/12/hard-work-that-goes-unnoticed/&quot;&gt;my previous web hosting arrangements&lt;/a&gt; at WebFaction to &lt;a href=&quot;https://aws.amazon.com/lightsail/pricing/&quot;&gt;Amazon Web Services’s new Lightsail offering&lt;/a&gt;. I have greatly enjoyed WebFaction’s super simple interface and fantastic documentation which seemed tailored to amateur coders like myself (having enough coding and customization chops to do some cool projects but not a lot of confidence or experience in dealing with the innards of a server). But, the value for money that AWS Lightsail offers (&lt;a href=&quot;https://aws.amazon.com/lightsail/pricing/&quot;&gt;$3.50/month for Linux VPS including static IP&lt;/a&gt; vs. the &lt;a href=&quot;https://www.webfaction.com/&quot;&gt;$10/month I would need to pay to eventually renew my current setup&lt;/a&gt;) ultimately proved too compelling to ignore (and for a simple personal site, I didn’t need the extra storage or memory). This coupled with the deterioration in service quality I have been experiencing with WebFaction (many more downtime email alerts from &lt;a href=&quot;https://jetpack.com/&quot;&gt;WordPress’s Jetpack plugin&lt;/a&gt; and the general lagginess in the WordPress administrative panel) and the chance to learn more about &lt;a href=&quot;https://aws.amazon.com/&quot;&gt;the world’s pre-eminent cloud services provider&lt;/a&gt; made this an easy decision.&lt;/p&gt;
&lt;p&gt;Given &lt;a href=&quot;https://www.blog.google/products/chrome/milestone-chrome-security-marking-http-not-secure/&quot;&gt;how Google Chrome now (correctly) marks all websites which don’t use HTTPS/SSL as insecure&lt;/a&gt; and &lt;a href=&quot;https://letsencrypt.org/2016/04/12/leaving-beta-new-sponsors.html&quot;&gt;Let’s Encrypt has been offering SSL certificates for free for several years&lt;/a&gt;, the second big change I made was to embrace HTTPS to partially modernize my website and make it at least not completely insecure. Along the way, I also tweaked my URLs so that all my respective subdomains and domain variants would ultimately point to &amp;lt;&lt;a href=&quot;http://benjamintseng.com/&quot;&gt;http://benjamintseng.com/&lt;/a&gt;&amp;gt;.&lt;/p&gt;
&lt;p&gt;For anyone who is also interested in migrating an existing WordPress deployment on another host to AWS Lightsail and turning on HTTPS/SSL, here are the steps I followed (gleamed from some online research and a bit of trial &amp;amp; error). Its not as straightforward as some other setups, but its very do-able if you are willing to do a little bit of work in the AWS console:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Follow the (fairly straightforward) instructions in &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-tutorial-launching-and-configuring-wordpress&quot;&gt;the AWS Lightsail tutorial around setting up a clean WordPress deployment&lt;/a&gt;. &lt;strong&gt;I would skip sub-step 3 of step 6&lt;/strong&gt; (directing your DNS records to point to the Lightsail nameservers) until later (when you’re sure the transfer has worked so your domain continues to point to a functioning WordPress deployment).&lt;/li&gt;
&lt;li&gt;Unless you are currently &lt;strong&gt;not&lt;/strong&gt; hosting any custom content (no images, no videos, no Javascript files, etc) on your WordPress deployment, I would ignore &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en/articles/migrate-your-wordpress-blog-to-amazon-lightsail&quot;&gt;the WordPress migration tutorial at the AWS Lightsail website&lt;/a&gt; (which won’t show you how to transfer this custom content over) in favor of &lt;a href=&quot;https://docs.bitnami.com/aws/how-to/migrate-wordpress/&quot;&gt;this Bitnami how-to-guide&lt;/a&gt; (&lt;a href=&quot;https://bitnami.com/&quot;&gt;Bitnami&lt;/a&gt; provides the WordPress server image that Lightsail uses for its WordPress instance) which takes advantage of the fact that the Bitnami WordPress includes &lt;a href=&quot;https://wordpress.org/plugins/all-in-one-wp-migration/&quot;&gt;the All-in-One WP Migration plugin&lt;/a&gt; which, for free, can do single file backups of your WordPress site up to 512 MB (larger sites will need to pay for the premium version of the plugin).
&lt;ul&gt;
&lt;li&gt;If, like me, you have other content statically hosted on your site outside of WordPress, I’d recommend storing it &lt;a href=&quot;https://en.support.wordpress.com/media/&quot;&gt;in WordPress as part of the Media Library&lt;/a&gt; which has gotten a lot more sophisticated over the past few years. Its where I now store &lt;a href=&quot;http://benjamintseng.com/portfolio/&quot;&gt;the files associated with my Projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Note: if, like me, you are using &lt;a href=&quot;https://jetpack.com/support/site-accelerator/&quot;&gt;Jetpack’s site accelerator&lt;/a&gt; to cache your images/static file assets, don’t worry if upon visiting your site some of the images appear broken. Jetpack relies on the URL of the asset to load correctly. This should get resolved once you point your DNS records accordingly (literally the next step) and any other issues should go away after you mop up any remaining references to the wrong URLs in your database (see the bullet below where I reference the &lt;a href=&quot;https://wordpress.org/plugins/better-search-replace/&quot;&gt;Better Search Replace plugin&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If you followed my advice above, now would be the time to change your DNS records to point to the Lightsail nameservers (&lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-tutorial-launching-and-configuring-wordpress&quot;&gt;sub-step 3 of step 6 of the AWS Lightsail WordPress tutorial&lt;/a&gt;) — wait a few hours to make sure the DNS settings have propagated and then test out your domain and make sure it points to a page with the Bitnami banner in the lower right (sign that you’re using the Bitnami server image, see below)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-9.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;The Bitnami banner in the lower-right corner of the page you should see if your DNS propagated correctly and your Lightsail instance is up and running&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To remove that ugly banner, follow the instructions in &lt;a href=&quot;https://docs.bitnami.com/aws/how-to/bitnami-remove-banner/&quot;&gt;this tutorial&lt;/a&gt; (use the AWS Lightsail panel to get to the SSH server console for your instance and, assuming you followed the above instructions, follow the instructions for Apache)&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Assuming your webpage and domain all work (preferably without any weird uptime or downtime issues), you can proceed with &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress&quot;&gt;this tutorial to provision a Let’s Encrypt SSL certificate for your instance&lt;/a&gt;. It can be a bit tricky as it entails spending a lot of time in the SSH server console (which you can get to from the AWS Lightsail panel) and tweaking settings in the AWS Lightsail DNS Zone manager, but the tutorial does a good job of walking you through all of it.&lt;/del&gt; &lt;em&gt;(Update Jan 2021: Bitnami has made available a new tool &lt;code&gt;bncert&lt;/code&gt; which makes it even easier to enable HTTPS. While the link above using Let’s Encrypt’s &lt;code&gt;certbot&lt;/code&gt; still works, I would recommend people &lt;a href=&quot;http://benjamintseng.com/2021/01/its-even-easier-now-to-set-up-lets-encrypt-on-wordpress-with-aws-lightsail/&quot;&gt;use Bitnami’s new &lt;code&gt;bncert&lt;/code&gt; process&lt;/a&gt; going forward)&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;I would strongly encourage you to wait to make sure all the DNS settings have propagated and that your instance is not having any strange downtime (as mine did when I first tried this) as if you have trouble connecting to your page, it won’t be immediately clear what is to blame and you won’t be able to take reactive measures.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I used &lt;a href=&quot;https://wordpress.org/plugins/better-search-replace/&quot;&gt;the plugin Better Search Replace&lt;/a&gt; to replace all references to intermediate domains (i.e. the IP addresses for your Lightsail instance that may have stuck around after the initial step in Step 1) or the non-HTTPS domains (i.e. &lt;a href=&quot;http://yourdomain.com&quot;&gt;http://yourdomain.com&lt;/a&gt; or &lt;a href=&quot;http://www.yourdomain.com&quot;&gt;http://www.yourdomain.com&lt;/a&gt;) with your new HTTPS domain in the MySQL databases that power your WordPress deployment (if in doubt, just select the wp_posts table). You can also take this opportunity to direct all your yourdomain.com traffic to &lt;a href=&quot;http://www.yourdomain.com&quot;&gt;www.yourdomain.com&lt;/a&gt; (or vice versa). You can also do this directly in MySQL but the plugin allows you to do this across multiple tables very easily and allows you to do a “dry run” first where it finds and counts all the times it will make a change before you actually execute it.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(Update Jan 2021: Bitnami has made available a new tool &lt;code&gt;bncert&lt;/code&gt; which makes it even easier to enable HTTPS and also automatically handles the redirect. While the instructions below still technically work, I would just &lt;a href=&quot;http://benjamintseng.com/2021/01/its-even-easier-now-to-set-up-lets-encrypt-on-wordpress-with-aws-lightsail/&quot;&gt;use Bitnami’s new &lt;code&gt;bncert&lt;/code&gt; process&lt;/a&gt; going forward)&lt;/em&gt; &lt;del&gt;If you want to redirect all the traffic to &lt;a href=&quot;http://www.yourdomain.com&quot;&gt;www.yourdomain.com&lt;/a&gt; to yourdomain.com, you have two options. If your domain registrar is forward thinking and does simple redirects for you &lt;a href=&quot;https://www.namecheap.com/support/knowledgebase/article.aspx/385/2237/how-to-redirect-a-url-for-a-domain/&quot;&gt;like Namecheap does&lt;/a&gt;, that is probably the easiest path. That is sadly not the path I took because I transferred my domain over to AWS’s Route 53 which is not so enlightened. If you also did the same thing / have a domain registrar that is not so forward thinking, you can tweak the Apache server settings to achieve the same effect. To do this, go into the SSH server console for your Lightsail instance and:&lt;/del&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Run &lt;em&gt;cd ~/apps/wordpress/conf&lt;/em&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;To make a backup which you can restore (if you screw things up) run &lt;em&gt;mv httpd-app.conf httpd-app.conf.old&lt;/em&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;I’m going to use the &lt;a href=&quot;https://www.nano-editor.org/&quot;&gt;Nano editor&lt;/a&gt; because its the easiest for a beginner (but feel free to use vi or emacs if you prefer), but run &lt;em&gt;nano httpd-app.conf&lt;/em&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Use your cursor and find the line that says &lt;em&gt;RewriteEngine On&lt;/em&gt; that is just above the line that says &lt;em&gt;#RewriteBase /wordpress/&lt;/em&gt;&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Enter the following lines&lt;/del&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;del&gt;# begin www to non-www&lt;/del&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;del&gt;RewriteCond %{HTTP_HOST} ^&lt;a href=&quot;http://www.(.*)$&quot;&gt;www.(.*)$&lt;/a&gt; [NC]&lt;/del&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;del&gt;RewriteRule ^(.*)$ https://%1/$1 [R=permanent,L]&lt;/del&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;del&gt;# end www to non-www&lt;/del&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;The first and last line are just comments so that you can go back and remind yourself of what you did and where. The middle two lines are where the server recognizes incoming URL requests and redirects them accordingly&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;With any luck, your file will look like the image below — hit ctrl+X to exit, and hit ‘Y’ when prompted (“to save modified buffer”) to save your work&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Run &lt;em&gt;sudo /opt/bitnami/ctlscript.sh restart&lt;/em&gt; to restart your server and test out the domain in a browser to make sure everything works&lt;/del&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;If things go bad, run &lt;em&gt;mv httpd-app.conf.old httpd-app.conf&lt;/em&gt; and then restart everything by running &lt;em&gt;sudo /opt/bitnami/ctlscript.sh restart&lt;/em&gt;&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/Screenshot-2021-01-17-131508.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;What &lt;em&gt;httpd-app.conf&lt;/em&gt; should look like in your Lightsail instance SSH console after the edits&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;I’ve only been using AWS Lightsail for a few days, but my server already feels much more responsive. It’s also nice to go to my website and not see “not secure” in my browser address bar (its also apparently an SEO bump for most search engines). Its also great to know that Lightsail is integrated deeply into AWS which makes the additional features and capabilities that have made AWS the industry leader (i.e. load balancers, CloudFront as CDN, scaling up instance resources, using S3 as a datastore, or even ultimately upgrading to full-fledged EC2 instances) are readily available.&lt;/p&gt;</content:encoded><category>AWS</category><category>Bitnami</category><category>blogwork</category><category>HTTPS</category><category>Let&apos;s Encrypt</category><category>Lightsail</category></item><item><title>Advice VCs Want to Give but Rarely Do to Entrepreneurs Pitching Their Startups</title><link>https://benjamintseng.com/2018/10/advice-on-startup-pitches-that-i-want-to-give-but-rarely-do/</link><guid isPermaLink="true">https://benjamintseng.com/2018/10/advice-on-startup-pitches-that-i-want-to-give-but-rarely-do/</guid><description>Advice VCs Want to Give but Rarely Do to Entrepreneurs Pitching Their Startups</description><pubDate>Sat, 27 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-20.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://www.someecards.com/usercards/viewcard/MjAxMS0zZTU3ZmZhMDQ0YjBlMDRl/?tagSlug=thanks&quot;&gt;Someecards&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I thought I’d re-post &lt;a href=&quot;https://www.quora.com/What-advice-do-VCs-want-to-give-founders-during-pitches-but-refrain-from-1/answer/Benjamin-Tseng&quot;&gt;a response I wrote a while ago to a question on Quora&lt;/a&gt; as someone recently asked me the question: “What advice do you wish you could give but usually don’t to a startup pitching you?”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Person X on your team reflects poorly on your company&lt;/strong&gt; — This is tough advice to give as its virtually impossible during the course of a pitch to build enough rapport and get a deep enough understanding of the inter-personal dynamics of the team to give that advice without it unnecessarily hurting feelings or sounding incredibly arrogant / meddlesome.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your slides look awful&lt;/strong&gt; — This is difficult to say in a pitch because it just sounds petty for an investor to complain about the packaging rather than the substance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be careful when using my portfolio companies as examples&lt;/strong&gt; — While its good to build rapport / common ground with your VC audience, using their portfolio companies as examples has an unnecessarily high chance of backfiring. It is highly unlikely that you will know more than an inside investor who is attending board meetings and in direct contact with management, so any errors you make (i.e., assuming a company is doing well when it isn’t or assuming a company is doing poorly when it is doing well / is about to turn the corner) are readily caught and immediately make you seem foolish.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You should pitch someone who’s more passionate about what you’re doing&lt;/strong&gt; — Because VCs have to risk their reputation within their firms / to the outside world for the deals they sign up to do, they have to be very selective about which companies they choose to get involved with. As a result, even if there’s nothing wrong with a business model / idea, some VCs will choose not to invest due simply to lack of passion. As the entrepreneur is probably deeply passionate about and personally invested in the market / problem, giving this advice can feel tantamount to insulting the entrepreneur’s child or spouse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully this gives some of the hard-working entrepreneurs out there some context on why a pitch didn’t go as well as they had hoped and maybe some pointers on who and how to approach an investor for their next pitch.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on how VC works / thinks&lt;/a&gt;&lt;/p&gt;</content:encoded><category>pitch</category><category>Venture Capital</category></item><item><title>The Four Types of M&amp;A</title><link>https://benjamintseng.com/2017/09/the-four-types-of-ma/</link><guid isPermaLink="true">https://benjamintseng.com/2017/09/the-four-types-of-ma/</guid><description>The Four Types of M&amp;A</description><pubDate>Tue, 19 Sep 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m oftentimes asked what determines the prices that companies get bought for: after all, why does one app company get bought for $19 billion and a similar app get bought at a discount to the amount of investor capital that was raised?&lt;/p&gt;
&lt;p&gt;While specific transaction values depend a lot on the specific acquirer (i.e. how much cash on hand they have, how big they are, etc.), I’m going to share a framework that has been very helpful to me in thinking about acquisition valuations and how startups can position themselves to get more attractive offers. The key is understanding that, all things being equal, &lt;strong&gt;why you’re being acquired determines the buyer’s willingness to pay&lt;/strong&gt;. These motivations fall on a spectrum dividing acquisitions &lt;strong&gt;into four types&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-23.png&quot; alt/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Talent Acquisitions&lt;/strong&gt;: These are commonly referred to in the tech press as “acquihires”. In these acquisitions, the buyer has determined that it makes more sense to buy a team than to spend the money, time, and effort needed to recruit a comparable one. In these acquisitions, the size and caliber of the team determine the purchase price.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asset / Capability Acquisitions&lt;/strong&gt;: In these acquisitions, the buyer is in need of a particular asset or capability of the target: it could be a portfolio of patents, a particular customer relationship, a particular facility, or even a particular product or technology that helps complete the buyer’s product portfolio. In these acquisitions, the uniqueness and potential business value of the assets determine the purchase price.&lt;/li&gt;
&lt;li&gt;**Business Acquisitions:**These are acquisitions where the buyer values the target for the success of its business and for the possible synergies that could come about from merging the two. In these acquisitions, the financials of the target (revenues, profitability, growth rate) as well as the benefits that the investment bankers and buyer’s corporate development teams estimate from combining the two businesses (cost savings, ability to easily cross-sell, new business won because of a more complete offering, etc) determine the purchase price.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strategic Gamechangers&lt;/strong&gt;: These are acquisitions where the buyer believes the target gives them an ability to transform their business and is also a critical threat if acquired by a competitor. These tend to be acquisitions which are priced by the buyer’s full ability to pay as they represent bets on a future.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What’s useful about this framework is that it gives guidance to companies who are contemplating acquisitions as exit opportunities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;**If your company is being considered for a talent acquisition,**then it is your job to convince the acquirer that you have built assets and capabilities above and beyond what your team alone is worth. Emphasize patents, communities, developer ecosystems, corporate relationships, how your product fills a distinct gap in their product portfolio, a sexy domain name, anything that might be valuable beyond just the team that has attracted their interest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If a company is being considered for an asset / capability acquisition&lt;/strong&gt;, then the key is to emphasize the potential financial trajectory of the business and the synergies that can be realized after a merger. Emphasize how current revenues and contracts will grow and develop, how a combined sales and marketing effort will be more effective than the sum of the parts, and how the current businesses are complementary in a real way that impacts the bottom line, and not just as an interesting “thing” to buy.&lt;/li&gt;
&lt;li&gt;**If a company is being evaluated as a business acquisition,**then the key is to emphasize how pivotal a role it can play in defining the future of the acquirer in a way that goes beyond just what the numbers say about the business. This is what drives valuations like GM’s acquisition of Cruise (which was a leader in driverless vehicle technology) for up to $1B, or Facebook’s acquisition of WhatsApp (messenger app with over 600 million users when it was acquired, many in strategic regions for Facebook) for $19B, or Walmart’s acquisition of Jet.com (an innovator in eCommerce that Walmart needs to help in its war for retail marketshare with Amazon.com).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The framework works for two reasons: (1) companies are bought, not sold, and the price is usually determined by the party that is most willing to walk away from a deal (that’s usually the buyer) and (2) it generally reflects how most startups tend to create value over time: they start by hiring a great team, who proceed to build compelling capabilities / assets, which materialize as interesting businesses, which can represent the future direction of an industry.&lt;/p&gt;
&lt;p&gt;Hopefully, this framework helps any tech industry onlooker wondering why acquisition valuations end up at a certain level or any startup evaluating how best to court an acquisition offer.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on how VC works / thinks&lt;/a&gt;&lt;/p&gt;</content:encoded><category>M&amp;amp;A</category><category>talent acquisition</category><category>Venture Capital</category></item><item><title>Snap Inc by the Numbers</title><link>https://benjamintseng.com/2017/02/snap-inc-unit-economics/</link><guid isPermaLink="true">https://benjamintseng.com/2017/02/snap-inc-unit-economics/</guid><description>Snap Inc by the Numbers</description><pubDate>Mon, 06 Feb 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;A look at what Snap’s S-1 reveals about their growth story and unit economics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you follow the tech industry at all, you will have heard that consumer app darling Snap Inc. (makers of the app Snapchat) has filed to go public. &lt;a href=&quot;https://www.sec.gov/Archives/edgar/data/1564408/000119312517029199/d270216ds1.htm&quot;&gt;The ensuing Form S-1&lt;/a&gt; that has recently been made available has left tech-finance nerds like yours truly drooling over the until-recently-super-secretive numbers behind their business.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-3.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Oddly apt banner; Source: &lt;a href=&quot;http://www.businessinsider.com/r-exclusive-snaps-secrecy-frustrates-banks-pursuit-of-ipo-glory-2017-2&quot;&gt;Business Insider&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Much of the commentary in the press to date has been about how unprofitable the company is (having lost over $500M in 2016 alone). I have been unimpressed with that line of thinking — as what &lt;a href=&quot;http://benjamintseng.com/2011/06/the-goal-is-not-profitability/&quot;&gt;the bottom line is in a given year is hardly the right measure for assessing a young, high-growth company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While full-time Wall Street analysts will pour over the figures and comparables in much greater detail than I can, I decided to take a quick peek at the numbers to gauge for myself how the business is doing as a growth investment, looking at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What does the growth story look like for the business?&lt;/li&gt;
&lt;li&gt;Do the unit economics allow for a path to profitability?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-does-the-growth-story-look-like-for-the-business&quot;&gt;What does the growth story look like for the business?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/2013/11/the-facebook-hamster-wheel/&quot;&gt;As I’ve noted before&lt;/a&gt;, consumer media businesses like Snap have two options available to grow: (1) increase the number of users / amount of time spent and/or (2) better monetize users over time&lt;/p&gt;
&lt;p&gt;A quick peek at the DAU (Daily Active Users) counts of Snap reveal that path (1) is troubled for them. Using Facebook as a comparable (and using the midpoint of Facebook’s quarter-end DAU counts to line up with Snap’s average DAU over a quarter) reveals not only that Snap’s DAU numbers aren’t growing so much, their growth outside of North America (where they should have more room to grow) isn’t doing that great either (which is especially alarming as the S-1 admits Q4 is usually seasonally high for them).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-24.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Last 3 Quarters of DAU growth, by region&lt;/p&gt;
&lt;p&gt;A quick look at the data also reveals why Facebook prioritizes Android development and low-bandwidth-friendly experiences — international remains an area of rapid growth which is especially astonishing considering how over 1 billion Facebook users are from outside of North America. This contrasts with Snap which, in addition to needing a huge amount of bandwidth (as a photo and video intensive platform) also (as they admitted in their S-1) de-emphasizes Android development. Couple that with Snap’s core demographic (read: old people can’t figure out how to use the app), reveals a challenge to where quick short-term user growth can come from.&lt;/p&gt;
&lt;p&gt;As a result, Snap’s growth in the near term will have to be driven more by path (2). Here, there is a lot more good news. Snap’s quarterly revenue per user more than doubled over the last 3 quarters to $1.029/DAU. While its a long way off from Facebook’s whopping $7.323/DAU (and over $25 if you’re just looking at North American users), it suggests that there is plenty of opportunity for Snap to increase monetization, especially overseas where its currently able to only monetize about 1/10 as effectively as they are in North America (compared to Facebook which is able to do so 1/5 to 1/6 of North America depending on the quarter).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-25.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;2016 and 2015 Q2-Q4 Quarterly Revenue per DAU, by region&lt;/p&gt;
&lt;p&gt;Considering Snap has just started with its advertising business and has already convinced major advertisers to build custom content that isn’t readily reusable on other platforms and Snap’s low revenue per user compared even to Facebook’s overseas numbers, I think its a relatively safe bet that there is a lot of potential for the number to go up.&lt;/p&gt;
&lt;h2 id=&quot;do-the-unit-economics-allow-for-a-path-to-profitability&quot;&gt;Do the unit economics allow for a path to profitability?&lt;/h2&gt;
&lt;p&gt;While most folks have been (rightfully) stunned by the (staggering) amount of money Snap lost in 2016, to me the more pertinent question (considering the over $1 billion Snap still has in its coffers to weather losses) is whether or not there is a path to sustainable unit economics. Or, put more simply, can Snap grow its way out of unprofitability?&lt;/p&gt;
&lt;p&gt;Because neither Facebook nor Snap provide regional breakdowns of their cost structure, I’ve focused on global unit economics, summarized below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-26.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;2016 and 2015 Q2-Q4 Quarterly Financials per DAU&lt;/p&gt;
&lt;p&gt;What’s astonishing here is that &lt;strong&gt;neither Snap nor Facebook seem to be gaining much from scale&lt;/strong&gt;. Not only are their costs of sales per user (cost of hosting infrastructure and advertising infrastructure) increasing each quarter, but the operating expenses per user (what they spend on R&amp;amp;D, sales &amp;amp; marketing, and overhead — so not directly tied to any particular user or dollar of revenue) don’t seem to be shrinking either. In fact, Facebook’s is over twice as large as Snap’s — suggesting that its not just a simple question of Snap growing a bit further to begin to experience returns to scale here.&lt;/p&gt;
&lt;p&gt;What makes the Facebook economic machine go, though, is despite the increase in costs per user, their revenue per user grows &lt;em&gt;even faster.&lt;/em&gt; The result is profit per user is growing quarter to quarter! In fact, on a per user basis, &lt;em&gt;Q4 2016 operating profit exceeded Q2 2015 gross profit&lt;/em&gt;(revenue less cost of sales, so not counting operating expenses)! No wonder Facebook’s stock price has been on a tear!&lt;/p&gt;
&lt;p&gt;While Snap has also been growing its revenue per user faster than its cost of sales (turning a gross profit per user in Q4 2016 for the first time), the overall trendlines aren’t great, as illustrated by the fact that its operating profit per user has gotten steadily worse over the last 3 quarters. The rapid growth in Snap’s costs per user and the fact that Facebook’s costs are larger and still growing suggests that there are no simple scale-based reasons that Snap will achieve profitability on a per user basis. As a result, the only path for Snap to achieve sustainability on unit economics will be to pursue huge growth in user monetization.&lt;/p&gt;
&lt;h2 id=&quot;tying-it-together&quot;&gt;Tying it Together&lt;/h2&gt;
&lt;p&gt;The case for Snap as a good investment really boils down to how quickly and to what extent one believes that the company can increase their monetization per user. While the potential is certainly there (as is being realized as the rapid growth in revenue per user numbers show), what’s less clear is whether or not the company has the technology or the talent (none of the key executives named in the S-1 have a particular background building advertising infrastructure or ecosystems that Google, Facebook, and even Twitter did to dominate the online advertising businesses) to do it quickly enough to &lt;a href=&quot;http://fortune.com/2016/10/06/snapchat-ipo-rumors/&quot;&gt;justify the rumored $25 billion valuation they are striving for&lt;/a&gt; (a whopping 38x sales multiple using 2016 Q4 revenue as a run-rate [which the S-1 admits is a seasonally high quarter]).&lt;/p&gt;
&lt;p&gt;What is striking to me, though, is that Snap would even attempt an IPO at this stage. In my mind, Snap has a very real shot at being a great digital media company of the same importance as Google and Facebook and, while I can appreciate the hunger from Wall Street to invest in a high-growth consumer tech company, not having a great deal of visibility / certainty around unit economics and having only barely begun monetization (with your first quarter where revenue exceeds cost of sales is a holiday quarter) poses challenges for a management team that will need to manage public market expectations around forecasts and capitalization.&lt;/p&gt;
&lt;p&gt;In any event, I’ll be looking forward to digging in more when Snap reveals future figures around monetization and advertising strategy — and, to be honest, Facebook’s numbers going forward now that I have a better appreciation for their impressive economic model.&lt;/p&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Facebook</category><category>finance</category><category>S-1</category><category>Snap Inc</category><category>Snapchat</category><category>unit economics</category></item><item><title>Dr. Machine Learning</title><link>https://benjamintseng.com/2016/11/dr-machine-learning/</link><guid isPermaLink="true">https://benjamintseng.com/2016/11/dr-machine-learning/</guid><description>Dr. Machine Learning</description><pubDate>Wed, 23 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;How to realize the promise of applying machine learning to healthcare&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-4.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Not going to happen anytime soon, sadly: &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Doctor_(Star_Trek:_Voyager)&quot;&gt;the Doctor from Star Trek: Voyager&lt;/a&gt;; Source: &lt;a href=&quot;http://trekcore.com/gallery/thumbnails.php?album=99&amp;page=3&quot;&gt;TrekCore&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://venturebeat.com/2012/09/02/vinod-khosla-says-technology-will-replace-80-percent-of-doctors-sparks-indignation/&quot;&gt;Despite the hype&lt;/a&gt;, it’ll likely be quite some time before human physicians will be replaced with machines (sorry, &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Doctor_(Star_Trek:_Voyager)&quot;&gt;Star Trek: Voyager fans&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;While “smart” technology like &lt;a href=&quot;http://www.ibm.com/smarterplanet/us/en/ibmwatson/&quot;&gt;IBM’s Watson&lt;/a&gt; and &lt;a href=&quot;https://deepmind.com/alpha-go.html&quot;&gt;Alphabet’s AlphaGo&lt;/a&gt; can solve incredibly complex problems, they are probably not quite ready to handle the &lt;em&gt;messiness&lt;/em&gt; of qualitative unstructured information from patients and caretakers (“it kind of hurts sometimes”) that sometimes lie (“I swear I’m still a virgin!”) or withhold information (“what does me smoking pot have to do with this?”) or have their own agendas and concerns (“I just need some painkillers and this will all go away”).&lt;/p&gt;
&lt;p&gt;Instead, machine learning startups and entrepreneurs interested in medicine should focus on areas where they can &lt;strong&gt;augment the efforts of physicians rather than replace them&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One great example of this is in &lt;strong&gt;diagnostic interpretation&lt;/strong&gt;. Today, doctors manually process countless X-rays, pathology slides, drug adherence records, and other feeds of data (EKGs, blood chemistries, etc) to find clues as to what ails their patients. What gets me excited is that these tasks are exactly the type of well-defined “pattern recognition” problems that are tractable for an AI / machine learning approach.&lt;/p&gt;
&lt;p&gt;If done right, software can not only handle basic diagnostic tasks, but to dramatically improve accuracy and speed. This would let healthcare systems see more patients, make more money, improve the quality of care, and let medical professionals focus on managing other &lt;em&gt;messier&lt;/em&gt; data and on treating patients.&lt;/p&gt;
&lt;p&gt;As an investor, I’m very excited about the new businesses that can be built here and put together the following “wish list” of what companies setting out to apply machine learning to healthcare should strive for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Excellent training data and data pipeline&lt;/strong&gt;: Having access to large, well-annotated datasets today and the infrastructure and processes in place to build and annotate larger datasets tomorrow is probably the main defining . While its tempting for startups to cut corners here, that would be short-sighted as the long-term success of any machine learning company ultimately depends on this being a core competency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Low (ideally zero) clinical tradeoffs&lt;/strong&gt;: Medical professionals tend to be very skeptical of new technologies. While its possible to have great product-market fit with a technology being much better on just one dimension, in practice, to get over the innate skepticism of the field, the best companies will be able to show great data that makes few clinical compromises (if any). For a diagnostic company, that means having better sensitivty and selectivity at the same stage in disease progression (ideally prospectively and not just retrospectively).&lt;/li&gt;
&lt;li&gt;**Not a pure black box:**AI-based approaches too often work like a black box: you have no idea why it gave a certain answer. While this is perfectly acceptable when it comes to recommending a book to buy or a video to watch, it is less so in medicine where expensive, potentially life-altering decisions are being made. The best companies will figure out how to make aspects of their algorithms more transparent to practitioners, calling out, for example, the critical features or data points that led the algorithm to make its call. This will let physicians build confidence in their ability to weigh the algorithm against other messier factors and diagnostic explanations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solve a burning need for the market as it is today:&lt;/strong&gt; Companies don’t earn the right to change or disrupt anything until they’ve established a foothold into an existing market. This can be extremely frustrating, especially in medicine given how conservative the field is and the drive in many entrepreneurs to shake up a healthcare system that has many flaws. But, the practical reality is that all the participants in the system (payers, physicians, administrators, etc) are too busy with their own issues (i.e. patient care, finding a way to get everything paid for) to just embrace a new technology, no matter how awesome it is. To succeed, machine diagnostic technologies should start, not by upending everything with a radical solution, but by solving a clear pain point (that hopefully has a lot of big dollar signs attached to it!) for a clear customer in mind.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its reasons like this that I eagerly follow the development of companies with initiatives in applying machine learning to healthcare like &lt;a href=&quot;https://deepmind.com/applied/deepmind-health/&quot;&gt;Google’s DeepMind,&lt;/a&gt; &lt;a href=&quot;https://www.zebra-med.com/&quot;&gt;Zebra Medical&lt;/a&gt;, and many more.&lt;/p&gt;</content:encoded><category>AI</category><category>DeepMind</category><category>diagnostic</category><category>Google</category><category>IBM Watson</category><category>Machine Learning</category><category>Zebra Medical</category></item><item><title>Why VR Could be as Big as the Smartphone Revolution</title><link>https://benjamintseng.com/2016/03/why-vr-could-be-as-big-as-the-smartphone-revolution/</link><guid isPermaLink="true">https://benjamintseng.com/2016/03/why-vr-could-be-as-big-as-the-smartphone-revolution/</guid><description>Why VR Could be as Big as the Smartphone Revolution</description><pubDate>Wed, 09 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Technology in the 1990s and early 2000s marched to the beat of an Intel-and-Microsoft-led drum.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-5.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.itproportal.com/2012/09/07/analyst-identifies-widening-rift-in-microsoft-intel-alliance/&quot;&gt;IT Portal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Intel would release new chips at a regular cadence: each cheaper, faster, and more energy efficient than the last. This would let Microsoft push out new, more performance-hungry software, which would, in turn, get customers to want Intel’s next, more awesome chip. Couple that virtuous cycle with the fact that millions of households were buying their first PCs and getting onto the Internet for the first time — and great opportunities were created to build businesses and products across software and hardware.&lt;/p&gt;
&lt;p&gt;But, over time, that cycle broke down. By the mid-2000s, Intel’s technological progress bumped into the limits of what physics would allow with regards to chip performance and cost. Complacency from its enviable market share coupled with software bloat from its Windows and Office franchises had a similar effect on Microsoft. The result was that the Intel and Microsoft drum stopped beating as they became unable to give the mass market a compelling reason to upgrade to each subsequent generation of devices.&lt;/p&gt;
&lt;p&gt;The result was a hollowing out of the hardware and semiconductor industries tied to the PC market that was only masked by the innovation stemming from the rise of the Internet and the dawn of a new technology cycle in the late 2000s in the form of Apple’s iPhone and its Android competitors: &lt;strong&gt;the smartphone&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-6.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://mashable.com/2015/10/05/steve-jobs-4-years-later/&quot;&gt;Mashable&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A new, but eerily familiar cycle began: like clockwork, Qualcomm, Samsung, and Apple (playing the part of Intel) would devise new, more awesome chips which would feed the creation of new performance-hungry software from Google and Apple (playing the part of Microsoft) which led to demand for the next generation of hardware. Just as with the PC cycle, new and lucrative software, hardware, and service businesses flourished.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-7.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;But, just as with the PC cycle, the smartphone cycle is starting to show signs of maturity. Apple’s recent slower than expected growth has already been blamed on smartphone market saturation. Users are beginning to see each new generation of smartphone as marginal improvements. There are also eery parallels between the growing complaints over &lt;a href=&quot;http://www.theverge.com/2016/2/3/10900612/walt-mossberg-apple-iphone-ios-mac-osx-app-problems&quot;&gt;Apple software quality from even Apple fans&lt;/a&gt; and the position Microsoft was in near the end of the PC cycle.&lt;/p&gt;
&lt;p&gt;While its too early to call the end for Apple and Google, history suggests that we will eventually enter a similar phase with smartphones that the PC industry experienced. This begs the question: what’s next? Many of the traditional answers to this question — connected cars, the “Internet of Things”, Wearables, Digital TVs — have not yet proven themselves to be truly mass market, nor have they shown the virtuous technology upgrade cycle that characterized the PC and smartphone industries.&lt;/p&gt;
&lt;p&gt;This brings us to &lt;strong&gt;Virtual Reality&lt;/strong&gt;. With VR, we have a new technology paradigm that can (potentially) appeal to the mass market (new types of games, new ways of doing work, new ways of experiencing the world, etc.). It also has a high bar for hardware performance that will benefit dramatically from advances in technology, not dissimilar from what we saw with the PC and smartphone.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-8.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.forbes.com/sites/kathleenchaykowski/2016/02/24/mark-zuckerberg-has-a-plan-to-make-virtual-reality-social/#6083f04f7959&quot;&gt;Forbes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The ultimate proof will be whether or not a compelling ecosystem of VR software and services emerges to make this technology more of a mainstream “must-have” (something that, admittedly, the high price of the first generation &lt;a href=&quot;https://www.oculus.com/en-us/&quot;&gt;Facebook/Oculus&lt;/a&gt;, &lt;a href=&quot;http://www.htcvive.com/us/product/&quot;&gt;HTC/Valve&lt;/a&gt;, and &lt;a href=&quot;https://www.microsoft.com/microsoft-hololens/en-us&quot;&gt;Microsoft&lt;/a&gt; products may hinder).&lt;/p&gt;
&lt;p&gt;As a tech enthusiast, its easy to get excited. Not only is VR just frickin’ cool (&lt;a href=&quot;http://techcrunch.com/2016/03/01/strange-sensations-htcs-brave-new-virtual-world/?ncid=rss&quot;&gt;it is!&lt;/a&gt;), its probably the first thing since the smartphone with the mass appeal and virtuous upgrade cycle that can bring about the huge flourishing of products and companies that makes tech so dynamic to be involved with.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Android</category><category>Apple</category><category>Facebook</category><category>HTC</category><category>industry maturity</category><category>Intel</category><category>iPhone</category><category>Microsoft</category><category>Microsoft Office</category><category>Oculus</category><category>Qualcomm</category><category>Samsung</category><category>smartphone</category><category>Valve</category><category>virtual reality</category><category>VR</category><category>Windows</category></item><item><title>Laszlo Bock on Building Google’s Culture</title><link>https://benjamintseng.com/2016/03/laszlo-bock-on-building-googles-culture/</link><guid isPermaLink="true">https://benjamintseng.com/2016/03/laszlo-bock-on-building-googles-culture/</guid><description>Laszlo Bock on Building Google’s Culture</description><pubDate>Wed, 02 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Much has been written about what makes Google work so well: their ridiculously profitable advertising business model, the technology behind their search engine and data centers, and the amazing pay and perks they offer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-13.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://amzn.to/2X8ei4p&quot;&gt;the book&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My experiences investing in and working with startups, however, has taught me that building a great company is usually less about a specific technical or business model innovation than about building a culture of continuous improvement and innovation. To try to get some insight into how Google does things, I picked up Google SVP of People Operations &lt;a href=&quot;https://amzn.to/2X8ei4p&quot;&gt;Laszlo Bock’s book &lt;em&gt;Work Rules!&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bock describes a Google culture rooted in principles that came from founders Larry Page and Sergey Brin when they started the company: get the best people to work for you, make them want to stay and contribute, and remove barriers to their creativity. What’s great (to those interested in company building) is that Bock goes on to detail the practices Google has put in place to try to live up to these principles even as their headcount has expanded.&lt;/p&gt;
&lt;p&gt;The core of Google’s culture boils down to four basic principles and much of the book is focused on how companies should act if they want to live up to them:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Presume trust&lt;/strong&gt;: Many of Google’s cultural norms stem from a view that people are well-intentioned and trustworthy. While that may not seem so radical, this manifested at Google as a level of transparency with employees and a bias to say yes to employee suggestions that most companies are uncomfortable with. It raises interesting questions about why companies that say their talent is the most important thing treat them in ways that suggest a lack of trust.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recruit the best&lt;/strong&gt;: Many an exec pays lip service to this, but what Google has done is institute policies that run counter to standard recruiting practices to try to actually achieve this at scale: templatized interviews / forms (to make the review process more objective and standardized), hiring decisions made by cross-org committees (to insure a consistently high bar is set), and heavy use of data to track the effectiveness of different interviewers and interview tactics. While there’s room to disagree if these are the best policies (I can imagine hating this as a hiring manager trying to staff up a team quickly), what I admired is that they set a goal (to hire the best at scale) and have actually thought through the recruiting practices they need to do so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pay fairly [means pay unequally]&lt;/strong&gt;: While many executives would agree with the notion that superstar employees can be 2-10x more productive, few companies actually compensate their superstars 2-10x more. While its unclear to me how effective Google is at rewarding superstars, the fact that they’ve tried to align their pay policies with their beliefs on how people perform is another great example of deviating from the norm (this time in terms of compensation) to follow through on their desire to pay fairly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be data-driven&lt;/strong&gt;: Another “in vogue” platitude amongst executives, but one that very few companies live up to, is around being data-driven. In reading Bock’s book, I was constantly drawing parallels between the experimentation, data collection, and analyses his People Operations team carried out and the types of experiments, data collection, and analyses you would expect a consumer internet/mobile company to do with their users. Case in point: Bock’s team experimented with different performance review approaches and even cafeteria food offerings in the same way you would expect Facebook to experiment with different news feed algorithms and notification strategies. It underscores the principle that, if you’re truly data-driven, you don’t just selectively apply it to how you conduct business, you apply it everywhere.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course, not every company is Google, and not every company should have the same set of guiding principles or will come to same conclusions. Some of the processes that Google practices are impractical (i.e., experimentation is harder to set up / draw conclusions from with much smaller companies, not all professions have such wide variations in output as to drive such wide variations in pay, etc).&lt;/p&gt;
&lt;p&gt;What Bock’s book highlights, though, is that companies should be thoughtful about what sort of cultural principles they want to follow and what policies and actions that translates into if they truly believe them. I’d highly recommend the book!&lt;/p&gt;</content:encoded><category>company culture</category><category>Google</category><category>Laszlo Bock</category></item><item><title>What Happens After the Tech Bubble Pops</title><link>https://benjamintseng.com/2016/02/what-happens-after-the-bubble-pops/</link><guid isPermaLink="true">https://benjamintseng.com/2016/02/what-happens-after-the-bubble-pops/</guid><description>What Happens After the Tech Bubble Pops</description><pubDate>Mon, 08 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In recent years, it’s been the opposite of controversial to say that &lt;strong&gt;the tech industry is in a bubble&lt;/strong&gt;. The terrible recent stock market performance of once high-flying startups across virtually every industry (see table below) and the turmoil in the stock market stemming from low oil prices and concerns about the economies of countries like China and Brazil have raised fears that the bubble is beginning to pop.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-12.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;While history will judge when this bubble “officially” bursts, the purpose of this post is to try to make some predictions about what will happen during/after this “correction” and pull together some advice for people in / wanting to get into the tech industry. Starting with the immediate consequences, one can reasonably expect that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exit pipeline will dry up&lt;/strong&gt;: When startup valuations are higher than what the company could reasonably get in the stock market, management teams (who need to keep their investors and employees happy) become less willing to go public. And, if public markets are less excited about startups, the price acquirers need to pay to convince a management team to sell goes down. The result is fewer exits and less cash back to investors and employees for the exits that do happen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VCs become less willing to invest&lt;/strong&gt;: VCs invest in startups on the promise that future IPOs and acquisitions will make them even more money. When the exit pipeline dries up, VCs get cold feet because the ability to get a nice exit seems to fade away. The result is that VCs become a lot more price-sensitive when it comes to investing in later stage companies (where the dried up exit pipeline hurts the most).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Later stage companies start cutting costs&lt;/strong&gt;: Companies in an environment where they can’t sell themselves or easily raise money have no choice but to cut costs. Since the vast majority of later-stage startups run at a loss to increase growth, they will find themselves in the uncomfortable position of slowing down hiring and potentially laying employees off, cutting back on perks, and focusing a lot more on getting their financials in order.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result of all of this will be interesting for folks used to a tech industry (and a Bay Area) flush with cash and boundlessly optimistic:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Job hopping should slow&lt;/strong&gt;: “Easy money” to help companies figure out what works or to get an “acquihire” as a soft landing will be harder to get in a challenged financing and exit environment. The result is that the rapid job hopping endemic in the tech industry should slow as potential founders find it harder to raise money for their ideas and as it becomes harder for new startups to get the capital they need to pay top dollar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong companies are here to stay&lt;/strong&gt;: While there is broad agreement that there are too many startups with higher valuations than reasonable, what’s also become clear is there are a number of mature tech companies that are doing exceptionally well (i.e. Facebook, Amazon, Netflix, and Google) and a number of “hotshots” which have demonstrated enough growth and strong enough unit economics and market position to survive a challenged environment (i.e. Uber, Airbnb). This will let them continue to hire and invest in ways that weaker peers will be unable to match.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tech “luxury money” will slow but not disappear&lt;/strong&gt;: Anyone who lives in the Bay Area has a story of the ridiculousness of “tech money” (sky-high rents, &lt;a href=&quot;http://www.thebolditalic.com/articles/7239-an-overview-of-the-san-francisco-high-end-toast-scene&quot;&gt;gourmet toast&lt;/a&gt;,&lt;a href=&quot;http://nextjuggernaut.com/blog/11-uber-for-x-startups-that-failed-are-you-making-the-same-mistakes/&quot;&gt;“its like Uber but for X”&lt;/a&gt;, etc). This has been fueled by cash from the startup world as well as free flowing VC money subsidizing many of these new services . However, in a world where companies need to cut costs, where exits are harder to come by, and where VCs are less willing to subsidize random on-demand services, a lot of this will diminish. That some of these services are fundamentally better than what came before (i.e. Uber) and that stronger companies will continue to pay top dollar for top talent will prevent all of this from collapsing (and &lt;a href=&quot;http://techcrunch.com/2014/04/14/sf-housing/&quot;&gt;lets not forget San Francisco’s irrational housing supply policies&lt;/a&gt;). As a result, people expecting a reversal of gentrification and the excesses of tech wealth will likely be disappointed, but its reasonable to expect a dramatic rationalization of the price and quantity of many “luxuries” that Bay Area inhabitants have become accustomed to soon.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, what to do if you’re in / trying to get in to / wanting to invest in the tech industry?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Understand the business before you get in&lt;/strong&gt;: Its a shame that market sentiment drives fundraising and exits, because good financial performance is generally a pretty good indicator of the long-term prospects of a business. In an environment where its harder to exit and raise cash, its absolutely critical to make sure there is a solid business footing so the company can keep going or raise money / exit on good terms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be concerned about companies which have a lot of startup exposure&lt;/strong&gt;: Even if a company has solid financial performance, if much of that comes from selling to startups (especially services around accounting, recruiting, or sales), then they’re dependent on VCs opening up their own wallets to make money.&lt;/li&gt;
&lt;li&gt;**Have a much higher bar for large, later-stage companies:**The companies that will feel the most “pain” the earliest will be those with with high valuations and high costs. Raising money at unicorn valuations can make a sexy press release but it doesn’t amount to anything if you can’t exit or raise money at an even higher valuation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rationalize exposure to “luxury”&lt;/strong&gt;: Don’t expect that “Uber but for X” service that you love to stick around (at least not at current prices)…&lt;/li&gt;
&lt;li&gt;**Early stage companies can still be attractive:**Companies that are several years from an exit &amp;amp; raising large amounts of cash will be insulated in the near-term from the pain in the later stage, especially if they are committed to staying frugal and building a disruptive business. Since they are already relatively low in valuation and since investors know they are discounting off a valuation in the future (potentially after any current market softness), the downward pressures on valuation are potentially lighter as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thought this was interesting or helpful? &lt;a href=&quot;http://benjamintseng.com/tag/finance/&quot;&gt;Check out some of my other pieces on investing / finance&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Bay Area</category><category>Box</category><category>bubble</category><category>Etsy</category><category>Evolent Health</category><category>finance</category><category>FitBit</category><category>GoPro</category><category>Hortonworks</category><category>Lending Club</category><category>San Francisco</category><category>Square</category><category>tech</category><category>Teladoc</category><category>Uber</category><category>Venture Capital</category></item><item><title>An “Unbiased Opinion”</title><link>https://benjamintseng.com/2014/09/an-unbiased-opinion/</link><guid isPermaLink="true">https://benjamintseng.com/2014/09/an-unbiased-opinion/</guid><description>An “Unbiased Opinion”</description><pubDate>Tue, 30 Sep 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently read a short column by gadget reviewer Vlad Savov in &lt;em&gt;The Verge&lt;/em&gt; provocatively titled &lt;a href=&quot;http://www.theverge.com/2014/9/24/6834955/vlad-reviews&quot;&gt;“My reviews are biased — that’s why you should trust them”&lt;/a&gt; which made me think. In it, Vlad addresses the accusation he hears often that he’s biased:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“**&lt;em&gt;Of course&lt;/em&gt; I’m biased, that’s the whole point…**&lt;strong&gt;subjectivity is an inherent — and I would argue &lt;em&gt;necessary&lt;/em&gt; — part of making these reviews meaningful&lt;/strong&gt;. Giving each new device a decontextualized blank slate to be reviewed against and only asserting the bare facts of its existence is neither engaging nor particularly useful. You &lt;em&gt;want&lt;/em&gt; me to complain about the chronically bloopy Samsung TouchWiz interface while celebrating the size perfection of last year’s Moto X. Those are my preferences, my biased opinions, and it’s only by applying them to the pristine new phone or tablet that I can be of any use to readers. To be perfectly impartial would negate the value of having a human conduct the review at all. Just feed the new thing into a 3D scanner and run a few algorithms over the resulting data to determine a numerical score. Job done.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[emphasis mine]&lt;/p&gt;
&lt;p&gt;As Vlad points out, in an expert you’re asking for advice from, bias is a good thing. Now whether or not Vlad has unhelpful biases or is someone who’s opinion you value is a separate question entirely, but if there’s one thing I’ve learned — &lt;strong&gt;an unbiased opinion is oftentimes an uneducated one&lt;/strong&gt; and tend to come from panderers who fit one of three criteria:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;they think you don’t want them to express an opinion and are trying to respect your wishes&lt;/li&gt;
&lt;li&gt;they don’t know anything&lt;/li&gt;
&lt;li&gt;they are trying to sell you something, not mutually exclusive with (2)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The individuals who are the most knowledgeable and thoughtful about a topic almost certainly have a bias and that’s a bias that you &lt;em&gt;want&lt;/em&gt; to hear.&lt;/p&gt;</content:encoded><category>expert opinion</category><category>The Verge</category><category>Vlad Savov</category></item><item><title>3D Printing as Disruptive Innovation</title><link>https://benjamintseng.com/2012/04/3d-printing-as-disruptive-innovation/</link><guid isPermaLink="true">https://benjamintseng.com/2012/04/3d-printing-as-disruptive-innovation/</guid><description>3D Printing as Disruptive Innovation</description><pubDate>Thu, 26 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I attended a &lt;a href=&quot;http://www.vlab.org/&quot;&gt;MIT/Stanford VLAB&lt;/a&gt; event on 3D printing technologies. While I had previously been aware of &lt;a href=&quot;http://en.wikipedia.org/wiki/3D_printing&quot;&gt;3D printing&lt;/a&gt; (which works basically the way it sounds) as a way of helping companies and startups do quick prototypes or letting geeks of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Maker_subculture&quot;&gt;“maker” persuasion&lt;/a&gt; make random knickknacks, it was at the event that I started to recognize &lt;strong&gt;the technology’s disruptive potential in manufacturing&lt;/strong&gt;. While the conference itself was actually more about personal use for 3D printing, when I thought about the applications in the industrial/business world, it was literally like seeing the first part/introduction of a new chapter or case study from Clayton Christensen, author of &lt;a href=&quot;http://www.amazon.com/gp/product/0060521996?ie=UTF8&amp;tag=bnjammin-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060521996&quot;&gt;&lt;em&gt;The Innovator’s Dilemma&lt;/em&gt;&lt;/a&gt; (and inspiration for &lt;a href=&quot;http://benjamintseng.com/2009/09/innovators-delight/&quot;&gt;one of the more popular blog posts here&lt;/a&gt; :-)) play out right in front of me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Like many other disruptive innovations when they began, 3D printing &lt;strong&gt;today is unable to serve&lt;/strong&gt; &lt;strong&gt;the broader manufacturing “market”&lt;/strong&gt;. Generally speaking, the time needed per unit output, the poor “print resolution”, the upfront capital costs, and some of the limitations in terms of materials are among the reasons that the technology as it stands today is uncompetitive with traditional mass manufacturing.&lt;/li&gt;
&lt;li&gt;Even if 3D printing were competitive today, &lt;strong&gt;there are big internal and external stumbling blocks which would probably make it very difficult for existing large companies to embrace it&lt;/strong&gt;. Today’s heavyweight manufacturers are organized and incentivized internally along the lines of traditional assembly line manufacturing. They also lack the partners, channels, and supply chain relationships (among others) externally that they would need to succeed.&lt;/li&gt;
&lt;li&gt;While 3D printing today is very disadvantaged relative to traditional manufacturing technologies (most notably in speed and upfront cost), &lt;strong&gt;it is extremely good at certain things which make it a phenomenal technology for certain use cases&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Rapid design to production&lt;/strong&gt;&lt;/em&gt;: Unlike traditional manufacturing techniques which take significant initial tooling and setup, once you have a 3D printer and an idea, all you need to do is print the darn thing! At the conference, one of the panelists gave a great example: a designer bought an Apple iPad on a Friday, decided he wanted to make his own iPad case, and despite not getting any help from Apple or prior knowledge of the specs, was able by Monday to be producing and selling the case he had designed that weekend. Idea to production in three days. Is it any wonder that so many of the new hardware startups are using 3D printing to do quick prototyping?&lt;/li&gt;
&lt;li&gt;*&lt;strong&gt;Short runs/lots of customization&lt;/strong&gt;:*Chances are most of the things you use in your life are not one of a kind (i.e. pencils, clothes, utensils, dishware, furniture, cars, etc). The reason for this is that mass production make it &lt;em&gt;extremely cheap&lt;/em&gt; to produce many copies of the same thing. The flip side of this is that short production runs (where you’re not producing thousands or millions of the same thing) and production where each item has a fair amount of customization or uniqueness is really expensive. With 3D printing, however, because each item being produced is produced in the same way (by the printer), you can produce one item at close to the same per unit price as producing a million – this makes 3D printing a very interesting technology for markets where customization &amp;amp; short runs are extremely valuable.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Shapes/structures that injection molding and machining find difficult&lt;/strong&gt;&lt;/em&gt;: There are many shapes where traditional machining (taking a big block of material and whittling it down to the desired shape) and injection molding (building a mold and then filling it with molten material to get the desired shape) are not ideal: things like producing precision products that go into airplanes and racecars or printing the scaffolds with which bioengineers hope to build artificial organs are uniquely addressable by 3D printing technologies.&lt;/li&gt;
&lt;li&gt;*&lt;strong&gt;Low labor&lt;/strong&gt;:*The printer takes care of all of it – thus letting companies cut costs in manufacturing and/or refocus their people to steps in the process which do require direct human intervention.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;And, of course, with the new markets which are opening up for 3D printing, its certainly helpful that the size, cost, and performance of 3D printers has improved dramatically and is continuing to improve – to the point where &lt;strong&gt;the panelists were very serious when they articulated a vision of the future where 3D printers could be as widespread as typical inkjet/laser printers!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok, so why do we care? While its difficult to predict precisely what this technology could bring (it is disruptive after all!), I think there are a few tantalizing possibilities of how the manufacturing game might change to consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ability to do rapid design to productionmeans**you could do****“&lt;strong&gt;&lt;strong&gt;fast fashion&lt;/strong&gt;&lt;/strong&gt;”**&lt;strong&gt;for everything&lt;/strong&gt; – in the same way that companies like Zara can produce thousands of different products in a season (and quickly change them to meet new trends/styles), broader adoption of 3D printing could lead to the rise of new companies where design/operational flexibility and speed are king, as the companies best able to fit their products to the flavor-of-the-month gain more traction.&lt;/li&gt;
&lt;li&gt;The ability to do customization means &lt;strong&gt;you can manufacture custom parts/products cost-effectively&lt;/strong&gt; &lt;strong&gt;and without holding&lt;strong&gt;&lt;strong&gt;as much&lt;/strong&gt;&lt;/strong&gt;inventory&lt;/strong&gt;; production only needs to begin after an order is on hand (no reason to hold extra “copies” of something that may go out of fashion/go bad in storage when you can print stuff on the fly) and the lack of retooling means companies can be a lot more flexible in terms of using customization to get more customers.&lt;/li&gt;
&lt;li&gt;I’m not sure how all the second/third-order effects play out, but &lt;strong&gt;this could also put a damper on&lt;strong&gt;&lt;strong&gt;outsourced manufacturing&lt;/strong&gt;&lt;/strong&gt;to countries like China/India&lt;/strong&gt; – who cares about cheaper manufacturing labor overseas when 3D printing makes it possible to manufacture locally without much labor and avoid import duties, shipping delays, and the need to hold on to parts/inventory?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think there’s a ton of potential for the technology itself and its applications, and the possible consequences for how manufacturing will evolve are staggering. Yes, we are probably a long way off from seeing this, but I think we are on the verge of seeing a disruptive innovation take place, and if you’re anything like me, you’re excited to see it play out.&lt;/p&gt;</content:encoded><category>3D Printing</category><category>disruptive innovation</category></item><item><title>Boa Constrictors Listen to Your Heart So They Know When You’re Dead</title><link>https://benjamintseng.com/2012/01/boa-constrictors-listen-to-your-heart-so-they-know-when-youre-dead/</link><guid isPermaLink="true">https://benjamintseng.com/2012/01/boa-constrictors-listen-to-your-heart-so-they-know-when-youre-dead/</guid><description>Boa Constrictors Listen to Your Heart So They Know When You’re Dead</description><pubDate>Mon, 30 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-11.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.microscopy-uk.org.uk/mag/artnov04macro/pwsnake.html&quot;&gt;Paul Whitten&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rsbl.royalsocietypublishing.org/content/early/2012/01/11/rsbl.2011.1105&quot;&gt;For January I decided to blog a paper&lt;/a&gt; I heard about on the &lt;a href=&quot;http://www.nature.com/nature/podcast/&quot;&gt;excellent Nature podcast&lt;/a&gt; about a deliciously simple and elegant experiment to test a very simple question: given how much time and effort boa constrictors (&lt;a href=&quot;http://www.microscopy-uk.org.uk/mag/artnov04macro/pwsnake.html&quot;&gt;like the one on above, photo taken by Paul Whitten&lt;/a&gt;) need to kill prey by squeezing them to death, how do they know when to stop squeezing?&lt;/p&gt;
&lt;p&gt;Hypothesizing that boa constrictors could sense the heartbeat of their prey, some enterprising researchers from Dickinson College decided to test the hypothesis by fitting dead rats with bulbs connected to water pumps (so that the researchers could simulate a heartbeat) and tracking how long and hard the boas would squeeze for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rats without a “heartbeat” (white)&lt;/li&gt;
&lt;li&gt;rats with a “heartbeat” for 10 min (gray)&lt;/li&gt;
&lt;li&gt;rats with a continuous “heartbeat” (black)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-52-700x1024.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 2, &lt;a href=&quot;https://royalsocietypublishing.org/doi/full/10.1098/rsbl.2011.1105&quot;&gt;Boback. et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The results are shown in figure 2 (to the right). The different color bars show the different experimental groups (white: no heartbeat, gray: heartbeat for 10 min before stopping, and black: continuous heartbeat). Figure 2a (on top) shows how long the boas squeezed for whereas Figure 2b (on bottom) shows the total “effort” exerted by the boas. As obvious from the chart, the longer the simulated heartbeat went, the longer and harder the boas would squeeze.&lt;/p&gt;
&lt;p&gt;Conclusion? I’ll let the paper speak for itself: “&lt;strong&gt;snakes use the heartbeat in their prey as a cue to modulate constriction effort and to decide when to release their prey&lt;/strong&gt;.”&lt;/p&gt;
&lt;p&gt;Interestingly, the paper goes a step further for those of us who aren’t ecology experts and notes that being attentive to heartbeat would probably be pretty irrelevant in the wild for small mammals (which, ironically, includes rats) and birds which die pretty quickly after being constricted. Where this type of attentiveness to heartrate is useful is in reptilian prey (crocodiles, lizards, other snakes, etc) which can survive with reduced oxygen for longer. From that observation, the researchers thus concluded that listening for heartrate probably evolved early in evolutionary history at a time when the main prey for snakes were other reptiles and not mammals and birds.&lt;/p&gt;
&lt;p&gt;In terms of where I’d go next after this – my main point of curiosity is on whether or not boa constrictors are listening/feeling for any other signs of life (i.e. movement or breathing). Obviously, they’re sensitive to heart rate, but if an animal with simulated breathing or movement – would that change their constricting activity as well? After all, I’m sure the creative guys that made an artificial water-pump-heart can find ways to build an artificial diaphragm and limb muscles… right?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rsbl.royalsocietypublishing.org/content/early/2012/01/11/rsbl.2011.1105.full&quot;&gt;Paper&lt;/a&gt;: Boback et al., “Snake modulates constriction in response to prey’s heartbeat.” Biol Letters. 19 Dec 2011. &lt;em&gt;doi: 10.1098/rsbl.2011.1105&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>heartbeat</category><category>Science</category><category>snake</category></item><item><title>Mosquitoes are Drawn to Your Skin Bacteria</title><link>https://benjamintseng.com/2011/12/mosquitoes-are-drawn-to-your-skin-bacteria/</link><guid isPermaLink="true">https://benjamintseng.com/2011/12/mosquitoes-are-drawn-to-your-skin-bacteria/</guid><description>Mosquitoes are Drawn to Your Skin Bacteria</description><pubDate>Fri, 30 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0028991&quot;&gt;This month’s paper&lt;/a&gt; (from open access journal PLoS ONE) is yet again about the impact on our health of the bacteria which have decided to call our bodies home. But, instead of the bacteria living in our gut, this month is about the bacteria which live on our skin.&lt;/p&gt;
&lt;p&gt;It’s been known that the bacteria that live on our skin help give us our particular odors. So, the researchers wondered if the mosquitos responsible for passing malaria (&lt;em&gt;Anopheles&lt;/em&gt;) were more or less drawn to different individuals based on the scent that our skin-borne bacteria impart upon us (also, for the record, before you freak out about bacteria on your skin, remember that like the bacteria in your gut, the bacteria on your skin are natural and play a key role in maintaining the health of your skin).&lt;/p&gt;
&lt;p&gt;Looking at 48 individuals, they noticed a huge variation in terms of attractiveness to &lt;em&gt;Anopheles&lt;/em&gt;mosquitos (measured by seeing how much mosquitos prefer to fly towards a chamber with a particular individual’s skin extract versus a control) which they were able to trace to two things. The first is &lt;strong&gt;the amount of bacteria&lt;/strong&gt; on your skin. As shown in Figure 2 below, is that the more bacteria that you have on your skin (the higher your “log bacterial density”), the more attractive you seem to be to mosquitos (the higher your mean relative attractiveness).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-77.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 2, &lt;a href=&quot;https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0028991&quot;&gt;Verhulst et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The second thing they noticed was that &lt;strong&gt;the type of bacteria&lt;/strong&gt; also seemed to be correlated with attractiveness to mosquitos. Using DNA sequencing technology, they were able to get a mini-census of what sort of bacteria were present on the skins of the different patients. Sadly, they didn’t show any pretty figures for the analysis they conducted on two common types of bacteria (&lt;em&gt;Staphylococcus&lt;/em&gt;and &lt;em&gt;Pseudomonas&lt;/em&gt;), but, to quote from the paper:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The abundance of &lt;em&gt;Staphylococcus&lt;/em&gt; spp. was 2.62 times higher in the HA [Highly Attractive to mosquitoes] group than in the PA [Poorly Attractive to mosquitoes] group and the abundance of &lt;em&gt;Pseudomonas&lt;/em&gt; spp. 3.11 times higher in the PA group than in the HA group.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Using further genetic analyses, they were also able to show a number of other types of bacteria that were correlated with one or the other.&lt;/p&gt;
&lt;p&gt;So, what did I think? While I think there’s a lot of interesting data here, I think the story could’ve been tighter. First and foremost, for obvious reasons, &lt;strong&gt;correlation does not mean causation&lt;/strong&gt;. This was not a true controlled experiment – we don’t know for a fact if more/specific types of bacteria cause mosquitos to be drawn to them or if there’s something else that explains both the amount/type of bacteria and the attractiveness of an individual’s skin scent to a mosquito. Secondly, Figure 2 leaves much to be desired in terms of establishing a strong trendline. Yes, if I  squint (and ignore their very leading trendline) I can see a positive correlation – but truth be told, the scatterplot looks like a giant mess, especially if you include the red squares that go with “Not HA or PA”. For a future study, I think it’d be great if they could get around this to show stronger causation with direct experimentation (i.e. extracting the odorants from &lt;em&gt;Staphylococcus&lt;/em&gt; and/or &lt;em&gt;Pseudomonas&lt;/em&gt; and adding them to a “clean” skin sample, etc)&lt;/p&gt;
&lt;p&gt;With that said, I have to applaud the researchers for tackling a fascinating topic by taking a very different angle. Coverage of malaria is usually focused on how to directly kill or impede the parasite (&lt;em&gt;Plasmodium falciparums&lt;/em&gt;). This is the first treatment of the “ecology” of malaria – specifically the ecology of the bacteria on your skin! While the authors don’t promise a “cure for malaria”, you can tell they are excited about what they’ve found and the potential to find ways other than killing parasites/mosquitos to help deal with malaria, and I look forward to seeing the other ways that our skin bacteria impact our lives.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0028991&quot;&gt;Paper&lt;/a&gt;: Verhulst et al. “Composition of Human Skin Microbiota Affects Attractiveness to Malaria Mosquitoes.” PLoS ONE 6(12). 17 Nov 2011. &lt;em&gt;doi:10.1371/journal.pone.0028991&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>bacteria</category><category>flora</category><category>malaria</category><category>mosquito</category><category>Science</category></item><item><title>Fat Flora</title><link>https://benjamintseng.com/2011/12/fat-flora/</link><guid isPermaLink="true">https://benjamintseng.com/2011/12/fat-flora/</guid><description>Fat Flora</description><pubDate>Sun, 11 Dec 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://www.healthysoul.co.uk/wp-content/uploads/2011/11/intestines-microflora.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.healthysoul.co.uk/wp-content/uploads/2011/11/intestines-microflora.gif&quot;&gt;Healthy Soul&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nature/journal/v444/n7122/abs/nature05414.html&quot;&gt;November’s paper&lt;/a&gt; was published in &lt;em&gt;Nature&lt;/em&gt;in 2006, and covers a topic I’ve become increasingly interested in: the impact of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Human_microbiome&quot;&gt;bacteria that have colonized our bodies&lt;/a&gt; on our health (something I’ve blogged about &lt;a href=&quot;http://benjamintseng.com/2010/03/collateral-damage-by-mitochondria/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://benjamintseng.com/2010/12/do-you-have-the-guts-for-nori/&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The idea that our bodies are, in some ways, more bacteria than human (there are 10x more gut bacteria – or flora — than human cells on our bodies) and that those bacteria can play a key role on our health is not only mind-blowing, it opens up another potential area for medical/life sciences research and future medicines/treatments.&lt;/p&gt;
&lt;p&gt;In the paper, a genetics team from Washington University in St. Louis explored a very basic question: &lt;strong&gt;are the gut bacteria from obese individuals different from those from non-obese individuals?&lt;/strong&gt; To study the question, they performed two types of analyses on a set of mice with a genetic defect leading to &lt;a href=&quot;http://en.wikipedia.org/wiki/Leptin#Satiety&quot;&gt;an inability of the mice to “feel full”&lt;/a&gt; (and hence likely to become obese) and genetically similar mice lacking that defect (the s0-called “wild type” control).&lt;/p&gt;
&lt;p&gt;The first was a series of genetic experiments comparing the bacteria found within the gut of obese mice with those from the gut of “wild-type” mice (this sort of comparison is something the field calls &lt;a href=&quot;http://en.wikipedia.org/wiki/Metagenomics&quot;&gt;metagenomics&lt;/a&gt;). In doing so, the researchers noticed a number of key differences in the “genetic fingerprint” of the two sets of gut bacteria, especially in the genes involved in metabolism.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-79.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 3, &lt;a href=&quot;https://www.nature.com/articles/nature05414&quot;&gt;Turnbaugh et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But, what did that mean to the overall health of the animal? To answer that question, the researchers did a number of experiments, two of which I will talk about below. First, they did a very simple chemical analysis (see figure 3b to the left) comparing the “leftover energy” in the waste (aka poop) of the obese mice to the waste of wild-type mice (and, yes, all of this was controlled for the amount of waste/poop). Lo and behold, &lt;strong&gt;the obese mice (the white bar) seemed to have gut bacteria which were significantly better at pulling calories out of the food, leaving less “leftover energy”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-80.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 3, &lt;a href=&quot;https://www.nature.com/articles/nature05414&quot;&gt;Turnbaugh et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While an interesting result, especially when thinking about some of the causes and effects of obesity, a skeptic might look at that data and say that its inconclusive about the role of gut bacteria in obesity – after all, obese mice could have all sorts of other changes which make them more efficient at pulling energy out of food. To address that, the researchers did a very elegant experiment involving &lt;a href=&quot;http://en.wikipedia.org/wiki/Fecal_transplant&quot;&gt;fecal transplant&lt;/a&gt;: that’s right, colonize one mouse with the bacteria from another mouse (by transferring poop). The figure to the right (figure 3c) shows the results of the experiment. After two weeks, despite starting out at about the same weight and eating similar amounts of the same food, wild type mice that received bacteria from other wild type mice showed an increase in body fat of about 27%, whereas the wild type mice that received bacteria from the obese mice showed an increase of about 47%! Clearly, &lt;strong&gt;gut bacteria in obese mice are playing a key role in calorie uptake!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In terms of areas of improvement, my main complaint about this study is just that it doesn’t go far enough. The paper never gets too deep on what exactly were the bacteria in each sample and we didn’t really get a sense of the real variation: how much do bacteria vary from mouse to mouse? Is it the completely different bacteria? Is it the same bacteria but different numbers? Is it the same bacteria but they’re each functioning differently? Do two obese mice have the same bacteria? What about a mouse that isn’t quite obese but not quite wild-type either? Furthermore, the paper doesn’t show us what happens if an obese mouse has its bacteria replaced with the bacteria from a wild-type mouse. These are all interesting questions that would really help researchers and doctors understand what is happening.&lt;/p&gt;
&lt;p&gt;But, despite all of that, this was a very interesting finding and has major implications for doctors and researchers in thinking about how our complicated flora impact and are impacted by our health.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nature/journal/v444/n7122/abs/nature05414.html&quot;&gt;Paper&lt;/a&gt;: Turnbaugh et al., “An obesity-associated gut microbiome with increased capacity for energy harvest.” &lt;em&gt;Nature&lt;/em&gt; (&lt;strong&gt;444&lt;/strong&gt;). 21/28 Dec 2006. &lt;em&gt;doi:10.1038/nature05414&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>bacteria</category><category>fecal transplant</category><category>flora</category><category>metagenomics</category><category>obesity</category><category>Science</category></item><item><title>Antibody-omics</title><link>https://benjamintseng.com/2011/10/antibody-omics/</link><guid isPermaLink="true">https://benjamintseng.com/2011/10/antibody-omics/</guid><description>Antibody-omics</description><pubDate>Thu, 27 Oct 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m pretty late for &lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;paper of the month&lt;/a&gt;, so here we go&lt;/p&gt;
&lt;p&gt;“Omics” is the hot buzz-suffix in the life sciences for anything which uses the new sequencing/array technologies we now have available. You don’t study genes anymore, you study &lt;em&gt;genomics&lt;/em&gt;. You don’t study proteins anymore – that’s so last century, you study &lt;em&gt;proteomics&lt;/em&gt; now. And, who studies metabolism? Its all about &lt;em&gt;metabolomics&lt;/em&gt;. There’s even a blog covering this with the semi-irreverent name &lt;a href=&quot;http://omicsomics.blogspot.com/&quot;&gt;“Omics! Omics!”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This month’s paper from &lt;em&gt;Science&lt;/em&gt; is &lt;a href=&quot;http://www.sciencemag.org/content/early/2011/08/10/science.1207532&quot;&gt;from researchers at the NIH&lt;/a&gt; because it was the first time I ever encountered the term “&lt;strong&gt;antibodyome&lt;/strong&gt;”. As some of you know, antibodies are the “smart missiles” of your immune system – they are built to recognize and attack only one specific target (i.e. a particular protein on a bacteria/virus). This ability is so remarkable that, rather than rely on human-generated constructs, researchers and biotech companies oftentimes choose to use antibodies to make research tools (i.e. using fluorescent antibodies to label specific things) and therapies (i.e. using antibodies to proteins associated with cancer as anti-cancer drugs).&lt;/p&gt;
&lt;p&gt;How the immune system does this is a fascinating story in and of itself. In a process called &lt;a href=&quot;http://en.wikipedia.org/wiki/VDJ_recombination&quot;&gt;&lt;strong&gt;V(D)J recombination&lt;/strong&gt;&lt;/a&gt; – the basic idea is that your immune system’s B-cells mix, match, and scramble certain pieces of your genetic code to try to produce a wide range of antibodies to hit potentially every structure they could conceivably see. And, once they see something which “kind of sticks”, they undergo a process called &lt;strong&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Affinity_maturation&quot;&gt;affinity maturation&lt;/a&gt;&lt;/strong&gt; to introduce all sorts of mutations in the hopes that you create an even better antibody.&lt;/p&gt;
&lt;p&gt;Which brings us to the paper I picked – the researchers analyzed a couple of particularly effective antibodies targeted at HIV, the virus which causes AIDS. What they found was that these antibodies all bound the same part of the HIV virus, but when they took a closer look at the 3D structures/the B-cell genetic code which made them, they found that the antibodies were quite different from one another (see Figure 3C below)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-72.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 3C, &lt;a href=&quot;https://science.sciencemag.org/content/333/6049/1593&quot;&gt;Wu et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What’s more, not only were they fairly distinct from one another, they each showed *significant* affinity maturation – while a typical antibody has 5-15% of their underlying genetic code modified, these antibodies had 20-50%! To get to the bottom of this, the researchers looked at all the antibodies they could pull from the patient – their “antibodyome” (in the same way that a patient’s genome would be all of their genes) — and along with data from other patients, they were able to construct a genetic “family tree” for these antibodies (see Figure 6C below)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-73.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 6, &lt;a href=&quot;https://science.sciencemag.org/content/333/6049/1593&quot;&gt;Wu et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The analysis shows that many of the antibodies were derived from the same initial genetic VDJ “mix-and-match” but that afterwards, there were quite a number of changes made to that code to get the situation where a diverse set of structures/genetic codes could attack the same spot on the HIV virus.&lt;/p&gt;
&lt;p&gt;While I wish the paper probed deeper into actual experimentation to take this analysis further (i.e. artificially using this method to create other antibodies with similar behavior), this paper goes a long way into establishing an early picture of what “antibodyomics” is. Rather than study the total impact of an immune response or just the immune capabilities of one particular B-cell/antibody, this sort of genetic approach lets researchers get a very detailed, albeit comprehensive look at where the body’s antibodies are coming from. Hopefully, longer term this also turns into a way for researchers to make better vaccines.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.sciencemag.org/content/early/2011/08/10/science.1207532&quot;&gt;Paper&lt;/a&gt;:  Wu et al., “Focused Evolution of HIV-1 Neutralizing Antibodies Revealed by Structures and Deep Sequencing.” &lt;em&gt;Science&lt;/em&gt;**(333)**. 16 Sep 2011. &lt;em&gt;doi: 10.1126/science.1207532&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>affinity maturation</category><category>AIDS</category><category>antibody</category><category>antibodyome</category><category>HIV</category><category>Science</category><category>VDJ recombination</category></item><item><title>The Marketing Glory of NVIDIA’s Codenames</title><link>https://benjamintseng.com/2011/09/the-marketing-glory-of-nvidias-codenames/</link><guid isPermaLink="true">https://benjamintseng.com/2011/09/the-marketing-glory-of-nvidias-codenames/</guid><description>The Marketing Glory of NVIDIA’s Codenames</description><pubDate>Mon, 26 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While code names are not rare in the corporate world, more often than not, the names tend to be unimaginative. &lt;strong&gt;NVIDIA’s code names, however, are pure marketing glory.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Take NVIDIA’s high performance computing product roadmap (below) – these are products that use the graphics processing capabilities of NVIDIA’s high-end GPUs and turn them into smaller, cheaper, and more power-efficient supercomputing engines which scientists and researchers can use to crunch numbers. How does NVIDIA describe its future roadmap? It uses the names of famous scientists to describe its technology roadmap: &lt;strong&gt;Tesla&lt;/strong&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Nikola_tesla&quot;&gt;the great American electrical engineer who helped bring us AC power&lt;/a&gt;), &lt;strong&gt;Fermi&lt;/strong&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Enrico_Fermi&quot;&gt;“the father of the Atomic Bomb”&lt;/a&gt;), &lt;strong&gt;Kepler&lt;/strong&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Johannes_kepler&quot;&gt;one of the first astronomers to apply physics to astronomy&lt;/a&gt;), and &lt;strong&gt;Maxwell&lt;/strong&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/James_Clerk_Maxwell&quot;&gt;the physicist who helped show that electrical, magnetic, and optical phenomena were all linked&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/Screenshot-2021-01-17-134437.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.rage3d.com/reviews/video/nvidia_gtx_580//pics/cudagpuroadmap.jpg&quot;&gt;Rage3D&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Who wouldn’t want to do some “high power” research (pun intended) with Maxwell?&lt;/p&gt;
&lt;p&gt;But, what really takes the cake for me are the codenames NVIDIA uses for its smartphone/tablet chips: its Tegra line of products. Instead of scientists, he uses, well, comic book characters. For release at the end of this year? &lt;strong&gt;Kal-El&lt;/strong&gt;, or for the uninitiated, that’s the &lt;a href=&quot;http://en.wikipedia.org/wiki/Kal_el&quot;&gt;alien name for Superman&lt;/a&gt;. After that? &lt;strong&gt;Wayne&lt;/strong&gt;, as in &lt;a href=&quot;http://en.wikipedia.org/wiki/Bruce_Wayne&quot;&gt;the alter ego for Batman&lt;/a&gt;. Then, &lt;strong&gt;Logan&lt;/strong&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Wolverine_(comics)&quot;&gt;as in the name for the X-men Wolverine&lt;/a&gt;. And then &lt;strong&gt;Stark&lt;/strong&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Tony_Stark&quot;&gt;as in the alter ego for Iron Man&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/Screenshot-2021-01-17-134506.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://blogs.nvidia.com/wp-content/uploads/2011/02/Tegra_MWC_Update1.jpg&quot;&gt;NVIDIA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Everybody wants a little Iron Man in their tablet.&lt;/p&gt;</content:encoded><category>Fermi</category><category>GPU</category><category>Kepler</category><category>Maxwell</category><category>NVIDIA</category><category>Tegra</category><category>Tesla</category></item><item><title>Web vs Native</title><link>https://benjamintseng.com/2011/09/web-vs-native/</link><guid isPermaLink="true">https://benjamintseng.com/2011/09/web-vs-native/</guid><description>Web vs Native</description><pubDate>Mon, 12 Sep 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When Steve Jobs first launched the iPhone in 2007, Apple’s perception of where the smartphone application market would move was in &lt;a href=&quot;http://www.apple.com/pr/library/2007/06/11iphone.html&quot;&gt;the direction of web applications&lt;/a&gt;. The reasons for this are obvious: people are familiar with how to build web pages and applications, and it simplifies application delivery.&lt;/p&gt;
&lt;p&gt;Yet in under a year, Apple changed course, shifting the focus of iPhone development from web applications to building native applications custom-built (by definition) for the iPhone’s operating system and hardware. While I suspect part of the reason this was done was to lock-in developers, the main reason was certainly &lt;strong&gt;the inadequacy of available browser/web technology&lt;/strong&gt;. While we can debate the former, the latter is just plain obvious. In 2007, the state of web development was relatively primitive relative to today. There was no credible HTML5 support. Javascript performance was paltry. There was no real way for web applications to access local resources/hardware capabilities. Simply put, it was probably too difficult for Apple to kludge together an application development platform based solely on open web technologies which would get the sort of performance and functionality Apple wanted.&lt;/p&gt;
&lt;p&gt;But, that was four years ago, and web technology has come a long way. Combine that with the tech commentator-sphere’s obsession with hyping up a rivalry between “native vs HTML5 app development”, and it begs the question: &lt;strong&gt;will the future of application development be HTML5 applications or native&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;There are a lot of “moving parts” in a question like this, but I believe the question itself is a red herring. Enhancements to browser performance and the new &lt;a href=&quot;http://en.wikipedia.org/wiki/HTML5#New_APIs&quot;&gt;capabilities&lt;/a&gt; that HTML5 will bring like offline storage, a canvas for direct graphic manipulation, and tools to access the file system, mean, at least to this tech blogger, that &lt;strong&gt;“HTML5 applications” are not distinct from native applications at all, they are simply native applications that you access through the internet&lt;/strong&gt;. Its not a different technology vector – it’s just a different form of delivery.&lt;/p&gt;
&lt;p&gt;Critics of this idea may cite that the performance and interface capabilities of browser-based applications lag far behind those of “traditional” native applications, and thus they will always be distinct. And, as of today, they are correct. However, this discounts a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Browser performance and browser-based application design are improving at a rapid rate&lt;/strong&gt;, in no small part because of the combination of competition between different browsers and the fact that much of the code for these browsers is open source. There will probably always be a gap between browser-based apps and native, but I believe this gap will continue to narrow to the point where, for many applications, it simply won’t be a deal-breaker anymore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;History shows that cross-platform portability and ease of development can trump performance gaps&lt;/strong&gt;. Once upon a time, all developers worth their salt coded in low level machine language. But this was a nightmare – it was difficult to do simple things like showing text on a screen, and the code written only worked on specific chips and operating systems and hardware configurations. I learned C which helped to abstract a lot of that away, and, keeping with the trend of moving towards more portability and abstraction, the mobile/web developers of today develop with tools (Python, Objective C, Ruby, Java, Javascript, etc) which make C look pretty low-level and hard to work with. Each level of abstraction adds a performance penalty, but that has hardly stopped developers from embracing them, and I feel the same will be true of “HTML5”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Huge platform economic advantages.&lt;/strong&gt; There are three huge advantages today to HTML5 development over “traditional native app development”. The first is the ability to have essentially the same application run across any device which supports a browser. Granted, there are performance and user experience issues with this approach, but when you’re a startup or even a corporate project with limited resources, being able to get wide distribution for earlier products is a huge advantage. The second is that HTML5 as a platform lacks the control/economic baggage that iOS and even Android have where distribution is controlled and “taxed” (30% to Apple/Google for an app download, 30% cut of digital goods purchases). I mean, what other reason does Amazon &lt;a href=&quot;http://www.anandtech.com/show/4613/amazon-releases-html-5-kindle-web-app&quot;&gt;have to move its Kindle application off of the iOS native path and into HTML5 territory&lt;/a&gt;? The third is that web applications do not require the latest and greatest hardware to perform amazing feats. Because these apps are fundamentally browser-based, using the internet to connect to a server-based/cloud-based application allows even “dumb devices” to do amazing things by outsourcing some of that work to another system. The combination of these three makes it easier to build new applications and services and make money off of them – which will ultimately lead to more and better applications and services for the “HTML5 ecosystem.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given Google’s strategic interest in the web as an open development platform, its no small wonder that they have pushed this concept the furthest. Not only are they working on a project called &lt;a href=&quot;http://code.google.com/chrome/nativeclient/&quot;&gt;Native Client&lt;/a&gt; to let users achieve “native performance” with the browser, they’ve built an entire operating system centered entirely around the browser, &lt;a href=&quot;http://www.google.com/chromebook/#features&quot;&gt;Chrome OS&lt;/a&gt;, and were the first to build a major web application store, the &lt;a href=&quot;https://chrome.google.com/webstore&quot;&gt;Chrome Web Store&lt;/a&gt; to help with application discovery.&lt;/p&gt;
&lt;p&gt;While it remains to be seen if any of these initiatives will end up successful, this is definitely a compelling view of how the technology ecosystem evolves, and, putting on my forward-thinking cap on, I would not be surprised if:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The major operating systems became more ChromeOS-like over time&lt;/strong&gt;. Mac OS’s dashboard widgets and Windows 7’s gadgets are already basically HTML5 mini-apps, and Microsoft has publicly stated that Windows 8 will support HTML5-based application development. I think this is a sign of things to come as the web platform evolves and matures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continued focus on browser performance may lead to new devices/browsers focused on HTML5 applications&lt;/strong&gt;. In the 1990s/2000s, there was a ton of attention focused on building Java accelerators in hardware/chips and software platforms who’s main function was to run Java. While Java did not take over the world the way its supporters had thought, I wouldn’t be surprised to see a similar explosion just over the horizon focused on HTML5/Javascript performance – maybe even HTML5 optimized chips/accelerators, additional ChromeOS-like platforms, and potentially browsers optimized to run just HTML5 games or enterprise applications?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web application discovery will become far more important&lt;/strong&gt;. The one big weakness as it stands today for HTML5 is application discovery. Its still far easier to discover a native mobile app using the iTunes App Store or the Android Market than it is to find a good HTML5 app. But, as platform matures and the platform economics shift, new application stores/recommendation engines/syndication platforms will become increasingly critical.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Apple</category><category>browser</category><category>Chrome</category><category>ChromeOS</category><category>Google</category><category>native applications</category><category>open source</category><category>open standards</category><category>tech</category><category>web applications</category></item><item><title>Standards Have No Standards</title><link>https://benjamintseng.com/2011/08/standards-have-no-standards/</link><guid isPermaLink="true">https://benjamintseng.com/2011/08/standards-have-no-standards/</guid><description>Standards Have No Standards</description><pubDate>Mon, 15 Aug 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many forms of technology requires standards to work. As a result, it is in the best interest of all parties in the &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;technology ecosystem&lt;/a&gt; to participate in standards bodies to ensure interoperability.&lt;/p&gt;
&lt;p&gt;The two main problem with getting standards working can be summed up, as all good things in technology can be, in the form of webcomics.&lt;/p&gt;
&lt;p&gt;Problem #1, &lt;a href=&quot;http://xkcd.com/927/&quot;&gt;from XKCD&lt;/a&gt;: &lt;strong&gt;people/companies/organizations keep creating more standards&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/standards.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://xkcd.com/927/&quot;&gt;XKCD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The cartoon takes the more benevolent look at how standards proliferate; the more cynical view is that individuals/corporations recognize that control or influence over an industry standard can give them &lt;a href=&quot;http://benjamintseng.com/2009/07/tech-strategy-101/&quot;&gt;significant power in the technology ecosystem&lt;/a&gt;. I think both the benevolent and the cynical view are always at play – but the result is the continual creation of “bigger and badder” standards which are meant to replace but oftentimes fail to completely supplant existing ones. Case in point, as someone who has spent a fair amount of time looking at technologies to enable greater intelligence/network connectivity in new types of devices (think TVs, smart meters, appliances, thermostats, etc.), I’m still puzzled as to why we have so many wireless communication standards and protocols for achieving it (Bluetooth, Zigbee, ZWave, WiFi, DASH7, 6LowPAN, etc)&lt;/p&gt;
&lt;p&gt;Problem #2: standards aren’t purely technical undertakings – they’re heavily motivated by the preferences of the bodies and companies which participate in formulating them, and like the US’s “wonderful” legislative process, &lt;strong&gt;involves mashing together a large number of preferences, some of which might not necessarily be easily compatible with one another.&lt;/strong&gt; This can turn quite political and generate standards/working papers which are too difficult to support well (i.e. &lt;a href=&quot;http://www.eetimes.com/electronics-news/4083295/DLNA-flunks-Best-Buy-s-tests&quot;&gt;like DLNA&lt;/a&gt;). Or, as Dilbert sums it up, these meetings are full of people who are instructed &lt;a href=&quot;http://dilbert.com/strips/comic/2009-09-02/&quot;&gt;to do this&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/dt090902.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://dilbert.com/strip/2009-09-02&quot;&gt;Dilbert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dilbert.com/strip/2011-08-02&quot;&gt;Or this:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/dt_c110802-1024x319.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://dilbert.com/strip/2011-08-02&quot;&gt;Dilbert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Our one hope is that the industry has enough people/companires who are more vested in the future of the technology industry than taking unnecessarily cheap shots at one another… It’s a wonder we have functioning standards at all, isn’t it?&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Dilbert</category><category>standards</category><category>tech</category><category>xkcd</category></item><item><title>The “Strangest Biotech Company of All” Issues Their Annual Report as a Comic Book</title><link>https://benjamintseng.com/2011/06/the-strangest-biotech-company-of-all-issues-their-annual-report-as-a-comic-book/</link><guid isPermaLink="true">https://benjamintseng.com/2011/06/the-strangest-biotech-company-of-all-issues-their-annual-report-as-a-comic-book/</guid><description>The “Strangest Biotech Company of All” Issues Their Annual Report as a Comic Book</description><pubDate>Mon, 20 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This seems almost made for me: I’m into comic books. I do my own “corporate style” annual and quarterly reports to track how my finances and goals are going. And, I follow the biopharma industry.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-33.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;United Therapeutics 2010 Annual Report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, when I found out that a biotech company issued &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;its latest annual report in the form of a comic book&lt;/a&gt;, I knew I had to talk about it!&lt;/p&gt;
&lt;p&gt;The art style is not all that bad, and the bulk of the comic is told from the first person perspective of Martin Auster, head of business development at the company (that’s &lt;em&gt;&lt;strong&gt;Doctor Auster&lt;/strong&gt;&lt;/em&gt; to you, pal!). We get an interesting look at Auster’s life, how he was a medical student who didn’t really want to do a residency, and how and why he ultimately joins the company.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-34.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;United Therapeutics 2010 Annual Report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-35.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;United Therapeutics 2010 Annual Report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-37.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;United Therapeutics 2010 Annual Report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And, of course, what annual report wouldn’t be complete without some financial charts – and yes, this particular chart was intended to be read with 3D glasses (which were apparently shipped with paper copies of the report):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-36-1024x661.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://s1.q4cdn.com/284080987/files/doc_financials/2010/ar/2010-Annual-Report.pdf&quot;&gt;United Therapeutics 2010 Annual Report&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interestingly, the company in question – &lt;a href=&quot;https://www.unither.com/&quot;&gt;United Therapeutics&lt;/a&gt; — is not a tiny company either: its &lt;a href=&quot;http://www.google.com/finance?q=UTHR&quot;&gt;worth roughly $3 billion&lt;/a&gt; (as of when this was written) and is also somewhat renowned for its more unusual practices (meetings have occurred in the virtual world Second Life and employees are all called “Unitherians”) as well as its brilliant and eccentric founder, &lt;a href=&quot;http://en.wikipedia.org/wiki/Martine_Rothblatt&quot;&gt;Dr. Martine Rothblatt&lt;/a&gt;. Rothblatt is a very accomplished modern-day polymath:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;She was an early pioneer in communication satellite law&lt;/li&gt;
&lt;li&gt;She helped launch a number of communication satellite technologies and companies&lt;/li&gt;
&lt;li&gt;She founded and was CEO of Geostar Corporation, an early GPS satellite company&lt;/li&gt;
&lt;li&gt;She founded and was CEO of Sirius Satellite Radio&lt;/li&gt;
&lt;li&gt;She led the International Bar Association’s efforts to draft a Universal Declaration on the Human Genome and Human Rights&lt;/li&gt;
&lt;li&gt;She is a pre-eminent proponent for xenotransplantation&lt;/li&gt;
&lt;li&gt;She is also one of the most vocal advocates of transgenderism and transgender rights, having been born as Martin Rothblatt (Howard Stern even referred to her as the “Martine Luther Queen” of the movement)&lt;/li&gt;
&lt;li&gt;She is a major proponent of the interesting philosophy that one might achieve technological immortality by digitizing oneself (&lt;a href=&quot;http://www.nytimes.com/2010/07/05/science/05robotside.html&quot;&gt;having created an interesting robot version of her wife, Bina&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.forbes.com/forbes/2010/0510/second-acts-pharmaceuticals-orphan-drugs-pah-deep-breaths.html&quot;&gt;She started United Therapeutics because her daughter&lt;/a&gt; was diagnosed with &lt;a href=&quot;http://en.wikipedia.org/wiki/Pulmonary_arterial_hypertension&quot;&gt;Pulmonary Arterial Hypertension&lt;/a&gt;, a fatal condition which, at the time of diagnosis, there was no effective treatment for&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You got to have a lot of love and respect for a company that not only seems to have delivered an impressive financial outcome ($600 million in sales a year and $3 billion in market cap is not bad!) and can still maintain what looks like a very fun and unique culture (in no small part, I’m sure, because of their CEO).&lt;/p&gt;</content:encoded><category>Martin Auster</category><category>Martine Rothblatt</category><category>United Therapeutics</category></item><item><title>The Goal is Not Profitability</title><link>https://benjamintseng.com/2011/06/the-goal-is-not-profitability/</link><guid isPermaLink="true">https://benjamintseng.com/2011/06/the-goal-is-not-profitability/</guid><description>The Goal is Not Profitability</description><pubDate>Thu, 16 Jun 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/businessgrowth.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://nextgenerationgrowth.files.wordpress.com/2009/08/businessgrowth.jpg&quot;&gt;Next Generation Growth&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’ve blogged before about &lt;a href=&quot;http://benjamintseng.com/2011/04/our-job-is-not-to-make-money/&quot;&gt;how the economics of the venture industry affect how venture capitalists evaluate potential investments&lt;/a&gt;, the main conclusion of which is that VCs are really only interested in companies that could potentially IPO or sell for at least several hundred million dollars.&lt;/p&gt;
&lt;p&gt;One variation on that line of logic which I think startups/entrepreneurs oftentimes fail to grasp is that &lt;strong&gt;profitability is not the number one goal&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now, don’t get me wrong. The reason for any business to exist is to ultimately make profit. And, all things being equal, investors certainly prefer more profitable companies to less/unprofitable ones. But, the truth of the matter is that things are rarely all equal and, at the end of the day, your venture capital investors aren’t necessarily looking for profit, they are looking for a large outcome.&lt;/p&gt;
&lt;p&gt;Before I get accused of being supportive of bubble companies (I’m not), let me explain what this seemingly crazy concept means in practice. First of all, &lt;strong&gt;short-term profitability can conflict with rapid growth&lt;/strong&gt;. This will sound counter-intuitive, but its the very premise for venture capital investment. Think about it: Facebook could’ve tried much harder to make a profit in its early years by cutting salaries and not investing in R&amp;amp;D, but that would’ve killed Facebook’s ability to grow quickly. Instead, they raised venture capital and ignored short-term profitability to build out the product and aggressively market. This might seem simplistic, but I oftentimes receive pitches/plans from entrepreneurs who boast that they can achieve profitability quickly or that they don’t need to raise another round of investment because they will be making a profit soon, never giving any thought to what might happen with their growth rate if they ignored profitability for another quarter or year.&lt;/p&gt;
&lt;p&gt;Secondly,&lt;strong&gt;the promise of growth and future profitability can drive large outcomes&lt;/strong&gt;. &lt;a href=&quot;http://www.google.com/finance?q=NYSE:P&quot;&gt;Pandora&lt;/a&gt;, Groupon, Enphase, &lt;a href=&quot;http://www.google.com/finance?q=NASDAQ:TSLA&quot;&gt;Tesla&lt;/a&gt;, &lt;a href=&quot;http://www.google.com/finance?q=NASDAQ:AONE&quot;&gt;A123&lt;/a&gt;, and &lt;a href=&quot;http://www.google.com/finance?q=NASDAQ:SZYM&quot;&gt;Solazyme&lt;/a&gt; are among some of the hottest venture-backed IPOs in recent memory and do you know what they all also happen to share? They are very unprofitable and, to the best of my knowledge, have not yet had a single profitable year. However, the investment community has strong faith in the ability of these businesses to continue to grow rapidly and, eventually, deliver profitability. Whether or not that faith is well-placed is another question (and I have my doubts on some of the companies on that list), but as these examples illustrate, you don’t necessarily need to be profitable to be able to get a large venture-sized outcome.&lt;/p&gt;
&lt;p&gt;Of course, it’d be a mistake to take this logic and assume that you never need to achieve or think about profitability. After all, a company that is bleeding cash unnecessarily is not a good company by any definition, regardless of whether or not the person evaluating it is in venture capital. Furthermore, while the public market may forgive Pandora and Groupon’s money-losing, there’s also no guarantee that they will be so forgiving of another company’s or even of Pandora/Groupons a few months from now.&lt;/p&gt;
&lt;p&gt;But what I am saying is that entrepreneurs need to be more thoughtful when approaching a venture investor with a plan to achieve profitability/stop raising money more quickly, because the goal of that investor is not necessarily short-term profits.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on how VC works / thinks&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Enphase</category><category>Facebook</category><category>Groupon</category><category>IPO</category><category>Pandora</category><category>profitability</category><category>Solazyme</category><category>Tesla</category><category>Venture Capital</category></item><item><title>Our Job is Not to Make Money</title><link>https://benjamintseng.com/2011/04/our-job-is-not-to-make-money/</link><guid isPermaLink="true">https://benjamintseng.com/2011/04/our-job-is-not-to-make-money/</guid><description>Our Job is Not to Make Money</description><pubDate>Mon, 18 Apr 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let’s say you pitch a VC and you’ve got a coherent business plan and some thoughtful perspectives on how your business scales. Does that mean you get the venture capital investment that you so desire?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www.toothpastefordinner.com/100106/make-money-from-home.gif&quot;&gt;Toothpaste for Dinner&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Not necessarily. There could be many reasons for a rejection, but one that crops up a great deal is not anything intrinsically wrong with a particular idea or team, but something which is an intrinsic issue with the venture capital model.&lt;/p&gt;
&lt;p&gt;One of our partners put it best when he pointed out, “Our job is not to make money, &lt;strong&gt;it’s to make&lt;/strong&gt; &lt;strong&gt;a lot of money&lt;/strong&gt;.”&lt;/p&gt;
&lt;p&gt;What that means is that venture capitalists are not just looking for a business that can make money. They are really looking for businesses &lt;strong&gt;which have the potential to sell for or go public (sell stock on NYSE/NASDAQ/etc) and yield hundreds of millions, if not billions of dollars&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why? It has to do with the way that venture capital funds work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Venture capitalists raise large $100M+ funds&lt;/strong&gt;. This is a lot of money to work with, but its also a burden in that the venture capital firm also has to deliver a large return on that large initial amount. If you start with a $100M fund, its not unheard of for investors in that fund to expect $300-400M back – and you just can’t get to those kinds of returns unless you bet on companies that sell for/list on a public market for a lot of money.&lt;/li&gt;
&lt;li&gt;**Although most investments fail, big outcomes can be *really* big.**For every Facebook, there are dozens of wannabe copycats that fall flat – so there is a very high risk that a venture investment will not pan out as one hopes. But, the flip side to this is that Facebook will likely be an outcome dozens upon dozens of times larger than its copycats. The combination of the very high risk but very high reward drive venture capitalists to chase only those which have a shot at becoming a *really* big outcome – doing anything else basically guarantees that the firm will not be able to deliver a large enough return to its investors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partners are busy people&lt;/strong&gt;. A typical venture capital fund is a partnership, consisting of a number of general partners who operate the fund. A typical general partner will, in addition to look for new deals, be responsible for/advise several companies at once. This is a fair amount of work for each company as it involves helping companies recruit, develop their strategy, connect with key customers/partners/influencers, deal with operational/legal issues, and raise money. As a result, while the amount of work can vary quite a bit, this basically limits the number of companies that a partner can commit to (and, hence, invest in). This limit encourages partners to favor companies which could end up with a larger outcome than a smaller, because below a certain size, the firm’s return profile and the limits on a partner’s time just don’t justify having a partner get too involved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result? Venture capitalists have to turn down many pitches, not because they don’t like the idea or the team and not even necessarily because they don’t think the company will make money in a reasonably short time, but because they didn’t think the idea had a good shot at being something as big and game-changing as Google, Genentech, and VMWare were. And, in fact, the not often heard truth is that a lot of the endings which entrepreneurs think of as great and which are frequently featured on tech blogs like VentureBeat and TechCrunch (i.e. selling your company to Google for $10M) are actually quite small (and possibly even a failure) when it comes to how a large venture capital firm views it.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on how VC works / thinks&lt;/a&gt;&lt;/p&gt;</content:encoded><category>exit</category><category>IPO</category><category>M&amp;amp;A</category><category>Venture Capital</category></item><item><title>Do You Have the Guts for Nori?</title><link>https://benjamintseng.com/2010/12/do-you-have-the-guts-for-nori/</link><guid isPermaLink="true">https://benjamintseng.com/2010/12/do-you-have-the-guts-for-nori/</guid><description>Do You Have the Guts for Nori?</description><pubDate>Sun, 26 Dec 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-15.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://www.precisionnutrition.com/encyclopedia/food/nori&quot;&gt;Precision Nutrition&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.nature.com/articles/nature08937&quot;&gt;The paper&lt;/a&gt; I will talk about this month is from April of this year and highlights the diversity of our “gut flora” (a pleasant way to describe the many bacteria which live in our digestive tract and help us digest the food we eat). Specifically, this paper highlights how a particular bacteria in the digestive tracts of some Japanese individuals has picked up a unique ability to digest certain certain sugars which are common in marine plants (e.g., *Porphyra,*the seaweed used to make sushi) but not in terrestrial plants.&lt;/p&gt;
&lt;p&gt;Interestingly, the researchers weren’t originally focused on how gut flora function at all, but in understanding how marine bacteria digested marine plants. They started by studying a particular marine bacteria, &lt;em&gt;Zobellia galactanivorans&lt;/em&gt; which was known for its ability to digest certain types of algae. Scanning the genome of &lt;em&gt;Zobellia&lt;/em&gt;, the researchers were able to identify a few genes which were similar enough to known sugar-digesting enzymes but didn’t seem to have the ability to act on the “usual plant sugars”.&lt;/p&gt;
&lt;p&gt;Two of the identified genes, which they called PorA and PorB, were found to be very selective in the type of plant sugar they digested. In the chart below (from Figure 1), 3 different plants are characterized along a spectrum showing if they have more LA (4-linked 3,6-anhydro-a-L-galactopyranose) chemical groups (red) or L6S (4-linked a-L-galactopyranose-6-sulphate) groups (yellow). Panel b on the right shows the H1-NMR spectrum associated with these different sugar mixes and is a chemical technique to verify what sort of sugar groups are present.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-83-1024x708.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 1, &lt;a href=&quot;https://www.nature.com/articles/nature08937&quot;&gt;Hehemann et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These mixes were subjected to PorA and PorB as well as AgaA (a sugar-digesting enzyme which works mainly on LA-type sugars like agarose). The bar charts in the middle show how active the respective enzymes were (as indicated by the amount of plant sugar digested).&lt;/p&gt;
&lt;p&gt;As you can see, PorA and PorB are only effective on L6S-type sugar groups, and not LA-type sugar groups. The researchers wondered if they had discovered the key class of enzyme responsible for allowing marine life to digest marine plant sugars and scanned other genomes for other enzymes similar to PorA and PorB. What they found was very interesting&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-84.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 3, &lt;a href=&quot;https://www.nature.com/articles/nature08937&quot;&gt;Hehemann et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What you see above is an evolutionary family tree for PorA/PorB-like genes. The red and blue boxes represent PorA/PorB-like genes which target “usual plant sugars”, but the yellow show the enzymes which specifically target the sugars found in nori (&lt;em&gt;Porphyra&lt;/em&gt;, hence the enzymes are called porhyranases). All the enzymes marked with solid diamonds are actually found in &lt;em&gt;Z&lt;/em&gt;. &lt;em&gt;galactanivorans&lt;/em&gt; (and were henced dubbed PorC, PorD, and PorE – clearly not the most imaginative naming convention). The other identified genes, however, all belonged to marine bacteria… with the notable exception of &lt;em&gt;Bateroides plebeius,&lt;/em&gt; marked with a open circle. And &lt;em&gt;Bacteroides plebeius&lt;/em&gt; (at least to the knowledge of the researchers at the time of this publication) has only been found in the guts of certain Japanese people!&lt;/p&gt;
&lt;p&gt;The researchers scanned the &lt;em&gt;Bacteroides plebeius&lt;/em&gt; genome and found that the bacteria actually had a sizable chunk of genetic material which were a much better match for marine bacteria than other similar &lt;em&gt;Bacteroides&lt;/em&gt; strains. The researchers concluded that the best explanation for this is that the &lt;em&gt;Bacteroides plebeius&lt;/em&gt; picked up its unique ability to digest marine plants not on its own, but from marine bacteria (in a process called &lt;a href=&quot;http://en.wikipedia.org/wiki/Horizontal_gene_transfer&quot;&gt;Horizontal Gene Transfer or HGT&lt;/a&gt;), most probably from bacteria that were present on dietary seaweed. Or, to put it more simply: &lt;strong&gt;your gut bacteria have the ability to “steal” genes/abilities from bacteria on the food we eat&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Cool! While this is a conclusion which we can probably never truly &lt;em&gt;prove&lt;/em&gt; (it’s an informed hypothesis based on genetic evidence), this finding does make you wonder if a similar genetic screening process could identify if our gut flora have picked up any other genes from “dietary bacteria.”&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nature/journal/v464/n7290/abs/nature08937.html&quot;&gt;Paper&lt;/a&gt;: Hehemann et al, “Transfer of carbohydrate-active enzymes from marine bacteria to Japanese gut microbiota.” &lt;em&gt;Nature&lt;/em&gt;&lt;strong&gt;464&lt;/strong&gt;: 908-912 (Apr 2010) – &lt;em&gt;doi:10.1038/nature08937&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>flora</category><category>genes</category><category>horizontal gene transfer</category><category>Japan</category><category>nori</category><category>Science</category><category>sugar</category><category>sushi</category></item><item><title>How You Might Cure Asian Glow</title><link>https://benjamintseng.com/2010/08/how-you-might-cure-asian-glow/</link><guid isPermaLink="true">https://benjamintseng.com/2010/08/how-you-might-cure-asian-glow/</guid><description>How You Might Cure Asian Glow</description><pubDate>Thu, 12 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nsmb/journal/v17/n2/full/nsmb.1737.html&quot;&gt;The paper I read&lt;/a&gt; is something that is very near and dear to my heart. As is commonly known, individuals of Asian ancestry are more likely to experience dizziness and flushed skin after drinking alcohol. This is due to the prevalence of a genetic defect in the Asian population which affects an enzyme called **Aldehyde Dehydrogenase 2 (ALDH2).**ALDH2 processes one of the by-products of alcohol consumption (acetaldehyde).&lt;/p&gt;
&lt;p&gt;In people with the genetic defect, ALDH2 works very poorly. So, people with the ALDH2 defect build up higher levels of acetaldehyde which leads them to get drunker (and thus hung-over/sick/etc) quicker. This is a problem for someone like me, who needs to drink a (comically) large amount of water to be able to properly process wine/beer/liquor. Interestingly, the &lt;a href=&quot;http://en.wikipedia.org/wiki/Disulfiram&quot;&gt;anti-drinking drug Disulfiram&lt;/a&gt; (sold as “Antabuse” and “Antabus”) helps alcoholics keep off of alcohol by basically shutting down a person’s ALDH2, effectively giving them “Asian alcohol-induced flushing syndrome” and making them get drunk and sick very quickly.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-46.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://en.wikipedia.org/wiki/File:Alda-1.svg&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, what can you do? At this point, nothing really (except, either avoid alcohol or drink a ton of water when you do drink). But, I look forward to the day when there may actually be a solution. A group at Stanford recently identified a small molecule, &lt;strong&gt;Alda-1&lt;/strong&gt; (chemical structure above), which not only increases the effectiveness of normal ALDH2, but can help “rescue” defective ALDH2!&lt;/p&gt;
&lt;p&gt;Have we found the molecule which I have been searching for ever since I started drinking? Jury’s still out, but the same group at Stanford partnered with structural biologists at Indiana University to conduct some experiments on Alda-1 to try to find out how it works.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/Screenshot-2021-01-17-150417.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 4, &lt;a href=&quot;https://www.nature.com/articles/nsmb.1737&quot;&gt;Perez-Miller et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To do this, and why this paper was published in &lt;em&gt;&lt;a href=&quot;http://www.nature.com/nsmb/index.html&quot;&gt;Nature Structural and Molecular Biology&lt;/a&gt;&lt;/em&gt; rather than another journal, they used a technique called &lt;a href=&quot;http://en.wikipedia.org/wiki/X-ray_crystallography&quot;&gt;X-ray Crystallography&lt;/a&gt; to “see” if (and how) Alda-1 interacts with ALDH2. Some of the results of these experiments are shown above. On the left, Panel B (on top) shows a 3D structure of the “defective’ version of ALDH2. If you’re new to structural biology papers, this will take some time getting used to it, but if you look carefully, you can see that ALDH2 is a &lt;strong&gt;tetramer&lt;/strong&gt;: there are 4 identical pieces (in the top-left, top-right, bottom-left, bottom-right) which are attached together in the middle.&lt;/p&gt;
&lt;p&gt;It’s not clear from this picture, but the defective version of the enzyme differs from the normal because it is unable to maintain the 3D structure needed to link up with a &lt;strong&gt;coenzyme&lt;/strong&gt; (a chemical needed by enzymes which do this sort of chemical reaction to be able to work properly) called NAD+ or even carry out the reaction (the “active site”, or the part of the enzyme which actually carries out the reaction, is “disrupted” in the mutant).&lt;/p&gt;
&lt;p&gt;So what does Alda-1 do, then? In the bottom (Panel C), you can see where the Alda-1 molecules (colored in yellow) are when they interact with ALDH2.  While the yellow molecules have a number of impacts on ALHD2’s 3D structure, the most obvious changes are highlighted in pink (those have no clear counterpart in Panel B). This is the secret of Alda-1: &lt;strong&gt;it actually changes the shape of ALDH2&lt;/strong&gt;, (partially) restoring the enzyme’s ability to bind with NAD+ and carry out the chemical reactions needed to process acetaldehyde, and &lt;strong&gt;all without actually directly touching the active site&lt;/strong&gt; (this is something which you can’t see in the panel I shared above, but you can make out from other X-ray crystallography models in the paper).&lt;/p&gt;
&lt;p&gt;The result? If you look at the chart below (Panel A), you’ll see two relationships at play. First, the greater the amount of co-enzyme NAD+ (on the horizontal axis), the faster the reaction speed (on the vertical axis). But, if you increase the amount of Alda-1 from 0 uM (the bottom-most curve) to 30 uM (the highest-most curve), you see a dramatic increase in the enzyme’s reaction speed, for the same amount of NAD+. So, does Alda-1 activate ALDH2? Judging from this chart, it definitely does.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-48.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 4, &lt;a href=&quot;https://www.nature.com/articles/nsmb.1737&quot;&gt;Perez-Miller et al&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Alda-1 is particularly interesting because most of the chemicals/drugs which we are able to develop work by breaking, de-activating, or inhibiting something. Have a cold? Break the chemical pathways which lead to runny noses. Suffering from depression? De-activate the process which cleans up serotonin (“happiness” chemicals in the brain) quickly. After all, its much easier to break something than it is to fix/create something. But, instead, Alda-1 is actually an activator (rather than a de-activator), which the authors of the study leave as a tantalizing opportunity for medical science:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This work suggests that it may be possible to rationally design similar molecular chaperones for other mutant enzymes by exploiting the binding of compounds to sites adjacent to the structurally disrupted regions, thus avoiding the possibility of enzymatic inhibition entirely independent of the conditions in which the enzyme operates.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If only it were that easy (it’s not)…&lt;/p&gt;
&lt;p&gt;Where should we go from here? Frankly, while the paper tackled a very interesting topic in a pretty rigorous fashion, I felt that a lot of the conclusions being drawn were not clear from the presented experimental results (which is why this post is a bit on the vague side on some of those details).&lt;/p&gt;
&lt;p&gt;I certainly understand the difficulty when the study is on phenomena which is molecular in nature (does the enzyme work? are the amino acids in the right location?). But, I personally felt a significant part of the paper was more conjecture than evidence, and while I’m sure the folks making the hypotheses are very experienced, I would like to see more experimental data to back up their theories. A well-designed set of site-directed mutagenesis (mutating specific parts of ALDH2 in the lab to play around with they hypotheses that the group put out) and well-tailored experiments and rounds of X-ray crystallography could help shed a little more light on their fascinating idea.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nsmb/journal/v17/n2/full/nsmb.1737.html&quot;&gt;Paper&lt;/a&gt;: Perez-Miller et al. “Alda-1 is an agonist and chemical chaperone for the common human aldehyde dehydrogenase 2 variant.” &lt;em&gt;Nature Structural and Molecular Biology&lt;/em&gt;&lt;strong&gt;17&lt;/strong&gt;:2 (Feb 2010) –&lt;em&gt;doi:10.1038/nsmb.1737&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>acetaldehyde</category><category>active site</category><category>alcohol</category><category>Alda-1</category><category>aldehyde dehydrogenase</category><category>ALDH2</category><category>Asian glow</category><category>enzyme</category><category>NAD+</category><category>Science</category><category>structural biology</category></item><item><title>I Know Enough to Get Myself in Trouble</title><link>https://benjamintseng.com/2010/07/i-know-enough-to-get-myself-in-trouble/</link><guid isPermaLink="true">https://benjamintseng.com/2010/07/i-know-enough-to-get-myself-in-trouble/</guid><description>I Know Enough to Get Myself in Trouble</description><pubDate>Mon, 19 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the dangers of a consultant looking at tech is that he can get lost in jargon. A few weeks ago, I did a little research on some of the most cutting-edge software startups in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Cloud_computing&quot;&gt;cloud computing space&lt;/a&gt; (the idea that you can use a computer feature/service without actually knowing anything about what sort of technology infrastructure was used to provide you with that feature/service – i.e., Gmail and Yahoo Mail on the consumer side, services like Amazon Web Services and Microsoft Azure on the business side). As a result, I’ve looked at the product offerings from guys like &lt;a href=&quot;http://nimbula.com/&quot;&gt;Nimbula&lt;/a&gt;, &lt;a href=&quot;http://www.cloudera.com/&quot;&gt;Cloudera&lt;/a&gt;, &lt;a href=&quot;http://www.clustrix.com/&quot;&gt;Clustrix&lt;/a&gt;, &lt;a href=&quot;http://www.appistry.com/&quot;&gt;Appistry&lt;/a&gt;, &lt;a href=&quot;http://www.elastra.com/&quot;&gt;Elastra&lt;/a&gt;, and &lt;a href=&quot;http://www.maxiscale.com/&quot;&gt;MaxiScale&lt;/a&gt;, to name a few. And, while I know enough about cloud computing to understand, at a high level, what these companies do, the use of unclear terminology sometimes makes it very difficult to pierce the “fog of marketing” and really get a good understanding of the various product strengths and weaknesses.&lt;/p&gt;
&lt;p&gt;Is it any wonder that, at times, I feel like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-32.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://dilbert.com/strip/2010-06-09&quot;&gt;Dilbert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yes, its all about that “integration layer” … My take? A great product should not need to hide behind jargon.&lt;/p&gt;</content:encoded><category>cloud</category><category>Dilbert</category></item><item><title>Diet Coke + Mentos = Paper</title><link>https://benjamintseng.com/2010/07/diet-coke-mentos-paper/</link><guid isPermaLink="true">https://benjamintseng.com/2010/07/diet-coke-mentos-paper/</guid><description>Diet Coke + Mentos = Paper</description><pubDate>Thu, 08 Jul 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Unless you just discovered YouTube yesterday, you’ve probably seen countless videos of (and maybe even have tried?) the infamous Diet Coke + Mentos reaction… which brings us to the subject of this month’s paper.&lt;/p&gt;
&lt;p&gt;An &lt;a href=&quot;http://www1.appstate.edu/dept/physics/coffey/&quot;&gt;enterprising physics professor from Appalachian State University&lt;/a&gt; decided to have her sophomore physics class take a fairly rigorous look at what drives the Diet Coke + Mentos reaction and what factors might influence its strength and speed. They were not only able to publish their results in the &lt;a href=&quot;http://scitation.aip.org/ajp/&quot;&gt;&lt;em&gt;American Journal of Physics&lt;/em&gt;&lt;/a&gt;, but the students were also given an opportunity to present their findings in a poster session (Professor Coffey reflected on the experience &lt;a href=&quot;http://www1.appstate.edu/dept/physics/coffey/nano/DietCokeandMentos.pdf&quot;&gt;in a presentation she gave&lt;/a&gt;). In my humble opinion, this is science education at its finest: instead of having students re-hash boring experiments which they already know the results of, this allowed them to do fairly original research in a field which they probably had more interest in than in the typical science lab course.&lt;/p&gt;
&lt;p&gt;So, what did they find?&lt;/p&gt;
&lt;p&gt;The first thing they found is that &lt;strong&gt;it’s not an acid-base reaction&lt;/strong&gt;. A lot of people, myself included, believe the diet coke + Mentos reaction is the same as the baking soda + vinegar “volcano” reactions that we all did as kids. Apparently, we were dead wrong, as the paper points out:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The pH of the diet Coke prior to the reaction was 3.0, and the pH of the diet Coke after the mint Mentos reaction was also 3.0. The lack of change in the pH supports the conclusion that the Mint Mentos–Diet Coke reaction is not an acid-base reaction. This conclusion is also supported by the ingredients in the Mentos, none of which are basic: sugar, glucose, syrup, hydrogenated coconut oil, gelatin, dextrin, natural flavor, corn starch, and gum arabic … An impressive acid-base reaction can be generated by adding baking soda to Diet Coke. The pH of the Diet Coke after the baking soda reaction was 6.1, indicating that much of the acid present in the Diet Coke was neutralized by the reaction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-51.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Table 1, &lt;a href=&quot;https://aapt.scitation.org/doi/10.1119/1.2888546&quot;&gt;Coffey, &lt;em&gt;American Journal of Physics&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Secondly, &lt;strong&gt;the “reaction” is not chemical (no new compounds are created), but a physical response because the Mentos makes bubbles easier to form&lt;/strong&gt;. The Mentos triggers bubble formation because the surface of the Mentos is itself extremely rough which allows bubbles to aggregate (like how adding string/popsicle stick to an oversaturated mixture of sugar and water is used to make rock candy). But that doesn’t explain why the Mentos + Diet Coke reaction works so well. The logic blew my mind but, in retrospect, is pretty simple. Certain liquids are more “bubbly” by nature – think soapy water vs. regular water. Why? Because the energy that’s needed to form a bubble is lower than the energy available from the environment (e.g., thermal energy). So, the question is, what makes a liquid more “bubbly”? &lt;strong&gt;One way is to heat the liquid&lt;/strong&gt; (heating up Coke makes it more bubbly because heating the carbon dioxide inside the soda gives the gas more thermal energy to draw upon), which the students were able to confirm when they looked at how much mass was lost during a Mentos + Diet coke reaction under three different temperatures (Table 3 below):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-47.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Table 3, &lt;a href=&quot;https://aapt.scitation.org/doi/10.1119/1.2888546&quot;&gt;Coffey, &lt;em&gt;American Journal of Physics&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What else? It turns out that &lt;strong&gt;what other chemicals a liquid has dissolved is capable of changing the ease at which bubbles are made&lt;/strong&gt;. Physicists/chemists will recognize this “ease” as &lt;a href=&quot;http://en.wikipedia.org/wiki/Surface_tension&quot;&gt;surface tension&lt;/a&gt; (how tightly the surface of a liquid pulls on itself) which you can see visually as a change in the contact angle (the angle that the bubble forms against a flat surface, see below):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/download.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://www1.appstate.edu/dept/physics/coffey/nano/DietCokeandMentos.pdf&quot;&gt;Contact angle description from presentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The larger the angle, the stronger the surface tension (the more tightly the liquid tries to pull in on itself to become a sphere). So, what happens when we add the artificial sweetener aspartame and potassium benzoate (both ingredients in Diet Coke) to water? As you can see in Figure 4 below, the contact angle in (b) [aspartame] and (c) [potassium benzoate] are smaller than (a) [pure water]. Translation: if you add aspartame and/or potassium benzoate to water, you reduce the amount of work that needs to be done by the solution to create a bubble. Table 4 below that shows the contact angles of a variety of solutions that the students tested as well as the amount of work needed to create a bubble relative to pure water:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-49-1024x225.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 4, &lt;a href=&quot;https://aapt.scitation.org/doi/10.1119/1.2888546&quot;&gt;Coffey, &lt;em&gt;American Journal of Physics&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-50.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Table 4, &lt;a href=&quot;https://aapt.scitation.org/doi/10.1119/1.2888546&quot;&gt;Coffey, &lt;em&gt;American Journal of Physics&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This table also shows why you use Diet Coke rather than regular Coke (basically sugar-water) to do the Mentos thing – regular coke has a higher contact angle (and ~20% more energy needed to make a bubble).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Another factor which the paper considers is how long it takes the dropped Mentos to sink to the bottom&lt;/strong&gt;. The faster a Mentos falls to the bottom, the longer the “average distance” that a bubble needs to travel to get to the surface. As bubbles themselves attract more bubbles, this means that the Mentos which fall to the bottom the fastest will have the strongest explosions. As the paper points out:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The speed with which the sample falls through the liquid is also a major factor. We used a video camera to measure the time it took for Mentos, rock salt, Wint-o-Green Lifesavers, and playground sand to fall through water from the top of the water line to the bottom of a clear 2 l bottle. The average times were 0.7 s for the Mentos, 1.0 s for the rock salt and the Lifesavers, and 1.5 s for the sand … If the growth of carbon  dioxide bubbles on the sample takes place at the bottom of the bottle, then the bubbles formed will detach from the sample and rise up the bottle. The bubbles then act as growth sites, where the carbon dioxide still dissolved in the solution moves into the rising bubbles, causing even more liberation of carbon dioxide from the bottle. If the bubbles must travel farther through the liquid, the reaction will be more explosive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, in conclusion, what makes a Diet Coke + Mentos reaction stronger?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temperature (hotter = stronger)&lt;/li&gt;
&lt;li&gt;Adding substances which reduce the surface tension/contact angle&lt;/li&gt;
&lt;li&gt;Increasing the speed at which the Mentos sink to the bottom (faster = stronger)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wish I had done something like this when I was in college! The paper itself also goes into a lot of other things, like the use of an atomic force microscope and scanning electron microscopes to measure the “roughness” of the surface of the Mentos, so if you’re interested in additional things which can affect the strength of the reaction (or if you’re a science teacher interested in coming up with a cool project for your students), I’d strongly encourage taking a look at the paper!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://aapt.scitation.org/doi/10.1119/1.2888546&quot;&gt;Paper&lt;/a&gt;: Coffey, T. “Diet Coke and Mentos: What is really behind this physical reaction?”. &lt;em&gt;American Journal of Physics&lt;/em&gt; **76:**6 (Jun 2008) – &lt;em&gt;doi: 10.1119/1.2888546&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Diet Coke</category><category>Mentos</category><category>surface tension</category></item><item><title>United States of Amoeba</title><link>https://benjamintseng.com/2010/05/united-states-of-amoeba/</link><guid isPermaLink="true">https://benjamintseng.com/2010/05/united-states-of-amoeba/</guid><description>United States of Amoeba</description><pubDate>Mon, 03 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most people know that &lt;a href=&quot;http://en.wikipedia.org/wiki/Virus&quot;&gt;viruses&lt;/a&gt; are notoriously tricky disease-causing pathogens to tackle. Unlike bacteria which are completely separate organisms, viruses are parasites which use a host cell’s own DNA-and-RNA-and-protein producing mechanisms to reproduce. As a result, most viruses are extremely small, as they need to find a way into a cell to hijack the cell’s  machinery, and, in fact, are oftentimes too small for light microscopes to see as beams of light have wavelengths that are too large to resolve them.&lt;/p&gt;
&lt;p&gt;However, just because &lt;em&gt;most&lt;/em&gt; viruses are small, doesn’t mean &lt;em&gt;all&lt;/em&gt; viruses are. In fact, giant &lt;a href=&quot;http://en.wikipedia.org/wiki/Mimivirus&quot;&gt;Mimiviruses&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Mamavirus&quot;&gt;Mamaviruses&lt;/a&gt;, and &lt;a href=&quot;http://en.wikipedia.org/wiki/Marseillevirus&quot;&gt;Marseillesviruses&lt;/a&gt; have been found which are &lt;strong&gt;larger than many bacteria.&lt;/strong&gt; The Mimivirus (pictured below), for instance, was so large it was actually identified incorrectly as a bacteria at first glance!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-14.jpeg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://en.wikipedia.org/wiki/File:Mimivirus.jpg&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Little concrete detail is known about these giant viruses, and there has been some debate about whether or not these viruses constitute a new “kingdom” of life (the way that bacteria and archaebacteria are), but one thing these megaviruses have in common is that they are &lt;strong&gt;all found within amoeba&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.pnas.org/content/106/51/21848.short&quot;&gt;This month’s paper&lt;/a&gt; (HT: Anthony) looks into the genome of the Marseillesvirus to try to get a better understanding of the genetic origins of these giant viruses. The left-hand-side panel of picture below is an electron micrograph of an amoeba phagocytosing Marseillesvirus (amoeba, in the search for food, will engulf almost anything smaller than they are) and the right-hand-side panel shows the virus creating viral factories (“VF”, the very dark dots) within the amoeba’s cytoplasm. If you were to zoom in even further, you’d be able to see viral particles in different stages of viral assembly!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/Screenshot-2021-01-18-103221.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 1, &lt;a href=&quot;https://www.pnas.org/content/106/51/21848.short&quot;&gt;Boyer et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ok, so we can see them. But just what makes them so big? What the heck is inside? Well, because you asked so nicely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;~368000-base pairs of DNA
&lt;ul&gt;
&lt;li&gt;This constitutes an estimated 457 genes&lt;/li&gt;
&lt;li&gt;This is much larger than the ~5000 base pair genome of SV40, a popular lab virus, the ~10000 base pairs in HIV, the ~49000 in lambda phage (another scientifically famous lab virus), but is comparable to the genome sizes of some of the smaller bacterium&lt;/li&gt;
&lt;li&gt;This is smaller than the ~1 million-base pair genome of the Mimivirus, the ~4.6 million of &lt;em&gt;E. coli&lt;/em&gt; and the ~3.2 billion in humans&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;49 proteins were identified in the viral particles, including:
&lt;ul&gt;
&lt;li&gt;Structural proteins&lt;/li&gt;
&lt;li&gt;Transcription factors (helps regulate gene activity)&lt;/li&gt;
&lt;li&gt;Protein kinases (primarily found in eukaryotic cells because they play a major role in cellular signaling networks)&lt;/li&gt;
&lt;li&gt;Glutaredoxins and thioredoxins (usually only found in plant and bacterial cells to help fight off chemical stressors)&lt;/li&gt;
&lt;li&gt;Ubiquitin system proteins (primarily in eukaryotic cells as they control which proteins are sent to a cell’s “garbage collector”)&lt;/li&gt;
&lt;li&gt;Histone-like proteins (primarily in eukaryotic cells to pack a cell’s DNA into the nucelus)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, there are a whole lot of proteins which you would only expect to see in a “full-fledged” cell, not a virus. This begs the question, why do these giant viruses have so many extra genes and proteins that you wouldn’t have expected?&lt;/p&gt;
&lt;p&gt;To answer this, the researchers ran a genetic analysis on the Marseillesvirus’s DNA, trying to identify not only which proteins were encoded in the DNA but also where those protein-encoding genes seem to come from (by identifying which species has the most similar gene structure). A high-level overview of the results of the analysis is shown in the circular map below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/circleonly.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/origin.jpg&quot; alt/&gt;
&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/genefunction.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 2, &lt;a href=&quot;https://www.pnas.org/content/106/51/21848.short&quot;&gt;Boyer et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The outermost orange bands in the circle correspond to the proteins that were identified in the virus itself using &lt;a href=&quot;http://en.wikipedia.org/wiki/Mass_spectrometry&quot;&gt;mass spectrometry&lt;/a&gt;. The second row of red and blue bands represents protein-coding genes that are predicted to exist (but have yet to be detected in the virus; its possible they don’t make up the virus’s “body” and are only made while inside the amoeba, or even that they are not expressed at all). The gray ring with colored bands represents the researchers’ best guess as to what a predicted protein-coding gene codes for (based on seeing if the gene sequence is similar to other known proteins; the legend is below-right) whereas the colored bands just outside of the central pie chart represents a computer’s best determination of what species the gene seems to have come from (based on seeing if the gene sequence is similar to/the same as another species).&lt;/p&gt;
&lt;p&gt;Of the 188 genes that a computational database identified as matching a previously characterized gene (~40% of all the predicted protein-coding genes), at least 108 come from sources outside of the giant viruses “evolutionary family”. The sources of these “misplaced” genes include bacteria, bacteria-infecting viruses called bacteriophages, amoeba, and even other eukaryotes! In other words, &lt;strong&gt;these giant viruses were genetic chimeras, mixed with DNA from all sorts of creatures in a way that you’d normally only expect in a genetically modified organism&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;As many viruses are known to be able to “borrow” DNA from their hosts and from other viruses (a process called &lt;strong&gt;horizontal gene transfer&lt;/strong&gt;), the researchers concluded that, like the immigrant’s conception of the United States of America, &lt;strong&gt;amoebas are giant genetic melting pots where genetic “immigrants” like bacteria and viruses comingle and share DNA&lt;/strong&gt;(pictured below). In the case of the ancestors to the giant viruses, this resulted in viruses which kept gaining more and more genetic material from their amoeboid hosts and the abundance of bacterial and virus parasites living within.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-78.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 5, &lt;a href=&quot;https://www.pnas.org/content/106/51/21848&quot;&gt;Boyer et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;his finding is very interesting, as it suggests that amoeba may have played a crucial role in the early evolution of life. In the same way that a cultural “melting pot” like the US allows the combination of ideas from different cultures and walks of life, early amoeba “melting pots” may have helped kickstart evolutionary jumps by letting eukaryotes, bacteria, and viruses to co-exist and share DNA far more rapidly than “regular” natural selection could allow.&lt;/p&gt;
&lt;p&gt;Of course, the flip side of this is that amoeba could also very well be allowing super-viruses and super-bacteria to breed…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.pnas.org/content/106/51/21848.short&quot;&gt;Paper&lt;/a&gt;: Boyer, Mickael et al. “Giant Marseillevirus highlights the role of amoebae as a melting pot in emergence of chimeric microorganisms.” &lt;em&gt;PNAS&lt;/em&gt;**106,**21848-21853 (22 Dec 2009) – &lt;em&gt;doi:10.1073/pnas.0911354106&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>amoeba</category><category>chimera</category><category>DNA</category><category>genes</category><category>horizontal gene transfer</category><category>mamavirus</category><category>Marseillesvirus</category><category>mass spectrometry</category><category>mimivirus</category><category>protein</category><category>Science</category><category>virus</category></item><item><title>Collateral Damage by Mitochondria</title><link>https://benjamintseng.com/2010/03/collateral-damage-by-mitochondria/</link><guid isPermaLink="true">https://benjamintseng.com/2010/03/collateral-damage-by-mitochondria/</guid><description>Collateral Damage by Mitochondria</description><pubDate>Mon, 29 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This month, I read a &lt;a href=&quot;https://www.nature.com/articles/nature08780&quot;&gt;paper&lt;/a&gt; (HT: my ex-college roommate &lt;a href=&quot;http://twitter.com/ericsuh/status/9940586444&quot;&gt;Eric&lt;/a&gt;) by a group from Beth Israel about &lt;strong&gt;systemic inflammatory response syndrome&lt;/strong&gt; (SIRS) following serious injury. SIRS, which is more commonly understood/found as &lt;a href=&quot;http://en.wikipedia.org/wiki/Sepsis&quot;&gt;sepsis&lt;/a&gt;, happens when the entire body is on high “immune alert.” In the case of sepsis, this is usually due to an infection of some sort. While an immune response may be needed to control an internal infection, SIRS is dangerous because the immune system can cause a great deal of collateral damage, resulting in potentially organ failure and death.&lt;/p&gt;
&lt;p&gt;Whereas an infection has a clear link to sepsis, the logic for why injury would cause a similar immune response was less clear. In fact, for years, the best hypothesis from the medical community was that injury would somehow cause the bacteria which naturally live in your gut to appear where they’re not supposed to be. But this explanation was not especially convincing, especially in light of injuries like burns which could still lead to SIRS but which didn’t seem to directly affect gut bacteria.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/a_05_cl_her_1b.jpg&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://thebrain.mcgill.ca/flash/a/a_05/a_05_cl/a_05_cl_her/a_05_cl_her_1b.jpg&quot;&gt;The Brain From Top to Bottom&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zhang et al, instead of assuming that some type of  endogenous bacteria was being released following injury, came up with an interesting hypothesis: it’s not bacteria which is triggering SIRS, but &lt;strong&gt;mitochondria&lt;/strong&gt;. A first year cell biology student will be able to tell you that mitochondria are the parts of eukaryotic cells (sophisticated cells with nuclei) which are responsible for keeping the cell supplied with energy. A &lt;a href=&quot;http://en.wikipedia.org/wiki/Endosymbiont_hypothesis&quot;&gt;long-standing theory&lt;/a&gt; in the life science community (pictured above) is that mitochondria, billions of years ago, were originally bacteria which other, larger bacteria swallowed whole. Over countless rounds of evolution, these smaller bacteria became symbiotic with their “neighbor” and eventually adapted to servicing the larger cell’s energy needs. Despite this evolution, mitochondria have not lost all of their (theorized) bacterial ancestry, and in fact still retain bacteria-like DNA and structures. Zhang et al’s guess was that serious injuries could expose a mitochondria’s hidden bacterial nature to the immune system, and cause the body to trigger SIRS as a response.&lt;/p&gt;
&lt;p&gt;Interesting idea, but how do you prove it? The researchers were able to show that 15 major trauma patients with no open wounds or injuries to the gut had &lt;em&gt;thousands of times more mitochondrial DNA  in their bloodstream&lt;/em&gt; than non-trauma victims. The researchers were then able to show that this mitochondrial DNA was capable of activating polymorphonuclear neutrophils, some of the body’s key “soldier” cells responsible for causing SIRS.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-81.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 3, &lt;a href=&quot;https://www.nature.com/articles/nature08780&quot;&gt;Zhang et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The figure above shows the result of an experiments illustrating this effect looking at the levels of a protein called p38 MAPK which gets chemically modified into “p-p38” when neutrophils are activated. As you can see in the p-p38 row, adding more mitochondrial DNA (mtDNA, “-” columns) to a sample of neutrophils increases levels of p-p38 (bigger, darker splotch), but adding special DNA which blocks the neutrophil’s mtDNA “detectors” (ODN, “+” columns) seems to lower it again. Comparing this with the control p38 row right underneath shows that the increase in p-p38 is likely due to neutrophil activation from the cells detecting mitochondrial DNA, and not just because the sample had more neutrophils/more p38 (as the splotches in the second row are all roughly the same).&lt;/p&gt;
&lt;p&gt;Cool, but does this mean that mitochondrial DNA actually causes a strong immune response outside of a test tube environment? To test this, the researchers injected mitochondrial DNA into rats and ran a full set of screens on them. While the paper showed numerous charts pointing out how the injected rats had strong immune response across multiple organs, the most striking are the pictures below which show a cross-section of a rat’s lungs comparing rats injected with a buffer solution (panel a, “Sham”) and rats injected with mitochondrial DNA (panel b, MTD). The cross-sections are stained with &lt;a href=&quot;http://en.wikipedia.org/wiki/H&amp;E_stain&quot;&gt;hematoxylin and eosin&lt;/a&gt; which highlight the presence of cells. The darker and “thicker” color on the right shows that there are many more cells in the lungs of rats injected with mitochondrial DNA – most likely from neutrophils and other “soldier cells” which have rushed in looking for bacteria to fight.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-82.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 4, &lt;a href=&quot;https://www.nature.com/articles/nature08780&quot;&gt;Zhang et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Amazing isn’t it? Not only did they provide part of the solution to the puzzle of injury-mediated SIRS (what they used to call “sterile SIRS”), but lent some support to the endosymbiont hypothesis!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.nature.com/nature/journal/v464/n7285/full/nature08780.html&quot;&gt;Paper&lt;/a&gt;: Zhang, Qin et al. “Circulating Mitochondrial DAMPs Cause Inflammatory Responses to Injury.” &lt;em&gt;Nature&lt;/em&gt; &lt;strong&gt;464&lt;/strong&gt;, 104-108 (4 March 2010) – &lt;em&gt;doi:10.1038/nature08780&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>bacteria</category><category>endosymbiont hypothesis</category><category>mitochondria</category><category>Science</category><category>sepsis</category><category>SIRS</category></item><item><title>Slime Takes a Stroll</title><link>https://benjamintseng.com/2010/03/slime-takes-a-stroll/</link><guid isPermaLink="true">https://benjamintseng.com/2010/03/slime-takes-a-stroll/</guid><description>Slime Takes a Stroll</description><pubDate>Mon, 01 Mar 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0002093&quot;&gt;The paper&lt;/a&gt; I read for this month brought up an interesting question I’ve always had but never really dug into: &lt;strong&gt;how do individual cells find things they can’t “see”&lt;/strong&gt;? After all, there are lots of microbes out there who can’t always see where their next meal is coming from. How do they go about looking?&lt;/p&gt;
&lt;p&gt;A group of scientists at Princeton University took a stab at the problem by studying the motion of individual slime mold amoeba (from the genus &lt;em&gt;Dictyostelium&lt;/em&gt;) and published their findings in the (&lt;a href=&quot;http://en.wikipedia.org/wiki/Open_access_journal&quot;&gt;open access&lt;/a&gt;) journal &lt;a href=&quot;http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0002093&quot;&gt;PLoS ONE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As one would imagine, if you have no idea where something is, your path to finding it will be somewhat random. What this paper sought to discover is &lt;strong&gt;what kind of random&lt;/strong&gt; motion do amoeboid-like cells use? To those of you without the pleasure of training in biophysics or stochastic processes, that may sound like utter nonsense, but suffice to say physicists and mathematicians have created mathematically precise definitions for different kinds of “random motion”.&lt;/p&gt;
&lt;p&gt;Now, if the idea of different kinds of randomness makes zero sense to you, then the following figure (from Figure 1 in the paper) might be able to help:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-85.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 1, &lt;a href=&quot;https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0002093&quot;&gt;Li et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;anel A describes a “traditional” random walk, where each “step” that a random walker takes is completely random (unpredictable and independent of the motion before it). As you can see, the path doesn’t really cover a lot of ground. After all, if you were randomly moving in different directions, you’re just as likely to move to the left as you are to move to the right. The result of this chaos is that you’re likely not to move very far at all (but likely to search a small area very thoroughly). As a result, this sort of randomness is probably not very useful for an amoeba hunting for food, unless for some reason it is counting on food to magically rain down on its lazy butt.&lt;/p&gt;
&lt;p&gt;Panel B and C describe two other kinds of randomness which are better suited to covering more ground. Although the motion described in panel B (the “Levy walk”) looks very different from the “random walk” in Panel A, it is actually very similar on a mathematical/physical level. In fact, the only difference between the “Levy walk” and the “random walk” is that, in a “normal” random walk, the size of each step is constant, whereas the size of each “step” in a “Levy walk” can be different and, sometimes, extremely long. This lets the path taken cover a whole lot more ground.&lt;/p&gt;
&lt;p&gt;A different way of using randomness to cover a lot of ground is shown in Panel C where, instead of taking big steps, the random path actually takes on two different types of motion. In one mode, the steps are exactly like the random walk in Panel A, where the path doesn’t go very far, but “searches” a local area very thoroughly. In another mode, the path bolts in a straight line for a significant distance before settling back into a random walk. This alternation between the different modes defines the “two-state motion” and is another way for randomness to cover more ground than a random walk.&lt;/p&gt;
&lt;p&gt;And what do amoeba use? Panel D gives a glimpse of it. Unlike the nice theoretical paths from Panels A-C rooted around random walks and different size steps or different modes of motion, the researchers found that &lt;strong&gt;slime mold amoeba like to zig-zag around a general direction which seems to change randomly over the course of ~10 min&lt;/strong&gt;. Panel A of Figure 2 (shown below) gives a look at three such random paths taken over 10 hours.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-86.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: Figure 2, &lt;a href=&quot;https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0002093&quot;&gt;Li et al.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The reason for this zig-zagging, or at least the best hypothesis at the time of publication, is that, unlike theoretical particles, amoeba can’t just move in completely random directions with random “step” sizes. They move by “oozing” out pseudopods (picture below), and this physical reality of amoeba motion basically makes the type of motion the researchers discussed more likely and efficient for a cell trying to make its way through uncharted territory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/1578562.gif&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;http://labs.7bscience.com/uploads/4/7/3/3/473362/1578562.gif?534&quot;&gt;7B Science Online Labs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The majority of the paper actually covers a lot of the mathematical detail involved in understanding the precise nature of the randomness of amoeboid motion, and is, frankly, an overly-intimidating way to explain what I just described above. In all fairness, that extra detail is more useful and precise in terms of understanding how amoeba move and give a better sense of the underlying biochemistry and biophysics of why they move that way. But what I found most impressive was that the paper took a very basic and straightforward experiment (tracking the motion of single cells) and applied a rigorous mathematical and physical analysis of what they saw to understand the underlying properties.&lt;/p&gt;
&lt;p&gt;The paper was from May 2008 and, according to the PLoS One website, there have been five papers which have cited it (which I have yet to read). But, I’d like to think that the next steps for the researchers involved would be to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;See how much of this type of zig-zag motion applies to other cell types (i.e., white blood cells from our immune system), and why these differences might have emerged (different cell motion mechanisms? the need to have different types of random search strategies?)&lt;/li&gt;
&lt;li&gt;Better understand what controls how quickly these cells change direction (and understand if there are drugs that can be used to modulate how our white blood cells find/identify pathogens or how pathogens find food)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0002093&quot;&gt;Paper&lt;/a&gt;: Li, Liang et al. “Persistent Cell Motion in the Absence of External Signals: a Search Strategy for Eukaryotic Cells.” &lt;em&gt;PLoS ONE&lt;/em&gt;&lt;strong&gt;3&lt;/strong&gt; (5): e2093 (May 2008) – &lt;em&gt;doi:10.1371/journal.pone.0002093&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://benjamintseng.com/category/academic-paper/&quot;&gt;Check out my other academic paper walkthroughs/summaries&lt;/a&gt;&lt;/p&gt;</content:encoded><category>amoeba</category><category>Levy&apos;s walk</category><category>random walk</category><category>Science</category><category>slime mold</category><category>two-state motion</category></item><item><title>Why Smartphones are a Big Deal</title><link>https://benjamintseng.com/2010/02/why-smartphones-are-a-big-deal/</link><guid isPermaLink="true">https://benjamintseng.com/2010/02/why-smartphones-are-a-big-deal/</guid><description>Why Smartphones are a Big Deal</description><pubDate>Wed, 24 Feb 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A cab driver the other day went off on me with a rant about how new smartphone users were all smug, arrogant gadget snobs for using phones that did more than just make phone calls. “Why you gotta need more than just the phone?”, he asked.&lt;/p&gt;
&lt;p&gt;While he was probably right on the money with the “smug”, “arrogant”, and “snob” part of the description of smartphone users (at least it accurately describes yours truly), I do think he’s ignoring a lot of the important changes which the smartphone revolution has made in the technology industry and, consequently, why so many of the industry’s venture capitalists and technology companies are investing so heavily in this direction. This post will be the first of two posts looking at what I think are the four big impacts of smartphones like the Blackberry and the iPhone on the broader technology landscape:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It’s the software, stupid&lt;/li&gt;
&lt;li&gt;Look ma, no &amp;lt;insert other device here&amp;gt;&lt;/li&gt;
&lt;li&gt;Putting the carriers in their place&lt;/li&gt;
&lt;li&gt;Contextuality&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;I. It’s the software, stupid!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can find possibly the greatest impact of the smartphone revolution in the very definition of smartphone: &lt;strong&gt;phones which can run rich operating systems and actual applications&lt;/strong&gt;. As my belligerent cab-driver pointed out, the cellular phone revolution was originally about being able to talk to other people on the go. People bought phones based on network coverage, call quality, the weight of a phone, and other concerns primarily motivated by call usability.&lt;/p&gt;
&lt;p&gt;Smartphones, however, change that. Instead of just making phone calls, they also do plenty of other things. While a lot of consumers focus their attention on how their phones now have touchscreens, built-in cameras, GPS, and motion-sensors, the magic change that I see is the ability to actually run programs.&lt;/p&gt;
&lt;p&gt;Why do I say this software thing more significant than the other features which have made their ways on to the phone? There are a number of reasons for this, but the big idea is that &lt;strong&gt;the ability to run software makes smartphones look like mobile computers&lt;/strong&gt;. We have seen this pan out in a number of ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The potential uses for a mobile phone have exploded overnight&lt;/strong&gt;. Whereas previously, they were pretty much limited to making phone calls, sending text messages/emails, playing music, and taking pictures, now they can be used to do things like play games, look up information, and even be &lt;a href=&quot;http://blog.benchside.com/2009/12/an-eye-for-an-iphone/&quot;&gt;used by doctors to help treat and diagnose patients&lt;/a&gt;. In the same way that a computer’s usefulness extends beyond what a manufacturer like Dell or HP or Apple have built into the hardware because of software, software opens up new possibilities for mobile phones in ways which we are only beginning to see.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phones can now be “updated”&lt;/strong&gt;. Before, phones were simply replaced when they became outdated. Now, some users &lt;em&gt;expect&lt;/em&gt; that a phone that they buy will be maintained even after new models are released. Case in point: Users threw a fit when Samsung decided &lt;a href=&quot;http://www.theregister.co.uk/2009/12/30/galaxy_android_2/&quot;&gt;not to allow users to update&lt;/a&gt; their Samsung Galaxy’s operating system to a new version of the Android operating system. Can you imagine 10 years ago users getting up in arms if Samsung didn’t ship a new 2 MP mini-camera to anyone who owned an earlier version of the phone which only had a 1 MP camera?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An entire new software industry has emerged with its own standards and idiosyncrasies&lt;/strong&gt;. About four decades ago, the rise of the computer created a brand new industry almost out of thin air. After all, think of all the wealth and enabled productivity that companies like Oracle, Microsoft, and Adobe have created over the past thirty years. There are early signs that a similar revolution is happening because of the rise of the smartphone. Entire fortunes have been created “out of thin air” as enterprising individuals and companies move to capture the potential software profits from creating software for the legions of iPhones and Android phones out there. What remains to be seen is whether or not the mobile software industry will end up looking more like the PC software industry, or whether or not the new operating systems and screen sizes and technologies will create something that looks more like a distant cousin of the first software revolution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;II. Look ma, no &amp;lt;insert other device here&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the most amazing consequences of Moore’s Law is that devices can quickly take on a heckuva lot more functionality then they used to. The smartphone is a perfect example of this Swiss-army knife mentality. The typical high-end smartphone today can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;take pictures&lt;/li&gt;
&lt;li&gt;use GPS&lt;/li&gt;
&lt;li&gt;play movies&lt;/li&gt;
&lt;li&gt;play songs&lt;/li&gt;
&lt;li&gt;read articles/books&lt;/li&gt;
&lt;li&gt;find what direction its being pointed in&lt;/li&gt;
&lt;li&gt;sense motion&lt;/li&gt;
&lt;li&gt;record sounds&lt;/li&gt;
&lt;li&gt;run software&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;… not to mention receive and make phone calls and texts like a phone.&lt;/p&gt;
&lt;p&gt;But, unlike cameras, GPS devices, portable media players, eReaders, compasses, Wii-motes, tape recorders, and computers, the phone is something you are likely to keep with you all day long. And, if you have a smartphone which can double as a camera, GPS, portable media player, eReaders, compass, Wii-mote, tape recorder, and computer all at once – tell me why you’re going to hold on to those other devices?&lt;/p&gt;
&lt;p&gt;That is, of course, a dramatic oversimplification. After all, I have yet to see a phone which can match a dedicated camera’s image quality or a computer’s speed, screen size, and range of software, so there are definitely reasons you’d pick one of these devices over a smartphone. The point, however, isn’t that smartphones will make these other devices irrelevant, it is that they will &lt;a href=&quot;http://benjamintseng.com/2009/09/innovators-delight/&quot;&gt;disrupt these markets&lt;/a&gt; in exactly the way that Clayton Christensen described in his book &lt;em&gt;The Innovator’s Dilemma&lt;/em&gt;, making business a whole lot harder for companies who are heavily invested in these other device categories. And make no mistake: we’re already seeing this happen as &lt;a href=&quot;http://online.wsj.com/article/SB10001424052748703574604574501532799439254.html&quot;&gt;GPS&lt;/a&gt; companies are seeing lower prices and demand as smartphones take on more and more sophisticated functionality (heck, GPS makers like Garmin are even &lt;a href=&quot;http://www8.garmin.com/nuvifone/&quot;&gt;trying to get into the mobile phone business&lt;/a&gt;!). I wouldn’t be surprised if we soon see similar declines in the market growth rates and profitability for all sorts of other devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;III. Putting the carriers in their place&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Throughout most of the history of the phone industry, the carriers were the dominant power. Sure, enormous phone companies like Nokia, Samsung, and Motorola had some clout, but at the end of the day, especially in the US, everybody felt the crushing influence of the major wireless carriers.&lt;/p&gt;
&lt;p&gt;In the US, the carriers regulated access to phones with subsidies. They controlled which functions were allowed. They controlled how many texts and phone calls you were able to make. When they did let you access the internet, they exerted strong influence on which websites you had access to and which ringtones/wallpapers/music you could download. In short, they managed the business to minimize costs and risks, and they did it because their government-granted monopolies (over the right to use wireless spectrum) and already-built networks made it impossible  for a new guy to enter the market.&lt;/p&gt;
&lt;p&gt;But this sorry state of affairs has already started to change with the advent of the smartphone. RIM’s Blackberry had started to affect the balance of power, but Apple’s iPhone really shook things up – precisely because users started demanding more than just a wireless service plan – they wanted a particular operating system with a particular internet experience and a particular set of applications – and, oh, it’s on AT&amp;amp;T? That’s not important, &lt;em&gt;tell me more about the Apple part of it&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;What’s more, the iPhone’s commercial success accelerated the change in consumer appetites. Smartphone users were now picking a wireless service provider not because of coverage or the cost of service or the special carrier-branded applications  – that was all now secondary to the availability of the phone they wanted and what sort of applications and internet experience they could get over that phone. And much to the carriers’ dismay, the wireless carrier was becoming less like the gatekeeper who got to charge crazy prices because he/she controlled the keys to the walled garden and more like the dumb pipe that people connected to the web on their iPhone with.&lt;/p&gt;
&lt;p&gt;Now, it would be an exaggeration to say that the carriers will necessarily turn into the “dumb pipes” that today’s internet service providers are (remember when everyone in the US used AOL?) as these large carriers are still largely immune to competitors. But, there are signs that the carriers are adapting to their new role. The once ultra-closed Verizon now allows Palm WebOS and Google Android devices to roam free on its network as a consequence of AT&amp;amp;T and T-Mobile offering devices from Apple and Google’s partners, respectively, and has even agreed to &lt;a href=&quot;http://www.engadget.com/2010/02/16/verizon-to-allow-unlimited-skype-calling-over-3g-starting-next-m/&quot;&gt;allow VOIP applications like Skype access to its network&lt;/a&gt;, something which jeopardizes their former core voice revenue stream.&lt;/p&gt;
&lt;p&gt;As for the carriers, as they begin to see their influence slip over basic phone experience considerations, they will likely shift their focus to finding ways to better monetize all the traffic that is pouring through their networks. Whether this means finding a way to get a cut of the ad/virtual good/eCommerce revenue that’s flowing through or shifting how they charge for network access away from unlimited/“all you can eat” plans is unclear, but it will be interesting to see how this ecosystem evolves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IV. Contextuality&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There is no better price than the amazingly low price of &lt;strong&gt;free&lt;/strong&gt;. And, in my humble opinion, it is that amazingly low price of free which has enabled web services to have such a high rate of adoption. Ask yourself, would services like Facebook and Google have grown nearly as fast without being free to use?&lt;/p&gt;
&lt;p&gt;How does one provide compelling value to users for free? Before the age of the internet, the answer to that age-old question was simple: you either got a nice government subsidy, or you just didn’t. Thankfully, the advent of the internet allowed for an entirely new business model: providing services for free and still making a decent profit by using ads. While over-hyping of this business model led to the dot com crash in 2001 as countless websites found it pretty difficult to monetize their sites purely with ads, services like Google survived because they found that they could actually increase the value of the advertising on their pages not only because they had a ton of traffic, but because &lt;strong&gt;they could use the content on the page to find ads which visitors had a significantly higher probability of caring about&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The idea that &lt;strong&gt;context could be used to increase ad conversion rates&lt;/strong&gt; (the percent of people who see an ad and actually end up buying) has spawned a whole new world of web startups and technologies which aim to find new ways to mine context to provide better ad targeting. Facebook is one such example of the use of &lt;em&gt;social context&lt;/em&gt; (who your friends are, what your interests are, what your friends’ interests are) to serve more targeted ads.&lt;/p&gt;
&lt;p&gt;So, where do smartphones fit in? There are two ways in which smartphones completely change the context-to-advertising dynamic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Location-based services&lt;/strong&gt;: Your phone is a device which not only has a processor which can run software, but is also likely to have GPS built-in, and is something which you carry on your person at all hours of the day. What this means is that the phone not only know what apps/websites you’re using, it also knows where you are and if you’re on a vehicle (based on how fast you are moving) when you’re using them. If that doesn’t let a merchant figure out a way to send you a very relevant ad, I don’t know what will. The &lt;a href=&quot;https://getyowza.com/learn&quot;&gt;Yowza iPhone application&lt;/a&gt; is an example of how this might shape out in the future, where you can search for mobile coupons for local stores all on your phone.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Augmented reality&lt;/strong&gt;: In the same way that the GPS lets mobile applications do location-based services, the camera, compass, and GPS in a mobile phone lets mobile applications do something called augmented reality. The concept behind augmented reality (AR) is that, in the real world, you and I are only limited by what our five senses can perceive. If I see an ad for a book, I can only perceive what is on the advertisement. I don’t necessarily know much about how much it costs on Amazon.com or what my friends on Facebook have said about it. Of course, with a mobile phone, I could look up those things on the internet, but AR takes this a step further. Instead of merely looking something up on the internet, AR will actually overlay content and information on top of what you are seeing on your phone screen. One example of this is the &lt;a href=&quot;http://www.biggu.com/apps/shopsavvy-android/&quot;&gt;ShopSavvy application for Android&lt;/a&gt; which allows you to scan product barcodes to find product review information and even information on pricing from online and other local stores! Google has taken this a step further with &lt;a href=&quot;http://www.google.com/mobile/goggles/&quot;&gt;Google Goggles&lt;/a&gt; which can recognize pictures of landmarks, books, and even bottles of wine! For an advertiser or a store, the ability to embed additional content through AR technology is the ultimate in providing context but only to those people who want it. &lt;strong&gt;Forget finding the right balance between putting too much or too little information on an ad, use AR so that only the people who are interested will get the extra information&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Android</category><category>AR</category><category>Augmented Reality</category><category>Blackberry</category><category>camera</category><category>carriers</category><category>Google</category><category>Google Goggles</category><category>GPS</category><category>iPhone</category><category>Palm</category><category>RIM</category><category>ShopSavvy</category><category>Skype</category><category>smartphone</category><category>software</category><category>T-Mobile</category><category>touchscreen</category><category>Verizon</category><category>VoIP</category><category>Yowza</category></item><item><title>How to Properly Define a Company’s Culture</title><link>https://benjamintseng.com/2010/01/how-to-properly-define-a-companys-culture/</link><guid isPermaLink="true">https://benjamintseng.com/2010/01/how-to-properly-define-a-companys-culture/</guid><description>How to Properly Define a Company’s Culture</description><pubDate>Thu, 28 Jan 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Company culture is a concept which, while incredibly difficult to explain or measure, is very important to a company’s well-being and employee morale. Too often, it comes in the form of vaguely written out “corporate mission statements” or never-ending lists of feel-good, mean-nothing “company values”. Oh joy, you value “teamwork” and “making money” – that was &lt;em&gt;so&lt;/em&gt; insightful…&lt;/p&gt;
&lt;p&gt;It was thus very refreshing for me to read the Netflix company culture document (sadly no longer embed-able, but you can find it at &lt;a href=&quot;https://www.slideshare.net/reed2001/culture-2009&quot;&gt;this Slideshare link&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/reed2001/culture-2009&quot; title=&quot;Culture (Original 2009 version)&quot;&gt;Culture (Original 2009 version)&lt;/a&gt;&lt;/strong&gt;  from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/reed2001&quot;&gt;Reed Hastings&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Slidumentation aside, I think the NetFlix presentation does three things extremely well:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;It’s not a list of feel-good words, but  actual values and statements which can actually guide the company in its day-to-day hiring, evaluation&lt;/strong&gt;. Most company culture statements are nothing but long lists of virtues and things non-sociopaths respect. “Teamwork” and “honesty”, for example, are usually among them. But, as the Netflix presentation points out, even Enron had a list of “values” and that wound up not amounting to much of anything. Instead, Netflix has a clear state of  things they look for in their employees, each with clear explanations for what they actually mean. For “Curiosity”, Netflix has listed four supporting statements:
&lt;ul&gt;
&lt;li&gt;You learn rapidly and eagerly&lt;/li&gt;
&lt;li&gt;You seek to understand our strategy, markets, subscribers, and suppliers.&lt;/li&gt;
&lt;li&gt;You are broadly knowledgeable about business, technology, and entertainment.&lt;/li&gt;
&lt;li&gt;You contribute effectively outside of your specialtyAdmittedly, there is nothing particularly remarkable about these four statements. But what is remarkable is that it is immediately clear to the reader what “curiosity” means, in the context of Netflix’s culture, and how Netflix employees should be judged and evaluated. It’s oftentimes astounding to me how few companies get to this bare minimum in terms of culture documents.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Netflix actually gives clear value judgments&lt;/strong&gt;.  I’ve already lamented the extent to which company culture statements are nothing more than laundry lists of “feel good” words. Netflix admirably cuts through that by not only explaining what the values mean, but also by what should happen when different “good words” conflict. And, best of all, they do it with brutal honesty. For instance, Netflix on how they won’t play the “benefits race” that other companies play:&lt;br/&gt;
A great work place is stunning colleagues. Great workplace is not day-care, espresso, health benefits, sushi lunches, nice offices, or big compensation, and we only do those that are efficient at attracting stunning colleagues.Netflix on teamwork versus individual performance:Brilliant jerks: some companies tolerate them, [but] for us, the cost to teamwork is too high.Netflix on its annual compensation review policy:Lots of people have the title “Major League Pitcher” but they are not all equally effective. Similarly, all people with the title “Senior Marketing Manager” and “Director of Engineering” are not equally effective … So, essentially, [we are] rehiring each employee each year (and re-evaluating them based on their performance) for the purposes of compensation.Within each of the three examples, Netflix has done two amazing things: they’ve made &lt;strong&gt;a bold value judgment&lt;/strong&gt;, which most companies fail to do, explaining just how the values should be lived, especially when they conflict (“we don’t care how smart you are, if you don’t work well with the team, you have to go”), and they’ve even given a &lt;strong&gt;reason&lt;/strong&gt;(“teamwork is more important to delivering impact for our customers than one smart guy”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They explain what makes their culture different from other companies and why&lt;/strong&gt;. Most people who like their jobs will give “culture” as a reason they think their company is unique. yet, if you read the countless mission statements and “our values” documents out there, you’d never be able to see that difference. Granted, the main issue may just be that management has chosen not to live up to the lofty ideals espoused in their list of virtues, but what might help with that and make it clearer to employees about what makes a particular workplace special is explaining how and why the company’s culture is different from another’s. Contrast that with the Netflix presentation, which spends many slides explaining the tradeoffs between too many rules and too few, and why they ultimately sided with having very few rules, whereas a manufacturing company or a medical company would have very many of them. They never go so far as to say that one is better than the other, only that they are different because they are in different industries with different needs and dynamics. And, as a result of that, they have implemented changes, like a simpler expense policy (“Act in Netflix’s best interests”) and a revolutionary vacation policy (“There is no policy or tracking”) [with an awesome explanation: “There is also no clothing policy at Netflix, but no one has come to work naked lately”].&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pay attention, other companies. You would do well to learn from Netflix’s example.&lt;/p&gt;</content:encoded><category>company culture</category><category>Netflix</category><category>values</category></item><item><title>What is with Microsoft’s consumer electronics strategy?</title><link>https://benjamintseng.com/2009/12/what-is-with-microsofts-consumer_10/</link><guid isPermaLink="true">https://benjamintseng.com/2009/12/what-is-with-microsofts-consumer_10/</guid><description>What is with Microsoft’s consumer electronics strategy?</description><pubDate>Thu, 10 Dec 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-43.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Genius? Source: &lt;a href=&quot;https://news.softpedia.com/news/Ballmer-Tampers-the-Milking-of-Microsoft-Main-Cash-Cow-47333.shtml&quot;&gt;Softpedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regardless of how you feel about Microsoft’s products, you have to appreciate the brilliance of their strategic “playbook”:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use the fact that Microsoft’s operating system/productivity software is used by almost everyone to identify key customer/partner needs&lt;/li&gt;
&lt;li&gt;Build a product which is usually only a second/third-best follower product but make sure it’s tied back to Microsoft’s products&lt;/li&gt;
&lt;li&gt;Take advantage of the time and market share that Microsoft’s channel influence, developer community, and product integration buys to invest in the new product with Microsoft’s massive budget until it achieves leadership&lt;/li&gt;
&lt;li&gt;If steps 1-3 fail to give Microsoft a dominant position, either exit (because the market is no longer important) or buy out a competitor&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While the quality of Microsoft’s execution of each step can be called into question, I’d be hard pressed to find a better approach then this one, and I’m sure much of their success can be attributed to finding good ways to repeatedly follow this formula.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-45.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;It’s for that reason that I’m completely  bewildered by Microsoft’s consumer electronics business strategy. Instead of finding good ways to integrate the Zune, XBox, and Windows Mobile franchises together or with the Microsoft operating system “mothership” the way Microsoft did by integrating its enterprise software with Office or Internet Explorer with Windows, these three businesses largely stand apart from Microsoft’s home field (PC software) and even from each other.&lt;/p&gt;
&lt;p&gt;This is problematic for two big reasons. First, because non-PC devices are outside of Microsoft’s usual playground, it’s not a surprise that Microsoft finds it difficult to expand into new territory. &lt;strong&gt;For Microsoft to succeed here, it needs to pull out all the stops&lt;/strong&gt; and it’s shocking to me that a company with a stake in the ground in four key device areas (PCs, mobile phones, game consoles, and portable media players) would choose not to use one of the few advantages it has over its competitors.&lt;/p&gt;
&lt;p&gt;The second and most obvious (to consumers at least) is that &lt;strong&gt;Apple has not made this mistake&lt;/strong&gt;. Apple’s iPhone and iPod Touch product lines are clear evolutions of their popular iPod MP3 players which integrate well with Apple’s iTunes computer software and iTunes online store. The entire Apple line-up, although each product is a unique entity, has a similar look and feel. The Safari browser that powers the Apple computer internet experience is, basically, the same that powers the iPhone and iPod Touch. Similarly, the same online store and software (iTunes) which lets iPods load themselves with music lets iPod Touches/iPhones load themselves with applications.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-44.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;That neat little integrated package not only makes it easier for Apple consumers to use a product, but the coherent experience across the different devices gives customers even more of a reason to use and/or buy other Apple products.&lt;/p&gt;
&lt;p&gt;Contrast that approach with Microsoft’s. Not only are the user interfaces and product designs for the Zune, XBox, and Windows Mobile completely different from one another, they don’t play well together at all. Applications that run on one device (be it the Zune HD, on a Windows PC, on an XBox, or on Windows Mobile) are unlikely to be able to run on any other. While one might be able to forgive this if it was just PC applications which had trouble being “ported” to Microsoft’s other devices (after all, apps that run on an Apple computer don’t work on the iPhone and vice versa), the devices that one would expect this to work well with (i.e. the Zune HD and the XBox because they’re both billed as gaming platforms, or the Zune HD and Windows Mobile because they’re both portable products) don’t. Their application development process doesn’t line up well. And, as far as I’m aware, the devices &lt;a href=&quot;http://www.engadget.com/2009/09/15/zune-hd-3d-gaming-and-app-downloads-confirmed/&quot;&gt;have completely separate application and content stores&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;While recreating the Windows PC experience on three other devices is definitely overkill, I think, were I in Ballmer’s shoes, I would recommend a few simple recommendations which I think would dramatically benefit all of Microsoft’s product lines (and I promise they aren’t the standard Apple/Linux fanboy’s “build something prettier” or “go open source”):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Centralize all application/content “marketplaces”&lt;/strong&gt; – Apple is no internet genius. Yet, they figured out how to do this. I fail to see why Microsoft can’t do the same.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invest in building a common application runtime across all the devices&lt;/strong&gt; – Nobody’s expecting a low-end Windows Mobile phone or a Zune HD to run Microsoft Excel, but to expect that little widgets or games should be able to work across all of Microsoft’s devices is not unreasonable, and would go a long way towards encouraging developers to develop for Microsoft’s new device platforms (if a program can run on just the Zune HD, there’s only so much revenue that a developer can take in, but if it can also run on the XBox and all Windows Mobile phones, then the revenue potential becomes much greater) and towards encouraging consumers to buy more Microsoft gear&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find better ways to link Windows to each device&lt;/strong&gt; – This can be as simple as building something like iTunes to simplify device management and content streaming, but I have yet to meet anyone with a Microsoft device who hasn’t complained about how poorly the devices work with PCs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Apple</category><category>iPhone</category><category>iPod</category><category>iTunes</category><category>Microsoft</category><category>Microsoft Office</category><category>tech</category><category>Windows</category><category>Windows Phone</category><category>Xbox</category><category>Zune</category></item><item><title>Innovator’s Delight</title><link>https://benjamintseng.com/2009/09/innovators-delight/</link><guid isPermaLink="true">https://benjamintseng.com/2009/09/innovators-delight/</guid><description>Innovator’s Delight</description><pubDate>Tue, 22 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-38.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: the book&lt;/p&gt;
&lt;p&gt;Knowing my &lt;a href=&quot;http://benjamintseng.com/2009/07/tech-strategy-101/&quot;&gt;interest in tech strategy&lt;/a&gt;, a coworker recommended I pick up HBS professor Clayton Christensen’s “classic” book on disruptive innovation: &lt;a href=&quot;https://amzn.to/2IjQc3l&quot;&gt;&lt;em&gt;The Innovator’s Dilemma&lt;/em&gt;&lt;/a&gt;. And, I have to say I was very impressed.&lt;/p&gt;
&lt;p&gt;The book tries to answer a very interesting question: why do otherwise successful companies sometimes fail to keep up on innovation? Christensen’s answer is counter-intuitive but deep: the very factors that make a company successful, like listening to customer needs, make it difficult for successful companies to adopt disruptive innovations which create new markets and new capabilities.&lt;/p&gt;
&lt;p&gt;This sounds completely irrational, and I was skeptical when I first heard it, but Christensen makes a very compelling case for it. He begins the book by considering the hard disk drive (HDD) industry. The reason for this is, as Christensen puts it (and this is merely page one of chapter one!):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Those who study genetics avoid studying humans, because new generations come along only every thirty years or so, and so it takes a long time to understand the cause and effect of any changes. Instead, they study fruit flies, because fruit flies are conceived, born, mature, and die all within a single day. If you want to understand why something happens in business, study the disk drive industry. Those companies are the closest things to fruit flies that the business world will ever see.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-40.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_ahmprYw6wqo/SWoXQO3jM-I/AAAAAAAAAtQ/bcLkpdHa6oA/%5BUNSET%5D.jpg&quot;&gt;Image credit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From that oddly compelling start, Christensen applies multiple techniques to establish the grounds for his theory. He begins by admitting that his initial hypothesis for why some HDD companies successfully innovated had nothing to do with his current explanation and was something he called “the technology mudslide”: that because technology is constantly evolving and shifting (like a mudslide), companies which could not keep moving to stay afloat (i.e. by innovating) would slip and fall.&lt;/p&gt;
&lt;p&gt;But, when he investigated the different types of technological innovations which hit the HDD industry, he found that the large companies were actually constantly innovating, developing new techniques and technologies to improve their products. Contrary to the opinion of many in the startup community, big companies did not lack innovative agility – in fact, they were the leaders in developing and acquiring the successful technologies which allowed them to make better and better products.&lt;br/&gt;
But, every now and then, when the basis of competition changed, like the shift to a smaller hard disk size to accommodate a new product category like minicomputers versus mainframes or laptops versus desktops, the big companies faltered.&lt;/p&gt;
&lt;p&gt;From that profound yet seemingly innocuous observation grew a series of studies across a number of industries (the book covers industries ranging from hardcore technology like hard disk drives and computers to industries that you normally wouldn’t associate with rapid technological innovation like mechanical excavators, off-road motorbikes, and even discount retailing) which helped Christensen come to a basic logical story involving six distinct steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Three things dictate a company’s strategy: resources, processes, and values&lt;/strong&gt;. Any strategy that a company wishes to embark on will fail if the company doesn’t have the necessary resources (e.g. factories, talent, etc.), processes (e.g. organizational structure, manufacturing process, etc.), and values (e.g. how a company decides between different choices). It doesn’t matter if you have two of the three.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large, successful companies value listening to their customers&lt;/strong&gt;. Successful companies became successful because they were able to create and market products that customers were willing to pay for. Companies that didn’t do this wouldn’t survive, and resources and processes which didn’t “get with the program” were either downsized or re-oriented.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Successful companies help create ecosystems which are responsive to customer needs&lt;/strong&gt;. Successful companies need to have ways of supporting their customers. This means they need to have or build channels (e.g. through a store, or online), services (e.g. repair, installation), standards (e.g. how products are qualified and work with one another), and partners (e.g. suppliers, ecosystem partners) which are all dedicated towards the same goal. If this weren’t true, the companies would all either fail or be replaced by companies which could “get with the program.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large, successful companies value big opportunities&lt;/strong&gt;. If you’re a $10 million company, you only need to generate an extra $1 million in sales to grow 10%. If you’re a $10 billion company, you need to find an extra $1 billion in sales to grow an equivalent amount. Is it any wonder, then, that large companies will look to large opportunities? After all, if companies started throwing significant resources or management effort on small opportunities, the company would quickly be passed up by its competitors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Successful companies don’t have the values or processes to push innovations aimed at unproven markets, which serve new customers and needs&lt;/strong&gt;. Because successful companies value big opportunities which meet the needs of their customers and are embedded in ecosystems which help them do that, they will mobilize their resources and processes in the best way possible to fulfill and market those needs. And, in fact, that is what Christensen saw – in almost every market he studied, when the customers of successful companies needed a new feature or level of quality, successful companies were almost always successful at either leading or acquiring the innovation necessary to do that. But, when it came to experimental products offering slimmer profit margins and targeting new customers with new needs and new ecosystems in unproven markets, successful companies often failed, even if management made those new markets a priority, because those companies lacked the values and/or processes needed. After all, if you were working in IBM’s Mainframe division, why would you chase the lower-performance, lower-profit minicomputer industry and its unfamiliar set of customers and needs and distribution channels?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disruptive innovations tend to start as inferior products, but, over time improve and eventually displace older technologies&lt;/strong&gt;. Using the previous example, while IBM’s mainframe division found it undesirable to enter the minicomputer market, the minicomputer players were very eager to “go North” and capture the higher performance and profitability that the mainframe players enjoyed. The result? Because of the values of the mainframe players as compared with the values of the minicomputer players, minicomputer companies focused on improving their technology to both service their customer’s needs and capture the mainframe business, resulting in one disruptive innovation replacing an older one.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most interesting thing that Christensen pointed out was that, in many cases, established companies actually beat new players to a disruptive innovation (as happened several times in the HDD and mechanical excavator industries)! But, because these companies lacked the necessary values, processes, and ecosystem, they were unable to successfully market them. Their success actually doomed them to failure!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-39.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;But Christensen doesn’t stop with this multi-faceted and thorough look at why successful companies fail at disruptive innovation. He spends a sizable portion of the book explaining how companies can fight the “trappings” of success (i.e. by creating semi-independent organizations that can chase new markets and be excited about smaller opportunities), and even closes the book with an interesting “ahead-of-his-time” look (remember, this book was written over a decade ago!) at how to bring about electric cars.&lt;/p&gt;
&lt;p&gt;I highly recommend this book to anyone interested in the technology industry or even, more broadly speaking, on understanding how to think about corporate strategy. While most business books on this subject use high-flying generalizations and poorly evaluated case studies, Christensen approaches each problem with a level of rigor and thoroughness that you rarely see in corporate boardrooms. His structured approach to explaining how disruptive innovations work, who tends to succeed at them, why, and how to conquer/adapt to them makes for a fascinating read, and, in my humble opinion, is a great example of how corporate strategy should be done – by combining well-researched data and structured thinking. To top it all, I can think of no higher praise than to say that this book, despite being written over a decade ago, has many parallels to strategic issues that companies face today (i.e. what will determine if cloud computing on netbooks can replace the traditional PC model? Will cleantech successfully replace coal and oil?), and has a number of deep insights into how venture capital firms and startups can succeed, as well as some insights into how to create organizations which can be innovative on more than just one level.&lt;/p&gt;
&lt;p&gt;Book: &lt;a href=&quot;http://www.amazon.com/gp/product/0060521996?ie=UTF8&amp;tag=bnjammin-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060521996&quot;&gt;&lt;em&gt;The Innovator’s Dilemma&lt;/em&gt;&lt;/a&gt; by Clayton Christensen&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Clayton Christensen</category><category>disruptive innovation</category><category>hard disk drives</category><category>tech</category></item><item><title>Seed the Market</title><link>https://benjamintseng.com/2009/07/seed-the-market/</link><guid isPermaLink="true">https://benjamintseng.com/2009/07/seed-the-market/</guid><description>Seed the Market</description><pubDate>Thu, 30 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my &lt;a href=&quot;http://benjamintseng.com/2009/07/tech-strategy-101/&quot;&gt;Introduction to Tech Strategy post&lt;/a&gt;, I mentioned that one of the most important aspects of the technology industry is the importance of &lt;strong&gt;ecosystem linkages&lt;/strong&gt;. There are several ways to think about ecosystem linkages. The main linkages I mentioned in my previous post was influence over technology standards. But, there is another very important ecosystem effect for technology companies to think about: &lt;strong&gt;encouraging demand&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For Microsoft to be successful, for instance, they must make sure that consumers and businesses are buying new and more powerful computers. For Google to be successful, they must make sure that people are actively using the internet to find information. For Cisco to be successful, they must make sure that people are actively downloading and sharing information over networks.&lt;/p&gt;
&lt;p&gt;Is it any wonder, then, that Microsoft develops business software (e.g. &lt;a href=&quot;http://office.microsoft.com/en-us/default.aspx&quot;&gt;Microsoft Office&lt;/a&gt;) and &lt;a href=&quot;http://www.microsoft.com/games/en-US/index.aspx&quot;&gt;games&lt;/a&gt;? Or that Google has pushed hard to encourage more widespread internet use by developing an &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;easy-to-use web browser&lt;/a&gt; and two internet-centric operating systems (&lt;a href=&quot;http://code.google.com/android/&quot;&gt;Android&lt;/a&gt; and &lt;a href=&quot;http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html&quot;&gt;ChromeOS&lt;/a&gt;)? Or that Cisco entered the set top box business (to encourage more network traffic) by acquiring &lt;a href=&quot;http://newsroom.cisco.com/dlls/2005/corp_111805.html&quot;&gt;Scientific Atlanta&lt;/a&gt; and is pushing for companies to adopt web conferencing systems (which consume a lot of networking capacity) like &lt;a href=&quot;http://newsroom.cisco.com/dlls/2007/corp_031507b.html&quot;&gt;WebEx&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;These examples hopefully illustrate that for leading tech companies, it is not sufficient just to develop a good product. It is also important that you move to make sure that customers will continue to demand your product, and a lot more of it.&lt;/p&gt;
&lt;p&gt;This is something that Dogbert understands intuitively as &lt;a href=&quot;http://dilbert.com/strips/comic/2009-06-28/&quot;&gt;this comic strip&lt;/a&gt; points out:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-31.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://dilbert.com/strip/2009-06-28&quot;&gt;Dilbert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To be a leading executive recruiter, its not sufficient just to find great executives – you have to make sure there is demand for new executives. No wonder Dogbert is such a successful CEO. He grasps business strategy like no other.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Android</category><category>Chrome</category><category>ChromeOS</category><category>Cisco</category><category>Dilbert</category><category>Google</category><category>Microsoft</category><category>Microsoft Office</category><category>Scientific Atlanta</category><category>tech</category><category>Webex</category></item><item><title>Surviving a Consultant’s Axe</title><link>https://benjamintseng.com/2009/07/surviving-a-consultants-axe/</link><guid isPermaLink="true">https://benjamintseng.com/2009/07/surviving-a-consultants-axe/</guid><description>Surviving a Consultant’s Axe</description><pubDate>Mon, 27 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-70.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Gawker, who seems to &lt;a href=&quot;http://gawker.com/5318914/what-to-expect-when-your-boss-hires-mckinsey&quot;&gt;really hate McKinsey&lt;/a&gt; and other management consulting firms, recently put out a &lt;a href=&quot;http://gawker.com/5321264/the-complete-mckinsey-survival-guide&quot;&gt;“Complete McKinsey Survival Guide”&lt;/a&gt; in response to &lt;a href=&quot;http://gawker.com/5318869/the-management-consultants-who-will-end-conde-nast-as-we-know-it&quot;&gt;McKinsey recently being retained by magazine publisher Conde Nast&lt;/a&gt; where they lay out a couple of interesting thoughts on how to survive a consultant’s downsizing tendencies including:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“&lt;strong&gt;Suck Up&lt;/strong&gt;—Kiss ass, Kiss ass, Kiss ass. “Suck up to your own superiors, and their superiors, and theirs.” It’s just that simple. A brown nose could give you a minute edge on your fellow layoff-eligibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Practice Subtle Backstabbing&lt;/strong&gt;—You don’t want to be seen as a desperate bastard ready to sell out any and all of your colleagues to save your own job (even though you are). You just want to &lt;em&gt;plant the seed&lt;/em&gt;. Take it from someone who’s been there: ” Don’t talk shit about individuals, talk shit about DIVISIONS in a passive-aggressive way. Saying things like: ‘Those fellows that work in [blank] division are really nice guys, but I’ve worked here for five years and I still don’t know what they do’ is a winner.” Corporate espionage at its finest, ladies and gentlemen.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And they even made a suggestion that you practice some form of sexual &lt;em&gt;quid pro quo&lt;/em&gt; as a means to escape the hatchet…&lt;/p&gt;
&lt;p&gt;The read was entertaining, albeit a little ridiculous with some of the suggestions, but this consultant wanted to clear the air and offer three thoughts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;A consulting firm is not necessarily there to fire people&lt;/strong&gt;. Yes, that is what they are often called on to do because many firms are staffed very inefficiently (too many people in some divisions, too many managers with no reports in other divisions, too many layers of management/bureaucracy) and management oftentimes lacks the competence or the courage to trim headcount on their own. That being said, management consulting firms are also frequently brought in to do other things like:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Business strategy&lt;/em&gt; – what markets or market strategies should the company or business unit pursue&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Supply chain strategy&lt;/em&gt; – how can a business reduce its cost structure by re-negotiating its contracts with suppliers&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Workforce re-deployment&lt;/em&gt; – how can a business re-organize its salesforce (not necessarily downsize) to optimize its results (e.g. move X people from West coast to Europe, etc)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Operations support&lt;/em&gt; – how can a business optimize its decision-making process (e.g. how many people need to approve a decision before its made) or operations (e.g. how can I make a factory process work more smoothly)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If the consulting firm is here to help your company fire people, there’s probably not much you can do&lt;/strong&gt;. Any consulting firm worth their salt will come to their final recommendation based on objective fact-finding and analysis where they poll many experts both from within the company and externally. It is relatively unlikely that Gawker’s suggestions that you subtly backstab another division or suck up to the consultants will change any of that, unless you have an amazing ability to prove the value of your division or group in such a way that even your senior management and external experts cannot (in which case you should have been doing that already…).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You should see if you can join the joint-working sessions&lt;/strong&gt;. Although this likely won’t change the outcome, it probably makes sense to join the consulting firm-internal team joint working group if you can, if only to help raise your awareness about (a) how senior managers think and rationalize large business decisions, something with which can help your career, and (b) come up with a sensible way for how to spin whatever decision the consulting firm comes up with.&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>Consulting</category><category>McKinsey</category></item><item><title>Tech Strategy 101</title><link>https://benjamintseng.com/2009/07/tech-strategy-101/</link><guid isPermaLink="true">https://benjamintseng.com/2009/07/tech-strategy-101/</guid><description>Tech Strategy 101</description><pubDate>Tue, 21 Jul 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-27.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Working on tech strategy consulting case for 18 months ingrains a thing or two in your head about strategy for tech companies, so I thought I’d lay out, in one blog post the major lessons I’ve learned about how strategy in the technology sector works.&lt;/p&gt;
&lt;p&gt;To understand that, it’s important to first understand &lt;strong&gt;what makes technology special?&lt;/strong&gt; From that perspective, there are three main things which drive tech strategy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Low cost of innovation&lt;/strong&gt; – Technology companies need to be innovative to be successful, &lt;em&gt;duh&lt;/em&gt;. But, the challenge with handling tech strategy is not innovation but that innovation in technology is &lt;em&gt;cheap&lt;/em&gt;. Your product can be as easily outdone by a giant with billions of dollars like Google as it can be outdone by a couple of bright guys in a garage who still live with their parents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moore’s Law&lt;/strong&gt; – When most technologists think of &lt;a href=&quot;http://en.wikipedia.org/wiki/Moore%27s_law&quot;&gt;Moore’s Law&lt;/a&gt;, they think of its academic consequences (mainly that chip technology doubles every two years). This is true (and has been for over 50 years), but the &lt;em&gt;strategic&lt;/em&gt; consequence of Moore’s Law can be summed up in six words: “Tomorrow will be better, faster, cheaper.” Can you think of any other industry which has so quickly and consistently increased quality while lowering cost?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosystem linkages&lt;/strong&gt; – No technology company stands alone. They are all inter-related and inter-dependent. Facebook may be a giant in the Web world, but it’s success depends on a wide range of relationships: it depends on browser makers adhering to web standards, on Facebook application developers wanting to use the Facebook platform, on hardware providers selling the right hardware to let Facebook handle the millions of users who want to use it, on CDNs/telecom companies providing the right level of network connectivity, on internet advertising standards, etc. This complex web of relationships is referred to by many in the industry as the &lt;em&gt;ecosystem.&lt;/em&gt; A technology company must learn to understand and shape its ecosystem in order to succeed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Put it all together, what does it all mean? Four things:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-30.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://www.amazon.com/Only-Paranoid-Survive-Exploit-Challenge/dp/0385483821/&quot;&gt;the book&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I. Only the paranoid survive&lt;/strong&gt;&lt;br/&gt;
This phrase, &lt;a href=&quot;http://www.intel.com/pressroom/kits/bios/grove/paranoid.htm&quot;&gt;popularized by ex-Intel CEO Andy Grove&lt;/a&gt;, is very apt for describing the tech industry. The &lt;em&gt;low cost of innovation&lt;/em&gt; means that your competition could come from anywhere: well-established companies, medium-sized companies, hot new startups, enterprising university students, or a legion of open source developers. The &lt;em&gt;importance of ecosystem linkages&lt;/em&gt; means that your profitability is dependent not only on what’s going on with your competitors, but also about the broader ecosystem. If you’re Microsoft, you don’t only have to think about what competitors like Apple and Linux are doing, you also need to think about the health of the overall PC market, about how to connect your software to new smartphones, and many other &lt;em&gt;ecosystem&lt;/em&gt; concerns which affect your profitability. And the &lt;em&gt;power of Moore’s Law&lt;/em&gt; means that new products need to be rolled out quickly, as old products rapidly turn into antiques from the advance of technology. The result of all of this is that only the technology companies which are constantly fearful of emerging threats will succeed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-29.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;II. To win big, you need to change the rules&lt;/strong&gt;&lt;br/&gt;
The need to be constantly innovative (&lt;em&gt;Moore’s Law&lt;/em&gt; and &lt;em&gt;low cost of innovation&lt;/em&gt;) and &lt;em&gt;the importance of ecosystem linkages&lt;/em&gt; favors large, incumbent companies, because they have the resources/manpower to invest in marketing, support, and R&amp;amp;D and they are the ones with the existing ecosystem relationships. As a result, the only way for a little startup to win big, or for a large company to attack another large company is to change the rules of competition. For Apple, to win in a smartphone market dominated by Nokia and RIM required changing the rules of the “traditional” smartphone competition by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Building a new type of user-interface driven by accelerometer and touchscreen unlike anything seen before&lt;/li&gt;
&lt;li&gt;Designing in a smartphone web browser actually comparable to what you’d expect on a PC as opposed to a pale imitation&lt;/li&gt;
&lt;li&gt;Building an application store to help establish a new definition of smartphone – one that runs a wide range of software rather than one that runs only software from the carrier/phone manufacturer&lt;/li&gt;
&lt;li&gt;Bringing the competition back to Apple’s home turf of making complete hardware and software solutions which tie together well, rather than just competing on one or the other&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple’s iPhone not only provided a tidy profit for Apple, it completely took RIM, which had been betting on taking its enterprise features into the consumer smartphone market, and Nokia, which had been betting on its services strategy, by surprise. Now, Nokia and every other phone manufacturer is desperately trying to compete in a game designed by Apple – no wonder &lt;a href=&quot;http://www.bloomberg.com/apps/news?pid=20601087&amp;sid=aZRUuRn5rBv4&quot;&gt;Nokia recently forecasted that it expected its market share to continue to drop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But it’s not just Apple that does this. Some large companies like Microsoft and Cisco are masters at this game, routinely disrupting new markets with products and services which tie back to their other product offerings – forcing incumbents to compete not only with a new product, but with an entire “platform”. Small up-and-comers can also play this game. MySQL is a great example of a startup which turned the database market on its head by providing access to its software and source code for free (to encourage adoption) in return for a chance to sell services.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-28.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;III. Be a good ecosystem citizen&lt;/strong&gt;&lt;br/&gt;
Successful tech companies cannot solely focus on their specific markets and product lines. The &lt;em&gt;importance of ecosystem linkages&lt;/em&gt; forces tech companies to look outward.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They must influence industry standards, oftentimes working with their competitors (case in point: look at the &lt;a href=&quot;http://www.khronos.org/members/promoters&quot;&gt;corporate membership&lt;/a&gt; in the &lt;a href=&quot;http://www.khronos.org/&quot;&gt;Khronos Group&lt;/a&gt; which controls the OpenGL graphics standard), to make sure their products are supported by the broader industry.&lt;/li&gt;
&lt;li&gt;They oftentimes have to give away technology and services for free to encourage the ecosystem to work with them. Even mighty Microsoft, who’s CEO had once called Linux “a cancer”, has had to &lt;a href=&quot;http://www.theregister.co.uk/2009/07/20/microsoft_windows_drivers_linux/&quot;&gt;open source 20,000 lines of operating system code&lt;/a&gt; in an attempt to increase the attractiveness of the Microsoft server platform to Linux technology. Is anyone surprised that Google and Nokia have open sourced the software for their Android and Symbian mobile phone operating systems and have gone to great lengths to make it easy for software developers to design software for them?&lt;/li&gt;
&lt;li&gt;They have to work collaboratively with a wide range of partners and providers. Intel and Microsoft work actively with PC manufacturers to help with marketing and product targeting. Mobile phone chip manufacturers invest millions in helping mobile phone makers and mobile software developers build phones with their chip technology. Even “simple” activities like outsourcing manufacturing requires a strong partnership in order to get things done properly.&lt;/li&gt;
&lt;li&gt;The largest of companies (e.g. Cisco, Intel, Qualcomm, etc) takes this whole influence thing a whole step further by creating corporate venture groups to invest in startups, oftentimes for the purpose of influencing the ecosystem in their favor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The technology company that chooses not to play nice with the rest of the ecosystem will rapidly find itself alone and unprofitable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IV. Never stop overachieving&lt;/strong&gt;&lt;br/&gt;
There are many ways to screw up in the technology industry. You might not be paranoid enough and watch as a new competitor or Moore’s Law eats away at your profits. You might not present a compelling enough product and watch as your partners and the industry as a whole shuns your product. But the terrifying thing is that this is true regardless of how well you were doing a few months ago — it could just as easily happen to a market leader as a market follower (i.e. Polaroid watching its profits disappear when digital cameras entered the scene).&lt;br/&gt;
As a result, it’s important for every technology company to keep their eye on the ball in two key areas, so as to reduce the chance of misstep and increase the chance that you recover when you eventually do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stay lean&lt;/strong&gt;– I am amazed at how many observers of the technology industry (most often the marketing types) seem to think that things like keeping costs low, setting up a good IT system, and maintaining a nimble yet deliberate decision process are unimportant as long as you have an innovative design or technology. This is very short-sighted especially when you consider how easy it is for a company to take a wrong step. Only the lean and nimble companies will survive the inevitable hard times, and, in good times, it is the lean and nimble companies which can afford to cut prices and offer more services better than their competitors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invest in innovation&lt;/strong&gt; – At the end of the day, technology is about innovation, and the companies which consistently grow and turn a profit are the ones who invest in that. If your engineers and scientists aren’t getting the resources it needs, no amount of marketing or “business development” will save you from oblivion. And, if your engineers/scientists are cranking out top notch research and development, then even if you make a mistake, there’s a decent chance you’ll be ready to bounce right back.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obviously, each of these four “conclusions” needs to be fleshed out further with details and concrete analyses before they can be truly called a “strategy”. But, I think they are a very useful framework for understanding how to make a tech company successful (although they don’t give any magic answers), and any exec who doesn’t understand these will eventually learn them the hard way.&lt;/p&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Andy Grove</category><category>Apple</category><category>Cisco</category><category>ecosystem</category><category>innovation</category><category>Intel</category><category>Linux</category><category>Microsoft</category><category>Moore&apos;s Law</category><category>MySQL</category><category>Nokia</category><category>OpenGL</category><category>Qualcomm</category><category>RIM</category><category>Symbian</category><category>tech</category></item><item><title>Robbing a store with a Klingon weapon</title><link>https://benjamintseng.com/2009/02/robbing-store-with-klingon-weapon/</link><guid isPermaLink="true">https://benjamintseng.com/2009/02/robbing-store-with-klingon-weapon/</guid><description>Robbing a store with a Klingon weapon</description><pubDate>Thu, 05 Feb 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I consider myself, unabashedly, a big &lt;a href=&quot;http://benjamintseng.com/tag/star-trek/&quot;&gt;Star Trek&lt;/a&gt; fan. Being a big fan means a lot of things. It means that I can quickly engage another Star Trek fan in a myriad of conversation about alien races and science fiction scenarios and debates about “which captain was the greatest”.&lt;/p&gt;
&lt;p&gt;It also means that I can recognize a &lt;a href=&quot;http://memory-alpha.org/en/wiki/Bat%27leth&quot;&gt;Klingon Bat’leth&lt;/a&gt;, a traditional weapon of the Klingon race:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-76.png&quot; alt title=&quot;image&quot;/&gt;&lt;/p&gt;
&lt;p&gt;What being a fan doesn’t mean, however, is that I take said Bat’leth and use it to &lt;a href=&quot;http://www.thedenverchannel.com/news/18637190/detail.html#-&quot;&gt;rob a store&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;COLORADO SPRINGS**—**A surveillance picture released by police Wednesday afternoon shows a man armed with what appears to be a small Klingon sword, holding up a 7-Eleven convenience store.&lt;/p&gt;
&lt;p&gt;That same man robbed another 7-Eleven store store a half-hour later, and remains at large, Colorado Springs police Lt. David Whitlock said.&lt;/p&gt;
&lt;p&gt;The first robbery was reported at 1:50 a.m., at 145 N Spruce St. The clerk told police a white man in his 20s, wearing a black mask, black jacket, and blue jeans, entered the store with a weapon the clerk recognized from the Star Trek TV series.&lt;/p&gt;
&lt;p&gt;The robber demanded money and left with an undisclosed amount.&lt;/p&gt;
&lt;p&gt;A half hour later, police received a call from a 7-Eleven at 2407 N. Union Blvd., where a man matching the previous description entered the store with a similar weapon. He also demanded money from the store clerk. The clerk refused and the robber “transported” himself out of the store on foot.&lt;/p&gt;
&lt;p&gt;Both clerks described the weapon as a Star Trek Klingon-type sword, called a “bat’leth.”&lt;/p&gt;
&lt;p&gt;Neither clerk was injured in the robberies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It especially means that I wouldn’t try to rob a store with a Bat’leth that is too small for even a child Klingon warrior to use:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-75.png&quot; alt title=&quot;image&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Now, this is a bat’leth that you might be able to rob a store with:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-74.png&quot; alt title=&quot;image&quot;/&gt;&lt;/p&gt;</content:encoded><category>bat&apos;leth</category><category>Klingon</category><category>Star Trek</category></item><item><title>The “First Lady” of Star Trek</title><link>https://benjamintseng.com/2008/12/first-lady-of-star-trek/</link><guid isPermaLink="true">https://benjamintseng.com/2008/12/first-lady-of-star-trek/</guid><description>The “First Lady” of Star Trek</description><pubDate>Fri, 19 Dec 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I just discovered, with much sadness, that Majel Roddenberry, wife of Star Trek creator Gene Roddenberry, the actress who played the ever-memorable Lwaxana Troi, and the voice of all the various incarnations of Star Trek’s “computers” has just &lt;a href=&quot;http://blog.newsarama.com/2008/12/19/star-treks-majel-roddenberry-passes-away/&quot;&gt;passed away&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I just spent the past couple of minutes browsing &lt;a href=&quot;http://en.wikipedia.org/wiki/Majel_Barrett&quot;&gt;her Wikipedia page&lt;/a&gt;, and found some amusing anecdotes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-42.png&quot; alt/&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;She first appeared in Star Trek’s initial pilot, “The Cage”, as the USS Enterprise’s unnamed first officer. Barrett was romantically involved with Roddenberry, and the idea of having an otherwise unknown woman in a leading role because she was the producer’s girlfriend is said to have infuriated NBC executives who insisted that Roddenberry give the role to a man. In Star Trek Memories, William Shatner noted that women viewers felt she was “pushy” and “annoying” and thought that “Number One shouldn’t be trying so hard to fit in with the men.” Barrett often joked that Roddenberry, given the choice between keeping Mr. Spock (whom the network also hated) or the woman character, “&lt;strong&gt;kept the Vulcan and married the woman, ’cause he didn’t think Leonard [Nimoy] would have it the other way around&lt;/strong&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don’t know what Gene Roddenberry was thinking, but Star Trek would always cast her in the role of women who fell in love with men who could/would never return their affection: first as a woman who fell in love with the non-emotional Spock and later as the outrageous mother of Deanna Troi who chased Captain Picard and Odo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-41.png&quot; alt title=&quot;image&quot;/&gt;&lt;/p&gt;
&lt;p&gt;That Mrs. Roddenberry will reprise her role as “the computer” in the new Star Trek movie has just made it a lot more meaningful for me.&lt;/p&gt;
&lt;p&gt;RIP&lt;/p&gt;</content:encoded><category>Gene Roddenberry</category><category>Majel Barrett</category><category>Star Trek</category></item><item><title>Made in Taiwan</title><link>https://benjamintseng.com/2008/02/made-in-taiwan/</link><guid isPermaLink="true">https://benjamintseng.com/2008/02/made-in-taiwan/</guid><description>Made in Taiwan</description><pubDate>Fri, 08 Feb 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been on my current consulting case for about 3 months. It is a strategy case for a technology client. As a result, I’ve been able to do a great deal of work researching various technology markets and trends, ranging from the typical (Internet search) to the more esoteric (grid computing), as I help the client scope out possible expansion opportunities.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.benjamintseng.com/wp-content/uploads/2021/01/image-71.png&quot; alt/&gt;&lt;/p&gt;
&lt;p&gt;During the course of this research, I have been surprised by many aspects of the technology value chain I did not appreciate before, but what I found most surprising on a personal level was &lt;strong&gt;how important Taiwan is to the global technology market&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is a particular point of pride for me, for despite Taiwan’s pre-eminence as an economic power and it’s fascinating fusion of Western, Japanese, and Chinese influences, &lt;strong&gt;the island is not given the same respect or attention as Hong Kong or Singapore&lt;/strong&gt;. Despite a vibrant political system, it has no seat on the United Nations, no diplomatic recognition by any major country, and even to the United States which guards the island as if it were its own, &lt;strong&gt;it is the black sheep of the US’s circle of friends&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And yet, the world as you or I know it would not be able to get along without it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Taiwan is the center of the world’s semiconductor foundry business&lt;/strong&gt;. Because cutting-edge semiconductor factories (called &lt;strong&gt;fabs&lt;/strong&gt;) are so expensive to manufacture, only the largest semiconductor firms (such as Samsung and Intel) have the annual sales numbers to justify building their own factories. Smaller players are better off outsourcing their production capacity to dedicated semiconductor factories, called &lt;strong&gt;foundries&lt;/strong&gt;. Today, &lt;strong&gt;almost all semiconductor manufacturers use the services of a foundry&lt;/strong&gt; to build most if not all of their semiconductors. The world’s two largest foundries, &lt;strong&gt;TSMC (Taiwan Semiconductor)&lt;/strong&gt; and &lt;strong&gt;UMC (United Microelectronics)&lt;/strong&gt; are located in Taiwan, and together &lt;strong&gt;control approximately 60% of the world foundry business&lt;/strong&gt; (the next largest foundry is only half the size of UMC, which is itself only about one third the size of TSMC!) and exert significant influence in the global semiconductor industry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taiwan is the center of the world’s electronics manufacturing services&lt;/strong&gt;. What many people don’t realize is that companies like Apple and Dell tend to only specialize in marketing and some design, but not in manufacturing (which would involve building a factory, gaining manufacturing expertise and skill, and other expensive and difficult things for a firm trying to stay lean and on the cutting edge). These firms thus outsource their manufacturing to specialized firms called Electronic Manufacturing Services (EMS) firms. The world’s largest EMS company by far is the &lt;strong&gt;Foxconn/Hon Hai conglomerate&lt;/strong&gt; which is responsible for about 20% of the world’s outsourced electronics manufacturing, almost double that of the second largest firm. Never heard of them? You’ve certainly heard of its products: the MacBook Pro, the iPhone, the iPod, the Playstation 3, the Wii, the Xbox 360, graphics cards for AMD/ATI and NVIDIA, … the list goes on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taiwan is the world’s original design manufacturing capital.&lt;/strong&gt; Original design manufacturers (ODMs) go a step further than EMS firms — they actually do provide some of their own design services (which begs the question of what we’re paying Dell and HP and Apple for when they’re outsourcing design to ODMs). This is one reason that many ODMs are also original electronics manufacturers (OEMs) — companies which attach brands to the electronics themselves (think Apple, Lenovo, Dell, etc.) &lt;strong&gt;Of the top 10 ODMs in the world in 2006, at least 9 are Taiwanese companies&lt;/strong&gt; (and that’s because I was too lazy to look up the last one — TPV technology) — those firms alone control nearly 70% of the global ODM market — and they include Windows Mobile phone manufacturer and Open Handset Alliance member HTC and the rapidly growing computer OEM ASUS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taiwan is also home to D-Link and Acer&lt;/strong&gt;. The latter of which recently is trying to resurrect dying brands of eMachines and Gateway.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thought this was interesting? &lt;a href=&quot;http://benjamintseng.com/tag/tech/&quot;&gt;Check out some of my other pieces on Tech industry&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Acer</category><category>D-Link</category><category>EMS</category><category>foundry</category><category>Foxconn</category><category>ODM</category><category>OEM</category><category>Taiwan</category><category>tech</category><category>TSMC</category><category>UMC</category></item></channel></rss>