<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>tjnome</title><link>https://tjnome.no/</link><description>Recent content on tjnome</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 01 May 2026 20:00:00 -0700</lastBuildDate><atom:link href="https://tjnome.no/index.xml" rel="self" type="application/rss+xml"/><item><title>Grafana 13: Git Sync in Open Source?!</title><link>https://tjnome.no/blogs/grafana-13-git-sync/</link><pubDate>Fri, 01 May 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/grafana-13-git-sync/</guid><description>&lt;p class="intro-paragraph"&gt;Grafana 13 dropped. I updated. I clicked around. And then I found it. &lt;strong&gt;Git sync for dashboards. In the open source version.&lt;/strong&gt; I may have yelled a little.&lt;/p&gt;
&lt;h2 id="the-feature"&gt;
 The Feature
 &lt;a href="#the-feature" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;You point Grafana at a git repo. It pulls your dashboard JSON. When you push changes, Grafana picks them up. When your cat walks across the keyboard and ruins a panel, you &lt;code&gt;git revert&lt;/code&gt; and it&amp;rsquo;s fixed. Dashboards as code, finally, without paying enterprise money for the privilege.&lt;/p&gt;</description></item><item><title>InfluxDB 3 Enterprise: Observability in the Homelab</title><link>https://tjnome.no/blogs/influxdb3-observability/</link><pubDate>Sun, 26 Apr 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/influxdb3-observability/</guid><description>&lt;p class="intro-paragraph"&gt;First things first: a massive thank you to &lt;a href="https://www.influxdata.com/" target="_blank" rel="noopener noreferrer"&gt;InfluxData&lt;/a&gt; for listening to the community and offering a proper &lt;strong&gt;at-home hobbyist license&lt;/strong&gt; for &lt;a href="https://docs.influxdata.com/influxdb3/enterprise/admin/license/" target="_blank" rel="noopener noreferrer"&gt;InfluxDB 3 Enterprise&lt;/a&gt;. Yes, you read that right. Enterprise-grade time-series database. In my basement. For free. Because enough homelab enthusiasts asked for it and InfluxData actually listened. This blog post exists because of their generosity, and I am eternally grateful.&lt;/p&gt;
&lt;h2 id="the-dream-one-database-to-rule-them-all"&gt;
 The Dream: One Database to Rule Them All
 &lt;a href="#the-dream-one-database-to-rule-them-all" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Before this revamp, my observability was&amp;hellip; scattered. Metrics here, logs there, a Grafana instance pointing at something that may or may not still exist. I wanted a single source of truth. One place where I could dump metrics, logs, traces, and Kubernetes events, then query them with actual SQL instead of whatever ancient dialect Prometheus speaks.&lt;/p&gt;</description></item><item><title>Goodbye Dokploy: The Homelab Grew Up</title><link>https://tjnome.no/blogs/homelab-revamp/</link><pubDate>Sat, 25 Apr 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/homelab-revamp/</guid><description>&lt;p class="intro-paragraph"&gt;Remember when this website lived in a Dokploy LXC container on my Proxmox mini-PC? Those were simpler times. Peaceful times. Times when "infrastructure" meant "one LXC with some Docker containers on it." Proxmox was already the hypervisor on that same box, running VMs and LXCs for other things. I just hadn't committed to doing it *properly* yet. Then I got ideas. Then I replaced the Dokploy LXC with a proper Kubernetes cluster, a GitHub runner, and enough automation to make SkyNet jealous. Now everything on that same mini-PC is wired together with Terraform, Ansible, scripts, and auto-updates. Send help.&lt;/p&gt;</description></item><item><title>Crimson Desert on Linux</title><link>https://tjnome.no/blogs/crimson-desert-proton/</link><pubDate>Mon, 20 Apr 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/crimson-desert-proton/</guid><description>&lt;p class="intro-paragraph"&gt;Just saved Pailune. Chapter 7, 139 hours in, and &lt;a href="https://store.steampowered.com/app/3321460/CRIMSON_DESERT/" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Crimson Desert&lt;/strong&gt;&lt;/a&gt; has its hooks in me deep. Here's how the Linux launch actually went — crashes, workarounds, and the people who fixed it.&lt;/p&gt;
