profile

Ivan on the Server Side

Ivan on the Server Side


Hello, fellow server dweller!

Ivan's here with a monthly roundup of Docker, Kubernetes, and... astrophysics learning materials 📚


What I was working on

While the Playgrounds 2.0 code is roasting in production (and bugs are being ironed out), I'm happy to use the pause in the platform's development to work on my Hands-On Docker Roadmap:

This month, I completely reworked two of the original Docker 101 challenges, making them use more realistic scenarios:

And three new challenges were added, bringing the first module of the roadmap closer to completion:

I'm sticking to my original vision of a "from zero to hero" Docker learning path, so all of the above challenges are byte-sized and beginner-friendly. At the same time, they are neither trivial nor shallow, and come with a bunch of hints, diagrams, theoretical references, and comprehensive step-by-step solutions.

If you're getting started with Docker or want to brush up on your containerization skills, take a look at the roadmap - it has just become more valuable.


What other authors were working on

It was truly a month of Kubernetes at iximiuz Labs. Kudos to all the fantastic authors who shipped stuff in July - you all rock! 👏

The "hard" part in Kelsey Hightower's Kubernetes The Hard Way tutorial shouldn't be figuring out where to run it. Thanks to Kelsey reworking it last year into a cloud-agnostic edition, you can now follow the guide using 4 vanilla Linux VMs, and of course, iximiuz Labs playgrounds work perfectly for that. Márk Sági-Kazár created an excellent example: Kubernetes the Hard Way Playground (which you can take apart and study how things work under the hood).

Provisioning a Kubernetes Cluster with kubeadm and its accompanying playground - another meticulously crafted tutorial by Márk Sági-Kazár to help you learn how to provision Kubernetes clusters by actually performing the exercise (in a safe and controlled environment). Traditionally, you can (and should!) try out all the instructions in the attached playground, and the steps will be validated to help you stay on track.

High availability (HA) setups are often overlooked in learning materials, and Márk (yes, this guy is quite prolific) tried to restore the balance by creating a HA Kubernetes Cluster Playground. The playground is a complete Kubernetes cluster with 3 control plane nodes, 1 worker node, and IP failover (via keepalived), where you can simulate most typical control plane and worker node failover scenarios. Instrumental for anyone preparing for a Kubernetes cluster upgrade or joining their very first on-call rotation.

Kube Composer (github) by Sameh Ammar is a Kubernetes YAML builder with an intuitive web interface and dynamic visualization of generated resources (and their relationships). The project immediately caught my eye because it resembles my very own kexp, a visual Kubernetes explorer that I wrote a couple of years ago. I reached out to Sameh, and he was very kind, contributing a Kube Composer playground that you can now use to craft and visualize YAML manifests directly in your browser.


iximiuz Labs update

Despite the summer season, July brought another usage record 🚀 However, membership sales were close to setting an anti-record, so the feelings got a bit mixed.

Nevertheless, I consider it one of the best months for the platform - a lot of great content was added, many new students have joined, and premium membership has become much more affordable (more on it at the end of this section).

Many people have asked about video content on/about iximiuz Labs. Video has traditionally been the most challenging type of content for me to produce, but this month, we were incredibly fortunate to receive an invaluable contribution from Dr. Constanze Roedig. While working on using iximiuz Labs playgrounds for reproducible science experiments, she recorded what can easily be the very first comprehensive video walkthrough of the platform:

video preview

And don't miss the original tutorial! It has some hot-looking (quite literally) visuals inside - Papercompanion for APL Center of Geospace Storms 🔆

Speaking of tutorials, just a few hours ago, I shipped a complete redesign of the tutorial page layout. A handy table of contents is in, a minimal, old-school blog look is in, and wasted space on the right is out. Super happy about the result:

Last but not least, iximiuz Labs Premium has just become much more affordable for almost every country in the world. Some examples:

  • Netherlands -21%
  • UK -20%
  • France -20%
  • Germany -19%
  • India -18%
  • Canada -5%

