Retrospective: May 2024

I always sell myself short. I think it has to do with ADHD, which I was diagnosed with as a young child. It has always been a part of me and made things much more complicated for me than they should actually be. But that is another story.

In order to help myself - and to actually help myself realize that I actually did do quite a lot - I decided to start sharing retrospectives that explain how my last month went. I’ve been a fan of Michael Lynch his retrospectives and while my life isn’t nearly as exciting as his, I have no doubt that this will help me. So, let’s get to it!

What happened in May?

That ofcourse depends on who is asking and what you’re asking. But these are the highlights:

According to GitHub, these are the highlights:

  • In April, I launched the new waiting time page of Bobfans. It runs in a Kubernetes cluster which I manage with Flux. The various components are built automatically with an action and stored in GitHub.
  • Small change to the waiting time page of Bobfans. Fixed the scheduling of the maintenance script.
  • Handled an issue concerning the chatFilter.ini that I host and updated it.
  • I resumed work on a 3-year-old project I never finished.

Outside of GitHub, I also remember doing this (but, it might have overlapped with April) concerning servers:

  • Set up my new development server setup, lovingly called “devbox”.
  • Cancelled my previous development server.
  • I tested a dedicated server.
  • I set up a new testing server to gather feedback on active projects.

Finally, these are things that I also did the last month:

  • I ran 5km in the Reuzenloop in Antwerp - and finished!
  • Started with Start2Run 5km maintenance + improving my speed schema.
  • I sent $1400 worth of Belgian pralines to the ArenaNet offices (with thanks to a GoFundMe).
  • Went to see a comedian + a play.
  • I crafted 2 pieces of legendary armor in Guild Wars 2.

In terms of my job, there isn’t a lot that I can talk about due to agreements with my employer, but things that I can/want to mention will be mentioned. There isn’t really something important to mention though.

Goals for May

Since this is the first retrospective, I didn’t really have any goals. I’ll be writing goals for next month at the end though.

Going over May

Waiting times for Bobbejaanland

Realistically, this would have been something for the retrospective of last month, but since I only started with it this month, I’ll describe this here.

Last year, Bobbejaanland started with waiting time indication. Since I have been involved with the team behind Bobfans, one of the oldest fan-sites for Bobbejaanland (which is one of the big theme parks in Belgium), my goal was to make a system to display the current waiting times on the Bobfans website. I got that working last year, but I wasn’t really happy with how it turned out so I set out to rewrite it during the winter months of 2023-2024. My goals for this new application were the following:

  • It should be mobile friendly.
  • Written in Golang.
  • Preferably, I would run it in Kubernetes (and manage the cluster with Flux).
  • I wanted to store the waiting times, so we can calculate averages over the long run and daily averages.
  • No CSS framework, write the CSS from scratch myself.

It was a lot of work, but I was able to launch it and it fully works. Right now, it is running using Rackspace Spot, which is a very cheap provider of managed Kubernetes clusters, but it has some drawbacks (it’s bidding based). The cluster itself uses Flux, so it is gitops-based, which allowed me to learn a lot about Flux and setting up my own Kubernetes cluster with it - I have been doing that for more than a year at my job (at Klarrio), but there it is a team effort. Running it myself forced me to dive way deeper into debugging and allowed me to learn a ton. During the month I encountered a lot of issues with the persistent volumes, which caused MariaDB to constantly crash and led to the application crashing. During May I decided to move the database to Filess.io for now, my plan is to move the database to another server soon, but Filess.io was a quick fix.

The application itself now exists out of 4 parts:

  • Fetch, which fetches the waiting times and is being ran as a CronJob within Kubernetes.
  • Maintenance, which checks if new attractions have been added to the API and fetches the park hours for the day. It runs as a CronJob.
  • Average, which calculates the average waiting time of the day (so far), which also runs as a CronJob.
  • Web, which runs the web interface. This is a deployment and uses Caddy as an ingress.

The web interface uses no CSS framework anymore, I wrote the CSS from scratch and enjoyed doing it! My last few projects (with the exception of my secret project right now, but that is more because I started it 3 years ago) all ended up getting HTML and CSS written from scratch.

It has been running for weeks now and since I moved the database, the application has run flawlessly. You can test it yourself at https://wachten.bobfans.be.

chatFilter

This is an application that I wrote years ago that keeps a file, chatFilter.ini, updated. That file is also located in the same repository, and gets updated by a few people. An issue got reported so I updated the chatFilter.ini accordingly.

The Secret Project

Oh boy… there’s a lot to tell here, but it’s still a secret for a few more days - but I want this post to get out before May is over, and I’m going to announce this one on the 1st of June… so I’ll try to talk as much as I can about it.

About 3 years ago, I announced that I was working on something to improve browsing an existing dataset that was very clunky to browse through. So, to improve that, I wrote a scraper in Golang (as one of my first Golang projects… so the code wasn’t really that great) and scraped the data. I started working on a front-end, but then… never finished it.

At the end of April, being of May, I picked it up again and enjoyed working on it! So much even that it is nearing completion.

I had to write a new scraper to re-scrape the user information, which led to a ton more users being discovered by the new scraper: 101,356 users instead of the 78,220 that were discovered with my old scraper. The new scraper uses gocolly, which is a really great library - it made it really easy to scrape the information without any issue. My improved Golang skills no doubt also helped.

The front-end itself got completely rewritten - it’s still using Zurb Foundation 6, but the CSS for the front-end that I added is quite minimal but it added a ton of personality. Really great how it turned out! I also used an image upscaler for the first time (I couldn’t stay behind with all of the AI revolution going on ;)) to upscale the original logo of the dataset and it looks great now.

