Archive

All published posts

2518 posts latest post 2026-07-10 simple view
Publishing rhythm
Jun 2026 | 26 posts

markdown split panel

Today I was playing with markdown split panels. I want to be able to compare and constrast occasionually, today the inspiration hit to do this using admonitions. [1] Mobile Users 🔄 You will need to rotate your device to see the side by side feature. The Markdown # [2] This is what I am going for, one admonition that is easy to remember, that nests inside of itself , and I can put as much markdown on the inside that I want. !!! vsplit I Have two opinions !!! vsplit Left Opinion supporting arguments * lorem ipsum * ipsum dolor - [x] lorem ipsum - [ ] ipsum dolor !!! vsplit Right Opinion supporting arguments * lorem ipsum * ipsum dolor - [ ] lorem ipsum - [x] ipsum dolor Here is the result of that markdown. I Have two opinions Left Opinion supporting arguments - lorem ipsum - ipsum dolor - lorem ipsum - ipsum dolor Right Opinion supporting arguments - lorem ipsum - ipsum dolor - lorem ipsum - ipsum dolor Vsplit Hello World Here is a hello worl...

Make MinIO Access Key

Today in my homelab [1] I wanted to setup a new service that needed a MinIO access key. So I created a new user and a new access key with the MinIO CLI rather than poking through the ui like I have before. [2] Global Level vs User Level # [3] The MinIO CLI has two levels of access, global and user level. Most of the commands in this post will have several ways to do similar tasks that would potentially work. We are going to prefer to use the user level commands for more control. For some commands such as listing Keys it is handy to use the global level. The Policy # [4] First we are going to make a new policy file named mypages_rw_policy.json. { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucket" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [...
Check out cloudnative-pg [1] and their project cloudnative-pg [2]. CloudNativePG is a comprehensive platform designed to seamlessly manage PostgreSQL databases within Kubernetes environments, covering the entire operational lifecycle from initial deployment to ongoing maintenance References: [1]: https://github.com/cloudnative-pg [2]: https://github.com/cloudnative-pg/cloudnative-pg
Just starred open-webui [1] by open-webui [2]. It’s an exciting project with a lot to offer. User-friendly AI Interface (Supports Ollama, OpenAI API, …) References: [1]: https://github.com/open-webui/open-webui [2]: https://github.com/open-webui
I like fcsonline’s [1] project tmux-thumbs [2]. A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator References: [1]: https://github.com/fcsonline [2]: https://github.com/fcsonline/tmux-thumbs

I’ve been back to putting some images on my blog lately and thinking about making them a bit thinner through the use of aspect ratio for simplicity. I’m leaning pretty heavy on tailwindcss these days due to some weird quirks of markdown-it-attrs I cannot have slashes in classes from markdown so I made a .cinematic class to achieve this.

.cinematic {
  @apply aspect-[2.39/1];
}

Example

screenshot-2025-01-31T14-50-00-094Z.png

An Aspect Ratio Guide for Every Filmmaker How can the aspect ratio of your film or TV show contribute to your story? No Film School · nofilmschool.com [1] A good reference of common screen ratios. I just realized that 16:9 is also 1.78:1. I’ve been putting some images on my blog again, and thinking about using some 2.39:1 ratio on them. References: [1]: https://nofilmschool.com/cinematic-aspect-ratio
- There is a glimmer of hope out there that normal people can scrap together enough gpu to really run the latest models themselves. The ui really appears to be having huge leaps forward such that doing things like rag is no longer such a research project that it was just a few years ago. So excited to see Prime go through this homelab [1] exercise. References: [1]: /homelab/

Attrs does not like ‘/’ characters in its classes, so to use some tailwind classes with custom values we must make new classes in our tailwind input css.

.cinematic {
  @apply aspect-[2.39/1];
}

Given the following markdown with attrs added to the image and to the paragraph block.

![screenshot-2025-01-31T14-50-00-094Z.png](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png){.aspect-[2.39/1]}

![screenshot-2025-01-31T14-50-00-094Z.png](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png){.cinematic}

{.cinematic}
![screenshot-2025-01-31T14-50-00-094Z.png](https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png)

