<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>KaffeinLabs</title><link>https://www.kaffeinlabs.com/</link><description>Recent content on KaffeinLabs</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 02 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.kaffeinlabs.com/index.xml" rel="self" type="application/rss+xml"/><item><title>2026-05-26 20:45</title><link>https://www.kaffeinlabs.com/bits/2026-05-26/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-05-26/</guid><description>&lt;p>Just picked up watching Gurren Lagann from my recommendation queue and it very much feels like an Miller-lite, Saturday morning cartoon, Aughts version of Outlaw Star.&lt;/p>
&lt;p>But, like, weirder.&lt;/p>
&lt;p>A standalone head mecha? Okay, sure.
Another&amp;hellip;bigger standalone head mecha that accepts the little head on top of it and spontaneously grows a nervous system and turns into a Big-O? What the actual fuck were the writers smoking&amp;hellip;&lt;/p>
&lt;p>And supposedly the scaling gets insane later on in the series. I have a feeling that this one is gonna be a roller coaster.&lt;/p></description></item><item><title>2026-05-22 07:58</title><link>https://www.kaffeinlabs.com/bits/2026-05-22/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-05-22/</guid><description>&lt;p>&amp;ldquo;Schmeep-schmop&amp;rdquo; is my new favorite phrase.&lt;/p>
&lt;p>Whatever dude, we’re done here. Schmeep-schmop I’m over it.
🐑🧹&lt;/p></description></item><item><title>2026-05-20 18:54</title><link>https://www.kaffeinlabs.com/bits/2026-05-20/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-05-20/</guid><description>&lt;p>“Google’s product strategy is a Monkey knife fight” is the most honest description I’ve heard all day.&lt;/p></description></item><item><title>2026-05-14 08:22</title><link>https://www.kaffeinlabs.com/bits/2026-05-14/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-05-14/</guid><description>&lt;p>So I’m sitting there &lt;del>blasting&lt;/del> rebasing a branch when I see Zed throw a nice little “Resolve Merge Conflicts with Agent” button on the bottom of my screen. Whaaat!&lt;/p>
&lt;p>Man, that’s such a nice polished little convenience helper detail and a perfect task to offload! Zed consistently impresses me.&lt;/p></description></item><item><title>2026-05-11 08:23</title><link>https://www.kaffeinlabs.com/bits/2026-05-11/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-05-11/</guid><description>&lt;p>Working with LLM agents right now feels very much like when the Steam Deck hit. It turns an activity that could only be a “stop the world, block time to find a focus flow state” into a quick stop-start-switch-restart activity interleaved throughout the day.&lt;/p>
&lt;p>Except instead of gaming, that activity is working on personal projects. Which is awesome because, like the Deck, it has helped time-slice something I enjoy back into my life.&lt;/p></description></item><item><title>2026-04-25 11:47</title><link>https://www.kaffeinlabs.com/bits/2026-04-25/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-04-25/</guid><description>&lt;p>Damn, “Oh The Places You Will Go” really is a banger of a story.&lt;/p>
&lt;p>The cadence and flow sets you up to sound like an awesome orator (def better than I actually am) when you’re reading it out loud to your kids.&lt;/p></description></item><item><title>2025-04-15 6:20</title><link>https://www.kaffeinlabs.com/bits/2026-04-15/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-04-15/</guid><description>&lt;p>Anything worth doing is worth doing poorly.&lt;/p>
&lt;p>Aka “Perfect is the enemy of good”
Aka “Just go do the fucking thing even if you think it’s trash”&lt;/p></description></item><item><title>2026-04-11 09:51</title><link>https://www.kaffeinlabs.com/bits/2026-04-11/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-04-11/</guid><description>&lt;p>I’m an idiot and only just now realized that Zed’s command palette is accessible via the &lt;code>:&lt;/code> vim command-mode keybinding.🤦&lt;/p>
&lt;p>And a git-graph interface!!&lt;/p>
&lt;p>Wow, I love Zed even more.&lt;/p></description></item><item><title>2026-04-05 11:47</title><link>https://www.kaffeinlabs.com/bits/2026-04-05/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-04-05/</guid><description>&lt;p>Both &lt;a href="https://www.warhammer.com/en-US/shop/Horus-Heresy-Know-No-Fear">Know No Fear&lt;/a> and &lt;a href="https://www.blacklibrary.com/the-horus-heresy/novels/fear-to-tread-ebook.html">Fear To Tread&lt;/a> are excellent must-read books if you’re a fan of either the Ultramarines or Blood Angels respectively.&lt;/p>
&lt;p>But &lt;em>man&lt;/em> does the overtone of betrayal and repeating undercurrent of opportunity loss for individual characters, each Legion, and the Imperium as a whole make them a slog to read once the action really gets going.&lt;/p>
&lt;p>Because you get a sense of this great, grand scale&amp;hellip; where everyone and everything gets summarily fucked.&lt;/p></description></item><item><title>2026-03-29 13:47</title><link>https://www.kaffeinlabs.com/bits/2026-03-29/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-03-29/</guid><description>&lt;p>PSA to conference vendors: I don’t want your socks, a bag, or even that fancy vest.&lt;/p>
&lt;p>I am a simple man.&lt;/p>
&lt;p>&lt;strong>Bring back those sweet, sweet logo shirts. My closet yearns for them.&lt;/strong>&lt;/p>
&lt;p>&lt;em>PS: Stickers are still cool though&lt;/em>&lt;/p></description></item><item><title>2026-01-02 13:47</title><link>https://www.kaffeinlabs.com/bits/2026-01-02/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2026-01-02/</guid><description>&lt;p>Not enough dakka, but getting there.
More air + More Red = MOAR FASTAH YA GIT!&lt;/p>
&lt;p>100% Orky approved.&lt;/p></description></item><item><title>2025-12-26 13:47</title><link>https://www.kaffeinlabs.com/bits/2025-12-26/</link><pubDate>Fri, 26 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-26/</guid><description>&lt;p>In retrospect, climbing up a slick ladder in slippers and PJs to clean out the gutter in the rain was not a wise decision.&lt;/p>
&lt;p>1/10 would not recommend.&lt;/p></description></item><item><title>2025-12-24 15:09</title><link>https://www.kaffeinlabs.com/bits/2025-12-24/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-24/</guid><description>&lt;p>I’m not big into the hustle or productivity-maxing culture, but i still like to throw a tongue in cheek &amp;ldquo;Always Be Closing, bro&amp;rdquo; every once in a while.&lt;/p>
&lt;p>Mostly I’m joking because it’s a funny junk phrase, but there’s a nugget of value in there. Basically &amp;ldquo;Don’t quit, be hard when life gets hard.&amp;rdquo;&lt;/p>
&lt;p>Which i think aligns with Arnold Schwarzenegger’s core principle: &amp;ldquo;Always Be Useful&amp;rdquo;.&lt;/p>
&lt;p>If you’re feeling lost, use the AB’s to find your way.&lt;/p></description></item><item><title>2025-12-23 09:47</title><link>https://www.kaffeinlabs.com/bits/2025-12-23/</link><pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-23/</guid><description>&lt;p>Like a lot of people I drink a metric gigaliter of coffee on the daily.&lt;/p>
&lt;p>Apparently &amp;ldquo;not liking coffee&amp;rdquo; is my main bellwether for how sick or healthy I am feeling.&lt;/p>
&lt;p>Coffee sounds gross? I’m sick.
Coffee sounds good? I’m feeling better.&lt;/p>
&lt;p>Weird.&lt;/p></description></item><item><title>2025-12-15 21:47</title><link>https://www.kaffeinlabs.com/bits/2025-12-15/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-15/</guid><description>&lt;p>The Gogeta-Broly fight scene in &amp;ldquo;Dragonball Super: Broly&amp;rdquo; is the most visually stunning animation sequence I’ve ever seen. It’s a masterpiece that I always get hyped to re-watch.&lt;/p>
&lt;p>&lt;strong>Broly:&lt;/strong> Exists&lt;/p>
&lt;p>&lt;strong>Gogeta:&lt;/strong> &lt;em>Absolutely fucking not&lt;/em>&lt;/p></description></item><item><title>2025-12-08 21:59</title><link>https://www.kaffeinlabs.com/bits/2025-12-08/</link><pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-08/</guid><description>&lt;p>Seriously, the whole thing was up, right, a hard left, a sudden drop, and then BOOM all over.&lt;/p>
&lt;p>It was not what I was expecting but it was a &lt;strong>goddamn&lt;/strong> delight.&lt;/p></description></item><item><title>2025-12-01 07:47</title><link>https://www.kaffeinlabs.com/bits/2025-12-01/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-12-01/</guid><description>&lt;p>&lt;a href="https://help.obsidian.md/bases">Bases&lt;/a> are a rad Obsidian feature that lets you create an arbitrary view of your obsidian notes. It uses note properties and other file metadata to create a materialized view which you can use as a quick-nav dashboard.&lt;/p>
&lt;p>I use it to find and group RFCs by status and category, and to sort &lt;a href="https://obsidian.md/clipper">clipped web pages&lt;/a> by recency.&lt;/p>
&lt;p>Cool story bro.&lt;/p></description></item><item><title>Triage a million tabs down to tab-zero</title><link>https://www.kaffeinlabs.com/nibbles/2025/million-tabs/</link><pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/nibbles/2025/million-tabs/</guid><description>&lt;p>Jeeeeezus I just noticed that I have 162 tabs open on my phone! Sidenote: I take it for granted but I am impressed that both my phone and its mobile browser are able to function with so many tabs open.&lt;/p>
&lt;p>This tab hoarding happens organically over time and about once a year it comes to a head and I do something about it. A few times I have declared bankruptcy and closed all the tabs, only to remember a reference to a needle in that particular haystack a few days later and sigh in frustration. Not a great outcome.&lt;/p></description></item><item><title>Supernote Nomad First Use Takeaways</title><link>https://www.kaffeinlabs.com/bytes/2025/supernote-nomad-first-use/</link><pubDate>Fri, 24 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bytes/2025/supernote-nomad-first-use/</guid><description>&lt;h1 id="in-search-of-a-few-good-men-tablets">In search of a few good &lt;del>men&lt;/del> tablets&lt;/h1>
&lt;p>For the past few years I have been on the lookout for a good tablet to use for active reading and writing. Specifically with a focus on reading for &lt;strong>comprehension&lt;/strong> and writing with &lt;strong>intent&lt;/strong>. Reading for comprehension, to me, involves actively engaging with the text while reading. This includes taking notes, jotting down thoughts, and actively making connections. So clearly the writing aspect is an important consideration here.&lt;/p></description></item><item><title>2025-10-23 20:47</title><link>https://www.kaffeinlabs.com/bits/2025-10-23/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-10-23/</guid><description>&lt;p>Finally found a restaurant that serves something with huitlacoche! I’m not that hungry but ordering it anyways :)&lt;/p></description></item><item><title>2025-10-23 21:30</title><link>https://www.kaffeinlabs.com/bits/2025-10-23-1/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-10-23-1/</guid><description>&lt;p>It turns out that sadly I am not as big of a fan of huitlacoche as I thought I would be. Maybe I would like it better if it was fresh and not canned.&lt;/p>
&lt;p>Sadness strikes.&lt;/p></description></item><item><title>2025-10-14 16:06</title><link>https://www.kaffeinlabs.com/bits/2025-10-14/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-10-14/</guid><description>&lt;p>Two things will live in my head rent-free forever:&lt;/p>
&lt;ol>
&lt;li>The mad hype sequence of Goku, 17, and Frieza tag-teaming Jiren at the end of TOP in DB Super&lt;/li>
&lt;li>My boy Mika piloting Gundam Barbatos to throw hands against literally anyone and everyone on sight&lt;/li>
&lt;/ol></description></item><item><title>2025-09-25 17:57</title><link>https://www.kaffeinlabs.com/bits/2025-09-25/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-09-25/</guid><description>&lt;p>With the recent Zed pricing change to token based billing of both edit and hosted LLM usage I’m 100% into it and am down to support the product.&lt;/p>
&lt;p>Zed edit prediction is some high quality shit; I am unexpectedly and pleasantly shocked at how good it is.&lt;/p></description></item><item><title>2025-09-07 11:14</title><link>https://www.kaffeinlabs.com/bits/2025-09-07/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-09-07/</guid><description>&lt;p>While I was washing the dishes I realized that there is an actual functional difference between the Scrub Daddy and the Scrub Mommy sponges that plays into the product naming. More than just a bow and pink color on the “Mommy”.&lt;/p>
&lt;p>Both have a rough scrubbing side, but the Daddy is rough all around and only the Mommy has a “soft side”. Absolutely ridiculous. 🤣&lt;/p></description></item><item><title>2025-08-25 13:47</title><link>https://www.kaffeinlabs.com/bits/2025-08-25/</link><pubDate>Mon, 25 Aug 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-08-25/</guid><description>&lt;p>FFS the term “gives me the ick” makes me irrationally upset. And when I hear it I immediately discount the speaker or author and whatever it is they are trying to say.&lt;/p></description></item><item><title>2025-08-19 15:23</title><link>https://www.kaffeinlabs.com/bits/2025-08-19/</link><pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-08-19/</guid><description>&lt;p>FYI: Any app enabling &amp;ldquo;Secure Keyboard Entry&amp;rdquo; on your Mac (confirmed at least for macOS 14.7) will prevent the iTerm2 global hotkey shortcut from working unless the iTerm2 app is foregrounded.&lt;/p>
&lt;p>Details are in &lt;a href="https://gitlab.com/gnachman/iterm2/-/issues/9002">this iTerm GitHub issue&lt;/a>. Fortunately for me, for some reason BetterTouchTool happens to tell you &lt;em>which&lt;/em> app has enabled secure keyboard entry. So you can search and destroy it and get your global iTerm hotkey working again.&lt;/p></description></item><item><title>2025-07-26 13:47</title><link>https://www.kaffeinlabs.com/bits/2025-07-26/</link><pubDate>Sat, 26 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-07-26/</guid><description>&lt;p>Sleep is annoying. You need it and you’re fkd if you don’t get it, regardless of what you tell yourself.&lt;/p>
&lt;p>Waking up after adequate and consistent &lt;em>deep&lt;/em> sleep feels like a toothbrush deep cleaned your brain. That feeling is like a week-long vacation compressed into the first 15 seconds of the day.&lt;/p>
&lt;p>Incredible, there&amp;rsquo;s nothing like it.&lt;/p></description></item><item><title>2025-07-15 10:23</title><link>https://www.kaffeinlabs.com/bits/2025-07-15/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-07-15/</guid><description>&lt;p>“People tend to vastly overestimate what will happen in fifty years and massively underestimate what will happen in the next two.”&lt;/p>
&lt;p>Huh, yeah that definitely tracks.&lt;/p></description></item><item><title>I can git subtree and so can you!</title><link>https://www.kaffeinlabs.com/bytes/2025/git_subtree_worktree/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bytes/2025/git_subtree_worktree/</guid><description>&lt;h1 id="context">Context&lt;/h1>
&lt;p>I&amp;rsquo;m re-working my hugo site and theme. The content and presentation logic are &lt;em>theoretically&lt;/em> separated between my blog repo and theme repo. I have the theme added into the blog repo as a git submodule which under normal (non-major refactoring) circumstances works well enough.&lt;/p>
&lt;p>Since I’m actively refactoring, that means quickly iterating locally with changes to both the content and presentation logic.&lt;/p>
&lt;p>So In practice that means that I am modifying files both in the main blog repo and in the theme submodule directly.&lt;/p></description></item><item><title>2025-06-16 14:47</title><link>https://www.kaffeinlabs.com/bits/2025-06-14/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-06-14/</guid><description>&lt;p>6 GHz WiFi and gigabit fiber internet together are, unsurprisingly, pretty fkn rad!&lt;/p></description></item><item><title>Phones with physical keyboards</title><link>https://www.kaffeinlabs.com/nibbles/2025/phone-keyboards/</link><pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/nibbles/2025/phone-keyboards/</guid><description>&lt;p>I had an idea that I wanted to capture, so I pulled out my phone, fired up iAWriter and&amp;hellip;.then didn’t do anything.&lt;/p>
&lt;p>Why?&lt;/p>
&lt;p>In that fleeting moment between my initial thought and futzing with formatting on that little on-screen keyboard I lost my train of thought and forgot what I was going to write.&lt;/p>
&lt;p>Because writing on capacitive screens for anything more than a line or two sucks.&lt;/p>
&lt;p>Honestly if I’m going to write for more than 30 seconds I am better off skipping even trying to use my phone and instead immediately pulling out my laptop to use a real keyboard. Phones are convenient tools. And convenient tools are cool and all, but only if they get are actually convenient and get the AF out of your way to &lt;em>enable&lt;/em> or &lt;em>extend&lt;/em> your abilities.&lt;/p></description></item><item><title>2025-06-07 11:47</title><link>https://www.kaffeinlabs.com/bits/2025-06-07/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-06-07/</guid><description>&lt;p>Holy crap, &lt;a href="https://obsidian.md">Obsidian&lt;/a> has a &lt;a href="https://obsidian.md/clipper">web clipper browser plugin&lt;/a>! This looks like a perfect Pocket replacement since Pocket is being (update: has been fully) decommissioned.&lt;/p></description></item><item><title>2025-06-06 19:47</title><link>https://www.kaffeinlabs.com/bits/2025-06-06/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-06-06/</guid><description>&lt;p>&lt;a href="https://dashdash.io/">https://dashdash.io/&lt;/a> is an awesome resource for searching and reading through Linux manpages. And the design is just &lt;em>chef&amp;rsquo;s kiss&lt;/em>.&lt;/p></description></item><item><title>2025-05-28 16:32</title><link>https://www.kaffeinlabs.com/bits/2025-05-28/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-05-28/</guid><description>&lt;p>Trying and failing to use snyk container scans with colima on macOS instead of docker desktop.&lt;/p>
&lt;p>&lt;code>sudo ln -s ~/.colima/default/docker.sock /var/run/docker.sock&lt;/code> stops the pain.&lt;/p></description></item><item><title>2025-04-04 13:47</title><link>https://www.kaffeinlabs.com/bits/2025-04-04/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-04-04/</guid><description>&lt;p>Got an nvme ssd to use for portable external storage, but it was missing a partition table so macOS wouldn’t recognize it when I plugged it in. Steam Deck to the rescue!&lt;/p>
&lt;p>Linux gaming FTW.&lt;/p></description></item><item><title>2025-02-23 15:57</title><link>https://www.kaffeinlabs.com/bits/2025-02-23/</link><pubDate>Sun, 23 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-02-23/</guid><description>&lt;p>Dude, I cannot wait for the upcoming M4 MacBook Air release. While I enjoy having a personal space heater, this old Intel Mac is basically a desktop because of its battery life.&lt;/p></description></item><item><title>2025-02-22 09:19</title><link>https://www.kaffeinlabs.com/bits/2025-02-22/</link><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-02-22/</guid><description>&lt;p>Whoa I forgot that systemd has its own container system support built in(systemd-nspawn)! I wonder if that kitchen sink has a garbage disposal?&lt;/p></description></item><item><title>2025-02-15 13:47</title><link>https://www.kaffeinlabs.com/bits/2025-02-15/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bits/2025-02-15/</guid><description>&lt;p>The Zed editor uses &lt;code>cmd-shift-P&lt;/code> on macOS to access its command palette. If you have the Keeper password manager installed then it’s squatting on that shortcut, which blocks major Zed usability.&lt;/p>
&lt;p>Do yourself a favor and re-set that shortcut to something else in Keeper.&lt;/p></description></item><item><title>Give yourself permission to make something imperfect</title><link>https://www.kaffeinlabs.com/bytes/2025/imperfect/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/bytes/2025/imperfect/</guid><description>&lt;h1 id="how-did-we-get-here">How did we get here?&lt;/h1>
&lt;p>You know how it goes.&lt;/p>
&lt;p>You&amp;rsquo;ve got an idea and think: &amp;ldquo;that would be great to write about/build/make/whatever!&amp;rdquo;.&lt;/p>
&lt;p>So you add it to your to-do list, do a little research, write up an outline, and get either a draft or an MVP created. Awesome!&lt;/p>
&lt;p>But you can&amp;rsquo;t publish it yet because it&amp;rsquo;s just not good enough yet. Maybe after another revision/another feature. You say to yourself: &amp;ldquo;This isn&amp;rsquo;t deep enough/complete enough/complex enough. Now that I&amp;rsquo;m looking at it, it&amp;rsquo;s kind of embarrassing. Maybe I shouldn&amp;rsquo;t have written/built/made this at all.&amp;rdquo;&lt;/p></description></item><item><title>Kubernetes RBAC Concepts</title><link>https://www.kaffeinlabs.com/bytes/2022/k8s-rbac/</link><pubDate>Tue, 11 Jan 2022 22:45:00 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2022/k8s-rbac/</guid><description>&lt;h1 id="what-is-rbac">What is RBAC?&lt;/h1>
&lt;p>RBAC (role based access control) is a security approach to restricting system resources to specific subjects via access lists. RBAC in Kubernetes allows admins to delegate specific types of permissions against specific API objects to other specific API objects. This is accomplished via interactions between three specific object types:&lt;/p>
&lt;ul>
&lt;li>Role/ClusterRole&lt;/li>
&lt;li>RoleBinding/ClusterRoleBinding&lt;/li>
&lt;li>ServiceAccount/User/Group&lt;/li>
&lt;/ul>
&lt;p>ServiceAccounts, Users, and Groups are ways to assign an identity to a subject. ServiceAccounts are basically proxy actors that can be assigned to pods to help grant them a concrete RBAC identity and thus a way to be granted access to specific resources. These are the primary identity object that Kubernetes admins interact with. ServiceAccounts are explicitly namespaced, so multiple ServiceAccounts with the same name can be created across different namespaces and each is actually a distinct identity. Along with User and Groups objects, these guys define the &lt;strong>who&lt;/strong>.&lt;/p></description></item><item><title>Retrospective: Mind Blowing Moments from Kubecon NA 2019</title><link>https://www.kaffeinlabs.com/bytes/2021/kubecon/</link><pubDate>Mon, 15 Feb 2021 14:00:00 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2021/kubecon/</guid><description>&lt;p>I had initially intended to write about some personal highlights of Kubecon 2019, so I scribbled down a list of the projects that seriously expanded my view of what was possible. But since I&amp;rsquo;ve been sitting on this for &lt;em>quite some time&lt;/em> I figured I might as well add some 2020 hindsight and take this opportunity to compare my initial reactions and current feelings about these projects.&lt;/p>
&lt;p>Please note the key word there: feeling. Unless otherwise mentioned these comments are not backed by hands-on experience.&lt;/p></description></item><item><title>Linux capabilities and Kubernetes</title><link>https://www.kaffeinlabs.com/bytes/2020/linux-capabilities/</link><pubDate>Thu, 27 Feb 2020 13:08:02 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2020/linux-capabilities/</guid><description>&lt;p>Linux capabilities are one of those security layers that I wasn&amp;rsquo;t aware of before working with Kubernetes and even then would only (generally) see in some lengthy, overwhelming podspec examples.&lt;/p>
&lt;h1 id="what-are-linux-capabilities">What are linux capabilities?&lt;/h1>
&lt;p>Per the linux man pages:&lt;/p>
&lt;blockquote>
&lt;p>[capabilities are] the privileges traditionally associated with superuser into distinct units&amp;hellip;which can be independently enabled and disabled.&lt;/p>
&lt;p>Capabilities are a per-thread attribute.&lt;/p>&lt;/blockquote>
&lt;p>Interestingly enough I haven&amp;rsquo;t actually seen any examples of using capabilities &lt;em>outside&lt;/em> of Docker/Kuberenetes. So with regards to containers and container runtimes, capabilities allow you to selectively assign fine-grained permissions to specific container images without having to give up full root permissions. Alright, that sounds pretty cool and directly in-line with the whole concept of minimizing the attack surface area.&lt;/p></description></item><item><title>Systemd unit files, overrides, and override ordering</title><link>https://www.kaffeinlabs.com/bytes/2019/systemd-overrides/</link><pubDate>Thu, 02 May 2019 14:00:00 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2019/systemd-overrides/</guid><description>&lt;h1 id="what-is-systemd">What is systemd?&lt;/h1>
&lt;p>Systemd is the init system that most Linux distros have converged upon as the successor to previous popular init systems SysVinit and upstart. The init system (aka PID 1) is responsible for starting up the rest of the services that the system is going to run and with systemd those services are defined via unit files.&lt;/p>
&lt;p>Something I didn&amp;rsquo;t know about systemd is that it actually has two standard unit file installation locations as well as unit-file specific directories for override snippets and an inheritance model for processing appropriate files in the correct order. I had always assumed that everything just went into &lt;code>/usr/lib/systemd/system/$UNIT_NAME.$TYPE&lt;/code> where the package manager dropped in unit files.&lt;/p></description></item><item><title>Using the Opennebula monitoring driver to populate host attributes</title><link>https://www.kaffeinlabs.com/bytes/2019/one-monitoring/</link><pubDate>Wed, 01 May 2019 14:00:00 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2019/one-monitoring/</guid><description>&lt;p>&lt;a href="https://opennebula.org/">Opennebula&lt;/a> is a customizable IAAS platform that sits right about in the middle of the spectrum if you took VMWare on one side and OpenStack on the other. It has just the right amount of complexity to provide a high level of customizability without necessitating its upkeep take one or more FTEs, and fits well with our requirements. If you have anywhere between a handful and 10,000 servers to manage in datacenters and satellite locations, it is definitely worth taking a look at Opennebula.&lt;/p></description></item><item><title>Chef tooling in 2019</title><link>https://www.kaffeinlabs.com/bytes/2019/chef-tools/</link><pubDate>Sat, 13 Apr 2019 13:30:00 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2019/chef-tools/</guid><description>&lt;div class="ph-callout" style="background-color: transparent; border: 3px solid #d340e0;">
 &lt;span class="ph-callout-emoji" aria-hidden="true">⚡️&lt;/span>
 &lt;div class="ph-callout-body">&lt;p class="ph-callout-title">Update&lt;/p>&lt;p class="ph-callout-text">Updated to fix a typo and move external links into the content and off of the section headers.&lt;/p>
 &lt;/div>
