Ivan on the Server Side


Hello friends!

Ivan's here with another monthly roundup of all things Linux, Containers, Kubernetes, and Server Side šŸ§™

The issue's main topic is iximiuz Labs' largest-ever upgrade:

  • Fresher and more streamlined look of the frontend UI šŸ’™
  • A new 5.10 Linux kernel built with nftables support (finally, we can try out kube-proxy's nftables mode).
  • New default playground user - laborant (yep, rootless containers learning for).
  • New playgrounds: Ubuntu 24.04, Debian Trixie, Fedora, and Incus (yay! more experiments).
  • Solving challenges is now possible via labctl (so that you won't need to leave the comfort of your local terminal).
  • More secretive challenge solution checks (sorry, it'll be harder to reverse-engineer the checker machinery).
  • Bug fixes and improvements (e.g., the premium status is reflected in the UI almost instantly after the purchase; font size change in the playground terminal, etc.).

...and more!

iximiuz Labs UI redesign

August is traditionally one of the quietest months, so I decided to use it as an opportunity to work on the long-wanted platform overhaul.

One of the recurring topics in my conversations with iximiuz Labs users is the "understandability" of the site's design. I often get complimented on the clarity of my (technical) writing, but when it comes to iximiuz Labs features and intended user flows, I often get to explain how to use the platform in personal conversations. I'm always happy to do that, but it's also likely an indication that I could have done a better job with the UI.

So, here is my layman's attempt at streamlining the user experience.

1. Add more text explaining the main types of content (and why and how to consume it best):

2. Add even more text elements with hints and "pro tips":

3. Unify all content "card" elements, highlighting the type and the category of the content (e.g., a Tutorial on Containers, a Challenge on Kubernetes, or a Linux Playground):

The latter, in particular, will allow adding clear Skill Paths - a special "learning path" kind of content that organizes multiple seemingly disjoint tutorials, challenges, and playgrounds into a content sequence that will help you build a certain skill (debugging containers, controlling process resources in Linux, etc.).

Check the new look out and let me know what you think about it šŸ™

Major backend overhaul

Since the platform's original release almost two years ago, I have desperately wanted two features: a non-root default user and nftables support in my custom Firecracker kernel build.

While it was possible to cover many learning scenarios with just the root user and legacy iptables, it wasn't the most future-proof setup, and it bothered me.

It took me a week of full-time work (thankfully, I'm on vacation), and I managed to implement both!

Now you can play with nftables kube-proxy mode (beta in the recently released Kubernetes 1.31), rootless Docker containers, a "modern, secure and powerful" Incus container runtime, and more in the revamped setup šŸš€

Four new playgrounds

The latter one is particularly hot. I'll definitely write about it separately, but here is a sneak peak:

incus launch images:ubuntu/22.04 my-container

The above simple command launches a Linux container. Similarly to Docker's (OCI) containers, it's isolated with namespaces and cgroups. But unlike Docker containers, it has systemd running inside! So, containerizing a whole bunch of "alternative" applications (legacy or not) with Incus becomes so much easier.

And that's not it! With a slight tweak of the above incus launch command, you can start a full-blown VM:

incus launch --vm images:ubuntu/22.04 my-vm

Last but not least, Incus can also work as a simple orchestrator launching containers and VMs on a pull of servers šŸ¤Æ So, we've got a Docker Swarm and Kubernetes competitor here, folks!

Solving challenges with labctl

Web terminals are handy for quick experimentation, but when you're working on a longer task, you might prefer the UX of your favorite local terminal emulator like iTerm2. And it's now possible with a handy labctl challenge start command!

ā€‹

Web terminal improvements

The web terminal wasn't forgotten either! A number of people reported performance issues in non-chrome browsers, and xterm.js' change log had a whole bunch of relevant fixes, so I bumped up its version. Since I'd have to retest all playgrounds after this upgrade, I decided to combine it with a long-wanted "font change" feature. And I couldn't be happier with the results! I'm currently working from a tropical island on a ''13 laptop, and the feature proved invaluable!

ā€‹

Wrapping up

There were a whole bunch of other improvements and fixes, very important for the platform's healthy future but less visible for the end users. From September on, I'm returning to the content work, including the Skill Paths and my Docker course (and challenges), but there is already a lot of things to play with on iximiuz Labs after this release.

My dream is coming true, and I'm now only 80% employed at my regular job, so I have three days a week to work on iximiuz Labs (Friday-Sunday). But this also makes iximiuz Labs my official source of income, making monetizing the project one of my top priorities. The new features I shipped this month have made the platform more valuable, and I will reflect it in the Premium tier pricing. From the second week of September, it'll become $12/mo ($100/year), so if you wanted to get premium access, now is the best time to do it at the lower price.

For my friends outside of the EU and the US, I tried enabling the PPP discount, and it was kinda painful, so I gave up. But I'm always happy to mint a personal discount code! Just send me an email briefly explaining your situation, and I'll get back to you as soon as possible.

Have a creative month!

Ivan

Ivan Velichko

Building labs.iximiuz.com - a place to help you learn Containers and Kubernetes the fun way šŸš€

Read more from Ivan Velichko

Hello friends! Ivan's here with a slightly delayed July roundup of all things Linux, Containers, Kubernetes, and Server Side šŸ§™ What I was working on This month, I got nerd-sniped by cgroups. It all started when I ran into a pretty significant difference in how Docker and Kubernetes handle the OOM events. When you limit the memory usage of a multi-process Docker container, the OOM killer often terminates only one of the processes if the container runs out of memory. If this process is not the...

Hey there šŸ‘‹ I spent a few weeks deep diving into cgroup v2, and I'm happy to share my findings with you! Everyone knows that Docker and Kubernetes use cgroups to limit the resources of containers and Pods. But did you know that it's very easy to run an arbitrary Linux process in a cgroup using much more basic tools? The only kernel's interface for cgroups is the virtual filesystem called cgroupfs typically mounted at /sys/fs/cgroup. Creating folders there and writing to files in them is...

Hello friends! Ivan's here with the June roundup of all things Linux, Containers, Kubernetes, and Server-Side craft šŸ§™ What I was working on The first two lessons (and a few challenges) of my "Alternative Introduction to Dagger" course have not sparked much interest among my students, so I had to put this work on pause. With a heavy heart, though, because I do like Dagger, and I was enjoying working on the content about it. But no interest means fewer iximiuz Labs Premium subscribers, and I...