We get the following output with only the middle one working correctly.

screenshot-2025-01-31T14-50-00-094Z.png{.aspect-[2.39/1]}

screenshot-2025-01-31T14-50-00-094Z.png

screenshot-2025-01-31T14-50-00-094Z.png

Note

The inline version of `.cinematic` works, but `.aspect-[2.39/1]` does not,

it turns into text after the image. The block version with the class before the image applies to the paragraph, not the image.

- Oh, this kills me to hear it. RSS is the OG [1] way to subscribe and share content out to others. It gives you control of what you subscribe to and reminds you when new content lands on your favorite sites. It is a huge component of web 1.0 and I feel is the most decentralized social media can ever hope to be. References: [1]: /og/

markata 0.8.0

I realize that I never did a post on markata 0.8.0, so here it is. 0.8.0 was released on Jan 2, 2024, just over a year ago at this point. This was the release that we got pydantic support, and multi feeds. [1] Pydantic Support Was kinda big # [2] Markata is leaning on pydanttic for configuration and Post models. These models are filled with validators such that you can give it an empty markdown post and it will figure out some pretty sane default values for the frontmatter. From there you can progressivly enhance your post with more information like title, date, tags, slug, description. validators are awesome!! for instance I don’t set the description on many of my posts by hand, I let the auto_description grab the first bit of text from the post most of the time. Multi Feeds # [3] Markata==0.8.1 brought multiple feeds into the mix, and started to take place of rss and sitemap. Feeds are a list of posts that are configured with a slug, filter, sort, reverse, description, and ...
2 min read

markata 0.8.0

I realize that I never did a post on markata 0.8.0, so here it is. 0.8.0 was released on Jan 2, 2024, just over a year ago at this point. This was the release that we got pydantic support, and multi feeds. [1] Pydantic Support Was kinda big # [2] Markata is leaning on pydantic for configuration and Post models. These models are filled with validators such that you can give it an empty markdown post and it will figure out some pretty sane default values for the frontmatter. From there you can progressively enhance your post with more information like title, date, tags, slug, description. validators are awesome!! for instance I don’t set the description on many of my posts by hand, I let the auto_description grab the first bit of text from the post most of the time. Multi Feeds # [3] Markata==0.8.1 brought multiple feeds into the mix, and started to take place of RSS and sitemap. Feeds are a list of posts that are configured with a slug, filter, sort, reverse, description, and ...
asottile [1] has done a fantastic job with all-repos [2]. Highly recommend taking a look. Clone all your repositories and apply sweeping changes. References: [1]: https://github.com/asottile [2]: https://github.com/asottile/all-repos
If you’re into interesting projects, don’t miss out on tailpipe [1], created by turbot [2]. select * from logs; Tailpipe is an open source SIEM for instant log insights, powered by DuckDB. Analyze millions of events in seconds, right from your terminal. References: [1]: https://github.com/turbot/tailpipe [2]: https://github.com/turbot
I recently discovered roomy [1] by muni-town [2], and it’s truly impressive. ATproto-connected p2p group comms References: [1]: https://github.com/muni-town/roomy [2]: https://github.com/muni-town
Behold, the Steam Brick A modder has transformed the Steam Deck in a screen-less, controller-less Steam Brick. Rock Paper Shotgun · rockpapershotgun.com [1] I fully believe in our right to repair, ewaste reduction, and bringing a second life to still good hardware that is not up for it’s originally intended purpose. This is a sick console like experience you can strap to the back of a tv, throw in your back to take on a trip, or leave stuffed in your vehicle to game in the backseat. Sucks that it cant do 4k, but I’ve used mine on large screens, and it does quite well for a lot of games, maybe not AAA, but the cartoony multplayer games I play with my kids do quite well. [2] References: [1]: https://www.rockpapershotgun.com/behold-the-steam-brick [2]: https://dropper.waylonwalker.com/api/file/f3114f19-21cd-4ee6-84a8-06b83346d052.webp
- Damn these deepseek memes go hard. Wild to see openai get played by their own game. It’s crazy that the normie news that I have seen on deepseek shows that the Chinese made what the Americans did at a fraction of the price, without taking notice that they are building on the shoulders of openai.

