From c485edbee21fd964d6133e54d4950be50483e535 Mon Sep 17 00:00:00 2001 From: kjuulh Date: Tue, 20 Jan 2026 22:23:22 +0100 Subject: [PATCH] feat: do spell check Signed-off-by: kjuulh --- content/posts/2026-01-20-projects-of-2025.md | 38 ++++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/content/posts/2026-01-20-projects-of-2025.md b/content/posts/2026-01-20-projects-of-2025.md index 1fd3167..dbd1066 100644 --- a/content/posts/2026-01-20-projects-of-2025.md +++ b/content/posts/2026-01-20-projects-of-2025.md @@ -12,17 +12,17 @@ tags: - "#rust" --- -We're now well into 2026, and it has been a while since I've written a blog post. So why not start of with a little retrospective? 2025 was a year of change for me, and initially I wasn't going to write this post, as I've been busy with life and work; started new job in a start-up, and moved into my first house (on the same day...) planning has never been my strong suite. +We're now well into 2026, and it has been a while since I've written a blog post. So why not start off with a little retrospective? 2025 was a year of change for me, and initially I wasn't going to write this post, as I've been busy with life and work; started new job in a start-up, and moved into my first house (on the same day...) planning has never been my strong suit. -In this post I am going over a few projects I've written for myself, and work, often because I've difficulty separating the two. I simply like to produce stuff that is useful, and that can often be used at work as well. +In this post I am going over a few projects I've written for myself, and work, often because I have difficulty separating the two. I simply like to produce stuff that is useful, and that can often be used at work as well. As it has been a while since I've posted anything, and if you've read previous posts of mine, you might be surprised to know that I am not working in the data space, and that is where my focus has been since end 2024 until now. -Lets jump straight into the project shall we. +Let's jump straight into the projects shall we. ## Personal Productivity -This is a bunch of tools I've created to expand my workflow, I live on the terminal pretty much always, so these are convenience tools to help me have more fun, be more effecient etc. +This is a bunch of tools I've created to expand my workflow, I live on the terminal pretty much always, so these are convenience tools to help me have more fun, be more efficient etc. ### GitNow @@ -47,26 +47,26 @@ I use ~git~ (jujutsu) a lot, and have a lot of projects I work on, both at work 3. Go to github or my own git.kjuulh.io gitea instance 4. Search for project 5. Click copy ssh -6. cd into ~/git/git.kjuulh.io/kjuulh and run git clone ``` +6. cd into ~/git/git.kjuulh.io/kjuulh and run git clone `` 7. cd `` Often you could just clone directly, but often when I don't have it checked out, I am not 100% sure about the name of the repo. -That is why I built GitNow. Seriously it is a small tool, but it brings me joy everytime I use it, even it is brief (as it should be) +That is why I built GitNow. Seriously it is a small tool, but it brings me joy every time I use it, even if it is brief (as it should be) GitNow allows me to quickly fuzzy search repos, move the current console to the placement, or clone the sucker. It brings at task down from 30 seconds down to 2 seconds, and it does double duty simply because it just allows me to move between repos if I've already got it down, replacing zoxide for me. It caches the responses from the forges you subscribe to, so it doesn't have to wait for any network calls, and quietly updates the cache in the background. ![example](https://git.kjuulh.io/kjuulh/gitnow/raw/branch/main/assets/gifs/example.gif) -link: [https://git.kjuulh.io/kjuulh/gitnow](https://git.kjuulh.io/kjuulh/gitnow) or [website][https://gitnow.kjuulh.io/] +link: [https://git.kjuulh.io/kjuulh/gitnow](https://git.kjuulh.io/kjuulh/gitnow) or [website](https://gitnow.kjuulh.io/) -I even have it aliased to `,` so I normally just type `,` and I can be in any of my subscribed codebases in a second. Love it it has seen a ton of milage already. 3.5k on my personal machine and 2.5k on my work laptop since march 2025. +I even have it aliased to `,` so I normally just type `,` and I can be in any of my subscribed codebases in a second. Love it, it has seen a ton of mileage already. 3.5k on my personal machine and 2.5k on my work laptop since march 2025. ## Noil Pronounced No oil. Not because I hate oil, but as you'll see later, I've just started to namespace a lot of my things with no as a prefix. -Noil is a terminal tui / file format / language, that emulated the [oil.nvim](https://github.com/stevearc/oil.nvim) but makes it independent of any editor. As such it loses a bit of ergonomics, which I probably could fix. But overall it suits its needs just fine as is. +Noil is a terminal tui / file format / language, that emulates the [oil.nvim](https://github.com/stevearc/oil.nvim) but makes it independent of any editor. As such it loses a bit of ergonomics, which I probably could fix. But overall it suits its needs just fine as is. The idea behind noil is that you can have a file explorer as just a text file in your editor. This on first look seems unergonomic, as there is a reason we've got the classic file-tree explorer in normal editors. However, noil makes it super easy to make a certain type of change. @@ -85,7 +85,7 @@ gives me a text file like so using my preferred `$EDITOR` ... removed for brevity ``` -What you'll see is this post right here, it has a ` : "` +What you'll see is this post right here, it has a ` : ` the hash is as short as possible, meaning that I can a hash for each file, and calculate the shortest possible prefix and only display that, because the hash is the index, and how you do certain types of operations @@ -126,7 +126,7 @@ It then starts a mosh zellij session on the remote machine and injects environme voidpin does the same but for clipboards, so I've set up zellij and helix (my editor) to output to voidpin on selections. In case there is no injected variables, it simply default to the built in cli clipboard (pbcopy/paste or wl-copy/paste). -I basically haven't had to touch them since I built em, and they work quite nicely. I would like raw tcp to work over notunnel as well as a dedicated wireguard tunnel / ssh tunnel. But that is planned for 2026, where I build out nocontrol below for possibly a fully fledged rust development platform my for personal homelab. +I basically haven't had to touch them since I built em, and they work quite nicely. I would like raw tcp to work over notunnel as well as a dedicated wireguard tunnel / ssh tunnel. But that is planned for 2026, where I build out nocontrol below for possibly a fully fledged rust development platform for my personal homelab. ## Services @@ -215,13 +215,13 @@ This was really fun to develop, and during development I was experimenting with During the project I also explored a variety of modern human write-able configuration languages. The default was basically yaml / toml. Especially yaml is just amazing for this exact use-case, but just lacks tooling to be great. -I ended up exploring kuddle, nickel, dhal cuelang, ron and lua. I ended up liking cue the best, if you keep it simple it is basically a good mix of golang and json. Which I like, and if you squint it looks a bit like yaml as well. It ended up fitting the project nicely, and I actually still support all the other file formats, as they all just transpile into a common serde format (except for Lua, I think I removed that). +I ended up exploring kuddle, nickel, Dhall, cuelang, ron and lua. I ended up liking cue the best, if you keep it simple it is basically a good mix of golang and json. Which I like, and if you squint it looks a bit like yaml as well. It ended up fitting the project nicely, and I actually still support all the other file formats, as they all just transpile into a common serde format (except for Lua, I think I removed that). -Winning over yaml was surprisingly hard, and even with cue I think it looses some in readability, but makes up for it in tooling / potential and ergonomics. +Winning over yaml was surprisingly hard, and even with cue I think it loses some in readability, but makes up for it in tooling / potential and ergonomics. ### Nostore -This was a project that isn't ever intending to see production. It is the basics of what a mix between NATS and Warpstream (kafka) would look like basically I wanted to experiement with a diskless message queue, using simpler clients than what kubernetes requires. +This was a project that isn't ever intending to see production. It is the basics of what a mix between NATS and Warpstream (kafka) would look like. Basically I wanted to experiment with a diskless message queue, using simpler clients than what kubernetes requires. I did achieve that goal and have found more gains since this was published. I basically ended the project as I achieved what I wanted, but also that developing it into a full project would take too much time and finagling. I'll definitely continue on this path in the future, but for now it is on ice. @@ -233,15 +233,15 @@ Again not really documented. ## Libraries -I like to explore various angles for libraries, we're continuing the namespacing, these are the most recently onces created. +I like to explore various angles for libraries, we're continuing the namespacing, these are the most recently ones created. ### Nocontrol -I like kubernetes, I don't like maintaining it thought. Nocontrol brings the strength of kubernetes controllers and manifests into Rust, and only ever Rust. It is basically a library that allows you to write reconcilers around maintained resources that can be allocated to certain rust processes in a decentralized manner. +I like kubernetes, I don't like maintaining it though. Nocontrol brings the strength of kubernetes controllers and manifests into Rust, and only ever Rust. It is basically a library that allows you to write reconcilers around maintained resources that can be allocated to certain rust processes in a decentralized manner. As opposed to kubernetes Nocontrol is lease based. This is as opposed to the strong consistency raft based kubernetes control plane. What this in practice means is that you can have as few or as many nocontrol nodes as you want. Each of them simply check out / steal resources they can get ahold of. This requires a backing store, currently only postgresql is implemented, but adding others are easy ;). I just don't have a need for other types of databases. -This is a bit change, and as such Nocontrol relies on actor based semantics (supervisors) to implement certain logic, whereas it would be easier in kubernetes to distribute this work. +This is a big change, and as such Nocontrol relies on actor based semantics (supervisors) to implement certain logic, whereas it would be easier in kubernetes to distribute this work. Basically to achieve a Deployment setup. @@ -320,7 +320,7 @@ However, I needed something to actually run the jobs, and my existing tools didn ### Noprocess -Noprocess is basically Rust tokio tasks as processes. It allows me a shared registry where I can start, stop, kill processes on demand. This is a way to ensure I always only run one process at once pr name, catch failed processes and more. +Noprocess is basically Rust tokio tasks as processes. It allows me a shared registry where I can start, stop, kill processes on demand. This is a way to ensure I always only run one process at once per name, catch failed processes and more. It allows graceful stopping and killing (SIGINT / SIGKILL) in terms of tokio tasks, without being too disruptive, and fairly ergonomic to work with. @@ -377,6 +377,6 @@ We're at a stage where we don't really need too much scale, so it is all about e I think that is it for last year. I love developing stuff, and even if 2025 was a busy year for me, I still got a lot done which I am happy with. Not as much as I'd wanted, but looking back I did do a few projects that I like ;) -PS: I realize the post can come off as braggy, do know that I didn't replace Kubernetes, Kafka, etc. I simply developed a version of them that fits my needs, which if you do the same exercise will find out is a vastly smaller subset of features than the full project. So have fun with it, and go development something. +PS: I realize the post can come off as braggy, do know that I didn't replace Kubernetes, Kafka, etc. I simply developed a version of them that fits my needs, which if you do the same exercise will find out is a vastly smaller subset of features than the full project. So have fun with it, and go develop something. > Also if you'd like to develop stuff together, I've recently started [rawpotion](https://rawpotion.io) basically a community of developers building cool stuff together, I offer mentoring sessions as well for getting started in there.