<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Marcus Groth blog</title>
    <link>https://mgroth.se/</link>
    <description>Recent content on Marcus Groth blog</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Mon, 27 Apr 2026 10:33:34 +0200</lastBuildDate>
    <atom:link href="https://mgroth.se/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Old Chinese Text to Speech</title>
      <link>https://mgroth.se/posts/old-chinese-text-to-speech/</link>
      <pubDate>Mon, 27 Apr 2026 10:33:34 +0200</pubDate>
      <guid>https://mgroth.se/posts/old-chinese-text-to-speech/</guid>
      <description>&lt;p&gt;Finally, introducing the &lt;a href=&#34;http://oc-tts.mgroth.se/&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;Old Chinese Text to Speech Tool&lt;svg class=&#34;h-3 w-3 flex-shrink-0&#34; id=&#34;external-link&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt; that I built. Ever since I took a course in classical Chinese back in 2014, I&amp;rsquo;ve felt that this has been a missing piece of the puzzle for readers of the classics.&lt;/p&gt;&#xA;&lt;p&gt;The goal of the project is to produce an enthusiastic approximation of the language that Confucius spoke. The data set consists of 4&#39;033 characters from the Baxter–Sagart system (William Baxter &amp;amp; Laurent Sagart, Old Chinese: A New Reconstruction, Oxford University Press 2014), which were available from Wikimedia.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Skills of an AI Native Developer</title>
      <link>https://mgroth.se/posts/skills-of-an-ai-native-developer/</link>
      <pubDate>Wed, 08 Apr 2026 08:17:23 +0200</pubDate>
      <guid>https://mgroth.se/posts/skills-of-an-ai-native-developer/</guid>
      <description>&lt;p&gt;If anyone was still doubting it, the Anthropic leak should make it clear that AI will not replace developers. However, some skills will be much less valuable than others. The value of memorising HTML syntax has steadily fallen since 2001 but with AI it has fallen to new depths. What&amp;rsquo;s even more valuable than before are things such as intent, system understanding and taste.&lt;/p&gt;&#xA;&lt;p&gt;In my opinion, these are the top three hard skills for developer in the Age of AI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The next Walled Garden will be built in the name of Transparency</title>
      <link>https://mgroth.se/posts/the-next-walled-garden-will-be-built-in-the-name-of-transparency/</link>
      <pubDate>Wed, 11 Mar 2026 10:28:33 +0100</pubDate>
      <guid>https://mgroth.se/posts/the-next-walled-garden-will-be-built-in-the-name-of-transparency/</guid>
      <description>&lt;p&gt;Sometimes ideas arrive at the most mundane moments. This one appeared, crystal clear, while I was doing the dishes: Files will become the most important moat around the walled garden and Google is best positioned to take advantage of this.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-app-store-model-is-old-news&#34;&gt;The App Store model is old news&lt;/h2&gt;&#xA;&lt;p&gt;Up until now, app distribution has been the primary mechanism for building a walled garden. Apple is best known for this, but let&amp;rsquo;s face the facts: it has emerged as best practice from a commercial standpoint and everyone is doing it. Game studios build game launchers that bog down your PC. Microsoft is gearing up to fight Steam. With SaaS, files emerged as a new resource to build walls around. Let Google keep your spreadsheets, let Notion keep your notes, and so on. Due to how AI products are evolving, this focus will shift from trying to lock down a subset of a user&amp;rsquo;s files to locking down ALL their files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Don’t mistake motion for progress</title>
      <link>https://mgroth.se/posts/dont-mistake-motion-for-progress/</link>
      <pubDate>Sat, 31 Jan 2026 11:37:42 +0100</pubDate>
      <guid>https://mgroth.se/posts/dont-mistake-motion-for-progress/</guid>
      <description>&lt;p&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://mgroth.se/posts/dont-mistake-motion-for-progress/validate_comic.jpeg&#34;&#xA;    alt=&#34;Is going faster better when you don’t know what direction you should be heading?&#34;&#xA;    &#xA;    &#xA;      &#xA;      &#xA;        &#xA;    width=&#34;2816&#34;&#xA;    height=&#34;1536&#34;&#xA;        &#xA;      &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://mgroth.se/posts/dont-mistake-motion-for-progress/validate_comic.jpeg&#34;&#xA;    data-gallery-alt=&#34;Is going faster better when you don’t know what direction you should be heading?&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;”What will happen when we can build things faster than we can think of things to build?” This is a question I have been thinking a lot about since reading Steve Yegge’s posts about &lt;a href=&#34;https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;Gas Town&lt;svg class=&#34;h-3 w-3 flex-shrink-0&#34; id=&#34;external-link&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud Products Have a Second Brain Problem</title>
      <link>https://mgroth.se/posts/cloud-products-have-a-second-brain-problem/</link>
      <pubDate>Thu, 08 Jan 2026 11:37:42 +0100</pubDate>
      <guid>https://mgroth.se/posts/cloud-products-have-a-second-brain-problem/</guid>
      <description>&lt;p&gt;As Amir Klein recently explored in Lenny’s Newsletter, Generative AI is great for building a Product Manager’s “second brain.” However, the labor of collecting the inputs—screenshots, PDFs, and fragmented notes—remains a human task, even though the AI should be doing it for us. To solve this, I predict two possible paths for the industry:&lt;/p&gt;&#xA;&lt;p&gt;The “AI User” Model (Agentic Interoperability) In this scenario, platforms like Trello, Slack, and Jira prioritize the development of secure, high-trust permission layers. This allows external AI agents to access and aggregate data autonomously on behalf of the user, maintaining a decentralized but interoperable ecosystem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Designers Havent Abandoned Their Dreams</title>
      <link>https://mgroth.se/posts/designers-havent-abandoned-their-dreams/</link>
      <pubDate>Sun, 05 Oct 2025 11:37:24 +0100</pubDate>
      <guid>https://mgroth.se/posts/designers-havent-abandoned-their-dreams/</guid>
      <description>&lt;p&gt;&lt;em&gt;A response to Edwin Heathcote, Financial Times, 28 Sept 2025&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Edwin Heathcote’s latest column declares that “design has lost its way.” The climate crisis, he argues, is the direct result of over-production and over-consumption, and designers are complicit. Pushing blame is easy. Offering a credible alternative is hard.&lt;/p&gt;&#xA;&lt;p&gt;The reality of sustainable design is complicated: A chair can be beautiful, repairable and made from recycled sawdust, but if it is shipped by diesel truck to a customer who throws it away after one Instagram post, the chair is not the failure—the economy around it is.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Translation of: Chit-Chat of the Week</title>
      <link>https://mgroth.se/posts/translation-of-chit-chat-of-the-week/</link>
      <pubDate>Thu, 08 Oct 2020 11:34:56 +0100</pubDate>
      <guid>https://mgroth.se/posts/translation-of-chit-chat-of-the-week/</guid>
      <description>&lt;p&gt;每周杂谈│美国怎么了？——黑人的命贱还是警察的命贱？&lt;/p&gt;&#xA;&lt;p&gt;Original source: &lt;a href=&#34;https://mp.weixin.qq.com/s/17hjI772vTay7o3_moeNFw&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://mp.weixin.qq.com/s/17hjI772vTay7o3_moeNFw&lt;svg class=&#34;h-3 w-3 flex-shrink-0&#34; id=&#34;external-link&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&#xA;Author: 第三小提琴&lt;/p&gt;&#xA;&lt;p&gt;自今年5月底黑人乔治·弗洛伊德被杀以来，美国社会撕裂、政局动荡，在西雅图市、芝加哥市、亚特兰大市、俄勒冈州、威斯康星州、明尼苏达州等地发生了广泛持久的大规模骚乱，其他各地的社会治安也普遍恶化，传统的资产阶级民主制度出现了瓦解的迹象。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Translation of: Is Five More Minutes Enough to Change the Fate of the Delivery Driver?</title>
      <link>https://mgroth.se/posts/translation-of-is-five-more-minutes-enough-to-change-the-fate-of-the-delivery-driver/</link>
      <pubDate>Sat, 26 Sep 2020 11:35:38 +0100</pubDate>
      <guid>https://mgroth.se/posts/translation-of-is-five-more-minutes-enough-to-change-the-fate-of-the-delivery-driver/</guid>
      <description>&lt;p&gt;骑手的命运，多等5分钟就能改变吗？&lt;/p&gt;&#xA;&lt;p&gt;Original source: &lt;a href=&#34;https://mp.weixin.qq.com/s/UrCDUKS1O8Xxe-y3aCvchQ&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://mp.weixin.qq.com/s/UrCDUKS1O8Xxe-y3aCvchQ&lt;svg class=&#34;h-3 w-3 flex-shrink-0&#34; id=&#34;external-link&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&#xA;Author: 工号51&lt;/p&gt;&#xA;&lt;p&gt;[ Photo of a food delivery driver on a scooter. ]&lt;/p&gt;&#xA;&lt;p&gt;导语&lt;/p&gt;&#xA;&lt;p&gt;从工厂跳到外卖，不过是从一个监狱跳到了另一个监狱，从一个地狱跳到了另一个地狱。资本主义总会不断地产生新商机、新职业，这次送外卖凉了，下次还会有其他的“机会”。骑手和“厂狗”、环卫工、服务员、建筑工等等无数工人一样，受着同样一套制度的剥削，唯一的出路也只有彻底打碎如今这整套吃人的制度。&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://mgroth.se/posts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://mgroth.se/posts/</guid>
      <description>&lt;h1 id=&#34;writing-instructions-for-agentic-writer&#34;&gt;Writing Instructions for Agentic Writer&lt;/h1&gt;&#xA;&lt;p&gt;You are writing blog posts for mgroth.se. Follow these instructions to match the voice and style of the site.&lt;/p&gt;&#xA;&lt;h2 id=&#34;voice--tone&#34;&gt;Voice &amp;amp; Tone&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversational but intellectually serious. Never flippant, never stiff.&lt;/li&gt;&#xA;&lt;li&gt;Write as a thoughtful observer of systems — technology, design, society — not as a partisan advocate.&lt;/li&gt;&#xA;&lt;li&gt;Respect the reader&amp;rsquo;s intelligence. Don&amp;rsquo;t over-explain, don&amp;rsquo;t patronize.&lt;/li&gt;&#xA;&lt;li&gt;Be precise with language. Avoid hyperbole and emphatic word choices even when covering charged topics.&lt;/li&gt;&#xA;&lt;li&gt;Restrained with opinion. Present mechanisms and implications; invite thinking rather than prescribe action.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;structure&#34;&gt;Structure&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Open with a hook&lt;/strong&gt;: a compelling observation, a reference to a source, or a provocative framing. Never open with broad context or throat-clearing.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Follow the pattern&lt;/strong&gt;: Problem → Analysis → Alternative framing → Invitation to discuss.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Close with a question or open invitation&lt;/strong&gt;, not a declarative summary. Invite the reader to think alongside you rather than telling them what to think.&lt;/li&gt;&#xA;&lt;li&gt;Use minimal headings (1–2 per post). When used, make them descriptive statements, not questions or clickbait.&lt;/li&gt;&#xA;&lt;li&gt;Keep paragraphs to 3–5 sentences on average. Use single-sentence paragraphs sparingly for emphasis.&lt;/li&gt;&#xA;&lt;li&gt;Vary paragraph length for rhythm — short punchy paragraphs should interrupt longer analytical ones.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sentence-style&#34;&gt;Sentence Style&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mix short, punchy sentences with longer compound structures. Average 15–25 words per sentence.&lt;/li&gt;&#xA;&lt;li&gt;Use em-dashes to set off explanatory clauses.&lt;/li&gt;&#xA;&lt;li&gt;Use parallel structures when presenting alternatives or lists of ideas.&lt;/li&gt;&#xA;&lt;li&gt;Favor active voice. Use passive only when the actor is genuinely irrelevant.&lt;/li&gt;&#xA;&lt;li&gt;Avoid the &amp;ldquo;not X / but Y&amp;rdquo; two-sentence pivot where the first sentence negates and the second affirms in mirrored structure (e.g., &amp;ldquo;It won&amp;rsquo;t do A. It will do B.&amp;rdquo;). This reads as rehearsed and TED-talk-ish. If you need the contrast, fold it into a single sentence or find a less symmetrical way to make the point.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;person--perspective&#34;&gt;Person &amp;amp; Perspective&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Primarily third person or observational framing.&lt;/li&gt;&#xA;&lt;li&gt;Use first person sparingly and deliberately (&amp;ldquo;I predict,&amp;rdquo; &amp;ldquo;I have been thinking&amp;rdquo;) — not as filler.&lt;/li&gt;&#xA;&lt;li&gt;Avoid second person (&amp;ldquo;you should&amp;hellip;&amp;rdquo;) except in genuine calls to discussion.&lt;/li&gt;&#xA;&lt;li&gt;Use &amp;ldquo;we&amp;rdquo; to create collective understanding when appropriate.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-topics&#34;&gt;Technical Topics&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Explain concepts through their strategic implications — what they enable, what they displace — not implementation details.&lt;/li&gt;&#xA;&lt;li&gt;Avoid jargon, or define it quickly in context when necessary.&lt;/li&gt;&#xA;&lt;li&gt;Position technical problems within larger systemic contexts. A feature is interesting because of what it means, not just what it does.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;rhetorical-habits&#34;&gt;Rhetorical Habits&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Juxtapose opposing ideas to show complexity. Resist simple narratives.&lt;/li&gt;&#xA;&lt;li&gt;Acknowledge nuance explicitly — &amp;ldquo;the reality is complicated&amp;rdquo; is better than a false binary.&lt;/li&gt;&#xA;&lt;li&gt;Build authority through external references (articles, authors, data) rather than unsupported assertion.&lt;/li&gt;&#xA;&lt;li&gt;Use rhetorical questions as a persuasive device, but don&amp;rsquo;t overdo it.&lt;/li&gt;&#xA;&lt;li&gt;Avoid humor, personal anecdotes, and decorative metaphor. The writing earns engagement through clarity and insight, not personality.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;formatting&#34;&gt;Formatting&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use bulleted lists for presenting options, alternatives, or data points.&lt;/li&gt;&#xA;&lt;li&gt;No code blocks (this is not a technical tutorial blog).&lt;/li&gt;&#xA;&lt;li&gt;When including images, provide meaningful alt text and credit the source.&lt;/li&gt;&#xA;&lt;li&gt;Use bold and italic sparingly — for genuine emphasis, not decoration.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;frontmatter&#34;&gt;Frontmatter&lt;/h2&gt;&#xA;&lt;p&gt;Every post needs this frontmatter (TOML format):&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