markata search

A side effect of Markata DidYouMean [1] is that we are able to implement some rudimentary search based on slug, title, tags, and description. [2] I made a video of the early work on using this side effect to search for content on markata.dev. Replay markata-search-1.mp4 [3] This was first implemented to solve 404 pages giving users a way to try to find the page that they tried to access. But it turned out to be a decent way to search through the docs. References: [1]: /markata-didyoumean/ [2]: https://dropper.waylonwalker.com/api/file/50cfa8dc-9d46-4f02-877b-688fa5510a83.png [3]: https://dropper.waylonwalker.com/api/file/fd677374-5ef1-41c7-8845-6de0e10f224b.mp4
- 👏👏👏 This one is really good. I’m right there with him on most of this. I am very hesitant on subscription models, and all the ai tools feel like they are getting ready to be the next round of death by a thousand cuts, this time with pretty limited free tier and relatively high prices to run. I’m sure we will see companies get taken by huge bills soon by building off of someone else’s service. On the flip side I’m definitely the guy that gets in a rut of just copy paste to the ai, wait for codeium to to inject. I feel like I have issues of momentum more than anything. When I’m on one side or the other I tend to stick it out for too long, but less so on going without because that llm drug is calling you when you hit a hard problem. I’m excited to see him build out a homelab [1] for llm stuff that he mentioned at the top. I’m interested, but probably not building one out for myself until we start to see some cheaper maybe used hardware to do it. References: [1]: /homelab/

Markata DidYouMean

Coming in Markata 0.9.1 is far better documentation. i.e. Documentation that actually exists for everything. As part of poking around I realized that I often go to look up the docs for a plugin and forget that the path is /markta/plugins/feeds, sometimes I might try /markata/feeds or /plugins/feeds.py or /feeds or I might even forget the plugin name exactly and try something like feed and get a 404. So I added a didyoumean plugin to markata that takes care of this. [1] I made a quick recording of this early feature, pay close attention to the url as it automatically updates to the correct page. markata-didyoumean.mp4 [2] Happy Path # [3] direct forward If you have one post called /markata/plugins/feeds, and it is the only post called feeds, any combination of /markata/feeds or /plugins/feeds or /feeds will all automatically redirect with an html [4] page (not a server 3xx) to the /markata/plugins/feeds post. Here is the snippet that does the redirect. <div class="container ...
2 min read
- Kelsey says several times in this interview, you don’t need kubernetes. If you are running one node you don’t need kubernetes. My question though is, would you use kubernetes? Ya I get it if you are a web developer, data scientist, backend dev, but if you are looking to bee a whole ass engineer, or infrastructure engineer, you know kubernetes, Should you use kubernetes on single node?
Models Pydantic Docs · docs.pydantic.dev [1] I came accross from_attributes today it allows creation of pydantic models from objects such as a sqlalchemy Base Model or while nesting pydantic models. I believe in the past I have ran into some inconsistencies with nesting pydantic models and I’ll bet one had from_attributes set and another did not. Arbitrary class instances¶ (Formerly known as “ORM Mode”/from_orm). Pydantic models can also be created from arbitrary class instances by reading the instance > attributes corresponding to the model field names. One common application of this functionality is integration with object-relational mappings (ORMs). To do this, set the from_attributes config value to True (see the documentation on Configuration for more details). The example here uses SQLAlchemy, but the same approach should work for any ORM. References: [1]: https://docs.pydantic.dev/latest/concepts/models/#rebuilding-model-schema
- Dang strong stance that tmux and zellij should not exist. I really do get his point though. Theres a good number of terminal features I often miss out on because I run tmux. Its an app that runs apps, and doesn’t let all of the signals back to the host. But its fantastic at what it does, and brings so much to the table that the little bit of downside it brings is well worth it to me. The other thing missing in this discussion is that I can take my hotkeys and session workflow to any machine just by running tmux. I do not need to run a certain terminal, or install it headlessly on a server to get special features just for it.

cold builds

