PageSourceSearch

https://hynek.me/til/

html hynek.me collected 2026-10-02 10:28:10 UTC 30,151 bytes, 54 lines download raw bytes

1<!doctype html><html lang=en-us class="text-primary bg-background dark:text-dark-primary dark:bg-dark-background font-sans text-lg subpixel-antialiased"><head><meta charset=utf-8><meta name=HandheldFriendly content="True"><meta name=viewport content="width=device-width"><link rel=preconnect href=https://static.hynek.me/><link rel=preconnect href=https://assets.hynek.me/><link rel=preconnect href=https://m.hynek.me><link rel=preconnect href=https://mc.hynek.me><link rel=stylesheet href=https://assets.hynek.me/fa/7.3.1/css/fontawesome.min.css crossorigin=anonymous><link rel=stylesheet href=https://assets.hynek.me/fa/7.3.1/css/brands.min.css crossorigin=anonymous><link rel=stylesheet href=https://assets.hynek.me/fa/7.3.1/css/sharp-regular.min.css crossorigin=anonymous><title>Today Hynek Learned</title><meta name=author content="Hynek Schlawack"><meta name=copyright content="Hynek Schlawack"><meta name=description content="Hynek Schlawack: Pythonista, Gopher, blogger, speaker, and YouTuber from Berlin / Germany."><meta name=keywords content="Hynek Schlawack,Python,DevOps,Go,Golang,TIL,Today I Learned,tips,tidbits"><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel="shortcut icon" type=image/png sizes=64x64 href=/favicon-64x64.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><meta name=theme-color media="(prefers-color-scheme: light)" content="#6B21A8"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#a855f7"><link rel=canonical href=https://hynek.me/til/><link href=https://twitter.com/hynek rel=me><link href=https://mastodon.social/@hynek rel=me><link href=https://hynek.me/index.xml rel=alternate type=application/atom+xml title="Hynek Schlawack"><link rel=human-json href=https://hynek.me/human.json><meta property="og:site_name" content="Hynek Schlawack"><meta property="og:author" content="Hynek Schlawack"><meta property="og:image" content="https://static.hynek.me/cards/til.png?18f12e4"><meta property="og:image:width" content="909"><meta property="og:image:height" content="476"><meta property="og:image:type" content="image/png"><meta name=twitter:image content="https://static.hynek.me/cards/til.png?18f12e4"><meta name=twitter:card content="summary_large_image"><meta name=twitter:label1 content="Written by"><meta name=twitter:data1 content="Hynek Schlawack"><meta name=twitter:site content="@hynek"><meta name=twitter:creator content="@hynek"><meta name=fediverse:creator content="@[email protected]"><meta name=twitter:title content="Today Hynek Learned"><meta name=twitter:description content="Hynek Schlawack: Pythonista, Gopher, blogger, speaker, and YouTuber from Berlin / Germany.">
1<script>var _paq=window._paq=window._paq||[];_paq.push(["disableCookies"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),function(){_paq.push(["setTrackerUrl","https://m.hynek.me/m.p"]),_paq.push(["setSiteId","2"]);var t=document,e=t.createElement("script"),n=t.getElementsByTagName("script")[0];e.type="text/javascript",e.async=!0,e.src="https://mc.hynek.me/m.js",n.parentNode.insertBefore(e,n)}()</script>
1
2      
3        
4        
5          
6            
7              <link rel="stylesheet" href="https://static.hynek.me/css/styles.0c8604afa30aefcfec6da6204fed07eb4d686c2f5cb09e4cc7bb26036ec33ceb.css" integrity="sha256-DIYEr6MK78/sbaYgT&#43;0H601obC9csJ5Mx7smA27DPOs=" crossorigin="anonymous">
8            
9          
10        
11      
12    
13<script defer src=https://cloud.umami.is/script.js data-website-id=ab5532e2-39b2-4527-bcb1-5d93595ecd9c></script>
13</head><body class=leading-normal><header class="w-full md:sticky md:top-0 z-30 backdrop-blur supports-[backdrop-filter]:bg-background/80 dark:supports-[backdrop-filter]:bg-dark-background/80 bg-background dark:bg-dark-background border-t-8 border-secondary dark:border-dark-secondary pt-3 pb-2"><nav class="mx-auto max-w-2xl font-heading md:flex items-baseline justify-between px-3 md:px-0"><input id=nav-toggle type=checkbox class="peer sr-only" aria-labelledby=nav-label><div class="flex items-center justify-between"><a class="text-xl font-black uppercase no-underline tracking-wide text-secondary dark:text-dark-secondary p-2" href=/>Hynek Schlawack
14</a><label id=nav-label for=nav-toggle class="md:hidden inline-flex items-center p-2 text-primary dark:text-dark-primary cursor-pointer focus:outline-none focus:ring-2 focus:ring-secondary dark:focus:ring-dark-secondary rounded" aria-controls=site-menu role=button aria-label="Toggle navigation" tabindex=0><svg class="h-7 w-7" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M3 6.75A.75.75.0 013.75 6h16.5a.75.75.0 010 1.5H3.75A.75.75.0 013 6.75zM3 12a.75.75.0 01.75-.75h16.5a.75.75.0 010 1.5H3.75A.75.75.0 013 12zm0 5.25a.75.75.0 01.75-.75h16.5a.75.75.0 010 1.5H3.75A.75.75.0 013 17.25z"/></svg></label></div><div id=site-menu class="hidden peer-checked:flex md:flex flex-col md:flex-row items-end md:items-center mt-2 md:mt-0 font-medium text-right md:text-center space-y-2 md:space-y-0 md:space-x-3 w-max ml-auto md:w-auto md:ml-0"><a class="inline-flex items-center h-8 sm:px-2 text-primary dark:text-dark-primary no-underline border-b-2 border-transparent" href=/about/><span class="text-sm leading-none"><span class=inline-block><i class="pr-1 fa-sharp fa-user" alt="About Me"></i></span>
15About Me
16</span></a><a class="inline-flex items-center h-8 sm:px-2 text-primary dark:text-dark-primary no-underline border-b-2 border-transparent" href=/articles/><span class="text-sm leading-none"><span class=inline-block><i class="pr-1 fa-sharp fa-book-reader" alt=Articles></i></span>
17Articles
18</span></a><a class="inline-flex items-center h-8 sm:px-2 text-primary dark:text-dark-primary no-underline border-b-2 border-secondary dark:border-dark-secondary" href=/til/><span class="text-sm leading-none"><span class=inline-block><i class="pr-1 fa-sharp fa-lightbulb-on" alt=TIL></i></span>
19TIL
20</span></a><a class="inline-flex items-center h-8 sm:px-2 text-primary dark:text-dark-primary no-underline border-b-2 border-transparent" href=/talks/><span class="text-sm leading-none"><span class=inline-block><i class="pr-1 fa-sharp fa-keynote" alt=Talks></i></span>
21Talks</span></a></div></nav></header><main class="py-10 md:px-0"><div class="max-w-2xl mx-auto"><h1 class="mx-3 md:mx-0 mt-2 mb-4 text-balance">Today Hynek Learned</h1><div id=section-preamble><p>TIL stands for <strong>today I learned</strong> and is my place for collecting small, practical nuggets that I just learned – or explained to someone – and thought they’re too useful to let them vanish in the ethers of Twitter or GitHub comments. Please see the <a href=/articles/til/>blog post announcing this section</a> for details.</p><p>They have their own <a href=/til/index.xml>RSS feed</a> and I <a href=https://mastodon.social/@hynek>toot</a> / <a href=https://twitter.com/hynek>tweet</a> whenever I publish.</p></div><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/sqlite-read-only-wal-locked/>SQLite WAL Mode Can Lock Short-Lived Readers</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
22<time datetime=2026-07-26>26 July 2026</time></div></header><section class="mx-3 md:mx-0"><p>Locked SQLite database errors aren’t just for writers.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/sqlite-read-only-wal-locked/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/github-pull-request-git-push-pull/>How to Push and Pull from GitHub Pull Request Branches</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
23<time datetime=2025-09-12>12 September 2025</time></div></header><section class="mx-3 md:mx-0"><p>GitHub has this cool feature where while opening a pull request <a href=https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork>one can allow the maintainers to push changes to that branch</a>. This is a lot more ergonomic than suggesting larger-scale edits in the insufferably slow GitHub web UI. But it does require setting up remotes and upstream branches correctly.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/github-pull-request-git-push-pull/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/vs-code
23-refactoring/>VS Code Is Hiding Refactoring Tools</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
24<time datetime=2024-02-20>20 February 2024</time></div></header><section class="mx-3 md:mx-0"><p>It turns out that VS Code can move symbols between Python modules – but it&rsquo;s hiding the feature behind the &ldquo;Quick Fix&mldr;&rdquo; context menu.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/vs-code-refactoring/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/beryl-ax-captive-portal/>What to Do If a Beryl AX Can’t Connect to a Wi-Fi</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
25<time datetime=2023-10-07>7 October 2023
26</time><i class="px-1 fa-sharp fa-calendar-pen" alt=Updated title=Updated></i>
27<time datetime="28 July 2025">28 July 2025</time></div></header><section class="mx-3 md:mx-0"><p>I&rsquo;m absolutely in love with my <a href=https://www.gl-inet.com/products/gl-mt3000/>GL.iNet GL-MT3000 (Beryl AX)</a>, but occasionally, it has trouble connecting to captive portal Wi-Fis.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/beryl-ax-captive-portal/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/macos-window-focus-desktops/>How to Stop macOS from Stealing Focus after Switching Apps Across Desktops</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
28<time datetime=2023-10-06>6 October 2023</time></div></header><section class="mx-3 md:mx-0"><p>For years, I&rsquo;ve had a macOS bug that occurred randomly and that I could only fix by rebooting or logging out. The Internet is full of similar problems, but I never found a solution to mine, and my pleas for help on Twitter went unanswered. Now, I have found a workaround myself.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/macos-window-focus-desktops/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/bat-justfile/>How to Add Justfile Syntax to bat</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
29<time datetime=2023-05-26>26 May 2023</time></div></header><section class="mx-3 md:mx-0"><p>I&rsquo;m a big fan of <a href=https://github.com/sharkdp/bat><em>bat</em></a> as a <em>cat</em> replacement, and I&rsquo;m an even bigger fan of <a href=https://just.systems/man/en/chapter_1.html><em>just</em></a> as a Make replacement. Sadly, <em>bat</em> doesn&rsquo;t (and <a href=https://github.com/sharkdp/bat/issues/2488>won&rsquo;t</a>) support Justfile syntax. But you can add it yourself with a little extra effort.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/bat-justfile/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/automatic-rosetta-fish-direnv/>How to Automatically Switch to Rosetta With Fish and Direnv</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
30<time datetime=2023-03-18>18 March 2023</time></div></header><section class="mx-3 md:mx-0"><p>I love my Apple silicon computer, but having to <em>manually</em>
30 switch to <a href=https://en.wikipedia.org/wiki/Rosetta_(software)>Rosetta</a>-enabled shells for my Intel-only projects was a bummer.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/automatic-rosetta-fish-direnv/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/set-output-deprecation-github-actions/>How to Fix the set-output GitHub Actions Deprecation Warning</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
31<time datetime=2022-10-14>14 October 2022</time></div></header><section class="mx-3 md:mx-0"><p>If you have a <em>GitHub Actions</em> workflow that sets an output using <code>echo ::set-output key=value</code>, you have started to see an unhelpful deprecation warning. Here&rsquo;s how to fix it.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/set-output-deprecation-github-actions/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/python-portable-binaries/>You Can Build Portable Binaries of Python Applications</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
32<time datetime=2022-09-07>7 September 2022
33</time><i class="px-1 fa-sharp fa-calendar-pen" alt=Updated title=Updated></i>
34<time datetime="19 March 2024">19 March 2024</time></div></header><section class="mx-3 md:mx-0"><p>Contrary to popular belief, it’s possible to ship portable executables of Python applications without sending your users to Python packaging hell.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/python-portable-binaries/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/easier-crediting-contributors-github/>Easier Crediting of Contributors on GitHub</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
35<time datetime=2022-08-18>18 August 2022</time></div></header><section class="mx-3 md:mx-0"><p>GitHub has the concept of <em>co-authors</em> of a commit. You&rsquo;ve probably seen it in the web UI, when multiple people are listed to have committed something. I want to be gracious with credit where it&rsquo;s due and I&rsquo;ve found ways to make it easier.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/easier-crediting-contributors-github/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/pip-tools-and-pyproject-toml/>pip-tools Supports pyproject.toml</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
36<time datetime=2022-08-12>12 August 2022</time></div></header><section class="mx-3 md:mx-0"><p><em>pip-tools</em> is ready for modern packaging.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/pip-tools-and-pyproject-toml/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/parametrized-pytest-fixtures/>Parametrized pytest Fixtures</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
37<time datetime=2022-03-14>14 March 2022</time></div></header><section class="mx-3 md:mx-0"><p>If you reuse a <code>@pytest.mark.parametrize</code> many times, it might be time to define a parametrized fixture instead.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/parametrized-pytest-fixtures/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/eve-extend/>Eve Extend</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
38<time datetime=2022-02-12>12 February 2022</time></div></header><section class="mx-3 md:mx-0"><p>Don&rsquo;t buy it.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/eve-extend/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/typing-protocol/>typing.Protocol Across Python Versions</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
39<time datetime=2022-02-05>5 February 2022</time></div></header><section class="mx-3 md:mx-0"><p>How to seamlessly support <code>typing.Protocol</code>
39 on Python versions older and newer than 3.8. At the same time.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/typing-protocol/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/copyright-years/>You Can Stop Updating Copyright Attribution Years</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
40<time datetime=2021-11-30>30 November 2021</time></div></header><section class="mx-3 md:mx-0"><p>Every January 1st, an army of open source developers rushes out to update their copyright attributions in licenses and documentation. Why? Because we&rsquo;ve always done it that way.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/copyright-years/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/sphinx-link-templates/>Template Links in Sphinx</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
41<time datetime=2021-11-29>29 November 2021</time></div></header><section class="mx-3 md:mx-0"><p>One of my pet peeves are projects without easily accessible changelogs (secondary pet peeve: changelogs without dates). Currently, I&rsquo;m moving most auxiliary docs to Markdown, because that&rsquo;s clearly what GitHub and related tooling wants me to. But I don&rsquo;t want to compromise on my own pet peeve.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/sphinx-link-templates/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/sonos-mesh/>SONOS Shares Its Mesh</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
42<time datetime=2021-11-09>9 November 2021</time></div></header><section class="mx-3 md:mx-0"><p>The fact that SONOS devices build a transparent Wi-Fi mesh once one of them has wired Internet, is one of the main features of the ecosystem. TIL that at least the Playbar happily shares that mesh with your other devices.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/sonos-mesh/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/which-not-posix/>which is not POSIX</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
43<time datetime=2021-10-31>31 October 2021</time></div></header><section class="mx-3 md:mx-0"><p>I learn a non-trivial number of things, because there&rsquo;s Debian drama about them. The fact that the <code>which</code> command is not part of any standard just joined the flock.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/which-not-posix/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/tls-troubleshooting/>TLS Troubleshooting 101</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
44<time datetime=2021-08-30>30 August 2021</time></div></header><section class="mx-3 md:mx-0"><p>In my day job I spend a lot of time dealing with sketchy TLS setups. The error messages provided by OpenSSL tend to be quite opaque &ndash; fortunately there&rsquo;s tools to help you.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/tls-troubleshooting/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/python-project-local-venvs/>Python Project-Local Virtualenv Management</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
45<time datetime=2021-08-25>
4525 August 2021</time></div></header><section class="mx-3 md:mx-0"><p>On UNIX-like operating systems you can have the Python equivalent of <code>node_modules</code> today, for every Python version, without changing your workflows.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/python-project-local-venvs/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/go-mod-update/>Update All Go Modules</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
46<time datetime=2021-08-23>23 August 2021</time></div></header><section class="mx-3 md:mx-0"><p>Wanting to update <em>all</em> dependencies in a way that it doesn&rsquo;t break is somewhat more complicated than expected.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/go-mod-update/>→ Read more</a></section></article><article class="pb-8 border-b border-slate-200 dark:border-slate-700 last:border-0"><header class=mb-2><h2 class="text-2xl py-2"><a class="no-underline text-heading dark:text-dark-heading hover:text-secondary dark:hover:text-dark-secondary" href=https://hynek.me/til/rq-macos/>RQ & macOS</a></h2><div class="text-xs text-muted dark:text-dark-muted font-sans"><i class="pr-1 fa-sharp fa-calendar" alt=Published title=Published></i>
47<time datetime=2021-08-22>22 August 2021
48</time><i class="px-1 fa-sharp fa-calendar-pen" alt=Updated title=Updated></i>
49<time datetime="23 July 2023">23 July 2023</time></div></header><section class="mx-3 md:mx-0"><p>Due to <code>fork()</code>
49 semantics, using <a href=https://python-rq.org>RQ</a> on macOS can lead to confusing crashes.</p><a class="text-xs underline underline-offset-2 decoration-secondary dark:decoration-dark-secondary" href=https://hynek.me/til/rq-macos/>→ Read more</a></section></article></div></main><footer class="font-sans bg-shadowish dark:bg-slate-900"><div class=mx-auto><div class="flex justify-center pt-7 pb-1 text-3xl space-x-4"><a class="hover:text-black hover:bg-transparent text-primary dark:hover:text-white dark:text-dark-primary" href=https://www.youtube.com/@The_Hynek target=_blank rel=noopener title=YouTube><i class="fa-brands fa-youtube" alt="Hynek's YouTube channel"></i>
50</a><a class="hover:text-black hover:bg-transparent text-primary dark:hover:text-white dark:text-dark-primary" href=https://hynek.me/index.xml target=_blank rel=noopener title="RSS Feed"><i class="fa-sharp fa-rss" alt="RSS Feed for the blog and the talks."></i>
51</a><a class="hover:text-black hover:dark:text-white hover:bg-transparent text-primary dark:hover:text-white dark:text-dark-primary" href=/say-thanks/ title="How to Say Thanks"><i class="fa-sharp fa-heart" alt=Support></i>
52</a><a class="hover:text-black hover:bg-transparent text-primary dark:hover:text-white dark:text-dark-primary" href=https://mastodon.social/@hynek target=_blank rel=noopener title=Mastodon><i class="fa-brands fa-mastodon" alt="Hynek on Mastodon"></i>
53</a><a class="hover:text-black hover:bg-transparent text-primary dark:hover:text-white dark:text-dark-primary" href=https://bsky.app/profile/hynek.me target=_blank rel=noopener title=Bluesky><i class="fa-brands fa-bluesky" alt="Hynek on Bluesky"></i></a></div><div class="text-center text-sm py-5 text-muted dark:text-dark-muted">&copy; 2004–2026
54<span>Hynek Schlawack</span><div class="sm:flex justify-center"><div>All Rights Reserved</div><div class="hidden sm:mx-2 sm:inline-block">•</div><div><a class="text-muted dark:text-dark-muted no-underline" href=/legal/>Impressum & Privacy</a></div></div></div></div></footer><noscript><img referrerpolicy=no-referrer-when-downgrade src="https://m.hynek.me/m.php?idsite=2&amp;rec=1" style=border:0 alt></noscript></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.