Accessing services via raw IP addresses isn’t that swell; I’m no Rain Man. It’s time to set up subdomains for my hietala.xyz domain for internal use. We’ll use the Gateway API to set up routes, cert-manager to give us https without self-signed browser warnings, and ExternalDNS to set up DNS overrides. HTTP routing I believe the flow of resolving http://argocd.hietala.xyz to a service looks…
Now we’re getting to the fun stuff: GitOps . The act of pushing beautifully crafted .yaml files and seeing your Kubernetes cluster get red and stall out is surely what life’s all about. Install ArgoCD We have our Kubernetes cluster and now we’re going to bootstrap ArgoCD so it starts syncing from our git repository. Using helm: helm install argocd \ --repo https://argoproj.github.io/argo-helm \…
I recently got a Pebble Time 2 as it seemed like a fun smartwatch away from Google/Apple/Samsung with a good 4 weeks of battery life. One thing I wanted to do is to create a custom watchface for my specific problems. It took more effort to design the watch than I had anticipated and there’s a deceptively large amount of thought that has gone into some of the features here, so I thought it’d be…
When I’ve read other series about Kubernetes and reach the secrets section my eyes glaze over. I can’t help myself; I want to read about the fun stuff. Secrets are necessary to be sure, but it’s a little boring… But if I want to do proper GitOps I need to manage secrets (and to document the process). The sooner I set it up the better. In and outside cluster Kubernetes has different solutions for…
I wanted the bootstrap process to be simple; ideally a single command and it would be up and running. But that’s not what we have right now; just look at this monstrosity from the previous post : helm install cilium cilium/cilium \ --namespace kube-system \ --version 1.19.2 \ --set kubeProxyReplacement=true \ --set k8sServiceHost=10.1.4.10 \ --set k8sServicePort=6443 \ --set…
It’s time to get the VMs rolling. As stated in the intro I’m going to use Terraform to provision VMs and to configure Talos Linux . We’ll end up with this simple interface: # Create VMs and configure Talos nodes terraform apply # Destroy and reset all terraform destroy I run these commands manually on my machine. It’s possible to add these to a CI but I like the faster feedback of running them…
The Kubernetes iceberg. If I’d have to describe my homelab setup via analogy I guess it would be similar to me on a unicycle carrying plates with both of my hands, or maybe a leaking barrel with water that I try to patch up with silver tape. I’ve also been Kubernetes-curious so I decided to completely redesign my homelab, centered around Kubernetes. It was a bit painful but at least it fulfilled…
Respect your users and their confidence in you, “Microsoft” GitHub. Ethkuil , Updates to your GitHub Feed #65343 After years of waffling around I finally bit the bullet and migrated away from GitHub onto Codeberg and a private Forgejo instance. If Codeberg is good enough for Gentoo then it’s good enough for me. What’s the problem with GitHub? One part of my GitHub aversion is me being anti the big…
Life begins at the end of your comfort zone. Neale Donald Walsch I’m lucky that I have a job where I can work remotely as it allows me to live in a small community where there are no tech jobs anywhere close. It does require me to travel a few weeks per year to the office but I don’t mind that much as I appreciate minor dozes of socializing occasionally. I recently spent five nights on a trip with…
It’s time for a yearly review again. Time flies. Nerdy things I enjoyed I read a few books this year. The whole Dungeon Crawler Carl series was absolutely amazing and it quickly jumped up to one of my favorite series of all time. I can’t be held accountable for everything I’ve ever said to a stripper. Princess Donut Board games are great. I still don’t play nearly as much as I’d like to but my…
I’ve had my VORON Trident for 2 years and I’ve run it for 2600 hours. Overall I’m happy with the printer but I’ve been itching to make some more mods to it. Having finally finished the VORON 0 ( with mods ) I now have a backup printer I can use to rescue myself when I screw up. As the printer was starting to crap out with a leadscrew starting to grind down again , the chamber thermistor stopped…
I’ve got lots of stuff to do but I ended up rewriting my Neovim config instead. … anyone can do any amount of work, provided it isn’t the work he is supposed to be doing at that moment. Robert Benchley, in Chips off the Old Benchley, 1949 My partner Veronica is amazing as she’ll listen to my bullshit and random whims (or at least, pretend to). That’s a big benefit to having a blog: so I have an…
I recently bought a couple of Hue Tap Dial switches for our house to enhance our smart home. We have quite a few smart lights and I figured the tap dial —with it’s multiple buttons and rotary dial—would be a good fit. Since I’ve been moving away from standard Home Assistant automations to my own automation engine in Elixir I had to figure out how best to integrate the tap dial. At first I tried to…
Cops say criminals use a Google Pixel with GrapheneOS — I say that’s freedom Calvin Wankhede We’re in a dark time period right now. Authoritarianism is on the rise throughout the globe. Governments wants to monitor your social media accounts so they can make you disappear if you engage in wrongthink such as opposing wars or genocide. This is worsened by misguided laws like Chat control that would…
My general advice for life is: be a good person, and care for the people around you. And follow this one very specific rule: avoid vendor lock-in . Sean Boots Rule number one: Avoid vendor lock-in I’ve always wondered how to setup a sound systems around the house that you can control from your devices, such as your phone. To get a working setup it seemed you had to embrace vendor lock-in; either…
I recently started to subscribe to Whoop again after I canceled it around a year ago. I was partly dissatisfied with my Garmin watch as a fitness and health tracker and I also wanted a new tech device to tinker with. The plan was to write a short post about what I like and don’t like about Whoop but as usual I’m struggling with writing shorter posts. If I had more time I would write a shorter…
I recently completed my VORON 0 build and I was determined to leave it as-is for a while and to start modding my VORON Trident … So before embarking om my larger Trident modding journey I decided to work on the VORON 0 just a little bit more. HEPA filter With the Nevermore Micro V4 I had active carbon filtering but I also wanted a HEPA filter that would also provide negative air pressure to the…
About 1.5 years ago I ventured into 3D printing by building a VORON Trident . It was a very fun project and I’ve even used the printer quite a bit. Naturally, I had to build another one and this time I opted for the cute VORON 0 . Why another printer? I really like my VORON Trident and it’ll continue to be my main printer for the foreseeable future but a second printer would do two important…
I recently came upon a horror story where a developer was forced to switch editor from Neovim to Cursor and I felt I had to write a little to cleanse myself of the disgust I felt. Two different ways of approaching an editor I think that there’s two opposing ways of thinking about the tool that is an editor: Refuse to personalize anything and only use the basic features “ An editor is a simple tool…
I’ve been with Veronica for over a decade now and I think I’m starting to know her fairly well. Yet she still manages to surprise me. For instance, a couple of weeks ago she came and asked me about email security: I worry that my email password is too weak. Can you help me change email address and make it secure? It was completely unexpected—but I’m all for it. The action plan All heroic journeys…
There are two conflicting forces in play in setting up your computer environment: It’s worthwhile to pursue small improvements in frequently used tools. It’s not productive to get stuck tweaking your setup endlessly. It’s common to find people get stuck at the extreme ends of the spectrum; some programmers refuse to configure or learn their tools at all, while others get stuck re-configuring their…
It’s time for my 15th yearly review . Nerdy things I enjoyed I read a lot of fantasy books this year! My favorite new series were The Kingkiller Chronicle , Gentlemen Bastards series , and The Stormlight Archive . If you’re curious about Sanderson’s books but a little apprehensive about jumping into a massive series such as The Stormlight Archive then I’ll recommend The Emperor’s Soul as an…
Although I’m a big Elixir fan, the lack of static typing has always been my biggest annoyance (and why I think Gleam is so cool). I think static typing helps catch bugs earlier and in an automated way, leading to less buggy software and saves time in the long run. To my great joy Elixir is working on a new type system that will hopefully give us the early type checking errors I’ve been craving…
The Cybershard keyboard. What comes to mind when you see the description “the ultimate keyboard”? There are many keyboards in this world; here are some that might fit the “ultimate” moniker: Das Keyboard 4 Ultimate mechanical keyboard DataHand Ergodox EZ Glove80 Happy Hacking Keyboard Model M Keyboard Stenotype keyboards. Ultimate Hacking Keyboard CharaChorder Some even have “ultimate” in their…
This is the keyboard layout I’m using for my custom keyboard that I generated, printed, and hand-wired . It’s a minimalistic keyboard of 35 keys and features an integrated trackball on the right-hand side. The keyboard layout started out as a direct copy of the T-34 keyboard layout , with some small modifications from the 34-key keyboard T-34 was designed for: An extra two keys on the left-hand…
I find that ai can help significantly with doing plumbing, but it has no problems with connecting the pipes wrong. I need to double and triple check the updated code - or fix the resulting errors when I don’t do that. thih9 on Hacker News I’ve been skeptical of the AI craze that’s been going on in the developer community. It’s a useful tool but some people behave like large swaths of developers…
I’ve been a fan of Home Assistant a while now; it’s a great platform for home automation with its beginner friendly and feature rich UI, support for a ton of different devices and integrations, and there’s a bunch of ways to create automations. But there’s no engine for writing automations in Elixir that I could find; this post addresses this fatal weakness. Specifically, in this post I’ll go…
I recently bought the Eight Sleep Pod 4 —a smart mattress cover that tracks your heart rate, HRV, snoring, and cools or warms the mattress during the night. There’s a lot to like about the mattress but in the end I opted to return it. This post describes my experience with the Pod 4. Sleep is important enough to offset the steep price The Eight Sleep mattress is really expensive but that’s not…
Time flies when you’re having fun. Before you know it, your little babies have started school, you celebrate the 30th anniversary of Jurassic Park, and that little blog you started have now been going for 15 years. 15 years is a long time; longer than I’ve been waiting for Winds of Winter , and that wait has felt like an eternity. How did I—who frequently abandon projects for the next shiny…
As I added a /now page to the site I also decided to refresh my /about page and I figured it would be neat to have timeline element where I could list some of the larger events in my life. To my surprise it wasn’t too difficult to create one that looks pretty clean—the flexbox feature in CSS is really good. In this post I’ll walk you through how I made this kind of timeline: 1989 I was born in the…
xkcd: Nerd sniping A while I ago I encountered a blog post called Microfeatures I Love in Blogs and Personal Websites , and together with the related Hacker News discussion I got nerd sniped . (I spent more time than I care to admit implementing new and exciting microfeatures for the blog.) Microfeatures are fun and time consuming For some people, blogging is their job. For me, blogging is a way…
Around a month ago I had an affair with rocks.nvim . It was fun, but I’m back together with lazy.nvim again. This is a short post to explain why—at this point in time—the grass wasn’t greener on the other side. Problems with rocks.nvim Too many weird issues. I had quite a few weird bugs that I couldn’t pin down. What finally broke the camel’s back was that I couldn’t run neotest with Elixir . I…
My relationship with my Neovim config is best described as an On-again, off-again relationship . At times I’m deeply in love and spend all my time caressing the config—like how in September I did a complete rewrite in Lua —while other times I’m busy with other love interests and the config is left alone, sometimes for months or even years. While not as intense as the September affair, I recently…
Autocomplete tags in the frontmatter. Autocompletion is an absurdly powerful feature that I—and I must assume most programmers—use all the time. It’s not as crucial for writing blog posts as when you’re coding but it’s still easy to come up with examples of how autocomplete would help. For example: Complete frontmatter metadata tags = [ "Lua" , "Neovim" ] series = "extending_neovim_for_my_blog"…
I’ve used telescope.nvim 's find files with require ( " telescope.builtin " ).find_files for quite some time. I use find files together with it’s cousin .oldfiles (find recently opened files) all the time for finding source code files, blog posts, and more. But it’s naturally restricted to operate on only filenames and you can make telescope richer by operating on structured data. So let’s move…
Scripting is configuration. Configuration is scripting. TJ DeVries A different take on editing code I’ve been using Neovim since it forked from Vim almost 8 years ago, and I used Vim many years before that. I feel quite comfortable with Neovim, and I’ve gone down the configuration rabbit hole too many times I’d like to admit, but I never dove deeper by writing something truly custom like a plugin.…
One of my favorite features in Neovim is the Tree-sitter integration. It allows for fast syntax highlighting that works well even in an error state (often the case when you’re editing code), and it has additional semantics (you can differentiate between function parameters and local variables). With nvim-treesitter-textobjects you can also jump between nodes (such as ]c to jump to next class) or…
It’s finally done™. I’ve built a VORON that prints reliably and I’ve modded it enough to be able to leave it alone for a while, so I think it’s time to wrap up this build series with a little retrospective. Building the printer was really fun and rewarding I’ve always seen myself as a software person instead of a hardware person. But I must admit, assembling the printer was a very fun and…
The left POM nut got ground down, making the bed fall down. After 600 hours, the printer met it’s first major failure. I know I earlier described how the extruder starter skipping in a big way, but that was just some filament getting stuck in the extruder. This time a part physically broke down. What happened was that the rod on one of the Z-motors started to grind down the POM nut that holds up…
The build is going well and the printer is printing tons of random stuff and I’m generally in awe of how cool the printer is. But there’s one thing that sucks: it’s damn loud . I knew that it wouldn’t be silent, but I wasn’t prepared for this kind of noise. Silent controller fans The very first mod I made (even before my first print) was to replace the LOUD skirt fans with silent Noctua FN-A6x25 .…
The printer is done, but I feel one of the best part of a VORON printer is the ability to modify and personalize it. There a tons of mods you can do, and while I’ve done a few there are lots more that I’d like to do some day. It’s a wonderful feeling to augment the printer with parts made by the printer itself. RockNRoll Flipping over the printer to access the electronics apartment is a huge pain.…
The eBook for my book Why Cryptocurrencies? is now available for free . It’s been almost 4 years since the web version was done, and 3 since the physical copy was available … Which can hardly be called a success. Things happened, so let’s do a quick retrospective to, maybe, learn something. The project is done I’m very good at putting myself down and to focus on the negative parts to the expense…
This is a rundown of how I typeset and laid out my self-published book for the web version , the EPUB version , and the printed version . I was planning to include many more details, but the project took a lot longer than planned so I’ve forgotten some things. Web page I started by creating the book in a web format. It’s a static site generator that simply outputs HTML with some custom CSS styling…
A session of Hextraction, a 3D printed board game. I did it. I made something actually useful with my 3D printer instead of just tinkering with it. I printed Hextraction , a very cool 3D printed board game for my kids—and they love it. Hextraction is a gamified marble run, where you place tiles and drop balls in order to reach the end without getting yeeted off the board. It’s kind of hard to…
What if we weren’t chained to the past? What if we tried to create a light markup syntax that keeps what is good about Markdown, while revising some of the features that have led to bloat and complexity in the CommonMark spec? John Macfarlane, Beyond Markdown I recently happened to see an offhand comment on Hacker News about a markup language called Djot . I don’t really have any large issues with…
I’ve been busy. Busy printing stuff. Which is awesome, because one big worry I had was if I’d actually use the printer or just end up modding and tweaking it until the end of time. But of course, I’ve been slowly working through my large mods-I-want list. My initial plan was to write one blog post about modding, but for space and sanity reasons I’ve decided to split it up. This post goes through a…
My brain is a curious thing. I’m on a business trip right now and I’ve set aside time to finish some important todos I want and need to get done. But instead of focusing on them, I started playing around with Gleam —a young and interesting programming language. My (current) favorite programming languages are Rust and Elixir . They’re really different from each other, but they work well together as…
This is my yearly review #14. Amazing that I’ve kept up with this for 14 years. Even though it’s not anything advanced, I really like looking back at the year to see what has happened. Maybe it’s a very light version of a reverse bucket list , and I can see that it provides some of the same happiness benefits. 2023 Non-Geek Achievements All my three kids are happy and healthy. It’s thanks to…
I can print, but the printer is missing a very important thing that I alluded to in the previous post: filtering dangerous particles and fumes. This is mostly covered by the kit, but I was missing some parts from the print it forward and the kit didn’t include a HEPA filter. Because the printer is in the office and health is super important fixing this was needed so I could start printing some ABS…
It’s up and running, and now it’s finally printing time! Less exciting—but necessary—tuning the printer to make the prints better. Filament shipment Even though I’ve been building the printer for more than a month, I wasn’t ready for it being time for printing so soon. I don’t know what filament is good and what I need, so I decided to get a few different brands and colors to try out: 3DJAKE…