Here are a list of some cold builds from my site. I’ve ran this site for a long time and would like to have some references to go back to, and wish I had kept a few profiles of cold builds laying around to compare with. The time is now lets keep some cold build links around for reference. [1] 01/27/2025 # [2] - https://ec314b08.waylonwalker-com.pages.dev/_profile/ - 429s - markata==0.9.0.dev5 has md_video open cache on every post issue - https://27f117fd.waylonwalker-com.pages.dev/_profile/ - 112s- markata==0.9.0.dev5 after fixing md_video issue - https://e6b8f64a.waylonwalker-com.pages.dev/_profile/ - 16s - markata==0.9.0.dev5 1 post not skipped, this one - https://10b778b4.waylonwalker-com.pages.dev/_profile/ - 5.65s - markata==0.9.0.dev5 fully hot cache build with no changes References: [1]: https://dropper.waylonwalker.com/api/file/cd8f9d96-948a-4e94-aa3d-2c352bb5657b.png [2]: #01272025
1 min read

pesos

Pesos is the act of Publish Elsewhere Syncicate to Own Site. It is an indieweb concept that I recently started applying to my own site. here does it skip again Note See <https://indieweb.org/PESOS> for more information, they have a ton of information about the indieweb In short it is the concept of pulling data from other sites that you use and republishing it to your own site. This gives a single source of information for you, and protection against sites and apis changing or rug pulling. Other people might have a lot more use cases for this, but I already begin a lot of my data right on my site. GitHub stars # [1] I am using the github api to get a list of my stars and then create posts in the github repo for my blog. This allows me to keep track of things I star on GitHub in my own way, and share them out with my rss feeds. [2] References: [1]: #github-stars [2]: https://dropper.waylonwalker.com/api/file/2380f814-a8cb-45d1-bb5b-538d171933e3.webp
Check out veekaybee [1] and their project gitfeed [2]. Feed of posts from Bluesky that have a GitHub link References: [1]: https://github.com/veekaybee [2]: https://github.com/veekaybee/gitfeed
I came across llama.vim [1] from ggml-org [2], and it’s packed with great features and ideas. Vim plugin for LLM-assisted code/text completion References: [1]: https://github.com/ggml-org/llama.vim [2]: https://github.com/ggml-org

hover z-index and positioning

I broke my sick wikilink hover [1] recently in a refactor, today I did some diving in to figure out what happened. Before # [2] As you can see in the screenshot below, the link is in a list of links, and when the hover image pops up it sits behind all of the other text. The z-index of the list-item is supposed to be raised above the others on hover. [3] Manually setting z-index to 20 in the inspector I noticed this message from devtools, “The position: static property prevents z-index from having an effect. Try setting position to something other than static.”, looking back at some of my refactoring I had relative in an old template and it was lost. [4] After # [5] After properly setting position to relative on the list-item, the hover image is raised above the others. [6] References: [1]: /sick-wikilink-hover/ [2]: #before [3]: https://dropper.waylonwalker.com/api/file/b3158b49-5c0f-4e52-b3e3-47ba67f5c801.webp [4]: https://dropper.waylonwalker.com/api/file/1c7fb24c-b77d...
Top Python libraries of 2024 Dive into our 10th annual Python Libraries roundup for 2024, now featuring separate curated lists for General Use and AI / ML / Data tools. Discover this year's most innovative additions to the eco... Tryolabs · tryolabs.com [1] Really good listicle of new modern top python libraries from 2024. Very well done article with images, links, and an actually quality listicle with many things I’ve never even heard of. References: [1]: https://tryolabs.com/blog/top-python-libraries-2024

analytics