&lt;picture&gt;
 &lt;source srcset="https://tjnome.no/img/crimson-desert-steam_hu_77bb44ab46cb8c5a.webp" type="image/webp"&gt;
 &lt;img src="https://tjnome.no/img/crimson-desert-steam.png" alt="Crimson Desert Steam Library" loading="lazy" width="1418" height="391"&gt;
&lt;/picture&gt;&lt;h2 id="it-did-not-just-work"&gt;
 It Did Not &amp;ldquo;Just Work&amp;rdquo;
 &lt;a href="#it-did-not-just-work" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Launch day on my RTX 5070 Ti: blue lens flare in the opening cutscene, then hard freeze. Audio kept going, GPU locked up. Every time. The 595 beta driver had a regression that crashed Blackwell cards at that exact moment.&lt;/p&gt;</description></item><item><title>A Housekeeping App for Mom and Dad</title><link>https://tjnome.no/projects/tj-housekeeper/</link><pubDate>Sun, 12 Apr 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/projects/tj-housekeeper/</guid><description>&lt;p class="intro-paragraph"&gt;My parents run a small hospitality business at &lt;a href="https://dovregubben.com" target="_blank" rel="noopener noreferrer"&gt;dovregubben.com&lt;/a&gt;. Cabins, rooms, guests coming and going — and someone always had to manually figure out which rooms needed cleaning, set up the lists, and make sure nothing fell through the cracks. It wasn't about paper schedules. It was about having control over everything.&lt;/p&gt;
&lt;p&gt;Then my mom had hip surgery. Every minute she spent wrangling room lists and tracking cleaning status was a minute she couldn&amp;rsquo;t afford. I wanted to build them something that would save time, stress, and mental overhead — completely free of charge, because that&amp;rsquo;s what family is for.&lt;/p&gt;</description></item><item><title>TJvox: macOS-Style Dictation for Linux</title><link>https://tjnome.no/projects/tjvox/</link><pubDate>Thu, 12 Mar 2026 20:00:00 -0700</pubDate><guid>https://tjnome.no/projects/tjvox/</guid><description>&lt;p class="intro-paragraph"&gt;I type a lot. Emails, code, chat messages, angry comments on the internet. My wrists were starting to file complaints. macOS has this delightful built-in dictation feature where you double-tap a key, speak, and it types for you. Linux... did not. At least not in a way that didn't involve shouting at a browser tab or paying some cloud API by the syllable. So I built my own.&lt;/p&gt;
&lt;h2 id="what-it-does"&gt;
 What It Does
 &lt;a href="#what-it-does" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;TJvox&lt;/strong&gt; is a local, offline voice dictation app for Linux (Wayland-first, because that&amp;rsquo;s what I run). Hit a hotkey, speak, and it transcribes your rambling into text using OpenAI&amp;rsquo;s Whisper — running entirely on your own machine. No data leaves the house.&lt;/p&gt;</description></item><item><title>Entur to InfluxDB: Real-time Public Transport Data</title><link>https://tjnome.no/projects/entur-influxdb/</link><pubDate>Wed, 06 Aug 2025 10:00:00 -0700</pubDate><guid>https://tjnome.no/projects/entur-influxdb/</guid><description>&lt;h2 id="project-status--open-source-"&gt;
 Project status – open source 🎉
 &lt;a href="#project-status--open-source-" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The full source code is now publicly available on GitHub:&lt;/p&gt;
