random thoughts

Solving k3s DNS warning

Nameserver limits were exceeded, some nameservers have been omitted.

Have you ever run into such errors on your k3s cluster?

The problem was already mentioned in a few places:

Some folks suggest modifying etc/resolved.conf, but as my node shipped with netplan (and I didn’t want to deal with that, I trust my hosting provider can handle networking), I decided to create a dedicated resolv config for kubelet needs.

Solving k3s DNS warning

How to monitor your self-hosted Sentry instance

I love Sentry since I discovered it many years ago. Back in the days, self-hosting it was really easy - a single Docker image which you would use for spinning up like 2-3 separate services, Postgres, Redis, a few lines of config, and you’re done.

Nowadays (2024), self-hosting Sentry requires spinning up 50+ different services - and that is of course without any fancy HA setup. It’s still doable, especially with Kubernetes, but the learning curve is definitely more steep. Then again, the feature set of Sentry itself is much richer - it’s not about just catching errors anymore; you have full-fledged build-in performance monitoring, session recording, and tons of other observation-related goodies.

One thing is kinda tricky is monitoring of your Sentry instance. Here is how I do it.

How to monitor your self-hosted Sentry instance

Using AI (but mostly programming) to automate declutter

Things. You need things in your life. Up to a point where those things start to own you. Your space, your mind, your time. I like some of my things, some I simply need, and some, well, do not spark joy. I declutter mostly using three options: giving stuff away, selling and throwing away. The last is last resort option - I tend to lean toward the two first one.
Using AI (but mostly programming) to automate declutter

Nice Human Being: Remote Employee Guide

Want to be a Nice Human Being and be loved by your coworkers? Just follow these 4 easy steps!

Nice Human Being: Remote Employee Guide

Cloudflare Zero Trust for small teams

Cloudflare Zero trust - which is planned be rebrand to Cloudflare One is pretty awesome platform that can accommodate small engineering teams when it comes to strickling security.

Unfortunately the Cloudflare docs can be quite confusing and sometimes even contradicting - it seems the product evolved quite rapidly and the documentation or blog posts were lagging behind and the old one - were never updated.

Cloudflare Zero Trust for small teams

Simple Mysql 8 replication on k8s

💡 NOTE: Interested in mysql-operator instead? See this blogpost.

Official kubernetes docs have a page about running replicated statefulset using mysql, unfortunately:

  • example uses mysql 5.7
  • it’s quite hard to grasp - it uses some custom percona-based image and assumes that you might want to scale statefulset into infinity
  • as both images are dated it just won’t work on ARM machines

I think in small to medium organisations/teams/projects what you usually want it some finite amount of replicas - maybe one that you could use for some read-only operations and for doing backups from. So let’s try to do that.

Simple Mysql 8 replication on k8s

How to upgrade your project to ESLint 9

Follow this simple, 5-step program to save your sanity!

How to upgrade your project to ESLint 9

Goodbye Dependabot, hello Renovate

For years, I have been ignoring Renovate because Dependabot was just there - it seems like it was build-into Github forever (it was not; Github acquired dependabot mid 2019).

As dependabot is not accepting support for new ecosystems, I decided to give Renovate a try, and OH BOY did I missed out on much. In comparison, it makes dependabot looks like toy for little kids. I have been using it for few weeks now and some pros.

Goodbye Dependabot, hello Renovate

Chrome 116+ refusing to ask for camera/microphone permissions (jitsi example)

This is a very brief post as I wasted literally hours of this (mostly running in circles) which turned out to be simply trivial. I hope that maybe it might help some lost soul someday.

Chrome 116+ refusing to ask for camera/microphone permissions (jitsi example)

I have a single 1.4TB mysql table, human help

Data is akin to code - the best data is data that is never stored. Unfortunately, this is not how products operate, and you might find yourself in a situation where data becomes a liability and a burden.

Recently, I have been working on a side project where the majority of the data in the app was stored in a single table. That table grew beyond a maintainable point; major pain points are nothing new, and in my case, it boiled down to:

I have a single 1.4TB mysql table, human help