I’ve been posting on this site since 2016, when layoffs were rolling through the company I worked for at the time. Starting a personal blog and a pile of side projects felt like one of the best things I could do for my resume, so off I went. This site is built on markata [1], more about that in the /colophon. [2] The old version of this page embedded static SVGs from my Python Markata build. Those files are gone in the markata-go site, so this page now renders the yearly posting history directly from the current content set. Post Contributions All Time Monthly # [3] Contribution Graph Error: Invalid JSON configuration invalid character '%' looking for beginning of object key string Post Contributions in 2026 # [4] Post Contributions in 2025 # [5] Post Contributions in 2024 # [6] Post Contributions in 2023 # [7] 2023 was a very busy year for me and I started slowing down. About mid year I felt like I had a lot that I wanted to get out, but felt like I couldn’t, because I...
ublue-os [1] has done a fantastic job with ucore [2]. Highly recommend taking a look. An OCI base image of Fedora CoreOS with batteries included References: [1]: https://github.com/ublue-os [2]: https://github.com/ublue-os/ucore
Just starred bazzite [1] by ublue-os [2]. It’s an exciting project with a lot to offer. Bazzite is a cloud native image built upon Fedora Atomic Desktops that brings the best of Linux gaming to all of your devices - including your favorite handheld. References: [1]: https://github.com/ublue-os/bazzite [2]: https://github.com/ublue-os
poolers.postgresql.cnpg.io CRD metadata.annotations Too long · Issue #325 · cloudnative-pg/charts Unable to deploy helm chart using ArgoCD. Getting following error Failed sync attempt to : one or more objects failed to apply, reason: CustomResourceDefinition.apiextensions.k8s.io "poolers.postgr... GitHub · github.com [1] I’ve never seen or needed to use a serversideapply in kubernetes before, but I ran into this same issue in my k3s homelab [2] while installing cloudnative-pg. You can do it with argo apiVersion: argoproj.io/v1alpha1 kind: Application spec: syncPolicy: syncOptions: - ServerSideApply=true and you can do it with kubectl kubectl apply --server-side --force-conflicts -f cnpg-1.25.0.yaml References: [1]: https://github.com/cloudnative-pg/charts/issues/325 [2]: /homelab/

I fixed lists in my blog

A small improvement to my blog today. I was checking out my /now post and noticed that lists have left padding but no discs or numbers. I popped open my tailwind/app.css added these lines and rebuilt. #post-body li { @apply list-disc; } #post-body ol { @apply list-decimal; } And rebuild, which I actually do with ⭐ casey just [1], but showing the command here for clarity. npx tailwindcss --input tailwind/app.css --output static/app-39.css WHY the applies # [2] Before # [3] [4] After # [5] [6] References: [1]: /casey-just/ [2]: #why-the-applies [3]: #before [4]: https://dropper.waylonwalker.com/api/file/5c48f763-5ef6-49b0-9e8f-5167ab046f05.webp [5]: #after [6]: https://dropper.waylonwalker.com/api/file/0cf1c5d9-0948-444f-9a6c-387d22b9db43.webp
1 min read

I built out a tool for myself to manage my nvim configuration, and I wanted to quickly see which one I am running in my starship prompt. Here’s the config I ended up with. It warns if the NVIM_APPNAME environment variable is not set, and it shows which nvim I am using if it is set.

[custom.nvim-manager-system]
when = '[[ ! -n "${NVIM_APPNAME}" ]]'
style = "bold yellow"
symbol = '[ ](fg:#15AABF)'
format = '$symbol[USING SYSTEM NVIM]($style)'

[env_var.NVIM_APPNAME]
style = "green"
symbol = '[ ](fg:#15AABF)'
format = '[$symbol${env_value}]($style)'
variable = "NVIM_APPNAME"
snorlax [1] by moonbeam-nyc [2] is a game-changer in its space. Excited to see how it evolves. wake and sleep Kubernetes deployments on a schedule References: [1]: https://github.com/moonbeam-nyc/snorlax [2]: https://github.com/moonbeam-nyc
I came across headlamp [1] from kubernetes-sigs [2], and it’s packed with great features and ideas. A Kubernetes web UI that is fully-featured, user-friendly and extensible References: [1]: https://github.com/kubernetes-sigs/headlamp [2]: https://github.com/kubernetes-sigs
Just starred headlamp [1] by headlamp-k8s [2]. It’s an exciting project with a lot to offer. A Kubernetes web UI that is fully-featured, user-friendly and extensible References: [1]: https://github.com/headlamp-k8s/headlamp [2]: https://github.com/headlamp-k8s
If you’re into interesting projects, don’t miss out on gitui [1], created by gitui-org [2]. Blazing 💥 fast terminal-ui for git [3] written in rust 🦀 References: [1]: https://github.com/gitui-org/gitui [2]: https://github.com/gitui-org [3]: /glossary/git/
The work on gitui [1] by extrawurst [2]. Blazing 💥 fast terminal-ui for git [3] written in rust 🦀 References: [1]: https://github.com/extrawurst/gitui [2]: https://github.com/extrawurst [3]: /glossary/git/
Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher Iconic font aggregator, collection, & patcher: 9,000+ glyph/icons, 60+ patched fonts: Hack, Source Code Pro, more. Popular glyph collections: Font Awesome, Octicons, Material Design Icons, and more Nerd Fonts · nerdfonts.com [1] Nerdfont cheatsheet is a fantastic way to copy paste icons into your shell. I just used it to juice up my starship prompt with my current $NVIM_APPNAME managed by nvim-manager [2] [3] References: [1]: https://www.nerdfonts.com/cheat-sheet [2]: /nvim-manager/ [3]: https://dropper.waylonwalker.com/api/file/3635351b-c006-4cff-8011-85c3b14bfc8f.webp