&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/tjnome/EnturPulse" target="_blank" rel="noopener noreferrer"&gt;tjnome/EnturPulse&lt;/a&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The repository contains the Docker‑Compose stack, all Python utilities, and a detailed &lt;code&gt;README.md&lt;/code&gt; that explains how to spin up the whole pipeline locally.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="why-i-built-enturpulse"&gt;
 Why I built EnturPulse
 &lt;a href="#why-i-built-enturpulse" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I needed a &lt;strong&gt;large, complex, real‑world dataset&lt;/strong&gt; to test the performance of &lt;strong&gt;InfluxDB 3.x&lt;/strong&gt; with time‑series data collected from Entur. The PostgreSQL component was a necessary extra to repair faulty data and enrich it as much as possible before inserting it into InfluxDB.&lt;/p&gt;</description></item><item><title>Margin of Madness: A CSS Rebellion</title><link>https://tjnome.no/blogs/margin-madness/</link><pubDate>Tue, 29 Jul 2025 00:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/margin-madness/</guid><description>&lt;p class="intro-paragraph"&gt;You ever have one of those days? The kind where your desktop site looks like a pristine, orderly kingdom, only to have it descend into absolute chaos on a mobile screen? It feels like you're Henry of Skalitz, just trying to make sense of a world that's suddenly gone mad. Welcome to my Tuesday. The source of this particular misery wasn't a Cuman raid, but a single, treacherous line of CSS: &lt;code&gt;margin: auto;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Entur to InfluxDB: Real-time Public Transport Data Teaser</title><link>https://tjnome.no/projects/entur-influxdb-teaser/</link><pubDate>Mon, 28 Jul 2025 10:00:00 -0700</pubDate><guid>https://tjnome.no/projects/entur-influxdb-teaser/</guid><description>&lt;p&gt;This project is a work in progress focused on capturing real-time public transport data from &lt;a href="https://entur.no/" target="_blank" rel="noopener noreferrer"&gt;Entur.no&lt;/a&gt;
 and storing it in &lt;a href="https://www.influxdata.com/products/influxdb/" target="_blank" rel="noopener noreferrer"&gt;InfluxDB&lt;/a&gt;
 for live-time analytics and visualization. The &lt;em&gt;real&lt;/em&gt; reason, however, is to meticulously document and perhaps even publicly shame the 23 bus for its perpetual tardiness and consistent ruination of my schedule. The goal is to create a robust system for monitoring and analyzing public transport movements, providing insights into delays, traffic patterns, and service efficiency.&lt;/p&gt;</description></item><item><title>From Lumière to a Live Site: A Homelab Journey</title><link>https://tjnome.no/blogs/lumiere-to-live-site/</link><pubDate>Mon, 28 Jul 2025 10:00:00 -0700</pubDate><guid>https://tjnome.no/blogs/lumiere-to-live-site/</guid><description>&lt;p class="intro-paragraph"&gt;This website is my personal corner of the internet. My preciousss... We wants it, we needs it! And because it's so precious, it's built with a focus on simplicity and ease of maintenance.&lt;/p&gt;
&lt;h3 id="heh-heh-heh-unveiling-the-mechanics"&gt;
 Heh heh heh! Unveiling the Mechanics
 &lt;a href="#heh-heh-heh-unveiling-the-mechanics" class="heading-anchor" aria-hidden="true" tabindex="-1"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;At its core, this site is powered by &lt;strong&gt;&lt;a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer"&gt;Hugo&lt;/a&gt;
&lt;/strong&gt;. I write all my content in &amp;ldquo;simple Markdown files&amp;rdquo;, and Hugo transforms them into lightweight, HTML pages. This approach means no databases, just choo-choo-choo, blazing-fast content delivery. It’s perfect for a personal site where performance and ease of maintenance are key.&lt;/p&gt;</description></item><item><title>About Me</title><link>https://tjnome.no/about/</link><pubDate>Wed, 23 Jul 2025 10:00:00 -0700</pubDate><guid>https://tjnome.no/about/</guid><description>&lt;p&gt;I work for a leading technology company in Norway as a Senior Consultant. While my title is Senior Consultant, I often describe myself as a jack-of-all-trades. My work spans from implementing solutions, contributing to architectural design, designing solutions, maintaining existing systems, and working as a software developer.&lt;/p&gt;
&lt;p&gt;I have had the privilege of working as a consultant for numerous Norwegian companies, often being brought into challenging projects to help ensure their timely delivery.&lt;/p&gt;</description></item></channel></rss>