Published

All published posts

2587 posts latest post 2026-08-10 simple view
Publishing rhythm
Jul 2026 | 15 posts

If you need to target a specific k8s node in the cluster, you can use labels. You want to treat your nodes as much like cattle as you can, but sometimes budgets get in the way. You might be like me and just run any free hardware you can get in your cluster, or you might have some large storage or gpu needs that you can’t afford to put on every node in the cluster.

kubectl get nodes --show-labels

# add the bigpool label
kubectl label node k8s-1 bigpool=true
kubectl get nodes --show-labels

# remove the bigpool label
kubectl label node k8s-1 bigpool-

To use the label in a pod set spec.nodeSelector to the label that you applied.

apiVersion: v1
kind: Pod
metadata:
  name: busybox
spec:
  containers:
  - name: busybox
    image: busybox
  nodeSelector:
    bigpool: "true"
- css if() just landed, I’m struggling to understand what I an do with this that I can’t do with something as old as classes. I can get it if I don’t have control over html [1] creation or js to add classes. The example that Una shows includes data that could directly be a classname with a set of styles in css rather than this crazy css variable unpacking out of a data attribute and an if statement. References: [1]: /html/
wants Personal website. Webby personsite. Amateur hour round the clock. maya.land · maya.land [1] Allen Carr1 on quitting smoking: [Carr] recommends working to really notice and internalise that disconnect [between what we want and what we enjoy]. He tells smokers to pay attention to their next cigarette. It’s like mindfulness but for noticing the unpleasantness. I can appreciate the restraint here, theres something about the mindfulness behind it all. References: [1]: https://maya.land/wants/

/wants

Inspired by mara.town/wants [1] want but do not enjoy # [2] - New hardware that cannot be repaired - Disciplining Children - Nice landscaping which requires regular maintenance enjoy but do not want # [3] - breakfast - Fancy things - Manual Labor in moderation - Vacations to far away places - clankers writing all of the code References: [1]: https://maya.land/wants/ [2]: #want-but-do-not-enjoy [3]: #enjoy-but-do-not-want
1 min read

Linux Is About Choice

This Luke Smith video came across my feed Linux, Bitcoin: When Tech Projects Become “Too Popular…” Don’t forget the goal. [1]. It’s interesting to hear his perspective about Linux, FOSS, Free Software being the end goal, and that we are loosing sight of the goal. This sentiment really aligns with the early FOSS movement from Stallman, but was this ever the goal? Taken over by apathetic interests # [2] Luke talks about these projects getting taken over by people with no passion for the original goal of freedom and privacy. They want the projects to grow, get bigger, and become mainstream. This feels exactly the opposite of anything Luke would want, so my bias alarm goes off here. Honestly I do see some of the grossness of projects like this that were grassroots, for freedom and privacy get taken over for money grabs. I’m completely out on bitcoin so I cannot make any comment there, but I Truly believe that the Linux kernel is not a money grab as Luke makes the new face of bitcoin s...
6 min read
Blogroll Blogroll - a collection of awesome people I follow online Waylon Walker · reader.waylonwalker.com [1] I rolled out the blogroll today, nothing pretty, but is one single page of the rss feeds I follow. References: [1]: https://reader.waylonwalker.com/blogroll/
- Markata got a shout out part way through the latest episode of LNL, I will go back, re-listen and take some of the feedback. His thoughts on Markata were interesting. On one hand it really is a thing for me that works for me, and as a person with too many side projects I don’t have the focus to really give it polish. On the other hand it really confirms why listen to podcasts, news, finger on the pulse, opinions and how often these guys are wrong, they are not the expert they probably look at 6 things like this a week. He said that it was some sort of javascript thing, that maybe he could fix or customize with javascript if he wanted, kinda shocking, I thought maybe I accidentally added node modules or something dumb, nope, I have a whopping 1.4% js. So most of the comments were plain wrong. I get it he probably peeked at it for 30s and realized it wasn’t the thing for his problem. At the same time I should probably do a better job at marketing what it really is, cleaning up the docs and demo.
[1] Such a great message right now. I feel like everywhere I turn is negativity, especially social media. It feels like so many things are trying to divide and create hate. “This” is what we should be doing with social media. There are a lot of elements of “there are two ways to have the biggest building in town, tear down all the bigger buildings, or just build the biggest fucking building”, If you want to be successful in X then surround yourself with others successful in X. This is a catalytic skill that everyone needs to have in their belt. References: [1]: /static/https://josephthacker.com/personal/2025/05/13/root-for-your-friends.html

I’m currently [[replacing-google-search-apps-with-self-hosted-web-apps]] and decided to create a simple b64 encoder/decoder, just start typing to enter text, escape to deselect, then e/d to encode/decode.

I’m trying to make these apps super simple, self hosted out of minio, static html, and javascript. It’s been fun to get back to some simple interactive web development like this. No build just a website that does something. No broken builds, no containers to deploy, just push to minio.