I recently noticed that my og images were missing emoji. They were taken using headless chrome in a container. I fixed it by adding an emoji font in the containerfile / dockerfile.

RUN apt-get update && apt-get install -y \
    # Add fonts with emoji support
    fonts-noto-color-emoji \
    && rm -rf /var/lib/apt/lists/*

Before #

Here’s what they were looking like with broken emoji fonts.

image

After #

And now with the fixed emoji font.

image

I put thought bubbles on my thoughts posts and stars on my github stars posts

one2nc [1] has done a fantastic job with cloudlens [2]. Highly recommend taking a look. k9s like CLI for AWS and GCP References: [1]: https://github.com/one2nc [2]: https://github.com/one2nc/cloudlens
I like dlvhdr’s [1] project gh-dash [2]. A beautiful CLI dashboard for GitHub 🚀 References: [1]: https://github.com/dlvhdr [2]: https://github.com/dlvhdr/gh-dash
I recently discovered kube-no-trouble [1] by doitintl [2], and it’s truly impressive. Easily check your clusters for use of deprecated APIs References: [1]: https://github.com/doitintl/kube-no-trouble [2]: https://github.com/doitintl
Manufacturer Recertified Drives | Enterprise Grade Manufacturer Recertified enterprise drives work and look like new. Rebuilt by the manufacturer and quality tested to ensure they function as new, our recertified drives save on cost. Shop now! ServerPartDeals.com · serverpartdeals.com [1] For my next drive upgrade in my homelab [2] I am gong to be using one of these factory recertified drives from serverpartdeals.com. Found them on an LTT video awhile back. They are some lightly used and recertified, fully burnt in drives. Shop for drives that are certified once again by the manufacturer to work like new. Factory ReCertified drives are cost-effective alternatives compared to factory-sealed new counter parts. Additionally, unlike in mass production, the re-certification process involves closer attention to the overall operation of the hardware so that the re-certification will not have to happen a 2nd time References: [1]: https://serverpartdeals.com/collections/manufacturer-recertified-drives [2]: /homelab/
GitHub - bootandy/dust: A more intuitive version of du in rust A more intuitive version of du in rust. Contribute to bootandy/dust development by creating an account on GitHub. GitHub · github.com [1] dust is one of my favorite rust rewrite tools. Its so useful for narrowing down file system bloat and cleaning up some disk space on your nearly full disks. It runs right in your terminal and gives you a nice bar graph on the top directories in use. [2] References: [1]: https://github.com/bootandy/dust?tab=readme-ov-file [2]: https://dropper.waylonwalker.com/api/file/31b206fd-d508-451e-ba96-860c5d8110d1.webp
Check out dust [1] by bootandy [2]. It’s a well-crafted project with great potential. A more intuitive version of du in rust References: [1]: https://github.com/bootandy/dust [2]: https://github.com/bootandy
Keycloak Keycloak - the open source identity and access management solution. Add single-sign-on and authentication to applications and secure services with minimum effort. Keycloak · keycloak.org [1] Keycloak looks like an interesting way to setup sso. It’s part of the cncf so it’s got a good backing. I want something better for argo workflows and this might be it. I’m curious what else I can tie into it. References: [1]: https://www.keycloak.org/