<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Matt Langford</title><link>https://mattlangford.com/</link><description>Writing by Matt Langford.</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://mattlangford.com/index.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Wed, 13 May 2026 00:00:00 -0500</lastBuildDate><item><title>Some Catching Up</title><link>https://mattlangford.com/posts/some-catching-up/</link><pubDate>Wed, 13 May 2026 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/some-catching-up/</guid><description>&lt;![CDATA[<p>Things have been busy over the last few months, and I&rsquo;ve fallen behind on more than a couple things. As plans settle in for the summer, I believe I&rsquo;ve got an opening to be more consistent in publishing useful items. I plan to start that before the end of the month and layout my intentions fully. In the meantime, I thought I&rsquo;d recap some things in 2026.</p><hr><p>Early on this year, we set aside a day to catch an NCAA basketball game, rooting for my alma mater, the Ragin Cajuns.</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_0765_140497_hu_7fc1f506fac2cab7.avif 480w, /posts/some-catching-up/IMG_0765_140497_hu_9e66221988028df7.avif 768w, /posts/some-catching-up/IMG_0765_140497_hu_a9453773e17814ab.avif 1024w, /posts/some-catching-up/IMG_0765_140497_hu_ca7dacfe3fe69fd.avif 1536w, /posts/some-catching-up/IMG_0765_140497_hu_f75fc91cfcb487aa.avif 2048w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_0765_140497_hu_8ddc9b8bf84fb3c9.webp 480w, /posts/some-catching-up/IMG_0765_140497_hu_2ff017f3f03ff0b6.webp 768w, /posts/some-catching-up/IMG_0765_140497_hu_e9ad7264a868de91.webp 1024w, /posts/some-catching-up/IMG_0765_140497_hu_a055539e90710c7f.webp 1536w, /posts/some-catching-up/IMG_0765_140497_hu_360c266f62ee7789.webp 2048w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_0765_140497_hu_89ead77e1ed3fba8.jpeg" width="2048" height="1536" alt="Family trip to watch NCAA Basketball" decoding="async" fetchpriority="high"/></figure><p>One random day at work, the local police department used our parking lot as a staging area for the mounted unit. My kids came to get some closeup time with the guests of honor.</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_1054_140498_hu_5ccab2a986889044.avif 480w, /posts/some-catching-up/IMG_1054_140498_hu_898c77d77a033046.avif 768w, /posts/some-catching-up/IMG_1054_140498_hu_c31403c02aa11ec3.avif 1024w, /posts/some-catching-up/IMG_1054_140498_hu_2693f0a1a9344165.avif 1536w, /posts/some-catching-up/IMG_1054_140498_hu_ea747940cdd68fe5.avif 1920w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_1054_140498_hu_d971ced1d3751195.webp 480w, /posts/some-catching-up/IMG_1054_140498_hu_52921d60fa9c2977.webp 768w, /posts/some-catching-up/IMG_1054_140498_hu_1cc8ae04f1fe0bbd.webp 1024w, /posts/some-catching-up/IMG_1054_140498_hu_d89d40dc533247ba.webp 1536w, /posts/some-catching-up/IMG_1054_140498_hu_1caa1f9b8b576d7e.webp 1920w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_1054_140498_hu_ccbb1930d3f97372.jpeg" width="1920" height="2560" alt="Kids and horses" decoding="async" loading="lazy"/></figure><p>A family trip to Branson followed.</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_1125_140499_hu_ec719441c8831d84.avif 480w, /posts/some-catching-up/IMG_1125_140499_hu_da58c9d953d775b5.avif 768w, /posts/some-catching-up/IMG_1125_140499_hu_82c9c3ee9347eb83.avif 1024w, /posts/some-catching-up/IMG_1125_140499_hu_1744625cb37f1eb2.avif 1536w, /posts/some-catching-up/IMG_1125_140499_hu_f9c0628784abeb7c.avif 1920w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_1125_140499_hu_4ea37e436ec2ceb7.webp 480w, /posts/some-catching-up/IMG_1125_140499_hu_27b7b6ec40968a77.webp 768w, /posts/some-catching-up/IMG_1125_140499_hu_c35a43727ea24451.webp 1024w, /posts/some-catching-up/IMG_1125_140499_hu_b365846856321f4c.webp 1536w, /posts/some-catching-up/IMG_1125_140499_hu_1bbd97d909f91626.webp 1920w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_1125_140499_hu_1cab3c7fd5e8e114.jpeg" width="1920" height="2560" alt="Family in Branson" decoding="async" loading="lazy"/></figure><p>And a random trip to Jefferson, TX for some antiquing.</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_1307_140500_hu_2895352f0453296c.avif 480w, /posts/some-catching-up/IMG_1307_140500_hu_11ead16380fac0e7.avif 768w, /posts/some-catching-up/IMG_1307_140500_hu_18423749ba9d58c2.avif 1024w, /posts/some-catching-up/IMG_1307_140500_hu_c638ae43091bdb16.avif 1536w, /posts/some-catching-up/IMG_1307_140500_hu_ffa780d2fdf2abcf.avif 1920w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_1307_140500_hu_3121e5e0c4db38ee.webp 480w, /posts/some-catching-up/IMG_1307_140500_hu_f6a121c023aa1116.webp 768w, /posts/some-catching-up/IMG_1307_140500_hu_edbf93dd5eafd197.webp 1024w, /posts/some-catching-up/IMG_1307_140500_hu_3526fb0d6b35ad67.webp 1536w, /posts/some-catching-up/IMG_1307_140500_hu_153252586212f4a8.webp 1920w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_1307_140500_hu_fdcbf6eeb080dbd4.jpeg" width="1920" height="2560" alt="Girls in Jefferson" decoding="async" loading="lazy"/></figure><p>All 4 of us have gotten into archery.</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_1327_140501_hu_7745622bd3f280f5.avif 480w, /posts/some-catching-up/IMG_1327_140501_hu_bdb55bfd8aa50ee4.avif 768w, /posts/some-catching-up/IMG_1327_140501_hu_e9fc6fd541047912.avif 1024w, /posts/some-catching-up/IMG_1327_140501_hu_6193cdcfe49f54d5.avif 1536w, /posts/some-catching-up/IMG_1327_140501_hu_6bb5500299ba15b9.avif 1920w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_1327_140501_hu_c8293d8e8fae6a53.webp 480w, /posts/some-catching-up/IMG_1327_140501_hu_b3916d95de390a7e.webp 768w, /posts/some-catching-up/IMG_1327_140501_hu_2f70c37ce9ad371e.webp 1024w, /posts/some-catching-up/IMG_1327_140501_hu_43a5efa72ccc4af0.webp 1536w, /posts/some-catching-up/IMG_1327_140501_hu_c35f48b94f02e66e.webp 1920w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_1327_140501_hu_aa95eea00db05302.jpeg" width="1920" height="2560" alt="Archery" decoding="async" loading="lazy"/></figure><p>Beyond that, we have gone through birthdays, family outings, fishing, bike riding, gardening, and so much more. And the rest of the year promises much more!</p><figure><picture><source type="image/avif" srcset="/posts/some-catching-up/IMG_1568_140504_hu_39b0ba2f61f5335e.avif 480w, /posts/some-catching-up/IMG_1568_140504_hu_13aba3a994544cb0.avif 673w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/some-catching-up/IMG_1568_140504_hu_321dddc222e3c4a8.webp 480w, /posts/some-catching-up/IMG_1568_140504_hu_a7abb3b70aaff5c6.webp 673w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/some-catching-up/IMG_1568_140504_hu_c71c7a094f644960.jpeg" width="673" height="898" alt="Matt and Kalena Langford" decoding="async" loading="lazy"/></figure>]]></description></item><item><title>What I'm Using in 2026</title><link>https://mattlangford.com/posts/what-im-using-in-2026/</link><pubDate>Sun, 12 Apr 2026 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/what-im-using-in-2026/</guid><description>&lt;![CDATA[<p>It&rsquo;s been a while since I updated the list of &ldquo;what I use,&rdquo; and there have been some changes. One of the first things you might notice is the move to first party apps and services.<em>Let&rsquo;s get straight to it.</em></p><ul><li>📨 Mail Client: Apple Mail</li><li>📮 Mail Server: iCloud Mail</li><li>📝 Notes: Apple Notes</li><li>✅ To-Do: Apple Reminders</li><li>📷 iPhone Photo Shooting: Apple Camera</li><li>📸 Photo Editing (iOS): Darkroom</li><li>🟦 Photo Management: Apple Photos</li><li>📆 Calendar: Apple Calendar</li><li>📁 Cloud File Storage: iCloud Drive + Google Drive + Dropbox</li><li>🗄 Cloud Storage Mounting: CloudMounter</li><li>📖 RSS: NetNewsWire</li><li>🙍🏻‍♂️ Contacts: Apple Contacts</li><li>🌐 Browser: Safari</li><li>💬 Chat: Apple Messages</li><li>🔖 Bookmarks: Safari</li><li>📑 Read It Later: Messy Amount of Tabs</li><li>📜 Word Processing: iA Writer + BBEdit</li><li>📈 Spreadsheets: Numbers</li><li>📊 Presentations: ProPresenter</li><li>🛒 Shopping Lists: Apple Reminders/Notes</li><li>🍴 Meal Planning: Kalena (my wife)</li><li>💰 Budgeting &amp; Finance: QuickBooks</li><li>📰 News: NetNewsWire (via RSS)</li><li>🎵 Music: Apple Music</li><li>🎤 Podcasts: Apple Podcasts</li><li>🔐 Password Management: Apple Passwords</li><li>🧭 Map/Directions: Apple Maps</li><li>🔎 Search: Google (ugh)</li><li>🤖 Preferred LLM: Claude</li><li>🖼 Screenshot Framing: Framous</li><li>🔄 Automation: Keyboard Maestro + Hazel + Shortcuts</li><li>🔧 Mac Utilities: Cotypist, Front and Center, Hyperkey</li><li>💻 Code Editor: Nova + BBEdit</li><li>🎨 Graphics Editing: Pixelmator Pro + Sketch</li><li>🛡 Safari Extensions: Wipr + StopTheMadness Pro</li><li>📞 Video Conferencing: Zoom</li><li>🎮 Games: Chess.com, NYT Games</li></ul><p>Idea originated from<a href="https://defaults.rknight.me/" rel="noopener noreferrer">Hemispheric Views</a>
.</p>]]></description></item><item><title>Introducing Axiom Bible — A Bible App That Gets Out of Your Way</title><link>https://mattlangford.com/posts/introducing-axiom-bible/</link><pubDate>Fri, 06 Feb 2026 00:00:00 -0600</pubDate><guid>https://mattlangford.com/posts/introducing-axiom-bible/</guid><description>&lt;![CDATA[<p>I&rsquo;m a pastor in Louisiana, and like most people in ministry, I&rsquo;ve tried just about every Bible app out there. They all start the same way: you open the app to read a passage, and before you get to a single verse you&rsquo;re greeted by a carousel of reading plans, a social feed, devotional pop-ups, and enough graphics to make your phone feel like a magazine rack.</p><p>I didn&rsquo;t want any of that. I just wanted to open an app, read Scripture, and go about my day.</p><p>So I built one.</p><figure><picture><source type="image/avif" srcset="/posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_7bbd7401bee562fc.avif 480w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_9097b53ca50b2ffa.avif 768w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_a0e2b024b30ee3ee.avif 1024w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_3b0e4648cc5fb6c7.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_1f4bc178f207a63c.webp 480w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_87c3e7e8310d8354.webp 768w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_fc3552c40d222b31.webp 1024w, /posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_23516268ff08e168.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/introducing-axiom-bible/axiom-bible-teaser-wide-1_129457_hu_7ae1947ae919141a.jpg" width="1200" height="675" alt="Axiom Bible" decoding="async" fetchpriority="high"/></figure><p><a href="https://axiombible.com" rel="noopener noreferrer">Axiom Bible</a>
is a free Bible reader for iOS that&rsquo;s built around one idea: simplicity. No social media integrations. No curated content feeds. No accounts to create. No ads. No tracking. Just the Bible, a few tools that actually help you study it, and a clean interface that stays out of your way.</p><h3 id="whats-inside">What&rsquo;s Inside<a class="heading-anchor" href="#whats-inside" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p><strong>Seven translations.</strong> Axiom Bible ships with seven public-domain and openly-licensed translations (with more on the way): KJV, ASV, BBE, BSB, Darby, WEB, and YLT. Switch between them instantly while reading or searching, no downloads, no waiting. All the text lives on your device from the moment you install the app.</p><p><strong>Search that actually works.</strong> Type a reference like &ldquo;John 3:16&rdquo; or &ldquo;II Corinthians 3&rdquo; and go straight there. Or type a keyword and get results across the entire Bible with your search term highlighted and bolded so you can scan quickly. You can also filter results by Old or New Testament, or search only within your saved favorites.</p><p><strong>Matthew Henry&rsquo;s Concise Commentary.</strong> This is one of my favorite features. Tap-and-hold on any verse and you can pull up the corresponding entry from Matthew Henry&rsquo;s Concise Commentary, a trusted, public-domain resource that pastors and students have relied on for centuries. Nearly 4,000 commentary entries are bundled right into the app.</p><p><strong>Historical Context powered by Apple Intelligence.</strong> For passages where you want more background — such as who wrote this, when, why, and to whom — Axiom Bible can generate historical context right on your device using Apple Intelligence. It runs entirely on-device, so nothing leaves your phone. You can adjust the length and tone (casual, pastoral, scholarly, or professional) depending on whether you&rsquo;re doing quick devotional reading or deeper study.</p><p><strong>Favorites that sync.</strong> Swipe right on any verse to save it. Save single verses, ranges, or whole chapters. Your favorites sync across all your Apple devices through iCloud, and they&rsquo;re even indexed in Spotlight search so you can find them from your home screen.</p><p><strong>Siri and Widgets.</strong> Ask Siri to look up a verse or open your favorites. Add a Scripture of the Day widget to your home screen. Use Shortcuts to build your own automations. The app plugs into the parts of iOS that make your phone actually useful.</p><p><strong>Multi-select for study.</strong> When you&rsquo;re working through a passage, tap the select button to choose multiple verses at once, then copy, share, or favorite them all together. It&rsquo;s a small thing, but it makes a real difference when you&rsquo;re preparing a sermon or pulling together references.</p><h3 id="what-it-doesnt-have">What It Doesn&rsquo;t Have<a class="heading-anchor" href="#what-it-doesnt-have" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>No accounts. No social feeds. No reading plan guilt. No ads. No tracking.</p><p>The app is designed for people who already know what they want to read. It respects your time and your attention.</p><h3 id="a-note-on-supporter-tiers">A Note on Supporter Tiers<a class="heading-anchor" href="#a-note-on-supporter-tiers" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Axiom Bible is free to use, including all versions of the Bible, Matthew Henry&rsquo;s Concise Commentary, and Historical Context. There&rsquo;s an optional &ldquo;Axiom Supporter&rdquo; subscription that unlocks a few extras such as custom app icons, full customization of the Historical Context feature, and a way to support ongoing development. Everything core to reading and studying Scripture is<strong>free</strong>.</p><h3 id="available-now">Available Now<a class="heading-anchor" href="#available-now" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p><a href="https://axiombible.com" rel="noopener noreferrer">Axiom Bible</a>
is available on the<a href="https://apps.apple.com/us/app/axiom-bible/id6757453625" rel="noopener noreferrer">App Store for iPhone</a>
. If you&rsquo;ve been looking for a Bible app that just lets you read, I&rsquo;d love for you to give it a try.</p>]]></description></item><item><title>Being a Kids' Baseball Coach</title><link>https://mattlangford.com/posts/being-a-kids-baseball-coach/</link><pubDate>Wed, 26 Nov 2025 00:00:00 -0600</pubDate><guid>https://mattlangford.com/posts/being-a-kids-baseball-coach/</guid><description>&lt;![CDATA[<p>For the last few years, my son has played baseball. He gets his love for the game from his parents, as both my wife and I grew up in and around the sport. I know the game, the rules, the strategies, the concepts, the stats, the terminology, all of it. But until this year, I was simply a supportive parent who always sat next to the dugout.</p><p>However, things changed. For one reason or another, his team was without a coach as the season approached. I eventually decided to step forward and take on the challenge. It was complicated, frustrating, and rewarding. It was our first year in player-pitch (as opposed to coach-pitch and tee-ball). Our particular team leaned heavily towards first-time players. As such we had to spend a significant amount of time on just basic fundamental knowledge of the game. Tagging up, force plays, cut-offs, and the like. And don&rsquo;t get me started on the challenge of teaching first time players the intricacies of the infield fly rule or dropped 3rd strikes.</p><figure><picture><source type="image/avif" srcset="/posts/being-a-kids-baseball-coach/img_0239_129454_hu_67aee10ce3e696d5.avif 480w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_f070101539d63fe.avif 768w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_47509a3e7936ddb0.avif 1024w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_6134784a5168af78.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/being-a-kids-baseball-coach/img_0239_129454_hu_14b710d61d7c6b2b.webp 480w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_df284b04edfbfdb1.webp 768w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_cc7f15d1baf05832.webp 1024w, /posts/being-a-kids-baseball-coach/img_0239_129454_hu_6c5b1b9aebc4a2cd.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/being-a-kids-baseball-coach/img_0239_129454_hu_aa4f49e41ff4e385.jpg" width="1200" height="1600" alt="Team photo" decoding="async" fetchpriority="high"/></figure><p>The league we played in was an odd combination of developed travel ball teams and inexperienced mishmashes as we were. At the end of the season, I&rsquo;d label us as a respectable team considering the challenges. The thing that surprised me, perhaps because my naivety, was the source of most challenges. The kids (mostly) were the easiest part. They wanted to play, to learn, and to have fun.</p><p>I&rsquo;d heard horror stories about dealing with parents, but we lucked out there. They were willing to help when needed, cheered relentlessly, and were hands-off beyond that. Whew. The umpires were acceptable, although frustrating at times. The average coach in the league knew the rules better than the average umpire. Speaking of coaches, there was a mutual respect.</p><p>The problem was with the organization itself. And I use the term &ldquo;organization&rdquo; very loosely as they should&rsquo;ve properly been called an<em>unorganization</em>. Field access for practices was limited, changed constantly, and was seldom communicated properly. They had a GroupMe setup (terrible app, but at least it was something), but they didn&rsquo;t want two-way communication through it. If I had a question, a scheduling request, or anything like that, I was supposed to email them. They rarely responded. Cancellations were communicated minutes before game times (despite the fact that people had to travel to the games). Practice fields were frequently missing bases.</p><p>The amount of stress introduced by the overseers equaled the amount of enjoyment experienced. I spent more time dealing with them than I did with the kids. In the end, I believe my son enjoyed his time with dad as a coach.</p><p>Maybe I just need to start a kid&rsquo;s baseball organization and do it right. GroupMe not allowed.</p>]]></description></item><item><title>Conquering Bing</title><link>https://mattlangford.com/posts/conquering-bing/</link><pubDate>Tue, 04 Nov 2025 00:00:00 -0600</pubDate><guid>https://mattlangford.com/posts/conquering-bing/</guid><description>&lt;![CDATA[<p>Or maybe the title should be<strong>Relentlessly Badgering Bing Until They Give Up and Finally Fix Things</strong>.</p><h3 id="the-back-story">The Back Story<a class="heading-anchor" href="#the-back-story" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>On February 3, 2015, I purchased<a href="https://mattlangford.com" rel="noopener noreferrer">mattlangford.com</a>
from GoDaddy. From the date I purchased it, until October 31, 2025, my site has not been listed on Bing despite taking every measure possible. Over the years, I sent countless emails and support requests, registered for every version of their webmaster&rsquo;s portal, followed every guideline, submitted every sitemap, used IndexNow, consulted dozens of people, the list goes on and on…</p><p>No matter what I did, one of two things would happen.</p><ol><li>Nothing</li><li>I&rsquo;d receive an automated email about<a href="https://www.bing.com/webmasters/help/webmasters-guidelines-30fba23a" rel="noopener noreferrer">Bing Webmaster Guidelines</a></li></ol><figure><picture><source type="image/avif" srcset="/posts/conquering-bing/10am_129452_hu_5d2d9a3a2c7801b8.avif 480w, /posts/conquering-bing/10am_129452_hu_fa38dde30c3213e3.avif 768w, /posts/conquering-bing/10am_129452_hu_61f0aead195bf682.avif 1024w, /posts/conquering-bing/10am_129452_hu_55844e392bf7bef7.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/conquering-bing/10am_129452_hu_59af61265919b0b5.webp 480w, /posts/conquering-bing/10am_129452_hu_b32cc8a738925e8c.webp 768w, /posts/conquering-bing/10am_129452_hu_673e58272489e208.webp 1024w, /posts/conquering-bing/10am_129452_hu_21ed019655448d77.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/conquering-bing/10am_129452_hu_337a49bcfb730902.jpg" width="1200" height="446" alt="Bing automated response screenshot" decoding="async" fetchpriority="high"/></figure><p>Naturally, I jumped into the guidelines. What was I missing? What was I doing wrong? I have many websites for various projects, all listed on Bing except for my personal site. I&rsquo;ve designed popular themes for blogging platforms used on hundreds, possibly thousands, of sites with no problems. There had to be something more happening.</p><h3 id="the-end-result-hopefully">The End Result (Hopefully)<a class="heading-anchor" href="#the-end-result-hopefully" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>After one more round of checking everything, verifying once again that I was following all guidelines, submitting everything Bing required, and contacting support once more…I finally saw movement. While I&rsquo;ll never know for sure what caused the change, there is only one thing I did different than the previous times.</p><p>In the latest correspondence, I suggested that perhaps issues stemmed from the previous domain owner&rsquo;s site. I have no knowledge if that is the case or not, but I finally received a positive response:</p><figure><picture><source type="image/avif" srcset="/posts/conquering-bing/55am_129453_hu_1826bf2b274bd3c1.avif 480w, /posts/conquering-bing/55am_129453_hu_ff6a29a70f0e9332.avif 768w, /posts/conquering-bing/55am_129453_hu_7b3fc94417bb4995.avif 1024w, /posts/conquering-bing/55am_129453_hu_b5db07b07c4db1a6.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/conquering-bing/55am_129453_hu_fc585d4182ccfe44.webp 480w, /posts/conquering-bing/55am_129453_hu_602e03841f87d1b4.webp 768w, /posts/conquering-bing/55am_129453_hu_fe273c57722a25af.webp 1024w, /posts/conquering-bing/55am_129453_hu_b3a80d1e129af2a1.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/conquering-bing/55am_129453_hu_ed9daa3af6b99adb.jpg" width="1200" height="506" alt="Bing positive response screenshot" decoding="async" loading="lazy"/></figure><p>In less than 4 days, my domain was showing prominently in search results.</p><h3 id="more-information">More Information<a class="heading-anchor" href="#more-information" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>The timing also coincided with<a href="/posts/the-ever-evolving-blog/">my blog platform switch</a>
. I have no reason to believe that is connected. There are many sites on Micro.blog (my old platform) that use the same themes/styles/formats I used (I created them after all) that are listed without issue.</p><p>Oh, one more thing. When Microsoft&rsquo;s search product changed its name to Bing, there was a very small niche web design company owned by me and 2 others. It was registered as Bing Web Design. We never fought it, but I feel that&rsquo;s an intriguing side note to the drama.</p><p>Have something to add?<a href="https://mastodon.social/@Mtt/115492351703498104" rel="noopener noreferrer">Reach out on Mastodon</a>
.</p>]]></description></item><item><title>Basic iPhone Privacy &amp; Security</title><link>https://mattlangford.com/posts/basic-iphone-privacy-security/</link><pubDate>Wed, 29 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/basic-iphone-privacy-security/</guid><description>&lt;![CDATA[<p>As part of finding ways to achieve<a href="/posts/digital-simplification/">Digital Simplification</a>
, I wanted to find the easiest solution to maintain proper levels of privacy and security on my personal devices. Yes, I could go crazy with self-hosted solutions, dive into<a href="https://mullvad.net/en" rel="noopener noreferrer">Mullvad VPN</a>
, or Faraday Cages, but that misses the whole point of what I&rsquo;m trying to accomplish. I want the perfect combination of<strong>better-than-good</strong> and<strong>simple</strong>.</p><p>Is my final solution perfect? No. Is it better than what 95% of people do? Absolutely. Will I do the same thing on my wife&rsquo;s phone, and she won&rsquo;t want to throw it across the room? I think so. Will moody location aware apps like MLB.tv work consistently? So far, so good.</p><p>Here&rsquo;s what I&rsquo;ve done and suggest you should do:</p><ol><li><strong>Enable iCloud Private Relay</strong> (Settings → Name → iCloud → Private Relay → On)</li><li><strong>Turn off Personalized Ads</strong> (Settings → Privacy &amp; Security → Apple Advertising → Off)</li><li><strong>Turn off Analytics and Improvements</strong> (Settings → Privacy &amp; Security → Analytics &amp; Improvements → All Off)</li><li><strong>Turn off App Tracking</strong> (Settings → Privacy &amp; Security → Tracking → Off)</li><li><strong>Turn on Mail Privacy Protection</strong> (Settings → Apps → Mail → Privacy Protection → On)</li><li><strong>Prevent Cross-Site Tracking</strong> (Settings → Apps → Safari → Prevent Cross-Site Tracking → Off)</li><li><strong>Hide IP Address</strong> (Settings → Apps → Safari → Hide IP Address → Trackers and Websites)</li><li><strong>Audit and Limit Location Services</strong> (Settings → Privacy &amp; Security → Location Services)</li><li><strong>Set Search Engine as DuckDuckGo</strong> (Settings → Apps → Safari → Search Engine)</li><li><strong>Install:</strong><a href="https://underpassapp.com/StopTheMadness/" rel="noopener noreferrer">StopTheMadness Pro</a></li><li><strong>Install:</strong><a href="https://kaylees.site/wipr.html" rel="noopener noreferrer">Wipr</a></li><li><strong>Install:</strong><a href="https://one.one.one.one" rel="noopener noreferrer">1.1.1.1</a>
(enable WARP)</li></ol><p><strong>Extra:</strong> Enable Advanced Data Protection in Settings → iCloud → Advanced Data Protection. This requires all devices with your AppleID to be updated.</p><p>This should significantly obstruct what carriers, WiFi owners, and websites can see about you and your activity. More things should be encrypted and anonymized. The overall speed hit should be minimal. And best of all, it should require virtually no maintenance or ongoing upkeep. Set it and forget it.</p><p>Have any more tips?<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Reply on Mastodon</a>
.</p>]]></description></item><item><title>Digital Simplification</title><link>https://mattlangford.com/posts/digital-simplification/</link><pubDate>Tue, 28 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/digital-simplification/</guid><description>&lt;![CDATA[<p>One of the main issues with being a tech enthusiast is allowing things to get a little too complicated. Yes, the shortcuts, automations, niche apps, and random hacks are fun to create and experiment with, but there always comes a point where things are a little overdone.</p><p>Here&rsquo;s an example. I love<a href="https://www.omnigroup.com/omnifocus" rel="noopener noreferrer">Omnifocus</a>
, or rather I love the idea of Omnifocus. A task list manager with that level of flexibility and power seems to be the dream. In reality though, I&rsquo;ve spent more time<em>optimizing</em> Omnifocus than I do actually doing the tasks I put into the app. And don&rsquo;t get me started on the hoops you have to jump through to make things even partially acceptable to a normal-person collaborator.</p><p>At the end of the day, Apple Reminders does all of the things I really need. Honestly, it does more things I need than Omnifocus does (shared lists, primarily). By making the switch, I&rsquo;ve eliminated complexity while at the same time introducing simplicity. This is the strategy I want to take with other things as well, not just apps.</p><p>The biggest weakness of Apple Reminders is the lack of any ability to create a recurring task based on completion date instead of due date. For example, I want to change my air filter every 90 days. But if I miss the due date, I want the next recurring event to be 90 days after I actually accomplish the task, not 90 days from the original due date.</p><p>With that in mind, I&rsquo;ve taken a few extra steps that align with that thinking:</p><ul><li>Deleted lesser used social media platforms/accounts</li><li>Moved away from a smart watch</li><li>Deleted unplayed games on my iPhone</li><li>Re-thought my keyboard shortcuts</li><li>Slimmed down utilities/extensions</li><li>Thoroughly restricted push notifications across devices</li><li>Simplified my iPhone wallpaper</li><li>Eliminated many smart WiFi products</li></ul><p>There&rsquo;s a lot more I want to do, but this is a start. My biggest obstacle right now is the glut of communication apps I use (mostly by obligation). Messages is for 90% of my communication, GroupMe for my son&rsquo;s baseball league, Discord for a couple of communities I engage in, Planning Center&rsquo;s suite for work, Facebook Messenger (exclusively for Marketplace), and 2 email accounts. If I can find ways to optimize those, it would be a huge victory.</p><p>A few other things I&rsquo;m attempting to tackle while this motivation is at the forefront are creating an easy-to-use workflow for the initial creation of research files, finding the best way to blog from a mobile device on the Bear platform (I know this culminates with copy/paste), and finding my preferred quick way to add tasks to the Reminders app.</p><p>There&rsquo;s obviously still more I can do, and I am open to all thoughts and suggestions. Reach out on<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Mastodon</a>
.</p>]]></description></item><item><title>A Reading Habit</title><link>https://mattlangford.com/posts/a-reading-habit/</link><pubDate>Wed, 22 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/a-reading-habit/</guid><description>&lt;![CDATA[<p>I&rsquo;ve always been an avid reader, but I&rsquo;ve taken it up a notch recently. I&rsquo;ve read 36 full-length novels so far in 2025 with a little over 2 months remaining in the year. I follow a few people who have blown by that number, but I&rsquo;m happy with it considering my lifestyle (dad of two, primarily).</p><p>My reading is almost exclusively at night, while and after putting the kids to bed. I&rsquo;ve been reading on a current generation<a href="https://amzn.to/4omDwbH" rel="noopener noreferrer">Kindle Paperwhite</a>
. I know they recently made some user unfriendly changes concerning ownership/exporting of purchased books, but I rarely if ever actually purchase a book as I prefer libraries.</p><p>For many years, I used the<a href="https://libbyapp.com/interview/welcome#doYouHaveACard" rel="noopener noreferrer">Libby</a>
/Overdrive integration to borrow books from our local library. Unfortunately, our library system recently migrated away from Libby to<a href="https://www.yourcloudlibrary.com/en/home.html" rel="noopener noreferrer">CloudLibrary</a>
. To put it simply, CloudLibrary is awful. It is an ebook provider that does not work with Kindles. While they claim to work with other hardware, you have to jump through a lot of hoops. Your only option, natively, is to use a smartphone or tablet. Even if I was happy to do that, the app is terrible.</p><blockquote class="alert alert-note"><p class="alert-label">Note</p><p>If you&rsquo;re determined, you can use a convoluted mess of Adobe Digital Editions and Calibre to skirt some of the restrictions.</p></blockquote><p>My genre of choice is Historical Fiction with no particular focus. World War II is always a popular choice, but I&rsquo;ve also been drawn to the Napoleonic Wars, the Israel/Iran mess, King Alfred&rsquo;s time, and a few one-off random things.</p><p>If you have a recommendation,<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">reach out on Mastodon</a>
.</p>]]></description></item><item><title>The Ever Evolving Blog</title><link>https://mattlangford.com/posts/the-ever-evolving-blog/</link><pubDate>Tue, 21 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/the-ever-evolving-blog/</guid><description>&lt;![CDATA[<p>I almost titled this post something along the lines of<strong>Rethinking the Rethinking of the Rethinking of My Blog</strong>. Fortunately, common sense won out and that didn&rsquo;t make the cut. But essentially that&rsquo;s what this is. Let&rsquo;s recap:</p><ul><li>I decided to move my personal blog<a href="/posts/making-my-blog-fully-my-own/">away from Micro.blog</a>
.</li><li>I chose Jekyll/Netlify as the destination.</li><li>I made some<a href="/posts/rethinking-webmentions/">further tweaks</a>
to that setup.</li></ul><p>And now, I scrapped all of that and ended up on Bear.</p><h3 id="but-why-another-switch">But Why Another Switch?<a class="heading-anchor" href="#but-why-another-switch" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>I&rsquo;m indecisive and tend to go all-in on ideas. The whole Jekyll thing was a fun experiment, but there are a lot of obstacles to overcome (maintenance, updates, git, the list goes on) to simply keep the blog going. It became apparent that I&rsquo;d be spending way too much of my time on the backend. Since one of my goals was to simplify things, that just wasn&rsquo;t going to work.</p><h3 id="what-now">What Now?<a class="heading-anchor" href="#what-now" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>I&rsquo;m familiar with Bear and have used it for different projects with different accounts over the years. Recently, I&rsquo;ve seen others<a href="https://robertbirming.com" rel="noopener noreferrer">make a similar change</a>
, and I used that as inspiration. So Bear it is.</p><p>To begin, I imported posts that still get real traffic from older platforms. I setup the proper redirects, etc. Next, I wouldn&rsquo;t be me if I didn&rsquo;t go nuclear on the<code>css</code>. I used<a href="/posts/introducing-mythos-theme/">Mythos Theme for Micro.blog</a>
(I made that) as inspiration along with bits and pieces from elsewhere (such as<a href="https://robertbirming.com/taking-things-granted/" rel="noopener noreferrer">Robert Birming&rsquo;s blog</a>
). Is it finished? No, of course not. It might never be. But at least I feel like I can breathe right now.</p><h3 id="whats-next">What&rsquo;s Next?<a class="heading-anchor" href="#whats-next" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>I might revisit incorporating Mastodon interactions directly into the site again, but I think I&rsquo;ll enjoy the simplicity for a while.</p>]]></description></item><item><title>Rethinking Webmentions</title><link>https://mattlangford.com/posts/rethinking-webmentions/</link><pubDate>Tue, 14 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/rethinking-webmentions/</guid><description>&lt;![CDATA[<p>In the transition to a new personal blog, I initially<a href="/posts/making-my-blog-fully-my-own/">wanted to fully incorporate webmentions</a>
. I even designed and coded a<em>mostly</em> custom setup that included a beautifully formatted facepile, replies list, and on and on.</p><p>There were headaches to be sure, but it went well…ish. There were still obstacles to overcome concerning emojis, images, threaded replies, replies not formatted perfectly, etc. The more I went down the rabbit hole, the more I realized that the time required to remedy those issues wouldn&rsquo;t come near the benefits from doing it.</p><p>In researching, I stumbled across Robb Knight&rsquo;s<a href="https://rknight.me/blog/webmentions-redux/" rel="noopener noreferrer">Webmention Redux</a>
post where he discusses further issues with the setup. In the end, he scrapped displaying webmentions in favor of a Mastodon widget of sorts that displays the post, likes counter, boosts counter, and reply counter. I immediately liked that idea and decided to implement it on this site.</p><p>Using David Darnes&rsquo;<a href="https://darn.es/mastodon-post-web-component/" rel="noopener noreferrer">mastodon-post web component</a>
as a starting point, I integrated a similar setup here.</p><figure><picture><source type="image/avif" srcset="/posts/rethinking-webmentions/mastodon-post_129448_hu_233b27f0e054204f.avif 480w, /posts/rethinking-webmentions/mastodon-post_129448_hu_3f55458765996345.avif 768w, /posts/rethinking-webmentions/mastodon-post_129448_hu_c12ffb20ada3bbed.avif 1024w, /posts/rethinking-webmentions/mastodon-post_129448_hu_cf8816e5c4f0453b.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/rethinking-webmentions/mastodon-post_129448_hu_780a8b5dabfdf3e8.webp 480w, /posts/rethinking-webmentions/mastodon-post_129448_hu_bcf5126dbb930ea2.webp 768w, /posts/rethinking-webmentions/mastodon-post_129448_hu_e74dbb8d10cac2c8.webp 1024w, /posts/rethinking-webmentions/mastodon-post_129448_hu_5c901ef059c95b97.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/rethinking-webmentions/mastodon-post_129448_hu_c6f7300fba591e78.jpg" width="1200" height="324" alt="Mastodon post component" decoding="async" fetchpriority="high"/></figure><p>Here&rsquo;s how it currently works:</p><ol><li>I publish a new post</li><li>I share it on Mastodon via<a href="https://echofeed.app" rel="noopener noreferrer">Echofeed</a></li><li>I add it to the<code>YAML</code> of the new post</li><li>I update the post</li></ol><p>Due to the limits of time travel, there will always be a delay between the initial publishing of the post and the eventual display of the Mastodon element on the site. I&rsquo;m sure there&rsquo;s a way to automate Steps 3 and 4, perhaps with Echofeed&rsquo;s Web Requests, but that&rsquo;s a project for another day.</p>]]></description></item><item><title>Making My Blog Fully My Own</title><link>https://mattlangford.com/posts/making-my-blog-fully-my-own/</link><pubDate>Sun, 12 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/making-my-blog-fully-my-own/</guid><description>&lt;![CDATA[<p>Let me be clear from the start: I&rsquo;m not leaving<a href="https://micro.blog/mtt" rel="noopener noreferrer">Micro.blog</a>
. In fact, I currently have more sites hosted on Micro.blog than not, including all my<a href="/posts/introducing-mythos-theme/">custom themes</a>
and documentation sites. Micro.blog is an excellent platform, and I continue to recommend it to anyone looking for a simple, community-focused blogging experience.</p><p>But for my personal blog, I wanted something different. I wanted to dive deeper into the<a href="https://indieweb.org" rel="noopener noreferrer">IndieWeb</a>
rabbit hole, gain more granular control over security implementations, and have the flexibility to experiment with web technologies in ways that a hosted platform doesn&rsquo;t easily allow. This post details that transition, the reasoning behind it, the decisions I made, and the technical implementations that shaped this site.</p><h2 id="why-i-wanted-more-control">Why I Wanted More Control<a class="heading-anchor" href="#why-i-wanted-more-control" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>I realized I was trying to do too much with one blog. I was mixing long-form posts with microposts (as is the Micro.blog practice), and neither format was thriving. With this transition, I made a key decision:<strong>eliminate microposts entirely from the blog</strong>.</p><p>My microposts now go to<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Mastodon</a>
. My blog focuses exclusively on longer-form writing. This clarity has already improved my writing workflow and processes. But it also makes it easy to keep longform writing above-the-fold without having to do some creative backend gymnastics.</p><p>Every post on this blog now has substance. I&rsquo;m not aiming for daily posts; I&rsquo;m aiming for posts worth reading. This shift has already improved my writing discipline. Instead of feeling pressure to post frequently, I can take time to develop ideas properly.</p><h2 id="the-tech-stack">The Tech Stack<a class="heading-anchor" href="#the-tech-stack" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><ul><li>Powered by Jekyll</li><li>Pushed to GitHub</li><li>Hosted by Netlify</li></ul><p>Everything is version controlled with Git. I make changes locally, test them with the development server, commit to GitHub, and Netlify automatically builds and deploys. The entire process from commit to live deployment takes about two minutes. Netlify handles all the build commands and deploys the generated static files to their CDN with all the security headers and redirect rules configured.</p><h3 id="a-custom-theme-obviously">A Custom Theme (Obviously)<a class="heading-anchor" href="#a-custom-theme-obviously" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Rather than using an off-the-shelf theme, I built a custom theme inspired by<a href="https://stephango.com/" rel="noopener noreferrer">Steph Ango&rsquo;s</a>
minimalist design philosophy. I implemented his<a href="https://github.com/kepano/flexoki" rel="noopener noreferrer">Flexoki</a>
color scheme. Rest assured, this was not a copy/paste duplication, but a full from the ground up creation because I also wanted full IndieWeb and Webmention integration.</p><h2 id="getting-nerdy-with-indieweb-stuff">Getting Nerdy With IndieWeb Stuff<a class="heading-anchor" href="#getting-nerdy-with-indieweb-stuff" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>When written, everything below was accurate and live. However, I&rsquo;ve since decided to go<a href="/posts/rethinking-webmentions/">another direction</a>
.</p><p>While Micro.blog has excellent IndieWeb support built in, I wanted to understand the mechanics more deeply. I wanted to implement<a href="https://webmention.io" rel="noopener noreferrer">webmentions</a>
from scratch, experiment with different presentation styles, and have full control over how my site participates in the open web.</p><p>Moving to Jekyll gave me the ability to use the jekyll-webmention_io plugin with completely custom templates. Instead of accepting default webmention displays, I could design exactly how likes, reposts, and replies appear on each post. I implemented a facepile display for reactions, custom reply views, and even configured throttled lookups so my build times wouldn&rsquo;t balloon as mentions accumulated over time. Some of that was possible with Micro.blog, but not everything.</p><figure><picture><source type="image/avif" srcset="/posts/making-my-blog-fully-my-own/webmentions_129449_hu_b7ee0ac2168c184.avif 480w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_8dfb635614986605.avif 768w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_62dd9d46151ffba1.avif 1024w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_4e73f4031e919088.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/making-my-blog-fully-my-own/webmentions_129449_hu_9ebab77877aabb5f.webp 480w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_2cfc4e476477f689.webp 768w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_721282f3ebd49d47.webp 1024w, /posts/making-my-blog-fully-my-own/webmentions_129449_hu_16963bfc05f12e65.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/making-my-blog-fully-my-own/webmentions_129449_hu_f014d85896c1539.jpg" width="1200" height="560" alt="Webmentions screenshot" decoding="async" fetchpriority="high"/></figure><p>The webmention implementation is one of the most satisfying parts of this site (to me, at least).<a href="https://webmention.io" rel="noopener noreferrer">Webmention.io</a>
receives and stores all webmentions, while<a href="https://brid.gy" rel="noopener noreferrer">Bridgy</a>
acts as a bridge between social networks and the open web. When someone replies to my syndicated post on<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Mastodon</a>
or Bluesky, Bridgy automatically converts that reply into a webmention and sends it to Webmention.io. My site then fetches those mentions during the build process (and more) and displays them natively on the blog post.</p><p>Most of the above can easily be done by default in Micro.blog. It&rsquo;s where normal people should stop. But I&rsquo;m not a normal person and I had to go further. I wanted full control of the entire stack, including what gets pulled and how it&rsquo;s displayed. This is where I spent the most time learning the ins and outs of the entire system.</p><h3 id="crossposting-with-echofeed">Crossposting With Echofeed<a class="heading-anchor" href="#crossposting-with-echofeed" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Rather than manually crossposting, I use<a href="https://echofeed.app/" rel="noopener noreferrer">Echofeed</a>
to automatically syndicate blog posts to<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Mastodon</a>
and<a href="https://micro.blog/mtt" rel="noopener noreferrer">Micro.blog</a>
. It monitors my RSS feed and posts new entries to each network with appropriate formatting. This keeps my social presence active while maintaining the blog as the canonical source. Every longform thing I publish originates here and flows outward.</p><h3 id="other-tools-im-using">Other Tools I&rsquo;m Using<a class="heading-anchor" href="#other-tools-im-using" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><ul><li><a href="https://tinylytics.app" rel="noopener noreferrer">Tinylytics</a>
for Privacy-Focused Analytics</li><li><a href="https://emailoctopus.com" rel="noopener noreferrer">EmailOctopus</a>
for Newsletter</li></ul><h2 id="making-it-fast-and-secure">Making It Fast and Secure<a class="heading-anchor" href="#making-it-fast-and-secure" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>Static site generation offers unmatched performance. The entire site is pre-built HTML, CSS, and JavaScript deployed to Netlify&rsquo;s CDN. Various levels of compression and minifying not only happen, but I have full control over how it happens. The result is a site that loads nearly instantly and scores well on Lighthouse audits.</p><figure><picture><source type="image/avif" srcset="/posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_f1bf1e043880f233.avif 480w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_271d3225e8fd079.avif 768w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_53a250cb9855f406.avif 1024w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_326e9ca58375a7a6.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_5903e0da9aeab5c4.webp 480w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_e3686097a38fb385.webp 768w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_2538e2dba98e4584.webp 1024w, /posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_39a8dd71d07c1106.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/making-my-blog-fully-my-own/lighthouse_scores_129450_hu_516fac69d52b8b5f.jpg" width="1200" height="442" alt="Lighthouse scores" decoding="async" loading="lazy"/></figure><p>I wanted to<a href="https://securityheaders.com/?q=https%3A%2F%2Fmattlangford.com&amp;followRedirects=on" rel="noopener noreferrer">achieve an A+ security rating</a>
with proper headers and content security policies. With full control over the deployment, I could implement comprehensive security headers including X-Frame-Options, Content Security Policy, and Permissions Policy. It&rsquo;s the kind of detail work that&rsquo;s easier when you control the entire stack. Is it necessary? For most people, probably not. But for someone who likes to learn and tinker, absolutely.</p><figure><picture><source type="image/avif" srcset="/posts/making-my-blog-fully-my-own/security-headers_129451_hu_abf5377d3515e403.avif 480w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_493043259747dcf0.avif 768w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_2dd53bb9699b30d0.avif 1024w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_6a718da7ade89c35.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/making-my-blog-fully-my-own/security-headers_129451_hu_b16cd897871d9e30.webp 480w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_3a6575fb30acbfeb.webp 768w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_8961207bf6df3bbb.webp 1024w, /posts/making-my-blog-fully-my-own/security-headers_129451_hu_256ebee430c27a77.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/making-my-blog-fully-my-own/security-headers_129451_hu_82f524fef2234d39.jpg" width="1200" height="318" alt="Security headers score" decoding="async" loading="lazy"/></figure><h2 id="is-this-right-for-you">Is This Right for You?<a class="heading-anchor" href="#is-this-right-for-you" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>This transition wasn&rsquo;t about Micro.blog being inadequate. This was about my specific desire for deeper control, IndieWeb experimentation, and technical learning.</p><p>If you&rsquo;re considering a similar move, ask yourself:</p><ul><li>Do I need this level of control?</li><li>Am I comfortable with the technical complexity?</li><li>Will I actually use the flexibility?</li><li>Is the additional maintenance worth it?</li></ul><p>For me, the answers were yes. But for most people, Micro.blog&rsquo;s simplicity and community are exactly what they need. There&rsquo;s no wrong answer, just different tools for different needs.</p><p>My personal blog is now built with Jekyll, but my theme documentation sites and other projects remain on Micro.blog because that&rsquo;s where they belong. Each tool serves its purpose.</p><p>The beauty of the IndieWeb is that regardless of the platform, we&rsquo;re all participating in the same open ecosystem through feeds, webmentions, and open standards. That&rsquo;s what matters most.</p><p><em>Questions about the technical implementation? Find me on<a href="https://mastodon.social/@mtt" rel="noopener noreferrer">Mastodon</a>
or<a href="https://letterbird.co/matt" rel="noopener noreferrer">send me an email</a>
.</em></p>]]></description></item><item><title>What I'm Using</title><link>https://mattlangford.com/posts/what-im-using/</link><pubDate>Fri, 10 Oct 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/what-im-using/</guid><description>&lt;![CDATA[<p>Over the past few weeks, I&rsquo;ve been heavily analyzing and (hopefully) optimizing my workflows and strategies. Many of these have been in use for multiple years, but there are quite a few additions as well. I&rsquo;ve made an effort to go with first party apps unless I have a specific need for something else.</p><ul><li>📨 Mail Client: Apple Mail</li><li>📮 Mail Server: iCloud Mail</li><li>📝 Notes: Apple Notes +<strong>Obsidian</strong> +<strong>Tot</strong></li><li>✅ To-Do: Apple Reminders</li><li>📷 iPhone Photo Shooting: Apple Camera</li><li>📸 Photo Editing (iOS):<strong>Darkroom</strong></li><li>🟦 Photo Management: Apple Photos</li><li>📆 Calendar: Apple Calendar</li><li>📁 Cloud File Storage: iCloud Drive + Google Drive</li><li>🗄 Cloud Storage Mounting:<strong>Mountain Duck</strong></li><li>📖 RSS:<strong>Reeder</strong></li><li>🙍🏻‍♂️ Contacts: Apple Contacts</li><li>🌐 Browser: Safari</li><li>💬 Chat: Apple Messages</li><li>🔖 Bookmarks: Safari</li><li>📑 Read It Later: Messy Amount of Tabs</li><li>📜 Word Processing:<strong>Obsidian</strong></li><li>📈 Spreadsheets: Numbers</li><li>📊 Presentations:<strong>ProPresenter</strong>,<strong>iA Presenter</strong></li><li>🛒 Shopping Lists: Apple Reminders/Notes</li><li>🍴 Meal Planning:<strong>Kalena</strong> (my wife)</li><li>💰 Budgeting &amp; Finance:<strong>QuickBooks</strong></li><li>📰 News:<strong>Reeder</strong></li><li>🎵 Music: Apple Music</li><li>🎤 Podcasts:<strong>Overcast</strong></li><li>🔐 Password Management: Apple Passwords</li><li>🧭 Map/Directions: Apple Maps</li><li>🔎 Search: Google (ugh)</li><li>🤖 Preferred LLM:<strong>Claude</strong></li><li>🖼 Screenshot Framing:<strong>Framous</strong></li><li>🔄 Automation:<strong>Keyboard Maestro</strong> +<strong>Hazel</strong></li><li>🔧 Mac Utilities:<strong>Front and Center</strong>,<strong>HyperKey</strong>,<strong>Monitor Control</strong></li><li>💻 Code Editor:<strong>Nova</strong> +<strong>BBEdit</strong></li><li>🎨 Graphics Editing:<strong>Pixelmator Pro</strong> +<strong>Sketch</strong></li><li>🛡 Safari Extensions:<strong>Wipr</strong> +<strong>StopTheMadness Pro</strong></li><li>📞 Video Conferencing:<strong>Zoom</strong></li><li>🎮 Games:<strong>Chess</strong></li></ul><p>Idea originated from<a href="https://defaults.rknight.me/" rel="noopener noreferrer">Hemispheric Views</a>
.</p>]]></description></item><item><title>Introducing Mythos Theme</title><link>https://mattlangford.com/posts/introducing-mythos-theme/</link><pubDate>Fri, 22 Aug 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/introducing-mythos-theme/</guid><description>&lt;![CDATA[<p>After years (wow, that happened fast) of crafting themes for Micro.blog, I&rsquo;m excited to introduce<strong>Mythos Theme</strong> — my latest project that represents the direction of my theme development work. Before diving into what makes Mythos special, I want to share some important updates about my existing themes and where they stand moving forward.</p><h3 id="sumo-theme-a-new-home">Sumo Theme: A New Home<a class="heading-anchor" href="#sumo-theme-a-new-home" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Sumo Theme has found a new home with the Micro.blog team themselves. This popular theme has been transferred directly to Manton and the team for ongoing support and development. I&rsquo;m thrilled to see Sumo continue to evolve under their expert care, ensuring it remains a solid choice for users who love its robust feature set. As soon as Manton expressed interest in making it the default theme, I knew transferring it to their care was the best decision.</p><h3 id="bayou-theme-maintenance-mode">Bayou Theme: Maintenance Mode<a class="heading-anchor" href="#bayou-theme-maintenance-mode" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Bayou Theme will continue to receive support for existing users, but I won&rsquo;t be adding new features or major updates going forward. If you&rsquo;re currently using Bayou, rest assured that I&rsquo;ll continue to address any bugs or compatibility issues that arise. However, for those looking for the latest innovations and ongoing development, I&rsquo;d encourage you to explore Mythos Theme.</p><h3 id="tiny-theme-where-it-all-started">Tiny Theme: Where It All Started<a class="heading-anchor" href="#tiny-theme-where-it-all-started" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Tiny Theme holds a special place in my heart as the theme where this journey began. It will continue to work exactly as it does now, and I&rsquo;ll maintain support for bug fixes and essential updates. Tiny proved that sometimes the best solutions are the simplest ones, and it will remain available for those who appreciate its minimalist approach.</p><h2 id="enter-mythos-theme-the-future-is-here">Enter Mythos Theme: The Future is Here<a class="heading-anchor" href="#enter-mythos-theme-the-future-is-here" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>Mythos Theme represents everything I&rsquo;ve learned from developing Sumo, Bayou, and Tiny, distilled into a powerful, flexible, and simple design system. This is where I&rsquo;ll be focusing my creativity and development efforts moving forward.</p><figure><picture><source type="image/avif" srcset="/posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_7a09f1a1524d7b66.avif 480w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_a78922e1107d33b3.avif 768w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_c4ec9a05f8566ba0.avif 1024w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_31b458e9da55b049.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_2543e6f3cc3830d2.webp 480w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_fcf0eff747331dfc.webp 768w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_499d0bce6befd915.webp 1024w, /posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_515a03d77b33d4b3.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/introducing-mythos-theme/2025-08-22-introducing-mythos-theme-0_129458_hu_3586b32ae9d1a480.jpg" width="1200" height="1425" alt="Mythos Theme screenshot" decoding="async" fetchpriority="high"/></figure><h3 id="what-makes-mythos-amazing">What Makes Mythos Amazing<a class="heading-anchor" href="#what-makes-mythos-amazing" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Mythos Theme brings together:</p><ul><li><strong>Lightning Fast</strong> — It won&rsquo;t be your theme that slows you down.</li><li><strong>Highly Responsive</strong> — It looks great on any device.</li><li><strong>16 Languages Supported</strong> — And more to be added.</li><li><strong>WCAG 2.1 AA Accessibility</strong> — Exceptional accessibility and readability.</li></ul><h3 id="built-for-microblog">Built for Micro.blog<a class="heading-anchor" href="#built-for-microblog" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><p>Mythos isn&rsquo;t just another theme — it&rsquo;s one that I specifically designed for Micro.blog. Whether you&rsquo;re publishing long-form posts, sharing quick thoughts, or curating photo galleries, Mythos provides a beautiful canvas for your thoughts and ideas. It supports the popular plugins, plays nicely with built-in features, and has a few future tricks up its sleeves as well.</p><h2 id="making-the-transition">Making the Transition<a class="heading-anchor" href="#making-the-transition" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>For current users of my other themes, I understand that change can be daunting. Each theme served its purpose and community well. However, Mythos represents a significant step forward in terms of both design sophistication and future compatibility.</p><p>If you&rsquo;re using Bayou or Tiny and are happy with your current setup, there&rsquo;s no rush to change. Both themes will continue to work reliably. But if you&rsquo;re looking for new features, ongoing development, and the latest in my theme design, Mythos is where you&rsquo;ll want to be.</p><h2 id="looking-ahead">Looking Ahead<a class="heading-anchor" href="#looking-ahead" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p>Due to circumstances in life, I needed to consolidate my efforts. By doing this around Mythos Theme, I can provide better support, more frequent updates, and more innovative features than ever before.</p><p>The Micro.blog leadership and community has been incredibly supportive and encouraging throughout this journey, from those early days with Tiny Theme to now with the launch of Mythos. Your feedback, suggestions, and enthusiasm continue to help shape where my designs go.</p><h2 id="get-started-with-mythos">Get Started with Mythos<a class="heading-anchor" href="#get-started-with-mythos" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h2><p><a href="https://mythos.micro.blog/installation/" rel="noopener noreferrer">Install Mythos Theme</a></p>]]></description></item><item><title>Easily Insert Code Snippets into Apple Mail (and others)</title><link>https://mattlangford.com/posts/easily-insert-code-snippets-into-apple-mail-and-others/</link><pubDate>Thu, 12 Jun 2025 00:00:00 -0500</pubDate><guid>https://mattlangford.com/posts/easily-insert-code-snippets-into-apple-mail-and-others/</guid><description>&lt;![CDATA[<p>As a theme designer, I frequently provide basic support via email. As a primarily Apple ecosystem user, my go-to email clients are Apple Mail on both macOS and iOS, along with iCloud.com. For the most part, they do what I need them to do. Unfortunately, they don&rsquo;t have a solid built-in way to share code snippets. Yes, there are snippet sharing services that will do the trick, but sometimes you just really want to have some inline code in an email that looks and acts like you expect.</p><p>In trying to solve this problem, I discovered that you CAN add a beautifully styled code block to Apple Mail with an odd workaround. If you display a code block in a web browser, you can then copy that code block and paste it into a new email. It&rsquo;ll honor the font choices, styling, text-wraps, everything.</p><p>So naturally, I had to create<a href="https://mailcodecopy.netlify.app" rel="noopener noreferrer">a simple utility</a>
that makes that an easy process.</p><p><strong>Update:</strong> This apparently works in Gmail and many other clients as well.</p><h3 id="step-1-add-your-code--copy">Step 1: Add Your Code &amp; Copy<a class="heading-anchor" href="#step-1-add-your-code--copy" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><figure><picture><source type="image/avif" srcset="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_16ae67e1aeb4e12.avif 480w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_f4a7c34fbf5c92c9.avif 768w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_a83196bf0f1f62de.avif 1024w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_5e4ecdf0531cf41d.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_44df288f3a8113c.webp 480w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_db5f1217cca0dfdb.webp 768w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_84e4f0ed5eaf7422.webp 1024w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_4823a076a00e44c8.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-0_129455_hu_1d2ebda61a3173e7.jpg" width="1200" height="874" alt="Step 1: Add your code and copy" decoding="async" fetchpriority="high"/></figure><h3 id="step-2-paste-into-apple-mail">Step 2: Paste Into Apple Mail<a class="heading-anchor" href="#step-2-paste-into-apple-mail" aria-label="Link to section"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a></h3><figure><picture><source type="image/avif" srcset="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_e4e65a8c560093cf.avif 480w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_dc6cd620b1fc9fee.avif 768w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_a27a104b7b62248c.avif 1024w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_c49c7eeffad21bf2.avif 1200w" sizes="(max-width: 768px) 100vw, 700px"><source type="image/webp" srcset="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_17b5b67aaa97fde9.webp 480w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_806740687e509e7a.webp 768w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_86118c761e05f15c.webp 1024w, /posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_f0596f4fa13cda81.webp 1200w" sizes="(max-width: 768px) 100vw, 700px"><img src="/posts/easily-insert-code-snippets-into-apple-mail-and-others/2025-06-12-easily-insert-code-snippets-into-1_129456_hu_a80397616dc21a67.jpg" width="1200" height="972" alt="Step 2: Paste into Apple Mail" decoding="async" loading="lazy"/></figure>]]></description></item></channel></rss>