I felt good enough about the project that I allowed a few trusted users to test it a week ago. Yesterday I deployed a more updated version - which reworked the entire front-end - and allowed even more users access. The idea is to launch it for paying members of my website this Saturday, and a more public launch soon once the kinks are ironed out.

It feels great to finally be able to drag this project forward and even complete it.

Devbox

Previously, I rented a VPS that was quite beefy and used the Jetbrains Remote Development option on it, but to be honest, it wasn’t the greatest experience. Last year I bought some small micro PC’s (a Dell Optiplex) and upgraded it. I decided to install Windows on it (which, to be honest, has become my favourite development platform… sorry, not sorry) and I’m now using Tailscale in combination with all my trusted tools which turned out a great match. It’s awesome to work with and just works.

I cancelled the old VPS and I’ve been working on this box for more than a month now and it works so well that I’m wondering why I didn’t do it earlier.

Testing a dedicated server

I tested a dedicated server at Hetzner, mostly out of curiousity. Since I couldn’t get openSUSE to install on it (due to some issue with the VNC install image), I cancelled it. I might try again in the future, but right now, it seems like Hetzner Cloud is still the best option for me.

Testing server

This has been set-up to allow me to (mainly) test the Secret Project, but also newer builds of the Bobfans API are being tested here.

Reuzenloop

I was never a sporty-type, but for a few years I tried to improve my general physical endurance. Unfortunately, I had some serious health issues last year that crippled me to such a degree that I barely could walk for a few months.

In August last year, that finally got resolved (after about 6 months of excruciating pain, at times). After gathering some advice and getting adjusted inlays for my shoes, I bought new running shoes adjusted to my feet ailment and decided to join a Start2Run group in February. In April, that Start2Run schema was finished and the week after, I joined the Reuzenloop, which is a fun-run, and ran the 5km (of which I’m still extremely proud).

I have continued running since, and I am trying to improve now. I’m currently running according to the Start2Run 5km maintenance and increasing your speed schedule, but honestly, I’m just trying to enjoy it and doing what I can. I’m extremely proud that I finished the schedule and got to run 5km several times!

Sending 10.5kgs (or 23.5lbs) of Belgian pralines to the ArenaNet offices.

I typed out the rest of this blog post and then suddenly remembered that I did this thing too, as if it was only a minor thing. My brain really forgets cool things too quickly!

This is something that I should write an entire blogpost about on itself, really. I started a GoFundMe (I did it once before, years ago) to collect funds to send Belgian pralines (Leonidas, the good stuff - it’s what we Belgians give to each other!) to collect a goal that - at the time of launching - I found very ambitious at 600 euro.

Within 12 hours that goal was smashed and we ended up collecting 971 euro - which I used to send 10.5kg of chocolates to the ArenaNet offices. It deserves its own blog-post so I’ll probably write one soon!

Legendary Armor

It’s the ultimate convenience in Guild Wars 2: you’ll never need to buy new armor and you can change the stats of your armor as you please. Since the launch of Obsidian Armor at the end of February, I was able to finish my first set (light armor) of Obsidian Armor. In May I continued on with the grind and finished two pieces of the Heavy armor set, with 4 more to go.

Wrap-up

How do I feel about May?

Good. I did way more than I realized - writing these kinds of retrospectives do help with it. I think I can be happy with everything that I accomplished!

I can’t pick one thing that I’m the most proud of, but it would be between sending the chocolates to ArenaNet and me finishing the Reuzenloop. But then again, the secret project is also super cool… let’s keep it at that I’m extremely proud of what I did.

Considering everything, it’s insane what I did in May.

Lessons learned

  • I’ve done more than I thought I did.
    • I’ve refined some running projects.
    • I was able to take on an old project again and (almost) brought it to completion.
  • My ADHD is still a blockade for me at times, but finishing old projects is worth it.
    • I do have to keep in mind that I don’t try to keep doing everything at once.
    • When people ask me to do things, inform them that I’ve got quite a lot on my plate already and I need to finish that first.
    • Prioritize things. My own projects have priority, other projects only get prioritized if they are paid.
  • I still struggle with imposter syndrome.
  • Running 5km after my annus horribilis of last year did so much good for me.
    • I have to stay running and don’t skip one (for whatever reason), otherwise it becomes too easy for me to stop with it.
    • I really want to keep on running. I’m starting to enjoy it a lot.

Goals for next month

Ho boy… let’s try not to be too ambitious.

Ideally, this is what I would like to do next month:

  • Finish The Secret Project, which means opening it up fully for public use.
    • It would need to be moved to my main server, the test server probably will be removed (for now).
    • I will probably need to re-scrape some more data, so I would need to write an extra scraper.
  • Move the database of Bobfans API to the main server, and allow it access from the Kubernetes cluster.
  • Build out the paid subscription on Guild Wars Legacy.
    • Nothing will change for normal users, just extra options.
  • Update the GuildLab website (product pages, prices etc) so that I can pass the Mollie check.
    • Investigate Mollie invoicing options, see if InvoiceNinja is still the right choice.
  • Start preparing for server consolidation: I want to end up with 3 to max 4 servers instead of the 8+ I currently have.
  • Start working on the new design for ThemeParksNews and my personal website. Stretch goal.
  • Try and finish the course “Testing with Go” and perhaps build something cool in Godot. Perhaps.

I’ll see you at the end of next month to post another update!

Thanks for reading this massive wall of text!

  • Kevin

Image by Dorothe from Pixabay