{
  "version": "https://jsonfeed.org/version/1",
  "title": "Mango Umbrella",
  "home_page_url": "https://mangoumbrella.com",
  "feed_url": "https://mangoumbrella.com/posts.json",
  "description": "Y2Mango's Quality Indie Apps",
  "icon": "https://mangoumbrella.com/s/img/umbrella/logo512.png",
  "favicon": "https://mangoumbrella.com/s/img/umbrella/logo64.png",
  "author": {
    "name": "y2mango",
    "url": "https://mangoumbrella.com/contact"
  },
  "items": [
    {
      "id": "/post/changelog-v2026.7",
      "url": "https://mangoumbrella.com/post/changelog-v2026.7",
      "title": "Changelog v2026.7",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2026-07-30</code> Mango Exposure <a href=\"https://mangoumbrella.com/post/mango-exposure-v2026.2\">v2026.2</a></li>\n<li><code>2026-07-30</code> y2 <a href=\"https://github.com/mangoumbrella/y2/releases/tag/v2026.2\"><code>v2026.2</code></a></li>\n<li><code>2026-07-27</code> y2 <a href=\"https://github.com/mangoumbrella/y2/releases/tag/v2026.1\"><code>v2026.1</code></a></li>\n<li><code>2026-07-27</code> <a href=\"https://pyref.dev/\">pyref.dev</a> <a href=\"https://github.com/mangoumbrella/pyref.dev/releases/tag/v2026.1\"><code>v2026.1</code></a></li>\n</ul>\n<h1>New posts</h1>\n<ul>\n<li><code>2026-07-30</code> <a href=\"https://mangoumbrella.com/post/configure-iterm2s-smart-selection-for-diff-paths\">Configure iTerm2's Smart Selection for Diff Paths</a></li>\n<li><code>2026-07-30</code> <a href=\"https://mangoumbrella.com/post/my-pet-peeve-when-parent-urls-dont-work\">my-pet-peeve-when-parent-urls-dont-work</a></li>\n</ul>\n",
      "date_published": "2026-08-02T00:02:11.470644Z"
    },
    {
      "id": "/post/configure-iterm2s-smart-selection-for-diff-paths",
      "url": "https://mangoumbrella.com/post/configure-iterm2s-smart-selection-for-diff-paths",
      "title": "Configure iTerm2's Smart Selection for Diff Paths",
      "content_html": "<p>When working with diffs in the terminal, for example:</p>\n<pre><code>--- a/src/pyrefdev/mapping/pylabel.py\n+++ b/src/pyrefdev/mapping/pylabel.py\n</code></pre>\n<p>I often need to copy the path of the file. But double-clicking the path selects <code>a/src/pyrefdev/mapping/pylabel.py</code> by default.</p>\n<p>Luckily, you can configure iTerm2's Smart Selection with this regex to only select the path part:</p>\n<pre><code>(?&lt;=[-+]{3} [ab]/)\\S+\n</code></pre>\n<p>Here is a step-by-step guide:</p>\n<ul>\n<li>Go to <code>Settings &gt; Profiles &gt; Advanced &gt; Smart Selection &gt; Edit</code>.</li>\n<li>Click the <code>+</code> button.</li>\n<li>Set <code>Regular expression</code> to <code>(?&lt;=[-+]{3} [ab]/)\\S+</code>.</li>\n<li>Set the precision to <code>Very High</code> so it wins over the built-in path rules.</li>\n</ul>\n<p>Now a double-click selects just <code>src/pyrefdev/mapping/pylabel.py</code>.</p>\n",
      "date_published": "2026-07-30T15:27:42.132165Z"
    },
    {
      "id": "/post/my-pet-peeve-when-parent-urls-dont-work",
      "url": "https://mangoumbrella.com/post/my-pet-peeve-when-parent-urls-dont-work",
      "content_html": "<p>my pet peeve: when parent URLs don't work</p>\n<p>for example if your website has a page:</p>\n<ul>\n<li><code>site.domain/path/to/this/page</code></li>\n</ul>\n<p>these pages should always be valid too:</p>\n<ul>\n<li><code>site.domain/path/to/this</code></li>\n<li><code>site.domain/path/to</code></li>\n<li><code>site.domain/path</code></li>\n</ul>\n",
      "date_published": "2026-07-30T14:26:51.924066Z"
    },
    {
      "id": "/post/mango-exposure-v2026.2",
      "url": "https://mangoumbrella.com/post/mango-exposure-v2026.2",
      "title": "Mango Exposure v2026.2",
      "content_html": "<p><a href=\"https://apps.apple.com/us/app/mango-exposure/id1487020105\">Mango Exposure v2026.2</a> is now available. This one is mostly about sensors.</p>\n<p>NEW:</p>\n<ul>\n<li>A Release Notes screen in Settings, so the app can tell you what changed without you coming here.</li>\n<li>The 1 inch sensor, used by cameras like the Sony RX100 series and most drones.</li>\n<li>The 44x33 digital medium format sensor, used by the Fujifilm GFX and Hasselblad X series.</li>\n<li>The 53x40 digital medium format sensor, used by the Phase One IQ4 and Hasselblad H series.</li>\n</ul>\n<p>CHANGED:</p>\n<ul>\n<li>The Four Thirds sensor is now labelled Four Thirds / Micro Four Thirds.</li>\n<li>The APS-C Sony/Nikon/Pentax sensor now mentions Fujifilm, which uses the same sensor size.</li>\n</ul>\n<p>Happy photographing, whatever you shoot with ^_^</p>\n",
      "date_published": "2026-07-31T21:17:25.681569Z"
    },
    {
      "id": "/post/changelog-v2026.2",
      "url": "https://mangoumbrella.com/post/changelog-v2026.2",
      "title": "Changelog v2026.2",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2026-02-21</code> Added parent links on sub-node pages across the <a href=\"https://mangoumbrella.com\">website</a>.</li>\n</ul>\n<h1>New short posts</h1>\n<ul>\n<li><code>2026-02-20</code> <a href=\"https://mangoumbrella.com/post/section-230\">section-230</a></li>\n</ul>\n",
      "date_published": "2026-08-01T23:34:42.986895Z"
    },
    {
      "id": "/post/section-230",
      "url": "https://mangoumbrella.com/post/section-230",
      "content_html": "<p>突然意识到, 我不用再为section 230焦虑了</p>\n",
      "date_published": "2026-02-20T14:13:48.693329Z"
    },
    {
      "id": "/post/changelog-v2026.1",
      "url": "https://mangoumbrella.com/post/changelog-v2026.1",
      "title": "Changelog v2026.1",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2026-01-24</code> <a href=\"https://mangoumbrella.com/post/mango-exposure-v2026.1\">Mango Exposure v2026.1</a></li>\n</ul>\n<h1>New posts</h1>\n<ul>\n<li><code>2026-01-04</code> <a href=\"https://mangoumbrella.com/post/sequoia-national-park\">Sequoia National Park</a></li>\n</ul>\n<h1>New short posts</h1>\n<ul>\n<li><code>2026-01-04</code> <a href=\"https://mangoumbrella.com/post/fastlane-rsync-issue\">fastlane-rsync-issue</a></li>\n</ul>\n",
      "date_published": "2026-01-31T08:37:06.027563Z"
    },
    {
      "id": "/post/mango-exposure-v2026.1",
      "url": "https://mangoumbrella.com/post/mango-exposure-v2026.1",
      "title": "Mango Exposure v2026.1",
      "content_html": "<p>After 4 months of deliberation, I have decided to adopt Liquid Glass in <a href=\"https://apps.apple.com/us/app/mango-exposure/id1487020105\">Mango Exposure v2026.1</a>. Why? Because Apple told me to.</p>\n<p>Anyway, happy photographing no matter where you are ^_^</p>\n",
      "date_published": "2026-01-25T06:45:14.146349Z"
    },
    {
      "id": "/post/fastlane-rsync-issue",
      "url": "https://mangoumbrella.com/post/fastlane-rsync-issue",
      "content_html": "<p>Somehow my <a href=\"https://fastlane.tools/\">fastlane</a> upload pipeline stopped working, due to shadowing the system <code>rsync</code> binary.</p>\n<p>I would have never guessed this root cause.</p>\n<p>Historically it would take me hours of debugging and head banging, but Opus 4.5 just did it under one minute by itself.</p>\n<blockquote>\n<p>Found it! You have a Homebrew rsync (3.4.1) that's being used instead of Apple's built-in openrsync:</p>\n<ul>\n<li>which rsync → /Users/mango/tools/brew/bin/rsync (Homebrew 3.4.1)</li>\n<li>/usr/bin/rsync → Apple's openrsync (protocol 29)</li>\n</ul>\n<p>Xcode's export process is mixing these two incompatible versions, causing the &quot;syntax or usage error&quot; when they try to communicate.</p>\n</blockquote>\n",
      "date_published": "2026-01-05T03:37:40.353633Z"
    },
    {
      "id": "/post/sequoia-national-park",
      "url": "https://mangoumbrella.com/post/sequoia-national-park",
      "title": "Sequoia National Park",
      "content_html": "<p>In the afternoon before our spontaneous road trip to Sequoia National Park, I discovered a bulge on the front right tire. I immediately called my repair shop <a href=\"https://www.menloathertonautorepair.com\">Menlo Atherton Auto Repair</a>, and thanks to Anthony, we were able to depart before noon the next day. We stayed for two nights in Three Rivers, close to the south entrance.</p>\n<figure>\n<img src=\"/m/images/79/79bc5df9-06d7-4bb4-8794-935c590b841b.jpeg\" alt=\"The view at our AirBnb in Three Rivers\" />\n<figcaption><p>The view at our AirBnb in Three Rivers</p></figcaption>\n</figure>\n<p>The first 20 miles entering the park are steep with numerous switchbacks. I drove much more slowly, but with frequent turnouts along the road, it was a pleasantly relaxing experience.</p>\n<figure>\n<img src=\"/m/images/cd/cd67c6a4-96af-4a30-8f0a-e538d3010c03.jpeg\" alt=\"River near Sequoia National Park south entrance\" />\n<img src=\"/m/images/c0/c0e539d9-8f0a-4130-ae5c-39121c80e493.jpeg\" alt=\"Sequoia trees with snow on the ground\" />\n<img src=\"/m/images/b4/b4d17433-2964-4b47-9478-406273f1317e.jpeg\" alt=\"Sunset view in Sequoia National Park\" />\n<figcaption><p>Landscapes in the Sequoia National Park</p></figcaption>\n</figure>\n<p>Snow appeared once we entered the Giant Forest. On a holiday during winter, the parking space near General Sherman are accessible spots only. So we took the shuttle service instead. It ran quite frequently. On the way back to Three Rivers, we saw a spectacular sunset.</p>\n",
      "date_published": "2026-01-03T16:54:01.589177Z"
    },
    {
      "id": "/post/changelog-v2025.12",
      "url": "https://mangoumbrella.com/post/changelog-v2025.12",
      "title": "Changelog v2025.12",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2025-12-27</code> New Python package <a href=\"https://github.com/mangoumbrella/mdit-py-heading-attrs\"><code>mdit-py-heading-attrs</code></a>: a <a href=\"https://github.com/executablebooks/markdown-it-py\"><code>markdown-it-py</code></a> plugin to add attribute support to headings..</li>\n<li><code>2025-12-27</code> New Python package <a href=\"https://github.com/mangoumbrella/mdit-py-figure\"><code>mdit-py-figure</code></a>: a <a href=\"https://github.com/executablebooks/markdown-it-py\"><code>markdown-it-py</code></a> plugin to parse markdown paragraphs that start with an image into HTML <code>&lt;figure&gt;</code> elements.</li>\n<li><code>2025-12-27</code> goldmark-figure <a href=\"https://github.com/mangoumbrella/goldmark-figure/releases/tag/v1.4.0\"><code>v1.4.0</code></a>: Fix a bug where the last character in the end of the doc could be swallowed.</li>\n</ul>\n<h1>New linked posts</h1>\n<ul>\n<li><code>2025-12-30</code> <a href=\"https://mangoumbrella.com/post/mango-baby-won-upgradies-2025-best-ios-app\">∞ Mango Baby Won Upgradies 2025 Best iOS App</a></li>\n</ul>\n<h1>New short posts</h1>\n<ul>\n<li><code>2025-12-31</code> <a href=\"https://mangoumbrella.com/post/2025-is-weird\">2025-is-weird</a></li>\n<li><code>2025-12-24</code> <a href=\"https://mangoumbrella.com/post/2024-was-so-painful\">2024-was-so-painful</a></li>\n<li><code>2025-12-23</code> <a href=\"https://mangoumbrella.com/post/dun-and-bradstreet-spam\">dun-and-bradstreet-spam</a></li>\n</ul>\n",
      "date_published": "2026-01-04T20:04:39.239841Z"
    },
    {
      "id": "/post/2025-is-weird",
      "url": "https://mangoumbrella.com/post/2025-is-weird",
      "content_html": "<p>2025 has been the weirdest year so far, and 2026 is going to be weirder.</p>\n<p>I’m not prepared for this. But 2025 has truly taught me preparedness is overrated.</p>\n<p>When there is a high mountain in front of you, just climb on with your heart. And I’m more ready than ever to continue climbing.</p>\n",
      "date_published": "2026-01-03T06:22:52.925221Z"
    },
    {
      "id": "/post/mango-baby-won-upgradies-2025-best-ios-app",
      "url": "https://mangoumbrella.com/post/mango-baby-won-upgradies-2025-best-ios-app",
      "external_url": "https://upgradies.com/year/2025",
      "title": "Mango Baby Won Upgradies 2025 Best iOS App",
      "content_html": "<p>Thank you <a href=\"https://www.theenthusiast.net/about/\">Myke Hurley</a> and <a href=\"https://sixcolors.com/jason/\">Jason Snell</a> for awarding Mango Baby the Best iOS App of 2025 🤯</p>\n<p>Being an Upgrade listener for 11 years+, I can't express how honored I feel right now. Mango Baby was made from my heart when I was a new parent. And reading the overwhelmingly positive messages from my users, including Myke(!), has kept me going with this app. Thank you. ❤️</p>\n",
      "date_published": "2026-01-04T19:56:28.983736Z"
    },
    {
      "id": "/post/2024-was-so-painful",
      "url": "https://mangoumbrella.com/post/2024-was-so-painful",
      "content_html": "<p>2024 was so painful, but looking back I’m quite glad it happened.</p>\n",
      "date_published": "2026-01-04T19:52:05.124738Z"
    },
    {
      "id": "/post/dun-and-bradstreet-spam",
      "url": "https://mangoumbrella.com/post/dun-and-bradstreet-spam",
      "content_html": "<p>The spam volume I receive from Dun &amp; Bradstreet is astonishing.</p>\n",
      "date_published": "2026-01-04T19:51:14.436042Z"
    },
    {
      "id": "/post/changelog-v2025.11",
      "url": "https://mangoumbrella.com/post/changelog-v2025.11",
      "title": "Changelog v2025.11",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2025-11-08</code> pyref.dev <a href=\"https://github.com/mangoumbrella/pyref.dev/releases/tag/v2025.11\"><code>v2025.11</code></a>: Added custom search engine instructions; support search symbols by packages; added new PyPI packages.</li>\n</ul>\n<h1>New linked posts</h1>\n<ul>\n<li><code>2025-11-15</code> <a href=\"https://mangoumbrella.com/post/bambu-printer-poop-basket-for-p1s-p1p-x1c\">∞ Bambu Printer Poop Basket for P1S/P1P/X1C</a></li>\n</ul>\n",
      "date_published": "2026-01-04T19:44:30.836430Z"
    },
    {
      "id": "/post/bambu-printer-poop-basket-for-p1s-p1p-x1c",
      "url": "https://mangoumbrella.com/post/bambu-printer-poop-basket-for-p1s-p1p-x1c",
      "external_url": "https://makerworld.com/en/models/2002186-bambu-printer-poop-basket-for-p1s-p1p-x1c",
      "title": "Bambu Printer Poop Basket for P1S/P1P/X1C",
      "content_html": "<figure>\n<img src=\"/m/images/94/9471789e-b2e9-4074-b0e4-fcdbb1ccc6e5.jpg\" alt=\"Bambu Printer Poop Basket for P1S/P1P/X1C\" />\n<figcaption><p>Bambu Printer Poop Basket for P1S/P1P/X1C</p></figcaption>\n</figure>\n<p>This is an adaptation from <a href=\"https://makerworld.com/en/models/677116-slim-bambulab-poop-shoot-bucket-p1s-p1p-x1c\">this model</a> but with hex holes for better visibility and filament savings.</p>\n",
      "date_published": "2026-01-04T19:46:30.378842Z"
    },
    {
      "id": "/post/changelog-v2025.10",
      "url": "https://mangoumbrella.com/post/changelog-v2025.10",
      "title": "Changelog v2025.10",
      "content_html": "<h1>New umbrella releases</h1>\n<ul>\n<li><code>2025-10-15</code> pyref.dev <a href=\"https://github.com/mangoumbrella/pyref.dev/releases/tag/v2025.10\"><code>v2025.10</code></a>: Added Python 3.14 standard libraries; improved search; added new PyPI packages.</li>\n</ul>\n",
      "date_published": "2026-01-04T19:41:18.190527Z"
    },
    {
      "id": "/post/changelog-v2025.9",
      "url": "https://mangoumbrella.com/post/changelog-v2025.9",
      "title": "Changelog v2025.9",
      "content_html": "<h1>New short posts</h1>\n<ul>\n<li><code>2025-09-15</code> <a href=\"https://mangoumbrella.com/post/congrats-everyone-on-shipping\">congrats-everyone-on-shipping</a></li>\n</ul>\n",
      "date_published": "2026-01-04T19:39:35.085206Z"
    },
    {
      "id": "/post/congrats-everyone-on-shipping",
      "url": "https://mangoumbrella.com/post/congrats-everyone-on-shipping",
      "content_html": "<p>Congrats everyone on shipping!</p>\n",
      "date_published": "2026-01-04T19:38:24.596892Z"
    }
  ]
}