How? I switched payment providers, and my new provider (Creem) has a nice option to include VAT in the product price. Finally, when the premium page displays a number, you'll see exactly the same number on the checkout page. The most mind-blowing example? Before the switch, $250 lifetime premium access would often cost over $300. Not anymore! And yes, I'm happy to pay the difference from my pocket because transparency is priceless.


What I was reading

An Introduction to Docker Security by Rory McCune - Before trying to protect a system, you need to understand how it works. Check out this article to learn about the main Docker moving parts, Docker's attack surface, and some practical container security tips and tricks.

systemd has been a complete, utter, unmitigated… success - systemd's rise coincided with the beginning of my server-side career. Back then, I couldn't really assess the claims of people who considered it a bad (or good) move for Linux distros. However, after spending a decade using systemd daily, my appreciation for it continues to grow. For instance, I cannot imagine how much more painful it would be to manage all the iximiuz Labs Linux playgrounds if most of them didn't have the same systemd backbone.

Use Your Type System - Quite literally, this! For some surprising (to me) reason, the idea of introducing dedicated types for IDs (and other primitive types) instead of using strings or integers is often met rather unwelcome by development teams. Types like type UserID string and type AccountID string may look like unnecessary boilerplate, but in my experience, they are invaluable for preventing accidental (mis)use of IDs. For instance, it's much easier to mess things up when a checkBalance() function accepts two strings than when it accepts two typed values UserID and AccountID. But don't confuse these fully-fledged types with type aliases - avoid constructs like type UserID = string by all means!

Using AI Without Leaving the Terminal: A Guide to llm - A quick overview of llm, Simon Willison's CLI tool for all sorts of LLM interactions. What I like most about this tool is that it's not intrusive (unlike Warp or the like). It's just a CLI tool that fits well in your typical Unix workflow. By the way, you can try it out in the shiny new Coding Agent Base playground.

Coding with LLMs in the summer of 2025 (an update) by Salvatore Sanfilippo, the creator of Redis - My favorite part is "refuse vibe coding most of the times" 😊 But overall, Salvatore's post takes a strong pro-LLM stance. Generally, it matches my experience and perception of LLMs as code generation tools ("LLMs are good amplifiers and bad one-man-band workers"). I might even be slightly more bullish on the usefulness of coding agents, probably because a significant portion of my tasks are frontend-related (various iximiuz Labs UIs), where the agents are most helpful today.

Why I'm Betting Against AI Agents in 2025 (Despite Building Them) - A pragmatic engineer's take on what works and what doesn't when building agents (and why). Such a down-to-earth post on AI is a rare thing these days, which makes it even more valuable. Key takeaways probably are: the less autonomy you give to your agents and the better you scope the task, the higher the chance for the agent to actually come out valuable outside of the demo context. And the "traditional engineering" constitutes most of the agent development work - ensuring reliability, designing agent-friendly (deterministic) tools, setting up feedback loops, monitoring, etc. are king. So, where to actually apply the AI, then? 🤔 The author suggests a few (quite reasonable) areas.

Against "Brain Damage" by Ethan Mollick - "If you outsource your thinking to the AI instead of doing the work yourself, then you will miss the opportunity to learn. […] The AI is trained to be helpful and answer questions for you. Like the students, you may just want to get AI guidance on how to approach your homework, but it will often just give you the answer instead. As the MIT Media Lab study showed, this short-circuits the (sometimes unpleasant) mental effort that creates learning. The problem is not just cheating, though AI certainly makes that easier. The problem is that even honest attempts to use AI for help can backfire because the default mode of AI is to do the work for you, not with you." Learning must be painful, so go solve those challenges!


Wrapping up

That's it for July. Hope you found something useful in this roundup, and thank you for supporting my work 🤗

Happy learning!

Ivan

Ivan on the Server Side

A satellite project of labs.iximiuz.com - an indie learning platform to master Linux, Containers, and Kubernetes the hands-on way 🚀

Share this page