&lt;/div>

&lt;p>So chef has been around for a while (almost 10 years!) and both the cookbook development flow as well as the tooling have changed over the years. While I don&amp;rsquo;t know the full history of everything and don&amp;rsquo;t claim to even know the best tools to use in any particular way, here are some of the chef ecosystem tools that I&amp;rsquo;ve recently used along with a couple that I haven&amp;rsquo;t.&lt;/p></description></item><item><title>Building a good foundation with Chef default generator templates</title><link>https://www.kaffeinlabs.com/bytes/2018/chef-generator/</link><pubDate>Sun, 08 Jul 2018 21:08:02 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2018/chef-generator/</guid><description>&lt;p>Now that you&amp;rsquo;ve written some cookbooks after learning about some of the config management primitives and running through the standard &amp;ldquo;deploy a website with apache&amp;rdquo; walkthroughs you&amp;rsquo;re finding that you make some of the same customizations to every cookbook.&lt;/p>
&lt;p>Instead of (sometimes, hopefully remembering to&amp;hellip;wait what about that one thing?) manually making those same modifications for every cookbook, drop those configurations and overrides in a generator cookbook with &lt;code>chef generate generator base_origin&lt;/code>.&lt;/p></description></item><item><title>Getting an MVP out with Chef</title><link>https://www.kaffeinlabs.com/bytes/2018/chef-mvp/</link><pubDate>Tue, 03 Jul 2018 09:57:52 -0700</pubDate><guid>https://www.kaffeinlabs.com/bytes/2018/chef-mvp/</guid><description>&lt;p>Recently I have been spearheading a project at $WORK based on the configuration management tool &lt;a href="https://www.chef.io/">Chef&lt;/a>. It has been around for over a decade now so the ecosystem and associated tooling is pretty mature, which can sometimes be a double edged sword. Many of the rough edges and edge cases have been taken care of (yay!), but there is a long tail of best practices, tools, and internals that have changed over the years (noooo!). When &lt;a href="https://docs.chef.io/about_chefdk.html">ChefDK&lt;/a> was introduced it lowered the starting friction quite a bit, and the new &lt;a href="https://www.chef.sh/docs/chef-workstation/getting-started/">Chef Workstation&lt;/a> is supposed to help even more but this is still a non-trivial problem.&lt;/p></description></item><item><title>About Me</title><link>https://www.kaffeinlabs.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/about/</guid><description>&lt;p>Let&amp;rsquo;s keep it simple. Keep it low key.&lt;/p></description></item><item><title>Stuff I Use</title><link>https://www.kaffeinlabs.com/uses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.kaffeinlabs.com/uses/</guid><description>&lt;h2 id="physical-space">Physical Space&lt;/h2>
&lt;h3 id="iphone-15-pro">iPhone 15 Pro&lt;/h3>
&lt;p>Love the camera and the integrated ecosystem. I was a stalwart Android supporter for years, and when I switched was shocked at the improvement of quality and seamlessness of UX in iOS.&lt;/p>
&lt;h3 id="airpods-pro-2">&lt;a href="https://www.apple.com/airpods-pro/">Airpods Pro 2&lt;/a>&lt;/h3>
&lt;p>Another beneficiary of Apple&amp;rsquo;s vertically integrated ecosystem. The audio quality, bluetooth pairing simplicity, and pragmatic &amp;ldquo;Find My&amp;rdquo; integration make these an easy EDC choice.&lt;/p>
&lt;h3 id="apple-watch">&lt;a href="https://www.apple.com/watch/">Apple Watch&lt;/a>&lt;/h3>
&lt;p>Bought it for the sleep tracking features. Kept it for the physical alarm (seriously, small wrist vibration &amp;raquo; annoying loud alarm sound), maps integration, stopwatch, and timer voice integration.&lt;/p></description></item></channel></rss>