<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Keloran blog and random stuff</title>
    <link>https://keloran.dev/</link>
    <description>Recent content on Keloran blog and random stuff</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Keloran</copyright>
    <lastBuildDate>Thu, 15 May 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://keloran.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Flags.gg Rust Support</title>
      <link>https://keloran.dev/post/flags_rust/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <guid>https://keloran.dev/post/flags_rust/</guid>
      <description>&lt;p&gt;I have added rust support to flags.gg and by that I mean you can now call flags.gg inside rust&lt;/p&gt;&#xA;&lt;p&gt;but you can also turn flags on locally&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;use flags_rs::{Auth, Client};&#xA;&#xA;#[tokio::main]&#xA;async fn main() -&amp;gt; Result&amp;lt;(), Box&amp;lt;dyn std::error::Error&amp;gt;&amp;gt; {&#xA;    // Initialize the client&#xA;    let client = Client::builder()&#xA;        .with_auth(Auth {&#xA;            project_id: &amp;#34;your-project-id&amp;#34;.to_string(),&#xA;            agent_id: &amp;#34;your-agent-id&amp;#34;.to_string(),&#xA;            environment_id: &amp;#34;your-environment-id&amp;#34;.to_string(),&#xA;        })&#xA;        .with_memory_cache()&#xA;        .build();&#xA;&#xA;    // Check if a flag is enabled&#xA;    let is_feature_enabled = client.is(&amp;#34;my-feature&amp;#34;).enabled().await;&#xA;    println!(&amp;#34;Feature &amp;#39;my-feature&amp;#39; is enabled: {}&amp;#34;, is_feature_enabled);&#xA;&#xA;    // List all flags&#xA;    let all_flags = client.list().await?;&#xA;    println!(&amp;#34;All flags:&amp;#34;);&#xA;    for flag in all_flags {&#xA;        println!(&amp;#34;  {} ({}): {}&amp;#34;, flag.details.name, flag.details.id, flag.enabled);&#xA;    }&#xA;&#xA;    Ok(())&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Flags.gg Golang Support</title>
      <link>https://keloran.dev/post/flags_go/</link>
      <pubDate>Sun, 30 Mar 2025 23:00:00 +0000</pubDate>
      <guid>https://keloran.dev/post/flags_go/</guid>
      <description>&lt;p&gt;I have added Golang support to flags.gg and by that I mean you can now call flags.gg inside go&lt;/p&gt;&#xA;&lt;p&gt;but you can also turn flags on locally&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;&#x9;&amp;#34;github.com/flags-gg/go-flags&amp;#34;&#xA;&#x9;&amp;#34;log&amp;#34;&#xA;&#x9;&amp;#34;os&amp;#34;&#xA;)&#xA;&#xA;func main() {&#xA;&#x9;flags := flags.NewClient(flags.WithAuth(flags.Auth{&#xA;&#x9;&#x9;ProjectID:     &amp;#34;tester&amp;#34;,&#xA;&#x9;&#x9;AgentID:       &amp;#34;tester&amp;#34;,&#xA;&#x9;&#x9;EnvironmentID: &amp;#34;tester&amp;#34;,&#xA;&#x9;}))&#xA;&#xA;&#x9;if flags.Is(&amp;#34;test-flag&amp;#34;).Enabled() {&#xA;&#x9;&#x9;log.Println(&amp;#34;test-flag enabled&amp;#34;)&#xA;&#x9;}&#xA;&#xA;&#x9;if flags.Is(&amp;#34;test flag 2&amp;#34;).Enabled() {&#xA;&#x9;&#x9;log.Println(&amp;#34;test flag 2 enabled&amp;#34;)&#xA;&#x9;}&#xA;&#xA;&#x9;_ = os.Setenv(&amp;#34;FLAGS_TEST_FLAG_3&amp;#34;, &amp;#34;true&amp;#34;)&#xA;&#x9;if flags.Is(&amp;#34;test flag 3&amp;#34;).Enabled() {&#xA;&#x9;&#x9;log.Println(&amp;#34;test flag 3 enabled&amp;#34;)&#xA;&#x9;}&#xA;&#xA;&#x9;_ = os.Setenv(&amp;#34;FLAGS_TEST_FLAG_4&amp;#34;, &amp;#34;true&amp;#34;)&#xA;&#x9;if flags.Is(&amp;#34;test-flag-4&amp;#34;).Enabled() {&#xA;&#x9;&#x9;log.Println(&amp;#34;test flag 4 enabled&amp;#34;)&#xA;&#x9;}&#xA;&#xA;&#x9;log.Println(&amp;#34;flags enabled or disabled&amp;#34;)&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>CV</title>
      <link>https://keloran.dev/post/cv/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://keloran.dev/post/cv/</guid>
      <description>&lt;h1 id=&#34;cv-and-description&#34;&gt;CV and Description&lt;/h1&gt;&#xA;&lt;p&gt;Its probably a good idea to have a CV and description of somewhere.&lt;/p&gt;&#xA;&lt;p&gt;I have been a software engineer for over 25 years, working on various projects and for some very well known companies.&lt;/p&gt;&#xA;&lt;h2 id=&#34;personal-projects&#34;&gt;Personal projects&lt;/h2&gt;&#xA;&lt;p&gt;All these github orgs are mine, I also recently soft-launched a side project of &lt;a href=&#34;https://flags.gg&#34;&gt;Flags.gg&lt;/a&gt; which is a feature flag system like LaunchDarkly&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://linkedin.com/in/keloran&#34;&gt;LinkedIn&lt;/a&gt; My LinkedIn Account&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/keloran&#34;&gt;Keloran&lt;/a&gt; My Personal github account&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flags.gg</title>
      <link>https://keloran.dev/post/flags.gg/</link>
      <pubDate>Mon, 06 Jan 2025 14:10:25 +0000</pubDate>
      <guid>https://keloran.dev/post/flags.gg/</guid>
      <description>&lt;h2 id=&#34;flagsgg-launched&#34;&gt;Flags.gg Launched&lt;/h2&gt;&#xA;&lt;p&gt;On 2024-12-24 I soft launched (soft because not all features are finished yet, but enough to get it launched) the service&lt;/p&gt;&#xA;&lt;p&gt;The service is works with the majority of features in place&lt;/p&gt;&#xA;&lt;h4 id=&#34;live-features&#34;&gt;Live Features&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Multi Project&lt;/p&gt;&#xA;&lt;p&gt;If you have a plan that supports multiple projects, then the support exists that flags don&amp;rsquo;t clash with each other&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Multi Agent&lt;/p&gt;&#xA;&lt;p&gt;You might need multi agents, e.g. a dashboard and a landing page (like flags.gg)&lt;/p&gt;</description>
    </item>
    <item>
      <title>1tn.pw</title>
      <link>https://keloran.dev/current/1tn-pw/</link>
      <pubDate>Sun, 15 Dec 2024 23:03:07 +0000</pubDate>
      <guid>https://keloran.dev/current/1tn-pw/</guid>
      <description>&lt;p&gt;This is a very simple url shortner, it does exactly that&lt;/p&gt;&#xA;&lt;h3 id=&#34;it-has-an-increadbly-simple-api&#34;&gt;It has an increadbly simple API&lt;/h3&gt;&#xA;&lt;p&gt;Very simple API&lt;/p&gt;&#xA;&lt;h2 id=&#34;create&#34;&gt;Create&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl --request POST \&#xA;  --url http://api.1tn.pw/create \&#xA;  --header &amp;#39;Content-Type: application/json&amp;#39; \&#xA;  --data &amp;#39;{&#xA; &amp;#34;url&amp;#34;: &amp;#34;https://keloran.dev&amp;#34;&#xA;}&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returns&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&#xA; &amp;#34;short&amp;#34;: &amp;#34;yJjWqM&amp;#34;,&#xA; &amp;#34;url&amp;#34;: &amp;#34;https://keloran.dev&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;get&#34;&gt;Get&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl --request GET \&#xA;  --url https://api.1tn.pw/yJjWqM \&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returns&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&#xA; &amp;#34;long&amp;#34;: &amp;#34;https://keloran.dev&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/1tn-pw&#34;&gt;Github Link&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://1tn.pw&#34;&gt;Company Site&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flags.gg</title>
      <link>https://keloran.dev/current/flags/</link>
      <pubDate>Sun, 15 Dec 2024 00:00:00 +0100</pubDate>
      <guid>https://keloran.dev/current/flags/</guid>
      <description>&lt;p&gt;This is a feature flag system, I have been designing for a few months now,&lt;/p&gt;&#xA;&lt;p&gt;it has a few nice features and works in React and NextJS&lt;/p&gt;&#xA;&lt;p&gt;it will soft launch on Boxing Day 2024&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Implemented features&#xA;* NextJS clientside support&#xA;* React support&#xA;* multi project&#xA;* multi agent&#xA;* multi Environment&#xA;* secret menus with custom keycombos&#xA;* golang agent now supports local override of flags&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Planned features&#xA;* Flag promotion from dev to production&#xA;* NextJS server support for reading if flag is enabled&#xA;* RBAC support&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/flags-gg&#34;&gt;Github Link&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Todo List</title>
      <link>https://keloran.dev/current/todo-list/</link>
      <pubDate>Tue, 19 Dec 2023 08:18:04 +0000</pubDate>
      <guid>https://keloran.dev/current/todo-list/</guid>
      <description>&lt;h1 id=&#34;another-project&#34;&gt;Another project&lt;/h1&gt;&#xA;&lt;p&gt;So I decided to create another project, this was mainly to re-learn react, and to get back into the swing of things, so what is it&lt;/p&gt;&#xA;&lt;p&gt;Well if you can&amp;rsquo;t guess by the title, its a todo-list, specifically &lt;a href=&#34;https://todo-list.app&#34;&gt;Todo-List.app&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;features&#34;&gt;Features&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Entirly private, encryption happens in browser&lt;/li&gt;&#xA;&lt;li&gt;Storage is only of the encrypted form&lt;/li&gt;&#xA;&lt;li&gt;Login is using Keycloak, so no &amp;ldquo;real&amp;rdquo; details are retained&lt;/li&gt;&#xA;&lt;li&gt;Export/Import todo.txt&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;unfinished-features&#34;&gt;Unfinished features&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Project support (its a very simple todo, only items and sub-items atm)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/todo-lists-app&#34;&gt;Github Link&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cluster Update</title>
      <link>https://keloran.dev/post/cluster_update/</link>
      <pubDate>Tue, 28 Mar 2023 11:21:05 +0100</pubDate>
      <guid>https://keloran.dev/post/cluster_update/</guid>
      <description>&lt;h1 id=&#34;cluster-update&#34;&gt;Cluster Update&lt;/h1&gt;&#xA;&lt;p&gt;My kubernetes cluster runs on a mix of RaspberryPI 4s, and x86(AMD64) machines, but because I built it originally with only the raspberrys, my control plane was on a PI&lt;/p&gt;&#xA;&lt;p&gt;Well that was working fine for nearly 2 years, but the SD card on the control plane died, which wasn&amp;rsquo;t a good time&lt;/p&gt;&#xA;&lt;p&gt;So I decided to what I always do, and go nuts&lt;/p&gt;&#xA;&lt;h2 id=&#34;spending-spree&#34;&gt;Spending spree&lt;/h2&gt;&#xA;&lt;p&gt;So I purchased a few things to tackle this issue&lt;/p&gt;</description>
    </item>
    <item>
      <title>Old iPads Modern Use</title>
      <link>https://keloran.dev/post/ipads/</link>
      <pubDate>Sat, 04 Feb 2023 09:37:57 +0000</pubDate>
      <guid>https://keloran.dev/post/ipads/</guid>
      <description>&lt;h1 id=&#34;old-ipads-with-a-modern-use&#34;&gt;Old iPads with a Modern Use&lt;/h1&gt;&#xA;&lt;p&gt;I have gone quite heavy into home automation, not too extreme (mainly because I don&amp;rsquo;t have a lot of automated products) but enough that it has made an impact on my life, I have the following automations&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Automatic lights in a few rooms&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kitchen: the light comes on when you enter the room, and only turns off after it has been vacant for 5 minutes (if your stood at the stove and haven&amp;rsquo;t moved much I don&amp;rsquo;t want the light to go off)&lt;/li&gt;&#xA;&lt;li&gt;Dining Room: light comes on when you go past a sensor in the hall/stairs (there isn&amp;rsquo;t a sensor in the dining room)&lt;/li&gt;&#xA;&lt;li&gt;Living Room: light comes on when you enter the room, and goes off if there is no activity for 5 minutes and the TV isn&amp;rsquo;t on (sat at the sofa watching something shouldn&amp;rsquo;t turn the lights off)&lt;/li&gt;&#xA;&lt;li&gt;Stairs: Turn on when you enter the stairs either from the top or the bottom, turn off after 1 minute of no activity&lt;/li&gt;&#xA;&lt;li&gt;Bedroom: Turn on in the morning, turn off when everyone &amp;ldquo;should&amp;rdquo; have left the bedroom&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;future-plans&#34;&gt;Future plans&lt;/h4&gt;&#xA;&lt;p&gt;There are plans for future automations, every room has a temperature sensor in it, and will have wall heaters (I live in the UK) that turn on when the sensor detects the temperature not the heater detecting the temperature, this is to avoid it thinking &amp;ldquo;I&amp;rsquo;m nice and warm and 10ft from the nearest person screw them&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mailspring Inverse Images</title>
      <link>https://keloran.dev/post/mailspring_inverse/</link>
      <pubDate>Mon, 09 Jan 2023 22:19:57 +0000</pubDate>
      <guid>https://keloran.dev/post/mailspring_inverse/</guid>
      <description>&lt;h1 id=&#34;inverse-images-in-mailspring&#34;&gt;Inverse Images in Mailspring&lt;/h1&gt;&#xA;&lt;p&gt;So I run most apps in darkmode, and this can lead to a few issues, namely in Mailspring which does darkmode in the &amp;ldquo;easy&amp;rdquo; method, which is to inverse(100%) everything&#xA;now this makes general emails really easy, the problem is when you get to images, because inversed images are horrible to look at&lt;/p&gt;&#xA;&lt;p&gt;So I got bored over new year, and decided I was sick of looking at them, and because I use Dracula for everything, I set off on my journey&lt;/p&gt;</description>
    </item>
    <item>
      <title>Broken i915</title>
      <link>https://keloran.dev/post/broken_i915/</link>
      <pubDate>Mon, 03 Oct 2022 15:08:21 +0100</pubDate>
      <guid>https://keloran.dev/post/broken_i915/</guid>
      <description>&lt;h1 id=&#34;well-that-was-annoying&#34;&gt;Well that was annoying&lt;/h1&gt;&#xA;&lt;p&gt;So I run arch on my framework, and because I&amp;rsquo;m slightly an idiot I didn&amp;rsquo;t have linux/linux-headers in the do not upgrade filter, now thats a lesson I won&amp;rsquo;t forget soon&lt;/p&gt;&#xA;&lt;p&gt;I did the standard upgrade, which brought with it the latest (5.9.12) kernel with it, wish I remembered it did that, because when I rebooted, my display no longer worked, and once it got to sway, and didn&amp;rsquo;t initiate the eGPU, my FPS on sway was about 0.000005 so impossible to do anything&lt;/p&gt;</description>
    </item>
    <item>
      <title>Systemd Homed Buildkit</title>
      <link>https://keloran.dev/post/systemd-homed-buildkit/</link>
      <pubDate>Tue, 23 Aug 2022 14:34:09 +0100</pubDate>
      <guid>https://keloran.dev/post/systemd-homed-buildkit/</guid>
      <description>&lt;h1 id=&#34;premise&#34;&gt;Premise&lt;/h1&gt;&#xA;&lt;p&gt;So I decided to switch my home directory to use systemd-homed, now this is a cool system that works with btrfs and does snapshoting built in, this led to a few issues though&lt;/p&gt;&#xA;&lt;h1 id=&#34;issue&#34;&gt;Issue&lt;/h1&gt;&#xA;&lt;p&gt;So because of the way containerd and buildkit use squashfs it can&amp;rsquo;t submount inside the homed directory&lt;/p&gt;&#xA;&lt;h1 id=&#34;fix&#34;&gt;Fix&lt;/h1&gt;&#xA;&lt;p&gt;If you have multiple hdds then this is easier, if not your gonna have to create a directory on your system, doing it where I did it is not a good idea, but I&amp;rsquo;m not an expert&lt;/p&gt;</description>
    </item>
    <item>
      <title>NerdCTL on ArchLinux</title>
      <link>https://keloran.dev/post/nerdctl_archlinux/</link>
      <pubDate>Tue, 26 Apr 2022 17:41:50 +0100</pubDate>
      <guid>https://keloran.dev/post/nerdctl_archlinux/</guid>
      <description>&lt;h1 id=&#34;archlinux-nerdctl&#34;&gt;ArchLinux NerdCTL&lt;/h1&gt;&#xA;&lt;p&gt;Arch is a lot like Slackware and Gentoo, whilst it does have a package manager, you have to know what you want before things work&lt;/p&gt;&#xA;&lt;p&gt;so NerdCTL has the ability to use buildkit to install stuff on multi-arch but that isn&amp;rsquo;t as easy as you would like and as such there are a few things that need installing to make it work&lt;/p&gt;&#xA;&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;&#xA;&lt;p&gt;This will need &lt;a href=&#34;https://github.com/Jguer/yay&#34;&gt;YAY&lt;/a&gt; (well there are others but if you copy paste then its yay)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Framework Laptop</title>
      <link>https://keloran.dev/post/framework_laptop/</link>
      <pubDate>Tue, 26 Apr 2022 10:02:44 +0100</pubDate>
      <guid>https://keloran.dev/post/framework_laptop/</guid>
      <description>&lt;h1 id=&#34;framework-laptop&#34;&gt;Framework Laptop&lt;/h1&gt;&#xA;&lt;p&gt;My MBP decided the touchbar and bridgeos was going to basiclly blow up, so because of this I decided it was time I tried to daily drive linux again&lt;/p&gt;&#xA;&lt;p&gt;I bought a framework laptop with the following specs&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;i7-1165G7&lt;/li&gt;&#xA;&lt;li&gt;64Gb DDR4-3200&lt;/li&gt;&#xA;&lt;li&gt;1TB SN850&lt;/li&gt;&#xA;&lt;li&gt;US Keyboard&lt;/li&gt;&#xA;&lt;li&gt;UK PowerSupply&lt;/li&gt;&#xA;&lt;li&gt;Expansions&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MicroSD&lt;/li&gt;&#xA;&lt;li&gt;250Gb&lt;/li&gt;&#xA;&lt;li&gt;DisplayPort&lt;/li&gt;&#xA;&lt;li&gt;2x USB-C&lt;/li&gt;&#xA;&lt;li&gt;USB-A&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I decided to get the UK powersupply so that my wife could keep using my MBPs for her work laptop and it means that I have a pretty small power supply that can also be used with my soldering iron&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mistakes Were Made</title>
      <link>https://keloran.dev/post/mistakes/</link>
      <pubDate>Mon, 14 Mar 2022 22:12:30 +0000</pubDate>
      <guid>https://keloran.dev/post/mistakes/</guid>
      <description>&lt;h1 id=&#34;mistakes-were-made&#34;&gt;Mistakes were made&lt;/h1&gt;&#xA;&lt;p&gt;Well I&amp;rsquo;ve had a fun weekend, on one side I &amp;ldquo;finally&amp;rdquo; caught covid and as such my concentration levels were very low, now that doesn&amp;rsquo;t make up for what I did but at least I have 1/2 an out&lt;/p&gt;&#xA;&lt;h3 id=&#34;what-happened&#34;&gt;What happened&lt;/h3&gt;&#xA;&lt;p&gt;I decided to do a little cleaning up of my kubernetes cluster, and decided that I should remove some deployments that weren&amp;rsquo;t in use, that was going fine, but then I decided to try and move some of the things that were more &amp;ldquo;central&amp;rdquo; to their correct namespace,&lt;br&gt;&#xA;&lt;code&gt;correct is a probably the wrong word, since I do kind of follow the principle of a namespace for a service rather than a namespace for a project (e.g. all of chewedfeed&#39;s stuff goes in the chewedfeed one, some things should be seperate if they are used by multiple things)&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retro Board Update</title>
      <link>https://keloran.dev/post/retro-board-update/</link>
      <pubDate>Sat, 19 Feb 2022 13:50:20 +0000</pubDate>
      <guid>https://keloran.dev/post/retro-board-update/</guid>
      <description>&lt;h1 id=&#34;retro-board-update&#34;&gt;Retro Board Update&lt;/h1&gt;&#xA;&lt;p&gt;Well after a couple of months of coding ive got about 50% through doing reto-board, major progress has been made, it is now techniclly possible to sign up for it,&lt;/p&gt;&#xA;&lt;p&gt;you can&amp;rsquo;t yet make any boards, but there an &lt;a href=&#34;https://retro-board.it/example&#34;&gt;example&lt;/a&gt; version of what a board will look like non of the functionality works in the &lt;a href=&#34;https://retro-board.it/example&#34;&gt;example&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;it took quite a while for me to get the login to work, and the main reason to that is undocumented bits that I had to get working myself, for example &amp;ldquo;can I do this / userAllowed&amp;rdquo; is not a standard feature it seems&#xA;at least not in the golang libraries for keycloak, so I had to go down a very long and winding path&lt;/p&gt;</description>
    </item>
    <item>
      <title>K3OS</title>
      <link>https://keloran.dev/post/k3os/</link>
      <pubDate>Sun, 06 Feb 2022 17:52:44 +0000</pubDate>
      <guid>https://keloran.dev/post/k3os/</guid>
      <description>&lt;h1 id=&#34;k3os&#34;&gt;K3OS&lt;/h1&gt;&#xA;&lt;p&gt;K3OS is kinda self explanitory if you know what K3s is, if not then &lt;a href=&#34;https://k3os.io&#34;&gt;k3OS&lt;/a&gt; is Rancher&amp;rsquo;s &lt;a href=&#34;https://k3s.io&#34;&gt;k3s&lt;/a&gt; which is a kubernetes compatible version but a lot smaller&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-did-i-tell-you-that&#34;&gt;Why did I tell you that&lt;/h2&gt;&#xA;&lt;p&gt;Well now that bit is out of the way, I upgraded ubuntu on one of my raspberry pi 3&amp;rsquo;s, and at the same time upgraded k3s to the latest version, and that pi became almost impossible to use with kubernetes, pods failing all the time,&lt;br&gt;&#xA;since I needed to wipe it anyway, and possibly replace with a pi4 (which are harder to find than rocking-horse-{redacted}) why not give k3os a shot, this is where the fun began&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update NerdCTL on RancherDesktop macOS</title>
      <link>https://keloran.dev/post/nerdctl/</link>
      <pubDate>Thu, 03 Feb 2022 10:46:56 +0000</pubDate>
      <guid>https://keloran.dev/post/nerdctl/</guid>
      <description>&lt;h1 id=&#34;issue&#34;&gt;Issue&lt;/h1&gt;&#xA;&lt;p&gt;So you are already using RancherDesktop and NerdCTL from the betas congrats, but you want to use the multi-platform build&lt;/p&gt;&#xA;&lt;p&gt;so you need to update Rancher and Nerd, well thats where the issue exists, Lima doesnt update NerdCTL automatically so you need to update your instances version&lt;/p&gt;&#xA;&lt;h2 id=&#34;fix&#34;&gt;Fix&lt;/h2&gt;&#xA;&lt;p&gt;First you need to get into the instance&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LIMA_HOME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/Users/&amp;lt;username&amp;gt;/Library/Application&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Support/rancher-desktop/lima &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;&#x9;/Applications/Rancher&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Desktop.app/Contents/Resources/resources/darwin/lima/bin/limactl &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;&#x9;shell &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; sudo --preserve-env&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;CONTAINERD_ADDRESS sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that your in the instance, you need to update NerdCTL&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating Vault with 1Password in Kubernetes</title>
      <link>https://keloran.dev/post/1password_vault_kubernetes/</link>
      <pubDate>Mon, 10 Jan 2022 17:14:04 +0000</pubDate>
      <guid>https://keloran.dev/post/1password_vault_kubernetes/</guid>
      <description>&lt;h1 id=&#34;integrating-vault-with-1password-in-kubernetes&#34;&gt;Integrating Vault with 1Password in Kubernetes&lt;/h1&gt;&#xA;&lt;p&gt;I decided that I should probably get a real handle on my passwords and secrets in kubernetes, since kubernetes is not very good at keeping secrets&lt;/p&gt;&#xA;&lt;p&gt;So I don&amp;rsquo;t generally take a helm chart or kube-schema at face value, this has more to do with I prefer to keep things in their own namespace rather than in &amp;ldquo;default&amp;rdquo;, because of this I tend to clone the chart first&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retro Board</title>
      <link>https://keloran.dev/backburner/retro-board/</link>
      <pubDate>Mon, 06 Dec 2021 15:31:36 +0000</pubDate>
      <guid>https://keloran.dev/backburner/retro-board/</guid>
      <description>&lt;h1 id=&#34;retro-board&#34;&gt;Retro Board&lt;/h1&gt;&#xA;&lt;p&gt;Well I&amp;rsquo;ve started another project, retro-board.it this is just going to be a very simple app, that has a couple of options&lt;/p&gt;&#xA;&lt;h3 id=&#34;initial-signin&#34;&gt;Initial Signin&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Ask the user what the Company name is, this is to create a subdomain with that company name (if it doesnt already exist) - if the company name already exists then enter the password for the domain&lt;/li&gt;&#xA;&lt;li&gt;Ask the user for a Team name&lt;/li&gt;&#xA;&lt;li&gt;Ask if they would like to use single sign-on (Google | Github) or accounts&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;team-board-setup&#34;&gt;Team Board Setup&lt;/h3&gt;&#xA;&lt;p&gt;The team board starts with the following options&lt;/p&gt;</description>
    </item>
    <item>
      <title>RaspberryPI cluster</title>
      <link>https://keloran.dev/post/raspberrypi_cluster/</link>
      <pubDate>Thu, 14 Oct 2021 10:39:53 +0100</pubDate>
      <guid>https://keloran.dev/post/raspberrypi_cluster/</guid>
      <description>&lt;p&gt;Well I made Kubernetes cluster using Raspberry PIs, I largely followed the guide &lt;a href=&#34;https://rpi4cluster.com&#34;&gt;RasperryPI 4 Cluster&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;It has the following features&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;5 Raspberry Pi 4s, 4Gb RAM&lt;/li&gt;&#xA;&lt;li&gt;1 DualCore x64, 16Gb RAM&lt;/li&gt;&#xA;&lt;li&gt;1 DualCore x64, 4Gb RAM&lt;/li&gt;&#xA;&lt;li&gt;4Tb storage distributed over the whole cluster&lt;/li&gt;&#xA;&lt;li&gt;ClusterCTRL, this is so power goes through the backplane rather than having 5 seperate power sources&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Things that are using the cluster, well this site for one&lt;/p&gt;</description>
    </item>
    <item>
      <title>BugFix.es</title>
      <link>https://keloran.dev/backburner/bugfixes/</link>
      <pubDate>Wed, 13 Oct 2021 15:05:44 +0100</pubDate>
      <guid>https://keloran.dev/backburner/bugfixes/</guid>
      <description>&lt;p&gt;This is a bug tracking system, any time an error happens on your site it tells bugfixes in the agent for your language,&lt;/p&gt;&#xA;&lt;p&gt;then if the error occurs quickly or once in a while it informs the user some how&lt;/p&gt;&#xA;&lt;p&gt;nothing is public yet (the javascript version released needs fixing)&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Planned languages supported&#xA;* Go&#xA;* Javascript&#xA;* Swift&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Planned notification systems&#xA;* Auto-create tickets&#xA;    * Jira&#xA;    * YouTrack&#xA;    * Jetbrains Space&#xA;    * GitHub&#xA;* Channel messages&#xA;    * Slack&#xA;    * Microsoft Teams&#xA;    * Jetbrains Space&#xA;* Email&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/bugfixes&#34;&gt;GitHub Link&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>K8sDeploy.dev</title>
      <link>https://keloran.dev/backburner/k8sdeploy/</link>
      <pubDate>Wed, 13 Oct 2021 15:05:44 +0100</pubDate>
      <guid>https://keloran.dev/backburner/k8sdeploy/</guid>
      <description>&lt;p&gt;This project is so that I can deploy projects into my cluster using github pipelines&lt;/p&gt;&#xA;&lt;p&gt;now that sounds simle enough, except there aren&amp;rsquo;t any (from my limited research) deployment agents for kubernetes that work on arm&lt;/p&gt;&#xA;&lt;p&gt;So whats my plan, well this system works thus&lt;/p&gt;&#xA;&lt;h3 id=&#34;method&#34;&gt;Method&lt;/h3&gt;&#xA;&lt;p&gt;There is a github action that is triggered in your pipeline, this talks to an orchestrator on k8sdeploy&lt;/p&gt;&#xA;&lt;p&gt;the orchestrator then sends a message to a queue with a topic for an agent that has been registered by you for your cluster&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes</title>
      <link>https://keloran.dev/post/kubernetes/</link>
      <pubDate>Wed, 13 Oct 2021 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/kubernetes/</guid>
      <description>&lt;p&gt;Well I&amp;rsquo;ve decided that I should probably learn kubernetes, so I built a raspberry pi cluster&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://keloran.dev/&#34;&gt;Home&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Static Generator</title>
      <link>https://keloran.dev/past/static_generator/</link>
      <pubDate>Fri, 01 Jan 2021 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/past/static_generator/</guid>
      <description>&lt;p&gt;Started a index generator, all it does is reads the projects and blog directory,&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;if there are pages in the project folder&#xA;&lt;ul&gt;&#xA;&lt;li&gt;current folder, add to that section&lt;/li&gt;&#xA;&lt;li&gt;past folder, add to that section&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;if its in blog folder it adds those to that section&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Very simple, I&amp;rsquo;ll add more features in future, but this is just very simple&lt;/p&gt;&#xA;&lt;p&gt;Added a very simple editor&#xA;Added an RSS generator&lt;/p&gt;&#xA;&lt;h4 id=&#34;future-plans&#34;&gt;Future plans&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;del&gt;Make it a simple editor, that generates the files themselves&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;del&gt;Added RSS generator&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;Generate HTML pages from the CommonMark so that can be hosted outside of github.io&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/keloran/staticg&#34;&gt;GitHub Link&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keyboard Madness</title>
      <link>https://keloran.dev/post/keyboard_madness/</link>
      <pubDate>Thu, 16 Apr 2020 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/keyboard_madness/</guid>
      <description>&lt;p&gt;Well I finally pulled the plug and bought a Planck,&lt;/p&gt;&#xA;&lt;p&gt;rather than build my own though I went with a &lt;a href=&#34;https://ergodox-ez.com/pages/planck&#34;&gt;Planck EZ&lt;/a&gt;&#xA;also rather than buy 1 like any sensible person, when it costs nearly 300 quid, I bought 2&lt;/p&gt;&#xA;&lt;p&gt;and because obviously I&amp;rsquo;m npt to be trusted I decided to flash one and learn Workman, I have a couple of firmwares if anyone else is insane like me&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://configure.ergodox-ez.com/planck-ez/layouts/4OG3M/latest/0&#34;&gt;Workman&lt;/a&gt; this layout is workman, but also moves the numbers on the upper layer to a reverse T pattern is the easiest way to explain it&lt;/p&gt;</description>
    </item>
    <item>
      <title>ZSH Plugin</title>
      <link>https://keloran.dev/post/zsh_plugin/</link>
      <pubDate>Thu, 30 Jan 2020 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/zsh_plugin/</guid>
      <description>&lt;p&gt;I decided that I should stick all my aliases and functions that I use into a zsh plugin, that way I can maintain it separately&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;githubhttpsgithubcomkelorantoolkit-zsh-plugin&#34;&gt;&lt;a href=&#34;https://github.com/Keloran/toolkit-zsh-plugin&#34;&gt;Github&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://keloran.dev/&#34;&gt;Home&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>BugFix.es Progress</title>
      <link>https://keloran.dev/post/bugfixes_progress/</link>
      <pubDate>Tue, 07 Jan 2020 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/bugfixes_progress/</guid>
      <description>&lt;p&gt;Progress has been slow to start with, but that should now speed up&lt;/p&gt;&#xA;&lt;p&gt;I have finished the authorizer, and moved the storage system to Postgres from Dynamo, the main reason for that is that a lot of the data is relational&#xA;so it makes sense to put it in a relational database&lt;/p&gt;&#xA;&lt;h3 id=&#34;nest&#34;&gt;Nest&lt;/h3&gt;&#xA;&lt;p&gt;This is the service where all CRUD operations take place, it is also what triggers Hive&lt;/p&gt;&#xA;&lt;h3 id=&#34;hive&#34;&gt;Hive&lt;/h3&gt;&#xA;&lt;p&gt;This is the service that works out what to do with a bug, is it a new one, has it happened before, is it happening frequently, it also triggers the notification system&lt;/p&gt;</description>
    </item>
    <item>
      <title>Going back to BugFix.es</title>
      <link>https://keloran.dev/post/going_back_to_bugfixes/</link>
      <pubDate>Thu, 05 Dec 2019 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/going_back_to_bugfixes/</guid>
      <description>&lt;p&gt;I have decided to go back to BugFix.es and re-start development&lt;/p&gt;&#xA;&lt;p&gt;mainly this is due to me needing a common bug/issue tracking system (this is not a ticket system like jira)&lt;/p&gt;&#xA;&lt;p&gt;BugFix.es tracks bugs, so if a bug is sent to the system and it hasn&amp;rsquo;t been seen before or was seen a long time ago, or is happening a lot in a short period of time&#xA;it creates a ticket / notification so development on it can be tracked/done&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic Editor</title>
      <link>https://keloran.dev/post/basic_editor/</link>
      <pubDate>Thu, 28 Nov 2019 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/basic_editor/</guid>
      <description>&lt;p&gt;Added a very (stupidly simple) editor to static generator&lt;/p&gt;&#xA;&lt;p&gt;All it does is let me create new entires, doesn&amp;rsquo;t allow editor, if I make a mistake I have to start again&lt;/p&gt;&#xA;&lt;p&gt;and I can&amp;rsquo;t edit any old filess&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;github-linkhttpsgithubcomkeloranstaticg&#34;&gt;&lt;a href=&#34;https://github.com/keloran/staticg&#34;&gt;GitHub Link&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://keloran.dev/&#34;&gt;Home&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Static Generator</title>
      <link>https://keloran.dev/post/static_generator/</link>
      <pubDate>Thu, 28 Nov 2019 14:55:05 +0100</pubDate>
      <guid>https://keloran.dev/post/static_generator/</guid>
      <description>&lt;p&gt;Started a index generator, all it does is reads the projects and blog directory,&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;if there are pages in the project folder&#xA;&lt;ul&gt;&#xA;&lt;li&gt;current folder, add to that section&lt;/li&gt;&#xA;&lt;li&gt;past folder, add to that section&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;if its in blog folder it adds those to that section&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Very simple, I&amp;rsquo;ll add more features in future, but this is just very simple&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://keloran.dev/&#34;&gt;Home&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