encoded = btoa(content);
decoded = atob(encoded);

Here is the result.

screenshot of https://b64.wayl.one

- Great conversation with Billy Basso the creator of Animal Well on the code architecture of Animal well. It’s all hand crafted C++. He talks about early games he tried to build being heavy in oop, and really got lost in oop. Animal well is very flat, there is no inheritance, just lists of entities that all implement similar methods in their own way. Layering and order of entities becomes very important. Its crazy how much he had to think about hardware and MS build being very helpful with this, but needing to know all of the console apis.
Just fucking code. justfuckingcode.com [1] This is great, beautifully captures a modern backend view of https://motherfuckingwebsite.com/. I honestly resonate with almost all of this. I have found myself in more trouble than help when trying to fully vibe out a project. It never refactors, it leaves it shit everywhere, it mostly does what you say, until you get to something that seems easy, so you try to do it yourself, but you break its brittle piece of shit into pieces any time you try to touch it. AI coding help is great, mcp seems like it really has some game changing abilities, but hands of vibe coded crap aint there yet for me. References: [1]: https://www.justfuckingcode.com/
f2 [1] by ayoisaiah [2] is a game-changer in its space. Excited to see how it evolves. F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely. Written in Go! References: [1]: https://github.com/ayoisaiah/f2 [2]: https://github.com/ayoisaiah
k8s-monitoring-helm/charts/k8s-monitoring/docs/examples/private-image-registries/globally/values.yaml at main · grafana/k8s-monitoring-helm Contribute to grafana/k8s-monitoring-helm development by creating an account on GitHub. GitHub · github.com [1] k8s-monitoring requires setting imageregistry and pullsecrets twice global: image: registry: my.registry.com pullSecrets: - name: my-registry-creds imageRegistry: my.registry.com imagePullSecrets: - name: my-registry-creds References: [1]: https://github.com/grafana/k8s-monitoring-helm/blob/main/charts/k8s-monitoring/docs/examples/private-image-registries/globally/values.yaml#L29
No docs, no bugs If your library doesn't have any documentation, it can't have any bugs. Documentation specifies what your code is supposed to do. Your tests specify what it actually does. Bugs exist … Simon Willison’s Weblog · simonwillison.net [1] Bugs exist when your test-enforced implementation fails to match the behavior described in your documentation. Without documentation a bug is just undefined behavior. This is quite an interesting thought, so does this mean that, none of my undocumented side projects have bugs? no I think there is still some implied behavior that naming things covers. a function get_bucket_contents implies doing something wtih s3, getting stuff from your local filesystem or crashing would be considered a bug. I think the argument here is that if I start mining bitcoin when you call get_bucket_contents and I have not documented it that this is a feature not a bug. If I were to take this a step further, now do I need to document that this does not also start a bitcoin miner? maybe this is more of an unwanted feature than a bug, I’m convincing myself more and more. References: [1]: https://simonwillison.net/2025/May/22/no-docs-no-bugs/#atom-everything

tinyapps

I’m working on replacing my usage of google inline search apps with real apps, these are ones that I create and host on my own homelab [1]. The first three that I created are mostly chatgpt based, with a bit of hand edit after the fact, uploaded to minio and become an app on my k8s-pages [2] renamed The original title of this post was "Replacing Google Search Apps With Self Hosted Web Apps" I’m leaning on web wakelock [3] to keep the screen on while these apps are running, primarily clos, timer, and stopwatch. Clock # [4] A large displya clock. [5] Timer # [6] A simple timer that counts down from thet set time. [7] Stopwatch # [8] This is the one that inspired it all, I need to run a few stopwatches at work, and chose to just do it right in the google search with a few tabs running. [9] Dice # [10] A simple dice roller, this one is the one that I decided to start adding ? for help. [11] UUID # [12] It displays a uuid, thats it. ctrl + c to copy. [13] b64 # [1...

I’m trying to replace my usage of google inline search apps with real apps, today I used a stopwatch to time some things out at work by opening stopwatch. This was something I just wanted running in a tab on another screen, it was not timing running code or anything, I was using it as a reminder to check browser caches every 5 minutes or so for some testing.

So tonight I whipped up a stopwatch, clock and timer, all of which are using the wakelock API to keep the screen on while the app is running.

    // Wake Lock support
    let wakeLock = null;
    async function requestWakeLock() {
      try {
        if ('wakeLock' in navigator) {
          wakeLock = await navigator.wakeLock.request('screen');
          console.log("Wake lock acquired");
        }
      } catch (err) {
        console.error("Wake lock error:", err);
      }
    }

    document.addEventListener("visibilitychange", () => {
      if (wakeLock !== null && document.visibilityState === "visible") {
        requestWakeLock();
      }
    });

    requestWakeLock();
I’m impressed by dbztui [1] from pypeaday [2]. A DBZ TUI built with an early version of ninesUI and Windsurf References: [1]: https://github.com/pypeaday/dbztui [2]: https://github.com/pypeaday