{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Blog",
  "home_page_url": "https://go.waylonwalker.com/blog/",
  "feed_url": "https://go.waylonwalker.com/blog/feed.json",
  "description": "Full Blog Posts",
  "authors": [
    {
      "name": "Waylon Walker"
    }
  ],
  "items": [
    {
      "id": "https://go.waylonwalker.com/carry/",
      "url": "https://go.waylonwalker.com/carry/",
      "title": "/carry/",
      "content_html": "\u003ch2 id=\"edc\"\u003eEDC \u003ca href=\"#edc\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI try to keep a pretty light every day carry, but it never works out, keyfobs\nand headphone cases end up causing more bulk than I’d like, but My EDC is no\nwhere near the bulk I had as a kid with my cargo pants decked out with\neverything I could possibly need.\u003c/p\u003e\n\u003cp\u003eI hold no attachment to anything in my EDC.  Nothing on my person has\nsentimental value.  Anything I carry can be lost, stolen, or destroyed at any\npoint in time.  I pick things of sufficient usable, utilitarian, quality\nsufficient to work.  No extra fluff.\u003c/p\u003e\n\u003chr/\u003e\n\u003cul\u003e\n\u003cli\u003eGoogle Pixel 6\u003c/li\u003e\n\u003cli\u003eRidge Wallet\u003c/li\u003e\n\u003cli\u003eOlight Perun - Since April 2022\u003c/li\u003e\n\u003cli\u003eCivivi Qubit - Since March 2024 after my last one was donated to the Indianapolis Stadium\u003c/li\u003e\n\u003cli\u003eOpenFit Shokz\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr/\u003e\n\u003ch2 id=\"rules\"\u003eRules \u003ca href=\"#rules\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003elightweight\u003c/li\u003e\n\u003cli\u003ereplacable\u003c/li\u003e\n\u003cli\u003eno emotional attachments\u003c/li\u003e\n\u003cli\u003eutilitarian\u003c/li\u003e\n\u003cli\u003eeverything serves a purpose\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"my-kit\"\u003eMy kit \u003ca href=\"#my-kit\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/606e48d7-bf14-42b9-a96e-87b676556ff8.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/606e48d7-bf14-42b9-a96e-87b676556ff8.webp\" alt=\"My EDC layout\"/ data-glightbox=\"description: My EDC layout\"\u003e\u003c/a\u003e\n\u003cfigcaption\u003e\u003cp\u003ePhoto taken March 2023\u003c/p\u003e\u003c/figcaption\u003e\n\u003c/figure\u003e\n\u003ch2 id=\"phone\"\u003ePhone \u003ca href=\"#phone\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eGoogle Pixel 6\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eI will not get finance a new phone for the foreseeable future again.  The last\ntime I feel like I got a phone that felt like an upgrade was 2018 when I went\nto the Pixel 3.  The pixel 6 and pixel 8 my wife has feel no different\nwhatsoever to me.  It’s become more of a tool that does its job, there’s no\nmajor upgrades really driving me to create more ewaste with new devices.\u003c/p\u003e\n\u003ch2 id=\"wallet\"\u003eWallet \u003ca href=\"#wallet\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eRidge Wallet\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eA necessary evil that I still need.  I keep as few of cards as necessary in it.\nThis would be the worst thing in my kit to loose.  Only because the time it\nwould take to replace all of them.  This one was a gift to replace my last\nleather wallet, and I see no reason for this one to ever need replaced.  It’s\nmuch lighter and smaller, would not change that aspect.\u003c/p\u003e\n\u003ch2 id=\"flashlight\"\u003eFlashlight \u003ca href=\"#flashlight\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eOlight Perun\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eWhen I became a homeowner I added a dedicated flashlight to my EDC.  Its light\nand out of the way.  It’s the only thing I’ve ever found useful to fit in the\ncoin pocket of jeans, so I don’t even notice it.  Compared to using a phone,\nits more powerful, easier to position on me with the clip on my shirt/pants, or\nmagnetically to a metal surface for inspections/house work.\u003c/p\u003e\n\u003ch2 id=\"knife\"\u003eKnife \u003ca href=\"#knife\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eCivivi Qubit\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eI’ve carried a knife since as long as I can remember, feels like 10 but\nprobably more like 14 years old.  Never anything fancy, a few knock off\nleathermans, a few Buck, Case, KaBar that I found on a bridge, and now 3\nCivivis.  I use them till they break or more commonly they get lent and not\nreturned, or lost.  This is the most utilitarian thing I keep, almost always\nkept razor sharp, used, abused, and put away dirty.  Never used for prying, but\nused to cut anything it will cut no matter how \u003cem\u003ehard\u003c/em\u003e it is on it.  Its not to\nlook pretty, show off, its purely a tool that I hold no attachment to.\u003c/p\u003e\n\u003ch2 id=\"headphones\"\u003eHeadphones \u003ca href=\"#headphones\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eOpenFit Shokz\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eNot my first choice in headphones, but they work.  Headphones are probably the\nitem of biggest churn and ewaste for me.  Eventually I might pony up for\nsomething that is more durable and repairable, but headphones just don’t last\nforever before they stop working for me.  This latest pair was a pair my wife\nchose to try and did not like.  They sat in a drawer for a year or so until I\nstarted carrying them.\u003c/p\u003e\n",
      "content_text": "\n## EDC\n\nI try to keep a pretty light every day carry, but it never works out, keyfobs\nand headphone cases end up causing more bulk than I'd like, but My EDC is no\nwhere near the bulk I had as a kid with my cargo pants decked out with\neverything I could possibly need.\n\nI hold no attachment to anything in my EDC.  Nothing on my person has\nsentimental value.  Anything I carry can be lost, stolen, or destroyed at any\npoint in time.  I pick things of sufficient usable, utilitarian, quality\nsufficient to work.  No extra fluff.\n\n---\n\n* Google Pixel 6\n* Ridge Wallet\n* Olight Perun - Since April 2022\n* Civivi Qubit - Since March 2024 after my last one was donated to the Indianapolis Stadium\n* OpenFit Shokz\n\n---\n\n## Rules\n\n* lightweight\n* replacable\n* no emotional attachments\n* utilitarian\n* everything serves a purpose\n\n## My kit\n\n![My EDC layout](https://dropper.waylonwalker.com/file/606e48d7-bf14-42b9-a96e-87b676556ff8.webp)\nPhoto taken March 2023\n\n## Phone\n_Google Pixel 6_\n\nI will not get finance a new phone for the foreseeable future again.  The last\ntime I feel like I got a phone that felt like an upgrade was 2018 when I went\nto the Pixel 3.  The pixel 6 and pixel 8 my wife has feel no different\nwhatsoever to me.  It's become more of a tool that does its job, there's no\nmajor upgrades really driving me to create more ewaste with new devices.\n\n## Wallet\n_Ridge Wallet_\n\nA necessary evil that I still need.  I keep as few of cards as necessary in it.\nThis would be the worst thing in my kit to loose.  Only because the time it\nwould take to replace all of them.  This one was a gift to replace my last\nleather wallet, and I see no reason for this one to ever need replaced.  It's\nmuch lighter and smaller, would not change that aspect.\n\n## Flashlight\n_Olight Perun_\n\nWhen I became a homeowner I added a dedicated flashlight to my EDC.  Its light\nand out of the way.  It's the only thing I've ever found useful to fit in the\ncoin pocket of jeans, so I don't even notice it.  Compared to using a phone,\nits more powerful, easier to position on me with the clip on my shirt/pants, or\nmagnetically to a metal surface for inspections/house work.\n\n## Knife\n_Civivi Qubit_\n\nI've carried a knife since as long as I can remember, feels like 10 but\nprobably more like 14 years old.  Never anything fancy, a few knock off\nleathermans, a few Buck, Case, KaBar that I found on a bridge, and now 3\nCivivis.  I use them till they break or more commonly they get lent and not\nreturned, or lost.  This is the most utilitarian thing I keep, almost always\nkept razor sharp, used, abused, and put away dirty.  Never used for prying, but\nused to cut anything it will cut no matter how _hard_ it is on it.  Its not to\nlook pretty, show off, its purely a tool that I hold no attachment to.\n\n## Headphones\n_OpenFit Shokz_\n\nNot my first choice in headphones, but they work.  Headphones are probably the\nitem of biggest churn and ewaste for me.  Eventually I might pony up for\nsomething that is more durable and repairable, but headphones just don't last\nforever before they stop working for me.  This latest pair was a pair my wife\nchose to try and did not like.  They sat in a drawer for a year or so until I\nstarted carrying them.\n\n",
      "summary": "I try to keep a pretty light every day carry, but it never works out, keyfobs and headphone cases end up causing more bulk than I'd like, but My EDC is no...",
      "date_published": "2026-03-27T16:35:40Z",
      "date_modified": "2026-03-27T16:35:40Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/i-built-a-tmux-session-switcher/",
      "url": "https://go.waylonwalker.com/i-built-a-tmux-session-switcher/",
      "title": "I Built A Tmux Session Switcher",
      "content_html": "\u003cp\u003eI’ve been thinking about this for awhile now.  For years now, fuzzy pickers and\nlast session have been my go to.  They have served me well.  I can typically\nonly keep so much in my head anyways.  I’m often doing a hub and spoke pattern\nbetween main project, notes, and infra repo, maybe two projects.  Don’t get me\nwrong, I regularly run with a dozen or more sessions running at a time, but\nonly two to three are in my immediate context at any point anyways.\u003c/p\u003e\n\u003ch2 id=\"the-design\"\u003eThe Design \u003ca href=\"#the-design\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eharpoon for tmux\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003epress a hotkey followed by one more keystroke, currently any left hand letter\nSIMPLE, FAST, thats of utmost importance, what I want are sessions that I can\ncan be assigned in order of importance from middle row, top row, bottom row.\u003c/p\u003e\n\u003cp\u003eI added this binding to my tmux config.  Now I can press \u003ccode\u003ec-a a\u003c/code\u003e to go to the\nfirst session, \u003ccode\u003ec-a s\u003c/code\u003e to go to the second session. \u003ccode\u003ec-a\u003c/code\u003e and pause to think\nj/k to navigate, space to pick up a session and move it, x to kill it.\u003c/p\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebind-key -n c-a popup -E \u003cspan class=\"s1\"\u003e\u0026#39;~/go/bin/tgo\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"enter-the-agents\"\u003eEnter the agents \u003ca href=\"#enter-the-agents\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eNow with agents doing more and more work, and cooking for longer periods this\nis not cutting it, I’m often swapping through a lot more sessions, I’ve got\nmore projects sitting in more phases between research, implementation, fully\norchestrated agents, and sessions that need their hand held to get things\nright.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/7c5765a0-126d-430a-ad86-eb83eb440e1b.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/7c5765a0-126d-430a-ad86-eb83eb440e1b.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003cfigcaption\u003e\u003cp\u003eImage of the \u003ccode\u003etgo\u003c/code\u003e tool in action, I’d show you a video, but its not really\nthat interesting, it just flashes up and goes to the next session as fast as\nyou can press the key.\u003c/p\u003e\u003c/figcaption\u003e\n\u003c/figure\u003e\n\u003ch2 id=\"made-with-gpt-53-codex-and-gpt-51-codex-mini\"\u003eMade with gpt-5.3-codex and gpt-5.1-codex-mini \u003ca href=\"#made-with-gpt-53-codex-and-gpt-51-codex-mini\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eIdk how much it cost, it barely touched my $20/month weekly token allowance.\nI’ve been thinking about it for awhile and decided today was the day to pull\nthe trigger on something and get it started, worst case I throw it away.  It\ntook the agents about 7 minutes to implement a working version with broken ci\nthat it later fixed.\u003c/p\u003e\n\u003cp\u003eI’ve typed far more characters and put more thought into this post than the\ntool itself, that where we are these days I guess.\u003c/p\u003e\n\u003cp\u003eSee the session that made \u003ccode\u003etgo\u003c/code\u003e \u003ca href=\"/ses-3444b09b1ffexter3elfg5qqtg/\" class=\"wikilink\" data-title=\"Ses_3444b09b1ffexter3elfg5qqtg\" data-description=\"** ses***** 3/4/2026, 8:52:32 PM\" data-date=\"2026-03-04\" data-preview=\"** ses***** 3/4/2026, 8:52:32 PM\"\u003eSes_3444b09b1ffexter3elfg5qqtg\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"should-you-use-it\"\u003eShould you use it? \u003ca href=\"#should-you-use-it\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eYou can its there for anyone to use, go for it, there’s an easy to download\nbinary.\u003c/p\u003e\n\u003cp\u003eIt’s all vibe coded slop that you could probably do a better job doing in a\ncave with scraps anyways.  Take inspiration and make one that works for you.\u003c/p\u003e\n",
      "content_text": "\nI've been thinking about this for awhile now.  For years now, fuzzy pickers and\nlast session have been my go to.  They have served me well.  I can typically\nonly keep so much in my head anyways.  I'm often doing a hub and spoke pattern\nbetween main project, notes, and infra repo, maybe two projects.  Don't get me\nwrong, I regularly run with a dozen or more sessions running at a time, but\nonly two to three are in my immediate context at any point anyways.\n\n## The Design\n_harpoon for tmux_\n\npress a hotkey followed by one more keystroke, currently any left hand letter\nSIMPLE, FAST, thats of utmost importance, what I want are sessions that I can\ncan be assigned in order of importance from middle row, top row, bottom row.\n\nI added this binding to my tmux config.  Now I can press `c-a a` to go to the\nfirst session, `c-a s` to go to the second session. `c-a` and pause to think\nj/k to navigate, space to pick up a session and move it, x to kill it.\n\n``` bash\nbind-key -n c-a popup -E '~/go/bin/tgo'\n```\n\n## Enter the agents\n\nNow with agents doing more and more work, and cooking for longer periods this\nis not cutting it, I'm often swapping through a lot more sessions, I've got\nmore projects sitting in more phases between research, implementation, fully\norchestrated agents, and sessions that need their hand held to get things\nright.\n\n![](https://dropper.waylonwalker.com/file/7c5765a0-126d-430a-ad86-eb83eb440e1b.webp)\nImage of the `tgo` tool in action, I'd show you a video, but its not really\nthat interesting, it just flashes up and goes to the next session as fast as\nyou can press the key.\n\n## Made with gpt-5.3-codex and gpt-5.1-codex-mini\n\nIdk how much it cost, it barely touched my $20/month weekly token allowance.\nI've been thinking about it for awhile and decided today was the day to pull\nthe trigger on something and get it started, worst case I throw it away.  It\ntook the agents about 7 minutes to implement a working version with broken ci\nthat it later fixed.\n\nI've typed far more characters and put more thought into this post than the\ntool itself, that where we are these days I guess.\n\nSee the session that made `tgo` \u003ca href=\"/ses-3444b09b1ffexter3elfg5qqtg/\" class=\"wikilink\" data-title=\"Ses_3444b09b1ffexter3elfg5qqtg\" data-description=\"** ses***** 3/4/2026, 8:52:32 PM\" data-date=\"2026-03-04\"\u003eSes_3444b09b1ffexter3elfg5qqtg\u003c/a\u003e\n\n## Should you use it?\n\nYou can its there for anyone to use, go for it, there's an easy to download\nbinary.\n\nIt's all vibe coded slop that you could probably do a better job doing in a\ncave with scraps anyways.  Take inspiration and make one that works for you.\n",
      "summary": "I've been thinking about this for awhile now. For years now, fuzzy pickers and last session have been my go to. They have served me well. I can typically...",
      "date_published": "2026-03-04T20:47:37Z",
      "date_modified": "2026-03-04T20:47:37Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "cli"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/verify/",
      "url": "https://go.waylonwalker.com/verify/",
      "title": "/verify",
      "content_html": "\u003cp\u003eInspired by @mollywhite’s\n\u003ca href=\"https://mollywhite.net/verify/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/mollywhite.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/mollywhite.net.png\" class=\"has-avatar  has-avatar-before\"\u003everify\u003c/a\u003e \u003ca href=\"https://slashpages.net\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/slashpages.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/slashpages.net.png\" class=\"has-avatar  has-avatar-before\"\u003eslashpage\u003c/a\u003e.\nThis page serves as the system of record for my online identity. The best\nplaces to follow me are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMy Website: \u003ca href=\"https://waylonwalker.com\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/waylonwalker.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/waylonwalker.com.ico\" class=\"has-avatar  has-avatar-before\"\u003ewaylonwalker.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eYouTube: \u003ca href=\"https://youtube.com/waylonwalker\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/youtube.com.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/youtube.com.png\" class=\"has-avatar  has-avatar-before\"\u003eWaylon Walker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eYouTube Gaming: \u003ca href=\"https://www.youtube.com/channel/UCHuxc1HRsd3aRjvL6C817tQ\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.youtube.com.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.youtube.com.png\" class=\"has-avatar  has-avatar-before\"\u003eWaylon Walker Gaming\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTwitch: \u003ca href=\"https://www.twitch.tv/waylonwalker\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.twitch.tv.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.twitch.tv.png\" class=\"has-avatar  has-avatar-before\"\u003eWaylon Walker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTwitter: \u003ca href=\"https://twitter.com/_WaylonWalker\"\u003e@_WaylonWalker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLinkedIn: \u003ca href=\"https://www.linkedin.com/in/waylonwalker\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.linkedin.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.linkedin.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eWaylon Walker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub: \u003ca href=\"https://github.com/WaylonWalker\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/github.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/github.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eWaylonWalker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev.to: \u003ca href=\"https://dev.to/waylonwalker\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/dev.to.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/dev.to.ico\" class=\"has-avatar  has-avatar-before\"\u003eWaylon Walker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBluesky: \u003ca href=\"https://bsky.app/profile/waylonwalker.com\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/bsky.app.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/bsky.app.png\" class=\"has-avatar  has-avatar-before\"\u003e@waylonwalker.com\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "content_text": "\nInspired by @mollywhite's\n[verify](https://mollywhite.net/verify/) [slashpage](https://slashpages.net).\nThis page serves as the system of record for my online identity. The best\nplaces to follow me are:\n\n* My Website: [waylonwalker.com](https://waylonwalker.com)\n* YouTube: [Waylon Walker](https://youtube.com/waylonwalker)\n* YouTube Gaming: [Waylon Walker Gaming](https://www.youtube.com/channel/UCHuxc1HRsd3aRjvL6C817tQ)\n* Twitch: [Waylon Walker](https://www.twitch.tv/waylonwalker)\n* Twitter: [@_WaylonWalker](https://twitter.com/_WaylonWalker)\n* LinkedIn: [Waylon Walker](https://www.linkedin.com/in/waylonwalker)\n* GitHub: [WaylonWalker](https://github.com/WaylonWalker)\n* Dev.to: [Waylon Walker](https://dev.to/waylonwalker)\n* Bluesky: [@waylonwalker.com](https://bsky.app/profile/waylonwalker.com)\n",
      "summary": "Inspired by @mollywhite's verify slashpage. This page serves as the system of record for my online identity. The best places to follow me are:",
      "date_published": "2026-02-24T10:36:57Z",
      "date_modified": "2026-02-24T10:36:57Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/first-w-in-brotato/",
      "url": "https://go.waylonwalker.com/first-w-in-brotato/",
      "title": "First W In Brotato",
      "content_html": "\u003cp\u003eAfter having brotato and doing a few runs every once in a while I \u003cstrong\u003efinally\u003c/strong\u003e\nbeat the most basic balanced run in the game!  Wyatt wanted to play tonight and\nits such an easy game to jump in do a few runs and move on without getting\noverly invested.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/07c87b1d-60a0-4527-a045-d4203ca929db.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/07c87b1d-60a0-4527-a045-d4203ca929db.webp\" alt=\"I almost died\"/ data-glightbox=\"description: I almost died\"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWatching back I cannot believe how lucky I got, barely scraping by with 1hp at this point\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/f1711b94-dad1-4f97-b6ac-1de34db4a779.mp4\" class=\"glightbox-link\"\u003e\u003cvideo autoplay loop muted playsinline controls preload=\"metadata\" class=\"md-video\" poster=\"https://dropper.waylonwalker.com/file/f1711b94-dad1-4f97-b6ac-1de34db4a779.webp?h=675\u0026w=1200\"\u003e\u003csource src=\"https://dropper.waylonwalker.com/file/f1711b94-dad1-4f97-b6ac-1de34db4a779.mp4\" type=\"video/mp4\"\u003eYour browser does not support the video tag.\u003c/video\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ethe last 80s of the game\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/9b108e98-1f43-4b94-8824-467abcbf9e54.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/9b108e98-1f43-4b94-8824-467abcbf9e54.webp\" alt=\"Winning Loadout\"/ data-glightbox=\"description: Winning Loadout\"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n",
      "content_text": "\nAfter having brotato and doing a few runs every once in a while I **finally**\nbeat the most basic balanced run in the game!  Wyatt wanted to play tonight and\nits such an easy game to jump in do a few runs and move on without getting\noverly invested.\n\n\n![I almost died](https://dropper.waylonwalker.com/file/07c87b1d-60a0-4527-a045-d4203ca929db.webp)\n\n\u003e Watching back I cannot believe how lucky I got, barely scraping by with 1hp at this point\n\n\n![](https://dropper.waylonwalker.com/file/f1711b94-dad1-4f97-b6ac-1de34db4a779.mp4)\n\n\u003e the last 80s of the game\n\n\n![Winning Loadout](https://dropper.waylonwalker.com/file/9b108e98-1f43-4b94-8824-467abcbf9e54.webp)\n",
      "summary": "After having brotato and doing a few runs every once in a while I ** beat the most basic balanced run in the game! Wyatt wanted to play tonight and its such...",
      "date_published": "2026-02-11T20:48:08Z",
      "date_modified": "2026-02-11T20:48:08Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "gaming"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/top4/",
      "url": "https://go.waylonwalker.com/top4/",
      "title": "/top4",
      "content_html": "\u003cp\u003eDefinitive ranked lists of my top 3 favorites plus an honorable mention.\u003c/p\u003e\n\u003ch2 id=\"terminal-tools\"\u003eTerminal Tools \u003ca href=\"#terminal-tools\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://neovim.io/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/neovim.io.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/neovim.io.ico\" class=\"has-avatar  has-avatar-before\"\u003eneovim\u003c/a\u003e\u003c/strong\u003e - modal editing changed how I think about text\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://tmux.github.io/\"\u003etmux\u003c/a\u003e\u003c/strong\u003e - terminal sessions that survive disconnects and allow me to hop between projects at the speed of thought.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://k9scli.io/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/k9scli.io.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/k9scli.io.ico\" class=\"has-avatar  has-avatar-before\"\u003ek9s\u003c/a\u003e\u003c/strong\u003e - S tier tui interface that all tuis should strive for\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eHonorable mention:\u003c/strong\u003e \u003ca href=\"https://ipython.org/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/ipython.org.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/ipython.org.png\" class=\"has-avatar  has-avatar-before\"\u003eipython\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"python-tools\"\u003ePython Tools \u003ca href=\"#python-tools\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://pandas.pydata.org/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/pandas.pydata.org.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/pandas.pydata.org.ico\" class=\"has-avatar  has-avatar-before\"\u003epandas\u003c/a\u003e\u003c/strong\u003e - This is what got me out of corporate spreadsheets and back into code/software.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://kedro.org/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/kedro.org.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/kedro.org.ico\" class=\"has-avatar  has-avatar-before\"\u003ekedro\u003c/a\u003e\u003c/strong\u003e - data pipelines with opinions I agree with\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://fastapi.tiangolo.com/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/fastapi.tiangolo.com.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/fastapi.tiangolo.com.png\" class=\"has-avatar  has-avatar-before\"\u003efastapi\u003c/a\u003e\u003c/strong\u003e - my favorite python web framework\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eHonorable mention:\u003c/strong\u003e \u003ca href=\"https://typer.tiangolo.com/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/typer.tiangolo.com.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/typer.tiangolo.com.png\" class=\"has-avatar  has-avatar-before\"\u003etyper\u003c/a\u003e - fast cli apps\u003c/p\u003e\n\u003ch2 id=\"games-to-play-with-kids\"\u003eGames to Play with Kids \u003ca href=\"#games-to-play-with-kids\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003emultiplayer\u003c/em\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://minecraft.net/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/minecraft.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/minecraft.net.png\" class=\"has-avatar  has-avatar-before\"\u003eMinecraft\u003c/a\u003e\u003c/strong\u003e - infinite creativity, modding potential\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://store.steampowered.com/app/1211020/Wobbly_Life/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/store.steampowered.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/store.steampowered.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eWobbly Life\u003c/a\u003e\u003c/strong\u003e - Open World Co-op\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://www.stardewvalley.net/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.stardewvalley.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.stardewvalley.net.png\" class=\"has-avatar  has-avatar-before\"\u003eStardew Valley\u003c/a\u003e\u003c/strong\u003e - cozy, collaborative farming\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eHonorable mention:\u003c/strong\u003e \u003ca href=\"https://www.terraria.org/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.terraria.org.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.terraria.org.ico\" class=\"has-avatar  has-avatar-before\"\u003eTerraria\u003c/a\u003e - 2d world builder\u003c/p\u003e\n\u003ch2 id=\"games-to-play-alone\"\u003eGames to Play Alone \u003ca href=\"#games-to-play-alone\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003esingleplayer\u003c/em\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://www.hollowknight.com/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.hollowknight.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.hollowknight.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eHollow Knight\u003c/a\u003e/\u003ca href=\"https://hollowknightsilksong.com/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/hollowknightsilksong.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/hollowknightsilksong.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eHollow Knight Silksong\u003c/a\u003e\u003c/strong\u003e - S tier 2d platformer with adventure, mystery, lore, boss fights.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://store.steampowered.com/app/861650/Session_Skate_Sim/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/store.steampowered.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/store.steampowered.com.ico\" class=\"has-avatar  has-avatar-before\"\u003eSession Skate Sim\u003c/a\u003e\u003c/strong\u003e - The best skate sim\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://www.animalwell.net/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.animalwell.net.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.animalwell.net.ico\" class=\"has-avatar  has-avatar-before\"\u003eAnimal Well\u003c/a\u003e\u003c/strong\u003e - epic 2d platformer with the most incredible graphics at 320p ever created and the deepest puzzles Ive seen\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eHonorable mention:\u003c/strong\u003e \u003ca href=\"https://store.steampowered.com/app/400/Portal/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/store.steampowered.com.ico\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/store.steampowered.com.ico\" class=\"has-avatar  has-avatar-before\"\u003ePortal\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eInspired by \u003ca href=\"https://topfour.net\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/topfour.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/topfour.net.png\" class=\"has-avatar  has-avatar-before\"\u003etopfour.net\u003c/a\u003e and \u003ca href=\"https://slashpages.net\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/slashpages.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/slashpages.net.png\" class=\"has-avatar  has-avatar-before\"\u003eslashpages.net\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n",
      "content_text": "\nDefinitive ranked lists of my top 3 favorites plus an honorable mention.\n\n## Terminal Tools\n\n1. **[neovim](https://neovim.io/)** - modal editing changed how I think about text\n1. **[tmux](https://tmux.github.io/)** - terminal sessions that survive disconnects and allow me to hop between projects at the speed of thought.\n1. **[k9s](https://k9scli.io/)** - S tier tui interface that all tuis should strive for\n\n**Honorable mention:** [ipython](https://ipython.org/)\n\n## Python Tools\n\n1. **[pandas](https://pandas.pydata.org/)** - This is what got me out of corporate spreadsheets and back into code/software.\n2. **[kedro](https://kedro.org/)** - data pipelines with opinions I agree with\n3. **[fastapi](https://fastapi.tiangolo.com/)** - my favorite python web framework\n\n**Honorable mention:** [typer](https://typer.tiangolo.com/) - fast cli apps\n\n## Games to Play with Kids\n\n_multiplayer_\n\n1. **[Minecraft](https://minecraft.net/)** - infinite creativity, modding potential\n1. **[Wobbly Life](https://store.steampowered.com/app/1211020/Wobbly_Life/)** - Open World Co-op\n1. **[Stardew Valley](https://www.stardewvalley.net/)** - cozy, collaborative farming\n\n**Honorable mention:** [Terraria](https://www.terraria.org/) - 2d world builder\n\n## Games to Play Alone\n\n_singleplayer_\n\n1. **[Hollow Knight](https://www.hollowknight.com/)/[Hollow Knight Silksong](https://hollowknightsilksong.com/)** - S tier 2d platformer with adventure, mystery, lore, boss fights.\n1. **[Session Skate Sim](https://store.steampowered.com/app/861650/Session_Skate_Sim/)** - The best skate sim\n1. **[Animal Well](https://www.animalwell.net/)** - epic 2d platformer with the most incredible graphics at 320p ever created and the deepest puzzles Ive seen\n\n**Honorable mention:** [Portal](https://store.steampowered.com/app/400/Portal/)\n\n*Inspired by [topfour.net](https://topfour.net) and [slashpages.net](https://slashpages.net)*\n",
      "summary": "Definitive ranked lists of my top 3 favorites plus an honorable mention.",
      "date_published": "2026-02-11T14:00:00Z",
      "date_modified": "2026-02-11T14:00:00Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash",
        "favorites"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/yep/",
      "url": "https://go.waylonwalker.com/yep/",
      "title": "/yep",
      "content_html": "\u003cp\u003eInspired by @fyrio’s \u003ca href=\"https://fyr.io/yep\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/fyr.io.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/fyr.io.png\" class=\"has-avatar  has-avatar-before\"\u003eyep\u003c/a\u003e\n\u003ca href=\"https://slashpages.net/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/slashpages.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/slashpages.net.png\" class=\"has-avatar  has-avatar-before\"\u003eslashpage\u003c/a\u003e, a list of \u003cstrong\u003eS tier\u003c/strong\u003e things I enjoy, use,\nrecommend, want to know more about, or seek out in no particular order, updated as I think about it.\u003c/p\u003e\n\u003cdiv class=\"admonition seealso\"\u003e\n\u003cp class=\"admonition-title\"\u003eSeealso\u003c/p\u003e\n\u003cdiv class=\"embed-card\"\u003e\n\u003c/div\u003e\n  \u003ca href=\"/nope/\" class=\"embed-card-link\"\u003e\n    \u003cdiv class=\"embed-card-content\"\u003e\n      \u003cdiv class=\"embed-card-title\"\u003e/nope\u003c/div\u003e\n      \u003cdiv class=\"embed-card-description\"\u003eInspired by @baty\u0026#39;s nope slashpage, a list of ** things I don\u0026#39;t like, don\u0026#39;t care, avoid, overhyped, or won\u0026#39;t do in no particular order, updated as I think...\u003c/div\u003e\n      \u003cdiv class=\"embed-card-meta\"\u003eFeb 11, 2026\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003ch2 id=\"yep\"\u003e/yep \u003ca href=\"#yep\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ecoffee\u003c/li\u003e\n\u003cli\u003esmall web 1.0\u003c/li\u003e\n\u003cli\u003eRSS\u003c/li\u003e\n\u003cli\u003eminecraft\u003c/li\u003e\n\u003cli\u003eHollow Knight\u003c/li\u003e\n\u003cli\u003eSilksong\u003c/li\u003e\n\u003cli\u003eterminals\u003c/li\u003e\n\u003cli\u003epython\u003c/li\u003e\n\u003cli\u003evim keybindings\u003c/li\u003e\n\u003cli\u003eself-hosting\u003c/li\u003e\n\u003cli\u003eopen source\u003c/li\u003e\n\u003cli\u003erunning kubernetes in my basement\u003c/li\u003e\n\u003cli\u003emechanical keyboards\u003c/li\u003e\n\u003cli\u003emarkdown\u003c/li\u003e\n\u003cli\u003edata engineering\u003c/li\u003e\n\u003cli\u003eWoodworking\u003c/li\u003e\n\u003cli\u003eFingerboarding\u003c/li\u003e\n\u003cli\u003eDarts\u003c/li\u003e\n\u003cli\u003eSkateboarding\u003c/li\u003e\n\u003cli\u003eBiking\u003c/li\u003e\n\u003cli\u003eTrampoline\u003c/li\u003e\n\u003cli\u003e3d printing\u003c/li\u003e\n\u003c/ul\u003e\n",
      "content_text": "\nInspired by @fyrio's [yep](https://fyr.io/yep)\n[slashpage](https://slashpages.net/), a list of **S tier** things I enjoy, use,\nrecommend, want to know more about, or seek out in no particular order, updated as I think about it.\n\n!!! seealso\n\n    \u003cdiv class=\"embed-card\"\u003e\n  \u003ca href=\"/nope/\" class=\"embed-card-link\"\u003e\n    \u003cdiv class=\"embed-card-content\"\u003e\n      \u003cdiv class=\"embed-card-title\"\u003e/nope\u003c/div\u003e\n      \u003cdiv class=\"embed-card-description\"\u003eInspired by @baty\u0026#39;s nope slashpage, a list of ** things I don\u0026#39;t like, don\u0026#39;t care, avoid, overhyped, or won\u0026#39;t do in no particular order, updated as I think...\u003c/div\u003e\n      \u003cdiv class=\"embed-card-meta\"\u003eFeb 11, 2026\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\n## /yep\n\n* coffee\n* small web 1.0\n* RSS\n* minecraft\n* Hollow Knight\n* Silksong\n* terminals\n* python\n* vim keybindings\n* self-hosting\n* open source\n* running kubernetes in my basement\n* mechanical keyboards\n* markdown\n* data engineering\n* Woodworking\n* Fingerboarding\n* Darts\n* Skateboarding\n* Biking\n* Trampoline\n* 3d printing\n\n",
      "summary": "Inspired by @fyrio's yep slashpage, a list of ** things I enjoy, use, recommend, want to know more about, or seek out in no particular order, updated as I...",
      "date_published": "2026-02-11T12:00:00Z",
      "date_modified": "2026-02-11T12:00:00Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash",
        "opinions"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/nope/",
      "url": "https://go.waylonwalker.com/nope/",
      "title": "/nope",
      "content_html": "\u003cp\u003eInspired by @baty’s \u003ca href=\"https://baty.net/nope/\"\u003enope\u003c/a\u003e\n\u003ca href=\"https://slashpages.net/\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/slashpages.net.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/slashpages.net.png\" class=\"has-avatar  has-avatar-before\"\u003eslashpage\u003c/a\u003e, a list of \u003cstrong\u003eF tier\u003c/strong\u003e things I don’t like,\ndon’t care, avoid, overhyped, or won’t do in no particular order, updated as I\nthink about it.\u003c/p\u003e\n\u003cdiv class=\"admonition seealso\"\u003e\n\u003cp class=\"admonition-title\"\u003eSeealso\u003c/p\u003e\n\u003cdiv class=\"embed-card\"\u003e\n\u003c/div\u003e\n  \u003ca href=\"/yep/\" class=\"embed-card-link\"\u003e\n    \u003cdiv class=\"embed-card-content\"\u003e\n      \u003cdiv class=\"embed-card-title\"\u003e/yep\u003c/div\u003e\n      \u003cdiv class=\"embed-card-description\"\u003eInspired by @fyrio\u0026#39;s yep slashpage, a list of ** things I enjoy, use, recommend, want to know more about, or seek out in no particular order, updated as I...\u003c/div\u003e\n      \u003cdiv class=\"embed-card-meta\"\u003eFeb 11, 2026\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003ch2 id=\"nope\"\u003e/nope \u003ca href=\"#nope\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eroblox\u003c/li\u003e\n\u003cli\u003emobile games\u003c/li\u003e\n\u003cli\u003etelemetry\u003c/li\u003e\n\u003cli\u003eWindows\u003c/li\u003e\n\u003cli\u003eVSCode\u003c/li\u003e\n\u003cli\u003eallow notifications\u003c/li\u003e\n\u003cli\u003esubscription hell\u003c/li\u003e\n\u003cli\u003eads\u003c/li\u003e\n\u003cli\u003esocial media\u003c/li\u003e\n\u003cli\u003eclickbait\u003c/li\u003e\n\u003cli\u003eWYSIWYG editors particularly ones that use proprietary non text formats\u003c/li\u003e\n\u003cli\u003epolitics\u003c/li\u003e\n\u003cli\u003eshort form video\u003c/li\u003e\n\u003c/ul\u003e\n",
      "content_text": "\n\nInspired by @baty's [nope](https://baty.net/nope/)\n[slashpage](https://slashpages.net/), a list of **F tier** things I don't like,\ndon't care, avoid, overhyped, or won't do in no particular order, updated as I\nthink about it.\n\n\n!!! seealso\n\n    \u003cdiv class=\"embed-card\"\u003e\n  \u003ca href=\"/yep/\" class=\"embed-card-link\"\u003e\n    \u003cdiv class=\"embed-card-content\"\u003e\n      \u003cdiv class=\"embed-card-title\"\u003e/yep\u003c/div\u003e\n      \u003cdiv class=\"embed-card-description\"\u003eInspired by @fyrio\u0026#39;s yep slashpage, a list of ** things I enjoy, use, recommend, want to know more about, or seek out in no particular order, updated as I...\u003c/div\u003e\n      \u003cdiv class=\"embed-card-meta\"\u003eFeb 11, 2026\u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\n## /nope\n\n* roblox\n* mobile games\n* telemetry\n* Windows\n* VSCode\n* allow notifications\n* subscription hell\n* ads\n* social media\n* clickbait\n* WYSIWYG editors particularly ones that use proprietary non text formats\n* politics\n* short form video\n\n",
      "summary": "Inspired by @baty's nope slashpage, a list of ** things I don't like, don't care, avoid, overhyped, or won't do in no particular order, updated as I think...",
      "date_published": "2026-02-11T12:00:00Z",
      "date_modified": "2026-02-11T12:00:00Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash",
        "opinions"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/pm-not-babysitter/",
      "url": "https://go.waylonwalker.com/pm-not-babysitter/",
      "title": "Pm Not Babysitter",
      "content_html": "\u003cp\u003eStop babysitting your agents, treat them like a real team and they will reward\nyou.\u003c/p\u003e\n\u003cp\u003eBack in December I saw theo make a comment that code is now cheap, its the run\nrate of models, He quoted a study, not sure that he fully even believed it, but\nit claimed that the average developer after all meetings, training, emails,\nplanning and extra shit in their day averages out 10 well tested lines of code\nper day.  Opus 3.5 made him 10k loc (lines of code) that day.\u003c/p\u003e\n\u003cp\u003eWe have all agreed for decades that lines of code is not a proxy to\nproductivity or quality.  Often more code means more risk, more review, more\ninfrastructure.  This has become MUCH different.  Lines of code are still far\nfrom any sort of good metric.  That aside, your agents are not doing 10k lines\nwith you babysitting them, and in fact its very likely that the product quality\nis MUCH worse as you babysit them.\u003c/p\u003e\n\u003cp\u003eYou need a tool for planning and tracking, otherwise you are playing babysitter\nrather than Product Manager (PM).\u003c/p\u003e\n",
      "content_text": "Stop babysitting your agents, treat them like a real team and they will reward\nyou.\n\nBack in December I saw theo make a comment that code is now cheap, its the run\nrate of models, He quoted a study, not sure that he fully even believed it, but\nit claimed that the average developer after all meetings, training, emails,\nplanning and extra shit in their day averages out 10 well tested lines of code\nper day.  Opus 3.5 made him 10k loc (lines of code) that day.\n\nWe have all agreed for decades that lines of code is not a proxy to\nproductivity or quality.  Often more code means more risk, more review, more\ninfrastructure.  This has become MUCH different.  Lines of code are still far\nfrom any sort of good metric.  That aside, your agents are not doing 10k lines\nwith you babysitting them, and in fact its very likely that the product quality\nis MUCH worse as you babysit them.\n\nYou need a tool for planning and tracking, otherwise you are playing babysitter\nrather than Product Manager (PM).\n",
      "summary": "Stop babysitting your agents, treat them like a real team and they will reward you.",
      "date_published": "2026-02-06T14:04:25Z",
      "date_modified": "2026-02-06T14:04:25Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "ai",
        "llm",
        "agents"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/agent-management-is-exhausting/",
      "url": "https://go.waylonwalker.com/agent-management-is-exhausting/",
      "title": "Agent Management Is Exhausting",
      "content_html": "\u003cp\u003eThe state of development in early 2026 is all wrapped around learning how to\nmanage many agents running in parallel. Everyone’s trying to figure out the\nworkflow.\u003c/p\u003e\n\u003ch2 id=\"the-plan-is-everything\"\u003eThe Plan Is Everything \u003ca href=\"#the-plan-is-everything\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe secret I’ve discovered is a good, well-defined plan. This could be a\nmarkdown file or a GitHub issue. Agents are actually great at writing these for\nyou. They’ll include reproduction steps, outline changes needed, and structure\nthe work.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis\u003c/strong\u003e is your opportunity to step in. Read the plan. Look for hallucinations.\nSpot where it’s going off track. Edit the plan before the agent starts coding.\u003c/p\u003e\n\u003cp\u003eI had one today where it laid out reproduction steps beautifully, but I could\nadd context about network requests that completely changed the approach. This\nediting phase is what most people are missing right now. Skip it and you’ll\nwatch your agent solve the wrong problem with impressive efficiency.\u003c/p\u003e\n\u003ch2 id=\"the-pace-problem\"\u003eThe Pace Problem \u003ca href=\"#the-pace-problem\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eHere’s what nobody warned me about: managing these things is \u003cem\u003eexhausting\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003eDepending on the day, agents move so damn fast. I can barely research, find, and\nraise issues as fast as Claude can implement features and fixes. It’s like\ntrying to speedrun a Minecraft seed when you just figured out how to craft a\npickaxe.\u003c/p\u003e\n\u003ch2 id=\"a-different-kind-of-work\"\u003eA Different Kind of Work \u003ca href=\"#a-different-kind-of-work\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis stretches a different part of my brain than I’m used to using. I’m learning\nnew skills around:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIssue tracking and management at high velocity\u003c/li\u003e\n\u003cli\u003eKnowing which models handle which tasks best\u003c/li\u003e\n\u003cli\u003eSpotting when a session is about to go sideways from context bloat or bad\ncompaction\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI had a session yesterday where the context got poisoned with a wrong\nassumption. The agent spent 20 minutes building on that false premise before I\ncaught it. That’s 20 minutes of perfectly executed code solving the wrong\nproblem entirely.\u003c/p\u003e\n\u003ch2 id=\"worth-it-but-hard\"\u003eWorth It, But Hard \u003ca href=\"#worth-it-but-hard\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI’m not going to hype-bro you and say this is easy or that you’re wrong to be\nskeptical. If you have the opportunity to work with agents, it’s worth learning\nproper techniques.\u003c/p\u003e\n\u003cp\u003eIt’s not easy. It requires actual management skills, not just\nprompting skills. And yeah, I’m tired.\u003c/p\u003e\n",
      "content_text": "\nThe state of development in early 2026 is all wrapped around learning how to\nmanage many agents running in parallel. Everyone's trying to figure out the\nworkflow.\n\n## The Plan Is Everything\n\nThe secret I've discovered is a good, well-defined plan. This could be a\nmarkdown file or a GitHub issue. Agents are actually great at writing these for\nyou. They'll include reproduction steps, outline changes needed, and structure\nthe work.\n\n**This** is your opportunity to step in. Read the plan. Look for hallucinations.\nSpot where it's going off track. Edit the plan before the agent starts coding.\n\nI had one today where it laid out reproduction steps beautifully, but I could\nadd context about network requests that completely changed the approach. This\nediting phase is what most people are missing right now. Skip it and you'll\nwatch your agent solve the wrong problem with impressive efficiency.\n\n## The Pace Problem\n\nHere's what nobody warned me about: managing these things is *exhausting*.\n\nDepending on the day, agents move so damn fast. I can barely research, find, and\nraise issues as fast as Claude can implement features and fixes. It's like\ntrying to speedrun a Minecraft seed when you just figured out how to craft a\npickaxe.\n\n## A Different Kind of Work\n\nThis stretches a different part of my brain than I'm used to using. I'm learning\nnew skills around:\n\n- Issue tracking and management at high velocity\n- Knowing which models handle which tasks best\n- Spotting when a session is about to go sideways from context bloat or bad\n  compaction\n\nI had a session yesterday where the context got poisoned with a wrong\nassumption. The agent spent 20 minutes building on that false premise before I\ncaught it. That's 20 minutes of perfectly executed code solving the wrong\nproblem entirely.\n\n## Worth It, But Hard\n\nI'm not going to hype-bro you and say this is easy or that you're wrong to be\nskeptical. If you have the opportunity to work with agents, it's worth learning\nproper techniques.\n\nIt's not easy. It requires actual management skills, not just\nprompting skills. And yeah, I'm tired.\n",
      "summary": "The state of development in early 2026 is all wrapped around learning how to manage many agents running in parallel. Everyone's trying to figure out the...",
      "date_published": "2026-01-26T14:38:35Z",
      "date_modified": "2026-01-26T14:38:35Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "ai",
        "llm",
        "agents"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/stop-using-boomer-ai/",
      "url": "https://go.waylonwalker.com/stop-using-boomer-ai/",
      "title": "Stop Using Boomer Ai",
      "content_html": "\u003cp\u003eI was listening to these guys talk about migrating off of boomer ai the other\nday.  Introducing the term boomer ai to describe using chat, copy, paste\ninstead of agents.  Something magical happened to the tooling and models around\ndecember, they got really good.  The chatgpt $20 plan hooked into opencode is\ngood, the Free models in Opencode Zen (Big Pickle and Kimi K2.5 Free) are\nreally good.  Neither of these quite match up to the speed and quality of the\nlarger plans, but they are good.  good enough to throw away your boomer ai\ntechniques and start using agents.  Agents are the future, and they are here\nnow.  If you are still using chat, copy, paste, you are doing it wrong.  Stop\nusing boomer ai and start using agents.  You will be amazed at how much better\nyour results will be.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=3dmPKuTWbsI\" style=\"--favicon-url: url(\u0026#39;/assets/markata/link-avatars/www.youtube.com.png\u0026#39;);\" data-favicon=\"/assets/markata/link-avatars/www.youtube.com.png\" class=\"has-avatar  has-avatar-before\"\u003ehttps://www.youtube.com/watch?v=3dmPKuTWbsI\u003c/a\u003e\u003c/p\u003e\n",
      "content_text": "\nI was listening to these guys talk about migrating off of boomer ai the other\nday.  Introducing the term boomer ai to describe using chat, copy, paste\ninstead of agents.  Something magical happened to the tooling and models around\ndecember, they got really good.  The chatgpt $20 plan hooked into opencode is\ngood, the Free models in Opencode Zen (Big Pickle and Kimi K2.5 Free) are\nreally good.  Neither of these quite match up to the speed and quality of the\nlarger plans, but they are good.  good enough to throw away your boomer ai\ntechniques and start using agents.  Agents are the future, and they are here\nnow.  If you are still using chat, copy, paste, you are doing it wrong.  Stop\nusing boomer ai and start using agents.  You will be amazed at how much better\nyour results will be.\n\nhttps://www.youtube.com/watch?v=3dmPKuTWbsI\n",
      "summary": "I was listening to these guys talk about migrating off of boomer ai the other day. Introducing the term boomer ai to describe using chat, copy, paste instead...",
      "date_published": "2026-01-26T13:12:29Z",
      "date_modified": "2026-01-26T13:12:29Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "ai",
        "llm"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/mentions/",
      "url": "https://go.waylonwalker.com/mentions/",
      "title": "Mentions",
      "content_html": "\u003cp\u003eI can now just mention people from my \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\" data-preview=\"This post is a work in progress.\"\u003emarkata\u003c/a\u003e  \u003ca href=\"/about/\" class=\"wikilink\" data-title=\"Waylon Walker\" data-description=\"Husband, dad of two, and hobbyist builder of things on the internet.\" data-date=\"2021-11-20\" data-preview=\"Husband, dad of two, and hobbyist builder of things on the internet.\"\u003eWaylon Walker\u003c/a\u003e [[ blogroll ]] like @simonwillison.net or @swyx.io\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/now/\" class=\"wikilink\" data-title=\"/now\" data-description=\"This page is meant to be simple view into what is happening in my life right now. Inspired by @NowNowNow. and Derek Sivers.\" data-date=\"2025-01-12\" data-preview=\"This page is meant to be simple view into what is happening in my life right now. Inspired by @NowNowNow. and Derek Sivers.\"\u003e/now\u003c/a\u003e  [[ upto ]] [[ doing ]]\u003c/p\u003e\n\u003caside class=\"admonition aside aside-right\"\u003e\n\u003cp class=\"admonition-title\"\u003eAside\u003c/p\u003e\n\u003cp\u003eThis is an aside!\u003c/p\u003e\n\u003c/aside\u003e\n",
      "content_text": "\nI can now just mention people from my \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\"\u003emarkata\u003c/a\u003e  \u003ca href=\"/about/\" class=\"wikilink\" data-title=\"Waylon Walker\" data-description=\"Husband, dad of two, and hobbyist builder of things on the internet.\" data-date=\"2021-11-20\"\u003eWaylon Walker\u003c/a\u003e [[ blogroll ]] like @simonwillison.net or @swyx.io\n\n\u003ca href=\"/now/\" class=\"wikilink\" data-title=\"/now\" data-description=\"This page is meant to be simple view into what is happening in my life right now. Inspired by @NowNowNow. and Derek Sivers.\" data-date=\"2025-01-12\"\u003e/now\u003c/a\u003e  [[ upto ]] [[ doing ]]\n\n\n!!! aside \"Aside\"\n\n    This is an aside!\n",
      "summary": "I can now just mention people from my markata about blogroll like @simonwillison.net or @swyx.io",
      "date_published": "2026-01-24T19:11:15Z",
      "date_modified": "2026-01-24T19:11:15Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "markata"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/what-your-coding-tool-says-about-you/",
      "url": "https://go.waylonwalker.com/what-your-coding-tool-says-about-you/",
      "title": "What Your Coding Tool Says About You",
      "content_html": "\u003cul\u003e\n\u003cli\u003eopen code - libre free as in beer and speech\u003c/li\u003e\n\u003cli\u003eCopilot - corporate 9-5er\u003c/li\u003e\n\u003cli\u003eCursor - You sip on Philz coffee with your macbook\u003c/li\u003e\n\u003cli\u003eClaude Code - Agentic Workflows or Bust\u003c/li\u003e\n\u003cli\u003eJetbrains - I didn’t know you wrote java\u003c/li\u003e\n\u003cli\u003eVim/neovim - definite neck beard\u003c/li\u003e\n\u003cli\u003eVsCode - What else is there?\u003c/li\u003e\n\u003c/ul\u003e\n",
      "content_text": "* open code - libre free as in beer and speech\n* Copilot - corporate 9-5er\n* Cursor - You sip on Philz coffee with your macbook\n* Claude Code - Agentic Workflows or Bust\n* Jetbrains - I didn't know you wrote java\n* Vim/neovim - definite neck beard\n* VsCode - What else is there?",
      "summary": "Copilot - corporate 9-5er * Claude Code - Agentic Workflows or Bust * Vim/neovim - definite neck beard * VsCode - What else is there?",
      "date_published": "2026-01-21T16:25:41Z",
      "date_modified": "2026-01-21T16:25:41Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "dev",
        "ai",
        "llm"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/git/",
      "url": "https://go.waylonwalker.com/git/",
      "title": "📝 Git Notes",
      "content_html": "\u003ch2 id=\"see-old-revisions-of-one-file\"\u003eSee old revisions of one file \u003ca href=\"#see-old-revisions-of-one-file\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit log --oneline -- \u0026lt;file\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit log -n \u003cspan class=\"m\"\u003e2\u003c/span\u003e --oneline -- \u0026lt;file\u0026gt;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"checkout-an-old-revision-of-a-file\"\u003eCheckout an old revision of a file \u003ca href=\"#checkout-an-old-revision-of-a-file\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit checkout \u0026lt;commit\u0026gt; -- path/to/file\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"fuzzy-pick-a-file-and-check-out-an-old-revision\"\u003efuzzy pick a file and check out an old revision \u003ca href=\"#fuzzy-pick-a-file-and-check-out-an-old-revision\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#!/usr/bin/env bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e\u003c/span\u003e\u003cspan class=\"nb\"\u003eset\u003c/span\u003e -euo pipefail\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003e1\u003c/span\u003e\u003cspan class=\"k\"\u003e:-\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[[\u003c/span\u003e -z \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003egit ls-files \u003cspan class=\"p\"\u003e|\u003c/span\u003e fzf --prompt\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;select file \u0026gt; \u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e||\u003c/span\u003e \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[[\u003c/span\u003e -z \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e ! git rev-parse --is-inside-work-tree \u0026gt;/dev/null 2\u0026gt;\u003cspan class=\"p\"\u003e\u0026amp;\u003c/span\u003e1\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Not a git repository.\u0026#34;\u003c/span\u003e \u0026gt;\u003cspan class=\"p\"\u003e\u0026amp;\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e ! git ls-files --error-unmatch -- \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u0026gt;/dev/null 2\u0026gt;\u003cspan class=\"p\"\u003e\u0026amp;\u003c/span\u003e1\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;File is not tracked by git: \u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u0026gt;\u003cspan class=\"p\"\u003e\u0026amp;\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003echoice\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  git log --follow --pretty\u003cspan class=\"o\"\u003e=\u003c/span\u003eformat:\u003cspan class=\"s1\"\u003e\u0026#39;%h %ad %s\u0026#39;\u003c/span\u003e --date\u003cspan class=\"o\"\u003e=\u003c/span\u003eshort -- \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    fzf --ansi --no-sort --reverse \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"se\"\u003e\u003c/span\u003e        --preview-window\u003cspan class=\"o\"\u003e=\u003c/span\u003edown:70% \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"se\"\u003e\u003c/span\u003e        --prompt\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;checkout revision \u0026gt; \u0026#34;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"se\"\u003e\u003c/span\u003e        --preview \u003cspan class=\"s2\"\u003e\u0026#34;git show --color=always {1}^..{1} -- \u0026#39;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#39; 2\u0026gt;/dev/null || git show --color=always {1} -- \u0026#39;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#39;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"o\"\u003e[[\u003c/span\u003e -z \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003echoice\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e]]\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003ethen\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eexit\u003c/span\u003e \u003cspan class=\"m\"\u003e0\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efi\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003ecommit\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003eawk \u003cspan class=\"s1\"\u003e\u0026#39;{print $1}\u0026#39;\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u0026lt;\u0026lt;\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003echoice\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit checkout \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003ecommit\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e -- \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003efile\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e",
      "content_text": "\n## See old revisions of one file\n\n``` bash\ngit log --oneline -- \u003cfile\u003e\ngit log -n 2 --oneline -- \u003cfile\u003e\n```\n\n## Checkout an old revision of a file\n\n``` bash\ngit checkout \u003ccommit\u003e -- path/to/file\n```\n\n## fuzzy pick a file and check out an old revision\n\n``` bash\n#!/usr/bin/env bash\nset -euo pipefail\n\nfile=\"${1:-}\"\n\nif [[ -z \"${file}\" ]]; then\n  file=\"$(git ls-files | fzf --prompt=\"select file \u003e \")\" || exit 0\nfi\n\nif [[ -z \"${file}\" ]]; then\n  exit 0\nfi\n\nif ! git rev-parse --is-inside-work-tree \u003e/dev/null 2\u003e\u00261; then\n  echo \"Not a git repository.\" \u003e\u00262\n  exit 1\nfi\n\nif ! git ls-files --error-unmatch -- \"${file}\" \u003e/dev/null 2\u003e\u00261; then\n  echo \"File is not tracked by git: ${file}\" \u003e\u00262\n  exit 1\nfi\n\nchoice=\"$(\n  git log --follow --pretty=format:'%h %ad %s' --date=short -- \"${file}\" |\n    fzf --ansi --no-sort --reverse \\\n        --preview-window=down:70% \\\n        --prompt=\"checkout revision \u003e \" \\\n        --preview \"git show --color=always {1}^..{1} -- '${file}' 2\u003e/dev/null || git show --color=always {1} -- '${file}'\"\n)\"\n\nif [[ -z \"${choice}\" ]]; then\n  exit 0\nfi\n\ncommit=\"$(awk '{print $1}' \u003c\u003c\u003c\"${choice}\")\"\ngit checkout \"${commit}\" -- \"${file}\"\n```\n",
      "summary": "Waylon Walker's Git Notes",
      "date_published": "2026-01-15T09:05:21Z",
      "date_modified": "2026-01-15T09:05:21Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "git"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/dont-trust-users-tokens/",
      "url": "https://go.waylonwalker.com/dont-trust-users-tokens/",
      "title": "Dont Trust Users Tokens",
      "content_html": "\u003cp\u003eUser states: Upon picking up an old project and trying to install pip says\n“cannot find a version to satisfy”\u003c/p\u003e\n\u003cp\u003eI’ve got this, I’ve had this a hundred times before it’s a python version, a\nrogue package, maybe a yank from the pinned deps.  I pop open the project get\nus on the same commit.  I get a different error, make a few updates and we are\ngood, except the user gets the same error from the start.\u003c/p\u003e\n\u003cp\u003eThey never saw the error I did, and my fix did not magically resolve their\nerror.  We circle all the things it could be for hours.  I consistently wipe my\nvenv, and recreate with ease, send them the commands I ran to no avail.\nSomething is up and I can’t put my finger on it.  We’ve checked all the things\nand inched as close as we can to running everything exactly the same.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOs\u003c/li\u003e\n\u003cli\u003epython version\u003c/li\u003e\n\u003cli\u003eNetwork vpn\u003c/li\u003e\n\u003cli\u003euv version\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNothing makes any sense.  Finally I throw in the towel, is it the artifact\nserver.  I forge a token and give him one to borrow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBAM\u003c/strong\u003e it works, like magic.  The first sign of progress.  Then he mentions.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHuh that’s odd cause I just got mine this morning\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFailing to mention this any earlier that getting a new token for a service and\nit completely borked it!  I get it though, the error was very oddly presented\nand not easy to see why\u003c/p\u003e\n\u003cp\u003eThere it was all along, looking back in the logs I see his redacted token going\nto the wrong registry. One that does not include our packages, everything makes\nsense now. The reason it couldn’t find a version to satisfy was not a python\nversion, os version, package conflict, it was that it couldn’t find a fucking\nversion of the thing to begin with.\u003c/p\u003e\n\u003cp\u003eAll this to say, don’t trust users tokens, save your time and just get fresh\nones with them.\u003c/p\u003e\n\u003cp\u003e\u003credacted\u003e if you read this it’s all cool, like I said it’s all part of the\njob, no harsh feelings, at least we got a good story out of it right!\u003c/redacted\u003e\u003c/p\u003e\n",
      "content_text": "\nUser states: Upon picking up an old project and trying to install pip says\n\"cannot find a version to satisfy\"\n\nI've got this, I've had this a hundred times before it's a python version, a\nrogue package, maybe a yank from the pinned deps.  I pop open the project get\nus on the same commit.  I get a different error, make a few updates and we are\ngood, except the user gets the same error from the start.\n\nThey never saw the error I did, and my fix did not magically resolve their\nerror.  We circle all the things it could be for hours.  I consistently wipe my\nvenv, and recreate with ease, send them the commands I ran to no avail.\nSomething is up and I can't put my finger on it.  We've checked all the things\nand inched as close as we can to running everything exactly the same.\n\n* Os\n* python version\n* Network vpn\n* uv version\n\nNothing makes any sense.  Finally I throw in the towel, is it the artifact\nserver.  I forge a token and give him one to borrow.\n\n**BAM** it works, like magic.  The first sign of progress.  Then he mentions.\n\n\u003e Huh that's odd cause I just got mine this morning\n\nFailing to mention this any earlier that getting a new token for a service and\nit completely borked it!  I get it though, the error was very oddly presented\nand not easy to see why\n\nThere it was all along, looking back in the logs I see his redacted token going\nto the wrong registry. One that does not include our packages, everything makes\nsense now. The reason it couldn't find a version to satisfy was not a python\nversion, os version, package conflict, it was that it couldn't find a fucking\nversion of the thing to begin with.\n\nAll this to say, don't trust users tokens, save your time and just get fresh\nones with them.\n\n\u003cRedacted\u003e if you read this it's all cool, like I said it's all part of the\njob, no harsh feelings, at least we got a good story out of it right!\n",
      "summary": "User states: Upon picking up an old project and trying to install pip says \"cannot find a version to satisfy\"",
      "date_published": "2026-01-14T19:49:43Z",
      "date_modified": "2026-01-14T19:49:43Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "python"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/ai/",
      "url": "https://go.waylonwalker.com/ai/",
      "title": "Ai",
      "content_html": "\u003cp\u003eLast updated Jan 2026.\u003c/p\u003e\n\u003cdiv class=\"admonition seealso\"\u003e\n\u003cp class=\"admonition-title\"\u003eSeealso\u003c/p\u003e\n\u003cp\u003eLooking for all posts tagged with ai see [[ tag/ai ]]\u003c/p\u003e\n\u003c/div\u003e\n\u003cp\u003eAi is a tool I use a lot for code generation, research, image generation, and\ndebugging.  The words I publish on this site are my own unless explicitly\nstated from the top.  There’s only one or two posts in this category.\u003c/p\u003e\n\u003ch2 id=\"words-are-mine\"\u003eWords are mine \u003ca href=\"#words-are-mine\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThe core of what this blog is, is my thoughts ideas, sharing experiences.  The\nwords are the important part.  They are not perfect, I often do not spell or\ngrammer check, and what is here is from a flow state of writing and very often\nnot refactored.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNo AI unless explicitly stated\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"code-gen\"\u003ecode gen \u003ca href=\"#code-gen\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eUp till around 2023 all of the code to create the site was hand written by me.\nI have my own site generator that I maintain \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\" data-preview=\"This post is a work in progress.\"\u003emarkata\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFrom 2023 through 2025 snippets of code, sometimes entire plugins or modules\nwere created in chat apps like chatgpt.  There was no agentic coding, windsurf,\ncursor, claude code, opencode, none of it.  It was all integrated into the site\nby hand.\u003c/p\u003e\n\u003cp\u003eStarting around Dec 2025 I was finding freely available agents through tools\nlike opencode to be more and more useful, making less mistakes, doing better at\ngetting context and making changes.  The flow is relying on heavy planning and\nissue reporting.\u003c/p\u003e\n\u003ch2 id=\"image-gen\"\u003eimage gen \u003ca href=\"#image-gen\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI really got into stable diffusion as it came out.  I thought it was\nfascinating to generate different kinds of images of things that I would\notherwise have no ability to create, for a long time I was generating images\nfor every post.  I’ve moved on from doing it for every post, but still do it\noccasionally.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eI’m not an artist, sometimes I like to include art that I would not otherwise\nbe able to.  Most of the art you see on a post is AI generated, and may not\nbe called out.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"a-hreftechbrophobic-classwikilink-data-titletechbrophobic-data-descriptioni-just-heard-someone-drop-the-this-term-and-it-kinda-fits-a-lot-of-shit-on-the-internet-right-now-arguing-that-its-ok-to-question-ai-its-ok-to-like-it-its-data-date2025-11-09techbrophobica\"\u003e\u003ca href=\"/techbrophobic/\" class=\"wikilink\" data-title=\"Techbrophobic\" data-description=\"I just heard someone drop the this term and it kinda fits a lot of shit on the internet right now. Arguing that its OK to question AI, its OK to like it, its...\" data-date=\"2025-11-09\" data-preview=\"I just heard someone drop the this term and it kinda fits a lot of shit on the internet right now. Arguing that its OK to question AI, its OK to like it, its...\"\u003eTechbrophobic\u003c/a\u003e \u003ca href=\"#a-hreftechbrophobic-classwikilink-data-titletechbrophobic-data-descriptioni-just-heard-someone-drop-the-this-term-and-it-kinda-fits-a-lot-of-shit-on-the-internet-right-now-arguing-that-its-ok-to-question-ai-its-ok-to-like-it-its-data-date2025-11-09techbrophobica\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI feel this term strongly.  I find ai tooling useful, but the industry and hype bros bring a bad taste.\u003c/p\u003e\n\u003cp\u003eThe tools do not not do everything right, you still have to think, watch its output.  You have to put the work in to do proper software engineering.  Its not a magic pill, but it has the ability to implement ideas, plans, very quickly.\u003c/p\u003e\n\u003cp\u003eAlso the whole industry creeps me out.  The theft that happened to get here was wrong.  AI shovoled into everything as slop sucks.  The stock market pump is sus.\u003c/p\u003e\n",
      "content_text": "\nLast updated Jan 2026.\n\n!!! seealso\n\n    Looking for all posts tagged with ai see [[ tag/ai ]]\n\nAi is a tool I use a lot for code generation, research, image generation, and\ndebugging.  The words I publish on this site are my own unless explicitly\nstated from the top.  There's only one or two posts in this category.\n\n## Words are mine\n\nThe core of what this blog is, is my thoughts ideas, sharing experiences.  The\nwords are the important part.  They are not perfect, I often do not spell or\ngrammer check, and what is here is from a flow state of writing and very often\nnot refactored.\n\n\u003e No AI unless explicitly stated\n\n## code gen\n\nUp till around 2023 all of the code to create the site was hand written by me.\nI have my own site generator that I maintain \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\"\u003emarkata\u003c/a\u003e.\n\nFrom 2023 through 2025 snippets of code, sometimes entire plugins or modules\nwere created in chat apps like chatgpt.  There was no agentic coding, windsurf,\ncursor, claude code, opencode, none of it.  It was all integrated into the site\nby hand.\n\nStarting around Dec 2025 I was finding freely available agents through tools\nlike opencode to be more and more useful, making less mistakes, doing better at\ngetting context and making changes.  The flow is relying on heavy planning and\nissue reporting.\n\n## image gen\n\nI really got into stable diffusion as it came out.  I thought it was\nfascinating to generate different kinds of images of things that I would\notherwise have no ability to create, for a long time I was generating images\nfor every post.  I've moved on from doing it for every post, but still do it\noccasionally.\n\n\u003e I'm not an artist, sometimes I like to include art that I would not otherwise\n\u003e be able to.  Most of the art you see on a post is AI generated, and may not\n\u003e be called out.\n\n## \u003ca href=\"/techbrophobic/\" class=\"wikilink\" data-title=\"Techbrophobic\" data-description=\"I just heard someone drop the this term and it kinda fits a lot of shit on the internet right now. Arguing that its OK to question AI, its OK to like it, its...\" data-date=\"2025-11-09\"\u003eTechbrophobic\u003c/a\u003e\n\nI feel this term strongly.  I find ai tooling useful, but the industry and hype bros bring a bad taste.\n\nThe tools do not not do everything right, you still have to think, watch its output.  You have to put the work in to do proper software engineering.  Its not a magic pill, but it has the ability to implement ideas, plans, very quickly.\n\nAlso the whole industry creeps me out.  The theft that happened to get here was wrong.  AI shovoled into everything as slop sucks.  The stock market pump is sus.",
      "summary": "Last updated Jan 2026.",
      "date_published": "2026-01-11T13:48:43Z",
      "date_modified": "2026-01-11T13:48:43Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "slash",
        "ai",
        "llm"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/og-sample/",
      "url": "https://go.waylonwalker.com/og-sample/",
      "title": "Og-Sample",
      "content_html": "\u003cp\u003eI’m making an effort to make my \u003ca href=\"/og/\" class=\"glossary-term\" title=\"OG is short for open graph, a set of standard meta tags that are used for social media sharing. This is what tells other websites how to describe and display...\"\u003eog\u003c/a\u003e images better yet again, I’m going for that\nnext 10% better.  I really like my og images, but there are some title sizes\nthat overflow.  This page is a page to help debug.  How I make these og images\nis for another day.\u003c/p\u003e\n\u003ch2 id=\"script\"\u003eScript \u003ca href=\"#script\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI use my own static site generator \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\" data-preview=\"This post is a work in progress.\"\u003emarkata\u003c/a\u003e.  I can use it to generate a\nlist of posts wrapped in their og image.  I use itertools to do a groupby so\nthat I can do roughly every 5 characters larger, and see a wide variety of\nsizes.\u003c/p\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003emarkata\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eMarkata\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003eitertools\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003egroupby\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003emarkata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eMarkata\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003elens\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[{\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;length\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e),\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;title\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;slug\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eslug\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003em\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eposts\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003elens_sorted\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003esorted\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elens\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003elambda\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;length\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003egroups\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003ek\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003elist\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eg\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003ek\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eg\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003egroupby\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elens_sorted\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003elambda\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;length\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e//\u003c/span\u003e \u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e*\u003c/span\u003e \u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eposts\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eg\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003eg\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003egroups\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e()]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eogs\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e \u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;[![\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;title\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;slug\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4)](https://waylonwalker.com/\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;slug\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e/og/)\u0026#39;\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003eposts\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eogs\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"og-sample\"\u003eOG-Sample \u003ca href=\"#og-sample\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/sample/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/sample/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"sample\"/ data-glightbox=\"description: sample\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/kedro/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/kedro/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Kedro\"/ data-glightbox=\"description: Kedro\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/weeknote-0/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/weeknote-0/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Weeknote 0\"/ data-glightbox=\"description: Weeknote 0\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/upcoming-streams/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/upcoming-streams/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Upcoming Stream\"/ data-glightbox=\"description: Upcoming Stream\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/codeit-bro-interview/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/codeit-bro-interview/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Codeit Bro Interview\"/ data-glightbox=\"description: Codeit Bro Interview\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/doomlab7-homelab-argocd/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/doomlab7-homelab-argocd/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"⭐ Doomlab7 homelab-argocd\"/ data-glightbox=\"description: ⭐ Doomlab7 homelab-argocd\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/heathdbrown-python-code-tips/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/heathdbrown-python-code-tips/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"⭐ heathdbrown python_code_tips\"/ data-glightbox=\"description: ⭐ heathdbrown python_code_tips\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/making-good-documentation-in-python/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/making-good-documentation-in-python/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Making good documentation in python\"/ data-glightbox=\"description: Making good documentation in python\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/s3-datascience/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/s3-datascience/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"What DataScientists Should Know About S3\"/ data-glightbox=\"description: What DataScientists Should Know About S3\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"⭐ nvim-treesitter nvim-treesitter-textobjects\"/ data-glightbox=\"description: ⭐ nvim-treesitter nvim-treesitter-textobjects\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"⭐ dataengineerone kedro-streaming-twitter-pipeline\"/ data-glightbox=\"description: ⭐ dataengineerone kedro-streaming-twitter-pipeline\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/screenshot-to-blog/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/screenshot-to-blog/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"How I Quickly Capture Screenshots directly into My Blog\"/ data-glightbox=\"description: How I Quickly Capture Screenshots directly into My Blog\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/looking-for-a-heroku-replacement/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/looking-for-a-heroku-replacement/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Looking for a Heroku replacement, What I found was shocking!\"/ data-glightbox=\"description: Looking for a Heroku replacement, What I found was shocking!\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/thoughts-853/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/thoughts-853/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"💭 My Bed Doesn’t Work Because of AWS Outage? TheStandup - YouTube\"/ data-glightbox=\"description: 💭 My Bed Doesn’t Work Because of AWS Outage? TheStandup - YouTube\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - Getting Into It With A Clockwork Bishop\"/ data-glightbox=\"description: Dont Starve Together Session One - Getting Into It With A Clockwork Bishop\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"shots\"\u003eshots \u003ca href=\"#shots\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI also do \u003ca href=\"/tags/shots/\" class=\"wikilink\" data-title=\"Posts tagged: shots\" data-description=\"All posts with the tag \u0026#34;shots\u0026#34;\" data-preview=\"All posts with the tag \u0026#34;shots\u0026#34;\"\u003ePosts tagged: shots\u003c/a\u003e posts that change the og template quite a bit by adding\nthe image to the page.  I’ll do the same script, but add a filter to the\nimages.\u003c/p\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003emarkata\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eMarkata\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003eitertools\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003egroupby\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003emarkata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eMarkata\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003elens\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[{\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;length\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e),\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;title\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;slug\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eslug\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003em\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efilter\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;templateKey==\u0026#34;shots\u0026#34; and \u0026#34;family\u0026#34; not in tags\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003elens_sorted\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003esorted\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elens\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003elambda\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;length\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003egroups\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003ek\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003elist\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eg\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003ek\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eg\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003egroupby\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elens_sorted\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ekey\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"k\"\u003elambda\u003c/span\u003e \u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;length\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e//\u003c/span\u003e \u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e*\u003c/span\u003e \u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eposts\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eg\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003eg\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003egroups\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evalues\u003c/span\u003e\u003cspan class=\"p\"\u003e()]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eogs\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e \u003cspan class=\"sa\"\u003ef\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;[![\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e\u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;title\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;slug\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4)](https://waylonwalker.com/\u003c/span\u003e\u003cspan class=\"si\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;slug\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s1\"\u003e/og/)\u0026#39;\u003c/span\u003e \u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003epost\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"n\"\u003eposts\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"se\"\u003e\\n\\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eogs\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/funk-track-1/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/funk-track-1/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Funk Track 1\"/ data-glightbox=\"description: Funk Track 1\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/hornet-on-a-bench/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/hornet-on-a-bench/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Hornet On A Bench\"/ data-glightbox=\"description: Hornet On A Bench\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/apple-boxes-complete/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/apple-boxes-complete/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Apple Boxes Complete\"/ data-glightbox=\"description: Apple Boxes Complete\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Bambu Poop Flinger Jammed\"/ data-glightbox=\"description: Bambu Poop Flinger Jammed\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"First Fingerboard In The Press\"/ data-glightbox=\"description: First Fingerboard In The Press\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Wyatt Drew A Watertower In Aesprite\"/ data-glightbox=\"description: Wyatt Drew A Watertower In Aesprite\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Design For Bosch Colt Dust Collection V1\"/ data-glightbox=\"description: Design For Bosch Colt Dust Collection V1\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - Nooo Luuucy\"/ data-glightbox=\"description: Dont Starve Together Session One - Nooo Luuucy\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - Setting Up Base\"/ data-glightbox=\"description: Dont Starve Together Session One - Setting Up Base\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - Opening Up The Garden\"/ data-glightbox=\"description: Dont Starve Together Session One - Opening Up The Garden\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - First Encounter With A Tall Bird\"/ data-glightbox=\"description: Dont Starve Together Session One - First Encounter With A Tall Bird\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026amp;format=jpg\u0026amp;v=4\" alt=\"Dont Starve Together Session One - Getting Into It With A Clockwork Bishop\"/ data-glightbox=\"description: Dont Starve Together Session One - Getting Into It With A Clockwork Bishop\"\u003e\u003c/a\u003e\u003c/p\u003e\n",
      "content_text": "\nI'm making an effort to make my og images better yet again, I'm going for that\nnext 10% better.  I really like my og images, but there are some title sizes\nthat overflow.  This page is a page to help debug.  How I make these og images\nis for another day.\n\n## Script\n\nI use my own static site generator \u003ca href=\"/markata/\" class=\"wikilink\" data-title=\"markata\" data-description=\"This post is a work in progress.\" data-date=\"2024-05-30\"\u003emarkata\u003c/a\u003e.  I can use it to generate a\nlist of posts wrapped in their og image.  I use itertools to do a groupby so\nthat I can do roughly every 5 characters larger, and see a wide variety of\nsizes.\n\n``` python\nfrom markata import Markata\nfrom itertools import groupby\n\nmarkata = Markata()\nlens = [{'length': len(post.title), 'title': post.title, 'slug': post.slug} for post in m.posts]\nlens_sorted = sorted(lens, key=lambda x: x[\"length\"])\n\ngroups = {\n    k: list(g)\n    for k, g in groupby(lens_sorted, key=lambda x: (x[\"length\"] // 5) * 5)\n}\n\nposts = [g[0] for g in groups.values()]\nogs = [ f'[![{post[\"title\"]}](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/{ post[\"slug\"] }/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/{ post[\"slug\"] }/og/)' for post in posts]\nprint(\"\\n\\n\".join(ogs))\n\n```\n\n## OG-Sample\n\n[![sample](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/sample/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/sample/og/)\n\n[![Kedro](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/kedro/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/kedro/og/)\n\n[![Weeknote 0](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/weeknote-0/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/weeknote-0/og/)\n\n[![Upcoming Stream](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/upcoming-streams/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/upcoming-streams/og/)\n\n[![Codeit Bro Interview](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/codeit-bro-interview/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/codeit-bro-interview/og/)\n\n[![⭐ Doomlab7 homelab-argocd](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/doomlab7-homelab-argocd/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/doomlab7-homelab-argocd/og/)\n\n[![⭐ heathdbrown python_code_tips](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/heathdbrown-python-code-tips/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/heathdbrown-python-code-tips/og/)\n\n[![Making good documentation in python](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/making-good-documentation-in-python/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/making-good-documentation-in-python/og/)\n\n[![What DataScientists Should Know About S3](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/s3-datascience/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/s3-datascience/og/)\n\n[![⭐ nvim-treesitter nvim-treesitter-textobjects](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/nvim-treesitter-nvim-treesitter-textobjects/og/)\n\n[![⭐ dataengineerone kedro-streaming-twitter-pipeline](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/dataengineerone-kedro-streaming-twitter-pipeline/og/)\n\n[![How I Quickly Capture Screenshots directly into My Blog](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/screenshot-to-blog/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/screenshot-to-blog/og/)\n\n[![Looking for a Heroku replacement, What I found was shocking!](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/looking-for-a-heroku-replacement/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/looking-for-a-heroku-replacement/og/)\n\n[![💭 My Bed Doesn't Work Because of AWS Outage? TheStandup - YouTube](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/thoughts-853/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/thoughts-853/og/)\n\n[![Dont Starve Together Session One - Getting Into It With A Clockwork Bishop](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/)\n\n## shots\n\nI also do \u003ca href=\"/tags/shots/\" class=\"wikilink\" data-title=\"Posts tagged: shots\" data-description=\"All posts with the tag \u0026#34;shots\u0026#34;\"\u003ePosts tagged: shots\u003c/a\u003e posts that change the og template quite a bit by adding\nthe image to the page.  I'll do the same script, but add a filter to the\nimages.\n\n``` python\nfrom markata import Markata\nfrom itertools import groupby\n\nmarkata = Markata()\nlens = [{'length': len(post.title), 'title': post.title, 'slug': post.slug} for post in m.filter('templateKey==\"shots\" and \"family\" not in tags')]\nlens_sorted = sorted(lens, key=lambda x: x[\"length\"])\n\ngroups = {\n    k: list(g)\n    for k, g in groupby(lens_sorted, key=lambda x: (x[\"length\"] // 5) * 5)\n}\n\nposts = [g[0] for g in groups.values()]\nogs = [ f'[![{post[\"title\"]}](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/{ post[\"slug\"] }/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/{ post[\"slug\"] }/og/)' for post in posts]\nprint(\"\\n\\n\".join(ogs))\n```\n\n[![Funk Track 1](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/funk-track-1/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/funk-track-1/og/)\n\n[![Hornet On A Bench](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/hornet-on-a-bench/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/hornet-on-a-bench/og/)\n\n[![Apple Boxes Complete](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/apple-boxes-complete/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/apple-boxes-complete/og/)\n\n[![Bambu Poop Flinger Jammed](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/bambu-poop-flinger-jammed/og/)\n\n[![First Fingerboard In The Press](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/first-fingerboard-in-the-press/og/)\n\n[![Wyatt Drew A Watertower In Aesprite](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/wyatt-drew-a-watertower-in-aesprite/og/)\n\n[![Design For Bosch Colt Dust Collection V1](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/design-for-bosch-colt-dust-collection-v1/og/)\n\n[![Dont Starve Together Session One - Nooo Luuucy](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/dont-starve-together-session-one---nooo-luuucy/og/)\n\n[![Dont Starve Together Session One - Setting Up Base](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/dont-starve-together-session-one---setting-up-base/og/)\n\n[![Dont Starve Together Session One - Opening Up The Garden](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/dont-starve-together-session-one---opening-up-the-garden/og/)\n\n[![Dont Starve Together Session One - First Encounter With A Tall Bird](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/first-encounter-with-a-tall-bird/og/)\n\n[![Dont Starve Together Session One - Getting Into It With A Clockwork Bishop](https://shots.waylonwalker.com/shot/?url=https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\u0026format=jpg\u0026v=4)](https://waylonwalker.com/shots/dont-starve-together-session-one---getting-into-it-with-a-clockwork-bishop/og/)\n\n",
      "summary": "I'm making an effort to make my og images better yet again, I'm going for that next 10% better. I really like my og images, but there are some title sizes...",
      "date_published": "2026-01-09T08:19:29Z",
      "date_modified": "2026-01-09T08:19:29Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "python"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/2026-resolutions/",
      "url": "https://go.waylonwalker.com/2026-resolutions/",
      "title": "2026 Resolutions",
      "content_html": "\u003cp\u003eIt’s that time of year, Coming back to work out of a big break and thinking\nabout big changes.\u003c/p\u003e\n\u003ch2 id=\"daily-notes\"\u003eDaily Notes \u003ca href=\"#daily-notes\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eKeep up with daily notes, maybe not here, I tend to have more targeted notes\nhere with full blog posts, but for work daily notes is \u003ca href=\"/pog/\" class=\"glossary-term\" title=\"**: **lay **f the **ame - used to express shock or excitement after a noteworthy moment.\"\u003ePOG\u003c/a\u003e and needs to be\nleaned on.  LLM’s do really good at ingesting markdown and reminding me of\nthings that I need to do, or did, or need to follow up on.\u003c/p\u003e\n\u003ch2 id=\"reader\"\u003eReader \u003ca href=\"#reader\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eSocial media is changing, quickly becoming enshitified, I enjoy interacting\nwith some of the people I’ve met online, reading their opinions, and learning\nfrom their experiences.  I don’t need their hot takes, don’t care about their\npolitical takes.  I like boring posts that typically fade out of whats picked\nup on the algorithm.  I like a good 5-10 minute read or a long form podcast\ntalk.  I will be aggressively collecting more rss feeds to read and keep up\nwith.\u003c/p\u003e\n\u003ch2 id=\"neovim\"\u003e(Neo)Vim \u003ca href=\"#neovim\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI’ve had these bad habits in my config for years, from day one of using vim.\nIt’s time to kill these. \u003ccode\u003ejjgww\u003c/code\u003e.  I killed them this morning, we will see how\nlong I keep typing out \u003ccode\u003ejj\u003c/code\u003e all over my editor before I fix it mentally.\u003c/p\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e-- bad habits\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim.keymap.set\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;i\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;jj\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;esc\u0026gt;\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim.keymap.set\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;i\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;jk\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;esc\u0026gt;\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim.keymap.set\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;i\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;JJ\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;esc\u0026gt;\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim.keymap.set\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;i\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;jJ\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;esc\u0026gt;\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evim.keymap.set\u003cspan class=\"o\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;i\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;Jj\u0026#34;\u003c/span\u003e, \u003cspan class=\"s2\"\u003e\u0026#34;\u0026lt;esc\u0026gt;\u0026#34;\u003c/span\u003e\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cdiv class=\"admonition tip\"\u003e\n\u003cp class=\"admonition-title\"\u003eTip\u003c/p\u003e\n\u003cp\u003eI need to lean on \u003ccode\u003e\u0026lt;C-o\u0026gt;\u003c/code\u003e a little more to run single commands in normal\nmode from insert mode.  The pattern that is hitting me hard right now is\n\u003ccode\u003ejjgwwA\u003c/code\u003e insert mode, format, insert at end of line.\u003c/p\u003e\n\u003c/div\u003e\n\u003ch2 id=\"distrobox\"\u003eDistrobox \u003ca href=\"#distrobox\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI was a heavy user of distrobox as my primary dev environment on Bazzite and I\nneed to get back there. I have a lot of stuff installed on this current system.\nI’ve been sloppy.  I am not sure I was planning on staying on arch/hyprland\nlong, I did it to do it with my son, his got borked a month ago and he is back\nto bazzite, I think I’ll be back there and want to be ready to float freely\nbetween distros.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eclean dotfiles\u003c/li\u003e\n\u003cli\u003ework from a distrobox image that I make\u003c/li\u003e\n\u003cli\u003ekeep working projects backed up\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"vibe-coding\"\u003e\u003ca href=\"/vibe-coding/\" class=\"glossary-term\" title=\"A coding style popularized in 2025. It is the act of using LLMs to generate code for an application, but the author never looks at the output. The author...\"\u003eVibe Coding\u003c/a\u003e \u003ca href=\"#vibe-coding\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eAgents are the future, people that I really trust are on both sides of the\nargument.  Some saying they stopped coding months ago and claude does\neverything for them.  Some in between, some are completely against.\u003c/p\u003e\n\u003cp\u003eIt feels like the tooling has really taken off over the past few months, the\nmodels are getting better, but not at the same rate they were.  The tools are\nreally making this possible.\u003c/p\u003e\n\u003cp\u003eMy experience is quite mixed, I’m often impressed with what it does, and\nappalled at how bad it does other things.  I just want it to do what I mean\nwith the fewest words possible.  I’ve been working on deeper plans more and\nmore, still with mixed results.  With larger plans the models seem to do more\nwork, but still not getting that great experience every time.\u003c/p\u003e\n\u003cp\u003eI really need to get my workspaces workflow down, have models working in a\nseparate workspace, and be willing to throw away shit code quickly and try\nagain from another angle.\u003c/p\u003e\n\u003cp\u003eThe future is a deep understanding on what needs to be done, how do to it, and\nnot the syntax.  The tools are getting better.  You need to know less and less\nabout them, less and less about models as the auto routers get better.  The\ncore skills of architecture, design, and implementation are more important than\never.\u003c/p\u003e\n\u003cp\u003eLast year I was able to vibe out some POC work, but still not letting the\nagents touch my production code.  It wasn’t there for me, I probably did not\nhave access to the really good stuff either.  Now I think what I have access to\nis catching up to Claude.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003esandbox them\u003c/li\u003e\n\u003cli\u003equick to POC\u003c/li\u003e\n\u003cli\u003equick to move on from broken attempts\u003c/li\u003e\n\u003cli\u003elearn to lead\u003c/li\u003e\n\u003cli\u003elearn to let go of syntax opinions\u003c/li\u003e\n\u003cli\u003elearn what makes good products/tools/apis hold the vibes to this.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere’s something here, very respectable people are betting on this, but its\nnot working for me, I don’t think I have the right tools.  I already have it a\nday, and got a few hundred LOC out while theo is claiming opus can do 10k.\u003c/p\u003e\n\u003ch2 id=\"not-everything-will-be-a-side-hustle\"\u003eNot Everything will be a side hustle \u003ca href=\"#not-everything-will-be-a-side-hustle\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI’ve tried to start too many side hustles, none of them work out.  Thinking of\nthem as a side hustle steals the joy of the hobby.  I have too much going on\noutside of work for adding things like this not to add stress to already\nstressful situations, I need to reduce stress and find the joy and happiness in\nside projects and not turn everything into something more.\u003c/p\u003e\n\u003ch2 id=\"keebs\"\u003eKeebs \u003ca href=\"#keebs\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis one is fresh on the mind only because I just built out a new keyboard for\nwork.  I want to have a good robust build at home, work, and potentially have a\ngood backup.  I have a good design that is very cheap and fairly easy to build,\nbut is quite time consuming.  I am going to put some work in early this year to\nget a couple of clones.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/9cf75771-e3a5-428f-a3a9-0e32fda0e037.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/9cf75771-e3a5-428f-a3a9-0e32fda0e037.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003ch2 id=\"more-offline\"\u003eMore Offline \u003ca href=\"#more-offline\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eLooking back at 2025, I actually did fairly well of doing a bit more offline.\nIt’s been a hard transition out of pandemic times for our family, we had a lot\nof extra health precautions that lasted longer than most other people.\u003c/p\u003e\n\u003cp\u003eThis year I should do more of this.  More bike rides, more skate, more basement\nhangouts, more art.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/46091653-f759-4a53-b3b7-e9e6226a5a12.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/46091653-f759-4a53-b3b7-e9e6226a5a12.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003eNew dart board in the basement\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eMore creativity.  I designed and built fingerboard obstacles to work like legos with 3/4\u0026#34; plywood last November.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/fb569b3a-d91d-4ad4-92f8-12e83c39fbda.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/fb569b3a-d91d-4ad4-92f8-12e83c39fbda.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ebuilding a fingerboard park in the basement\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eMore building\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/f34e94d4-c6d4-4a89-96f7-14f67c954307.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/f34e94d4-c6d4-4a89-96f7-14f67c954307.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/48e6a2ef-a4db-462e-acda-16b270e7053d.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/48e6a2ef-a4db-462e-acda-16b270e7053d.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ebuilding set for Jolly Holiday with Rhiannon\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/44be3230-29cc-4a5b-a495-4dd7c4e11c2b.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/44be3230-29cc-4a5b-a495-4dd7c4e11c2b.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ebuilding boxes for Jolly Holiday with Wyatt\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eMore bike rides, fewer nice days wasted, they are relaxing and get good energy out.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/f9199d9b-74dc-4650-b1cf-2ac1ffd50e02.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/f9199d9b-74dc-4650-b1cf-2ac1ffd50e02.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003eBike Rides\u003c/p\u003e\n\u003c/blockquote\u003e\n",
      "content_text": "\nIt's that time of year, Coming back to work out of a big break and thinking\nabout big changes.\n\n## Daily Notes\n\nKeep up with daily notes, maybe not here, I tend to have more targeted notes\nhere with full blog posts, but for work daily notes is POG and needs to be\nleaned on.  LLM's do really good at ingesting markdown and reminding me of\nthings that I need to do, or did, or need to follow up on.\n\n## Reader\n\nSocial media is changing, quickly becoming enshitified, I enjoy interacting\nwith some of the people I've met online, reading their opinions, and learning\nfrom their experiences.  I don't need their hot takes, don't care about their\npolitical takes.  I like boring posts that typically fade out of whats picked\nup on the algorithm.  I like a good 5-10 minute read or a long form podcast\ntalk.  I will be aggressively collecting more rss feeds to read and keep up\nwith.\n\n## (Neo)Vim\n\nI've had these bad habits in my config for years, from day one of using vim.\nIt's time to kill these. `jjgww`.  I killed them this morning, we will see how\nlong I keep typing out `jj` all over my editor before I fix it mentally.\n\n``` bash\n-- bad habits\nvim.keymap.set(\"i\", \"jj\", \"\u003cesc\u003e\")\nvim.keymap.set(\"i\", \"jk\", \"\u003cesc\u003e\")\nvim.keymap.set(\"i\", \"JJ\", \"\u003cesc\u003e\")\nvim.keymap.set(\"i\", \"jJ\", \"\u003cesc\u003e\")\nvim.keymap.set(\"i\", \"Jj\", \"\u003cesc\u003e\")\n```\n\n!!! Tip\n\n    I need to lean on `\u003cC-o\u003e` a little more to run single commands in normal\n    mode from insert mode.  The pattern that is hitting me hard right now is\n    `jjgwwA` insert mode, format, insert at end of line.\n\n## Distrobox\n\nI was a heavy user of distrobox as my primary dev environment on Bazzite and I\nneed to get back there. I have a lot of stuff installed on this current system.\nI've been sloppy.  I am not sure I was planning on staying on arch/hyprland\nlong, I did it to do it with my son, his got borked a month ago and he is back\nto bazzite, I think I'll be back there and want to be ready to float freely\nbetween distros.\n\n* clean dotfiles\n* work from a distrobox image that I make\n* keep working projects backed up\n\n## Vibe Coding\n\nAgents are the future, people that I really trust are on both sides of the\nargument.  Some saying they stopped coding months ago and claude does\neverything for them.  Some in between, some are completely against.\n\nIt feels like the tooling has really taken off over the past few months, the\nmodels are getting better, but not at the same rate they were.  The tools are\nreally making this possible.\n\nMy experience is quite mixed, I'm often impressed with what it does, and\nappalled at how bad it does other things.  I just want it to do what I mean\nwith the fewest words possible.  I've been working on deeper plans more and\nmore, still with mixed results.  With larger plans the models seem to do more\nwork, but still not getting that great experience every time.\n\nI really need to get my workspaces workflow down, have models working in a\nseparate workspace, and be willing to throw away shit code quickly and try\nagain from another angle.\n\nThe future is a deep understanding on what needs to be done, how do to it, and\nnot the syntax.  The tools are getting better.  You need to know less and less\nabout them, less and less about models as the auto routers get better.  The\ncore skills of architecture, design, and implementation are more important than\never.\n\nLast year I was able to vibe out some POC work, but still not letting the\nagents touch my production code.  It wasn't there for me, I probably did not\nhave access to the really good stuff either.  Now I think what I have access to\nis catching up to Claude.\n\n* sandbox them\n* quick to POC\n* quick to move on from broken attempts\n* learn to lead\n* learn to let go of syntax opinions\n* learn what makes good products/tools/apis hold the vibes to this.\n\nThere's something here, very respectable people are betting on this, but its\nnot working for me, I don't think I have the right tools.  I already have it a\nday, and got a few hundred LOC out while theo is claiming opus can do 10k.\n\n## Not Everything will be a side hustle\n\nI've tried to start too many side hustles, none of them work out.  Thinking of\nthem as a side hustle steals the joy of the hobby.  I have too much going on\noutside of work for adding things like this not to add stress to already\nstressful situations, I need to reduce stress and find the joy and happiness in\nside projects and not turn everything into something more.\n\n## Keebs\n\nThis one is fresh on the mind only because I just built out a new keyboard for\nwork.  I want to have a good robust build at home, work, and potentially have a\ngood backup.  I have a good design that is very cheap and fairly easy to build,\nbut is quite time consuming.  I am going to put some work in early this year to\nget a couple of clones.\n\n![](https://dropper.waylonwalker.com/file/9cf75771-e3a5-428f-a3a9-0e32fda0e037.webp)\n\n## More Offline\n\nLooking back at 2025, I actually did fairly well of doing a bit more offline.\nIt's been a hard transition out of pandemic times for our family, we had a lot\nof extra health precautions that lasted longer than most other people.\n\nThis year I should do more of this.  More bike rides, more skate, more basement\nhangouts, more art.\n\n![](https://dropper.waylonwalker.com/file/46091653-f759-4a53-b3b7-e9e6226a5a12.webp)\n\n\u003e New dart board in the basement\n\nMore creativity.  I designed and built fingerboard obstacles to work like legos with 3/4\" plywood last November.\n\n![](https://dropper.waylonwalker.com/file/fb569b3a-d91d-4ad4-92f8-12e83c39fbda.webp)\n\n\u003e building a fingerboard park in the basement\n\n\nMore building\n\n![](https://dropper.waylonwalker.com/file/f34e94d4-c6d4-4a89-96f7-14f67c954307.webp)\n![](https://dropper.waylonwalker.com/file/48e6a2ef-a4db-462e-acda-16b270e7053d.webp)\n\n\u003e building set for Jolly Holiday with Rhiannon\n\n![](https://dropper.waylonwalker.com/file/44be3230-29cc-4a5b-a495-4dd7c4e11c2b.webp)\n\n\u003e building boxes for Jolly Holiday with Wyatt\n\nMore bike rides, fewer nice days wasted, they are relaxing and get good energy out.\n\n![](https://dropper.waylonwalker.com/file/f9199d9b-74dc-4650-b1cf-2ac1ffd50e02.webp)\n\n\u003e Bike Rides\n\n\n",
      "summary": "It's that time of year, Coming back to work out of a big break and thinking about big changes.",
      "date_published": "2026-01-08T10:48:12Z",
      "date_modified": "2026-01-08T10:48:12Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "catalytic",
        "personal"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/developer-vs-artist-ai/",
      "url": "https://go.waylonwalker.com/developer-vs-artist-ai/",
      "title": "Developer Vs Artist Ai",
      "content_html": "\u003cp\u003eThe other day I was watching [thePrimeTimeagen]https://youtube.com/@theprimetimeagen?si=jVcp23FbfQSFZfDc) and he talked about devs loving ai and artists revolting.  There was some discussion in chat about art being more creative and prime quickly squashed that.  He ended with being oddly confused why developers are jumping on board and artists are not.  Both had their art stolen to build out the models.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/e0f9e8bf-bc51-415c-ad25-6f2cd473e6d0.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/e0f9e8bf-bc51-415c-ad25-6f2cd473e6d0.webp\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cdiv class=\"admonition note\"\u003e\n\u003cp class=\"admonition-title\"\u003emy own vibes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eI\u0026#39;m writing this from my phone without further research, all vibes, personal experience, and thoughts,  no research.\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/div\u003e\n\u003ch2 id=\"good-tools\"\u003eGood Tools \u003ca href=\"#good-tools\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFirst I want to argue that artists have had some form of ai in their tools for years.  Idk, probably not ai as we know it today but functionally similar.  Content aware fill.  This is a Photoshop feature from Adobe, as far as I know it’s one of the special things you get from Adobe that you don’t get from the FOSS alternatives easily.\u003c/p\u003e\n\u003cp\u003eThis is an example of a good took that is well loves by the community and widely used, if you put ai in it to make it better no one would care, if it made things look oddly ai it would get rejected.\u003c/p\u003e\n\u003ch2 id=\"taking-the-brush\"\u003etaking the brush \u003ca href=\"#taking-the-brush\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eHere is the critical difference that I see between the communities.  Software development has made great tools for itself in a wide spectrum, from hands off vibe code no code to better auto complete.  There’s something for everyone and every situation.  This feels very obvious the minute you try to look at how to do it.  In fact we started with better autocomplete.  This autocomplete is really good at recognizing patterns in your document and continuing your current thought for you.\u003c/p\u003e\n\u003cp\u003eArt is a complete 180.  It started with prompt engineering.  Hands off let the tool do everything, you do nothing but prompt it.  If it’s wrong reprompt.  Diffusion is the worst because it generates completely new results every time nothing like what you had before.  The newer stuff from openai and nano banana are not diffusion and do much better text and edits, but it’s not the same.\u003c/p\u003e\n\u003ch2 id=\"hands-off-is-frustrating\"\u003ehands off is frustrating \u003ca href=\"#hands-off-is-frustrating\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eAnyone who has tried to get something specific from ai art or code gen without touching it themselves knows the frustration that you ask it to do one thing that takes 3 prompts to get it to understand what your asking and by the time it’s right it’s wrecked something else.  It’s not fun, it’s soul sucking and ripe for meme content.\u003c/p\u003e\n\u003ch2 id=\"freedom-of-expression\"\u003efreedom of expression \u003ca href=\"#freedom-of-expression\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eSoftware development has made a really good effort to make really great tools for itself.  We have a wide spectrum that allow you to prototype fast, get something complex working in hours not month, but riddles with issues.  Allowing us to get better scoped work from PMs who have put their hands on a semi working prototype.  We have the ability to slice out parts and refactor with ease, and when things really matter we can right the code ourselves with ai there to take away the boilerplate repetition that finds it’s way into some modules.\u003c/p\u003e\n\u003cp\u003eI’m sure there is better ai art tools out there that allow artists to keep their brush in hand and enhance their skills, but I have not seen them.  Ive seen in painting, but its not discoverable as it’s first experience, is hard to setup, might cost a lot, and doesn’t quite fit in to where you work with it.  It’s still all or nothing prompt engineering, just a bit more focused in.\u003c/p\u003e\n\u003ch2 id=\"ai-video\"\u003eai video \u003ca href=\"#ai-video\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI haven’t even thought much about things like sora throughout this.  I can say for sure I’m enjoying editors for small time creators having the ability to throw in short clips to enhance the story.  Especially for story telling style content that is impossible to get real video of, and would cost a fortune to build set, costume, and cast.  It makes no sense for this scale.  The McDonald’s and coke videos im on the fence on.  They seem \u003cem\u003efine\u003c/em\u003e, they don’t feel inspiring, great, or terrible to me.\u003c/p\u003e\n\u003ch2 id=\"fin\"\u003efin \u003ca href=\"#fin\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eDevelopers naturally started with great tools here, and artist were given tools for developers to do art with, nothing tools for them.\u003c/p\u003e\n\u003cp\u003ePlease tell me I’m wrong, artists have great tools you just haven’t seen them.  I’d love to be wrong.\u003c/p\u003e\n",
      "content_text": "The other day I was watching [thePrimeTimeagen]https://youtube.com/@theprimetimeagen?si=jVcp23FbfQSFZfDc) and he talked about devs loving ai and artists revolting.  There was some discussion in chat about art being more creative and prime quickly squashed that.  He ended with being oddly confused why developers are jumping on board and artists are not.  Both had their art stolen to build out the models.\n\n![](https://dropper.waylonwalker.com/file/e0f9e8bf-bc51-415c-ad25-6f2cd473e6d0.webp)\n\n!!! Note my own vibes\n    I'm writing this from my phone without further research, all vibes, personal experience, and thoughts,  no research.\n\n## Good Tools\n\nFirst I want to argue that artists have had some form of ai in their tools for years.  Idk, probably not ai as we know it today but functionally similar.  Content aware fill.  This is a Photoshop feature from Adobe, as far as I know it's one of the special things you get from Adobe that you don't get from the FOSS alternatives easily.\n\nThis is an example of a good took that is well loves by the community and widely used, if you put ai in it to make it better no one would care, if it made things look oddly ai it would get rejected.\n\n## taking the brush\n\nHere is the critical difference that I see between the communities.  Software development has made great tools for itself in a wide spectrum, from hands off vibe code no code to better auto complete.  There's something for everyone and every situation.  This feels very obvious the minute you try to look at how to do it.  In fact we started with better autocomplete.  This autocomplete is really good at recognizing patterns in your document and continuing your current thought for you.\n\nArt is a complete 180.  It started with prompt engineering.  Hands off let the tool do everything, you do nothing but prompt it.  If it's wrong reprompt.  Diffusion is the worst because it generates completely new results every time nothing like what you had before.  The newer stuff from openai and nano banana are not diffusion and do much better text and edits, but it's not the same.\n\n## hands off is frustrating \n\nAnyone who has tried to get something specific from ai art or code gen without touching it themselves knows the frustration that you ask it to do one thing that takes 3 prompts to get it to understand what your asking and by the time it's right it's wrecked something else.  It's not fun, it's soul sucking and ripe for meme content.\n\n## freedom of expression\n\nSoftware development has made a really good effort to make really great tools for itself.  We have a wide spectrum that allow you to prototype fast, get something complex working in hours not month, but riddles with issues.  Allowing us to get better scoped work from PMs who have put their hands on a semi working prototype.  We have the ability to slice out parts and refactor with ease, and when things really matter we can right the code ourselves with ai there to take away the boilerplate repetition that finds it's way into some modules.\n\nI'm sure there is better ai art tools out there that allow artists to keep their brush in hand and enhance their skills, but I have not seen them.  Ive seen in painting, but its not discoverable as it's first experience, is hard to setup, might cost a lot, and doesn't quite fit in to where you work with it.  It's still all or nothing prompt engineering, just a bit more focused in.\n\n## ai video\n\nI haven't even thought much about things like sora throughout this.  I can say for sure I'm enjoying editors for small time creators having the ability to throw in short clips to enhance the story.  Especially for story telling style content that is impossible to get real video of, and would cost a fortune to build set, costume, and cast.  It makes no sense for this scale.  The McDonald's and coke videos im on the fence on.  They seem _fine_, they don't feel inspiring, great, or terrible to me.\n\n## fin\n\nDevelopers naturally started with great tools here, and artist were given tools for developers to do art with, nothing tools for them.\n\nPlease tell me I'm wrong, artists have great tools you just haven't seen them.  I'd love to be wrong.\n",
      "summary": "The other day I was watching [thePrimeTimeagen]https://youtube.com/@theprimetimeagen?si=jVcp23FbfQSFZfDc) and he talked about devs loving ai and artists...",
      "date_published": "2025-12-19T09:44:00Z",
      "date_modified": "2025-12-19T09:44:00Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "ai"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/the-right-reasons-to-run-kubernetes-in-your-homelab/",
      "url": "https://go.waylonwalker.com/the-right-reasons-to-run-kubernetes-in-your-homelab/",
      "title": "The Right Reasons To Run Kubernetes In Your Homelab",
      "content_html": "\u003cp\u003eRunning kubernetes in your \u003ca href=\"/homelab/\" class=\"glossary-term\" title=\"A place to self host applications. For me this is primarily self built web applications, and applications for sharing files with my family. Techno Tim has a...\"\u003ehomelab\u003c/a\u003e is a fantastic way to learn, explore, express\nyourself, and run services that you use.\u003c/p\u003e\n\u003ch2 id=\"the-right-reasons-to-run-kubernetes-in-your-homelab\"\u003eThe Right Reasons To Run Kubernetes In Your Homelab \u003ca href=\"#the-right-reasons-to-run-kubernetes-in-your-homelab\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThere are not many\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYou want to learn kubernetes\u003c/li\u003e\n\u003cli\u003eYou like kubernetes\u003c/li\u003e\n\u003cli\u003eYou want to \u003cstrong\u003elearn\u003c/strong\u003e to scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThere are also \u003ca href=\"/the-wrong-reasons-to-run-kubernetes-in-your-homelab/\" class=\"wikilink\" data-title=\"The Wrong Reasons To Run Kubernetes In Your Homelab\" data-description=\"Running kubernetes in your homelab is complex, time consuming, there are almost no docs to help you (homelab focused docs for things you want to install),...\" data-date=\"2025-12-06\" data-preview=\"Running kubernetes in your homelab is complex, time consuming, there are almost no docs to help you (homelab focused docs for things you want to install),...\"\u003eThe Wrong Reasons To Run Kubernetes In Your Homelab\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"you-want-to-learn-kubernetes\"\u003eYou want to learn kubernetes \u003ca href=\"#you-want-to-learn-kubernetes\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eHomelabbing is a such a great way to learn new skills, deploy real apps that\nyou use.  Create new custom apps for your specific use cases that no one else\nhas.  You should absolutely run kubernetes in your homelab if you want to learn it.\u003c/p\u003e\n\u003cp\u003eI would recommend to start locally, pull up kind, minikube, or k3d and start\nfrom your local machine before putting it on a server.\u003c/p\u003e\n\u003cp\u003eWhen you decide you are ready for a server, you probably don’t need any crazy\nhardware.  You can probably run on some old retired Dell Optiplex or an old\ndesktop someone is throwing out as it no longer runs windows.\u003c/p\u003e\n\u003ch2 id=\"you-like-kubernetes\"\u003eYou like kubernetes \u003ca href=\"#you-like-kubernetes\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eHell Yeah Brother, 100% no better reason to run kubernetes at home than because\nyou enjoy it.  I’m with you.  There’s nothing quite like having \u003ca href=\"/glossary/git/\" class=\"glossary-term\" title=\"Git is a version control system for tracking changes in source code during software development. In the beginning there were many, some were licensed. As...\"\u003egit\u003c/a\u003e ops kick in\nand deploy new services, updates, watching deployments rollover with zero\ndowntime.  Watching your cluster heal itself when a node goes down.  Never\nssh-ing in to do deployments.  Still owning your entire hardware.\u003c/p\u003e\n\u003ch2 id=\"you-want-to-learn-to-scale\"\u003eYou want to learn to scale \u003ca href=\"#you-want-to-learn-to-scale\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis is probably a stretch reason, maybe not a good one, there are probably\nbetter ways, but here we go.\u003c/p\u003e\n\u003cp\u003eDon’t claim that you \u003cstrong\u003eneed\u003c/strong\u003e scale in your homelab, you don’t.  But it sure is\nfun to run a cluster of nodes, and load balancing services that run across\nthem.  Solving these hard problems to scale across machines is hard.  There’s\nno way around it, there’s a lot to think about.  Doing so in a low stakes\nenvironment that you have skin in the game is a great way to learn.\u003c/p\u003e\n\u003ch2 id=\"i-run-kubernetes-in-my-homelab\"\u003eI run kubernetes in my homelab \u003ca href=\"#i-run-kubernetes-in-my-homelab\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eI run it and I really like it\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWhat flavor of autism did you guys get, I got the kind where I run kubernetes in my basement.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eHere are some things I really like about it, and Yes I know you can achieve\nmost of these without kubernetes.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eI don’t have to ssh, hardly ever.\u003c/li\u003e\n\u003cli\u003eI can see everything I’m running, and its defined in a manifest\u003c/li\u003e\n\u003cli\u003ek9s is amazing, and I use it all the time.\n\u003cul\u003e\n\u003cli\u003eshell into running pods\u003c/li\u003e\n\u003cli\u003erestart deployments\u003c/li\u003e\n\u003cli\u003escale deployments\u003c/li\u003e\n\u003cli\u003etrigger cronjobs\u003c/li\u003e\n\u003cli\u003ewatch logs\u003c/li\u003e\n\u003cli\u003eI can scale our minecraft server to 0 in seconds if we are in a different season of life\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eArgoCD is amazing\n\u003cul\u003e\n\u003cli\u003eI ❤️ gitops\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIngress just works\u003c/li\u003e\n\u003cli\u003eLonghorn\n\u003cul\u003e\n\u003cli\u003emakes snapshots and backups easy\u003c/li\u003e\n\u003cli\u003emakes multi node easy\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ezero-downtime deployments\u003c/li\u003e\n\u003cli\u003eself healing health checks\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI mostly do very simple things, deployments with a container, a volume and\ningress.  Probably things that you could easily run on fly.io.  Theres nothing\nreally fancy.  I just like how easy this setup works for \u003cstrong\u003eme\u003c/strong\u003e.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/f8e88b6b-a668-4cea-9792-65339860b07f.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/f8e88b6b-a668-4cea-9792-65339860b07f.webp\" alt=\"She’s our friend and she’s crazy\"/ data-glightbox=\"description: She’s our friend and she’s crazy\"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n",
      "content_text": "\nRunning kubernetes in your homelab is a fantastic way to learn, explore, express\nyourself, and run services that you use.\n\n## The Right Reasons To Run Kubernetes In Your Homelab\n\n_There are not many_\n\n* You want to learn kubernetes\n* You like kubernetes\n* You want to **learn** to scale\n\nThere are also \u003ca href=\"/the-wrong-reasons-to-run-kubernetes-in-your-homelab/\" class=\"wikilink\" data-title=\"The Wrong Reasons To Run Kubernetes In Your Homelab\" data-description=\"Running kubernetes in your homelab is complex, time consuming, there are almost no docs to help you (homelab focused docs for things you want to install),...\" data-date=\"2025-12-06\"\u003eThe Wrong Reasons To Run Kubernetes In Your Homelab\u003c/a\u003e\n\n## You want to learn kubernetes\n\nHomelabbing is a such a great way to learn new skills, deploy real apps that\nyou use.  Create new custom apps for your specific use cases that no one else\nhas.  You should absolutely run kubernetes in your homelab if you want to learn it.\n\nI would recommend to start locally, pull up kind, minikube, or k3d and start\nfrom your local machine before putting it on a server.\n\nWhen you decide you are ready for a server, you probably don't need any crazy\nhardware.  You can probably run on some old retired Dell Optiplex or an old\ndesktop someone is throwing out as it no longer runs windows.\n\n## You like kubernetes\n\nHell Yeah Brother, 100% no better reason to run kubernetes at home than because\nyou enjoy it.  I'm with you.  There's nothing quite like having git ops kick in\nand deploy new services, updates, watching deployments rollover with zero\ndowntime.  Watching your cluster heal itself when a node goes down.  Never\nssh-ing in to do deployments.  Still owning your entire hardware.\n\n## You want to learn to scale\n\nThis is probably a stretch reason, maybe not a good one, there are probably\nbetter ways, but here we go.\n\nDon't claim that you **need** scale in your homelab, you don't.  But it sure is\nfun to run a cluster of nodes, and load balancing services that run across\nthem.  Solving these hard problems to scale across machines is hard.  There's\nno way around it, there's a lot to think about.  Doing so in a low stakes\nenvironment that you have skin in the game is a great way to learn.\n\n## I run kubernetes in my homelab\n\nI run it and I really like it\n\n\u003e What flavor of autism did you guys get, I got the kind where I run kubernetes in my basement.\n\nHere are some things I really like about it, and Yes I know you can achieve\nmost of these without kubernetes.\n\n* I don't have to ssh, hardly ever.\n* I can see everything I'm running, and its defined in a manifest\n* k9s is amazing, and I use it all the time.\n  * shell into running pods\n  * restart deployments\n  * scale deployments\n  * trigger cronjobs\n  * watch logs\n  * I can scale our minecraft server to 0 in seconds if we are in a different season of life\n* ArgoCD is amazing\n  * I ❤️ gitops\n* Ingress just works\n* Longhorn \n  * makes snapshots and backups easy\n  * makes multi node easy\n* zero-downtime deployments\n* self healing health checks\n\nI mostly do very simple things, deployments with a container, a volume and\ningress.  Probably things that you could easily run on fly.io.  Theres nothing\nreally fancy.  I just like how easy this setup works for **me**.\n\n![She's our friend and she's crazy](https://dropper.waylonwalker.com/file/f8e88b6b-a668-4cea-9792-65339860b07f.webp)\n",
      "summary": "Running kubernetes in your homelab is a fantastic way to learn, explore, express yourself, and run services that you use.",
      "date_published": "2025-12-10T09:48:14Z",
      "date_modified": "2025-12-10T09:48:14Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "kubernetes",
        "self-hosted",
        "homelab"
      ]
    },
    {
      "id": "https://go.waylonwalker.com/one-year-of-shots/",
      "url": "https://go.waylonwalker.com/one-year-of-shots/",
      "title": "One Year Of Shots",
      "content_html": "\u003cp\u003eI’ve been running my shot scraper api for a year now.  It creates \u003ca href=\"/og/\" class=\"glossary-term\" title=\"OG is short for open graph, a set of standard meta tags that are used for social media sharing. This is what tells other websites how to describe and display...\"\u003eog\u003c/a\u003e images for\nmy website and thumbnails for my [[ reader ]] using a headless chrome instance.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e25870 shots\u003c/li\u003e\n\u003cli\u003e73 shots per day on average\u003c/li\u003e\n\u003cli\u003e12-09-2025 first shot taken\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"histogram\"\u003eHistogram \u003ca href=\"#histogram\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/63705078-3342-4807-b5fd-46a0860efc27.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/63705078-3342-4807-b5fd-46a0860efc27.webp\" alt=\"histogram of shots\"/ data-glightbox=\"description: histogram of shots\"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ea histogram of shot counts by day\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eYou can see in the histogram that I’ve had a few big spike days, This has been\nmostly for days that I’ve integrated into a new service or changed the\nendpoint.  On February 13, 2025 I swapped over from using the post to using\ntemplate specific to open graph images.\u003c/p\u003e\n\u003cpre class=\"chroma\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gd\"\u003e-content = \u0026#34;https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gd\"\u003e\u003c/span\u003e\u003cspan class=\"gi\"\u003e+content = \u0026#34;https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cdiv class=\"admonition vsplit\"\u003e\n\u003cp class=\"admonition-title\"\u003eImage Comparison\u003c/p\u003e\n\u003cdiv class=\"admonition vsplit\"\u003e\n\u003cp class=\"admonition-title\"\u003eOriginal Post Image\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003eoriginally I simply used an image of the post itself\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/div\u003e\n\u003cdiv class=\"admonition vsplit\"\u003e\n\u003cp class=\"admonition-title\"\u003eNew OG Image\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/og/\u0026amp;height=600\u0026amp;width=1200\u0026amp;scaled_width=1200\u0026amp;scaled_height=600\" alt=\"\"/ data-glightbox=\"description: \"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003eIn Feb 2025 I made OG specific templates to use for the OG images.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSwapping to og images\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"collage\"\u003eCollage \u003ca href=\"#collage\" class=\"heading-anchor\"\u003e#\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor fun I made a collage of all the shots.  It’s cool to see all of these\ntogether, I remember a lot of the thumbnails and posts.  Many of them from my\nrss reader.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/5d4b46a6-79d6-4320-bf7d-f917c862c57d.webp\" class=\"glightbox-link\"\u003e\u003cimg class=\"glightbox\" src=\"https://dropper.waylonwalker.com/file/5d4b46a6-79d6-4320-bf7d-f917c862c57d.webp\" alt=\"collage of shots\"/ data-glightbox=\"description: collage of shots\"\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecollage of all shots, click to see full size\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI tried to make a video collage, but turns out it takes a long time to show all\n25k shots in video form.  It also turned out to be a bit of a strobe as I don’t\nyet have it figured out how to dark mode in headless chrome.\u003c/p\u003e\n\u003cfigure\u003e\n\u003ca href=\"https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webm\" class=\"glightbox-link\"\u003e\u003cvideo autoplay loop muted playsinline controls preload=\"metadata\" class=\"md-video\" poster=\"https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webp?h=675\u0026w=1200\"\u003e\u003csource src=\"https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webm\" type=\"video/webm\"\u003evideo collage of shots\u003c/video\u003e\u003c/a\u003e\n\u003c/figure\u003e\n\u003cblockquote\u003e\n\u003cp\u003evideo collage of 600 shots, I tried to include all, but even at 20fps its a 20 minute video.\u003c/p\u003e\n\u003c/blockquote\u003e\n",
      "content_text": "\nI've been running my shot scraper api for a year now.  It creates og images for\nmy website and thumbnails for my [[ reader ]] using a headless chrome instance.\n\n* 25870 shots\n* 73 shots per day on average\n* 12-09-2025 first shot taken\n\n## Histogram\n\n![histogram of shots](https://dropper.waylonwalker.com/file/63705078-3342-4807-b5fd-46a0860efc27.webp)\n\u003e a histogram of shot counts by day\n\nYou can see in the histogram that I've had a few big spike days, This has been\nmostly for days that I've integrated into a new service or changed the\nendpoint.  On February 13, 2025 I swapped over from using the post to using\ntemplate specific to open graph images.\n\n``` diff\n-content = \"https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\"\n+content = \"https://shots.waylonwalker.com/shot/?url={{ config.url }}{{ post.slug }}/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600\"\n```\n\n!!! vsplit Image Comparison\n\n    !!! vsplit Original Post Image\n\n        ![](https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600)\n\n        \u003e originally I simply used an image of the post itself\n\n    !!! vsplit New OG Image\n\n        ![](https://shots.waylonwalker.com/shot/?url=https://dev.waylonwalker.com/one-year-of-shots/og/\u0026height=600\u0026width=1200\u0026scaled_width=1200\u0026scaled_height=600)\n\n        \u003e In Feb 2025 I made OG specific templates to use for the OG images.\n\n\u003e Swapping to og images\n\n## Collage\n\nFor fun I made a collage of all the shots.  It's cool to see all of these\ntogether, I remember a lot of the thumbnails and posts.  Many of them from my\nrss reader.\n\n![collage of shots](https://dropper.waylonwalker.com/file/5d4b46a6-79d6-4320-bf7d-f917c862c57d.webp)\n\u003e collage of all shots, click to see full size\n\nI tried to make a video collage, but turns out it takes a long time to show all\n25k shots in video form.  It also turned out to be a bit of a strobe as I don't\nyet have it figured out how to dark mode in headless chrome.\n\n![video collage of shots](https://dropper.waylonwalker.com/file/1c629d32-4284-4c71-a4f7-62d82e445c7d.webm)\n\u003e video collage of 600 shots, I tried to include all, but even at 20fps its a 20 minute video.\n",
      "summary": "I've been running my shot scraper api for a year now. It creates og images for my website and thumbnails for my reader using a headless chrome instance.",
      "date_published": "2025-12-09T12:44:39Z",
      "date_modified": "2025-12-09T12:44:39Z",
      "authors": [
        {
          "name": "Waylon Walker",
          "url": "https://waylonwalker.com",
          "avatar": "/8bitcc.png"
        }
      ],
      "tags": [
        "python"
      ]
    }
  ]
}