Goal In the Cockpit team we spend a lot of our time on PR reviews. That’s time well spent – we all learn from each other, it keeps the code quality high and ourselves honest. But most certainly there is room for optimization: There are always silly or boring things like typos, inconsistent formatting, or inefficient algorithms; and humans also have selective and subjective sight, i.e. are often missing things.
... Read More
During this quarter, all employees are asked to become familiar with using AI technologies. In the last months I explored using AI for code editing and pull request reviews, but I wrote about that separately.
But today is another Red Hat day of learning, so I looked at something more hands-on: Install and run InstructLab on my own laptop again, and experiment with it.
TL/DR: This just reinforced my experience from the last two years about AI being too bad and too expensive for what I would expect it to do.
... Read More
Learning web components and PatternFly Elements
8 November 2024
Today at Red Hat is day of learning again! I used the occasion to brush up my knowledge about web components and taking a look at PatternFly Elements. I’ve leered at that for a long time already – using “regular” PatternFly requires React, and thus all the npm, bundler, build system etc. baggage around it.
In Cockpit we support writing your own plugins with a simple static .html and .
... Read More
A quarter on the Red Hat OSCI and Testing Farm team
19 December 2022
For the last quarter I have worked in Red Hat’s Testing Farm (TFT) and “Operating System CI” (OSCI) and teams, on a temporary rotation. TFT develops and runs the Testing Farm (TF) infrastructure, an API which you tell “go run a test with $these parameters, it allocates a bunch of cloud instances, sets them up, runs your test, and returns the result. OSCI builds upon this to implement Fedora’s and RHEL’s gating tests for package updates, image builds, upgrades, and so on.
... Read More
Evaluating Rust's http/websocket frameworks
10 December 2022
I spent this day of learning on evaluating the three popular high-level Rust frameworks for HTTP/websocket servers. At some point we want/need to rewrite Cockpit’s web server, and Rust feels like a natural choice for this (besides Python).
My goal was to write a little webserver which can do the following:
/hello: simple http GET, with optional User-Agent: header inspection: curl http://localhost:3030/hello/myname replies with “Hello myname from from curl/7.
... Read More
Learning asynchronous programming in Rust
16 September 2022
I recently found myself needing to write a dynamic reverse HTTP/websocket proxy. After some prototyping it is now time to write something real. To prepare myself for that, I devoted today’s Red Hat Day of Learning to another aspect of Rust: asynchronous programming, and learning about tokio. There is really no getting around tokio in the Rust world of networking.
I started with the small book “Asynchronous Programming in Rust”. Honestly I found this a bit hard to follow, as it quickly dives into a lot of technical details, which I don’t have yet.
... Read More
Writing a simple time tracker in Rust
10 June 2022
Today was another Red Hat Day of Learning. Half a year ago I started learning Rust, but have not really done much with it since then. I did try to port simple-term, but that was quickly thwarted by the unmaintained and broken vte Rust binding for GTK3 – that issue is still way over my head, I didn’t make much progress after two hours of monkey patching.
I have used gtimelog to track my work for my entire professional life (since 2004).
... Read More
Evaluating Google Cloud for Integration Testing
4 March 2022
Cockpit CI demands Testing Cockpit is not an easy task – each pull request gets tested by over 300 browser integration test cases on a dozen operating systems. Each per-OS test suite starts hundreds of virtual machines, and many of them exercise them quite hard: provoking crashes, rebooting, attaching storage or network devices, or changing boot loader arguments.
With these requirements we absolutely depend on a working /dev/kvm in the test environment, and a performant host to run all these tests in a reasonable time.
... Read More
Learning Rust: Interfacing with C
27 August 2021
Why Rust? I had spent the last two rainy days of my summer vacation on learning Rust. Rust is becoming ever-more popular and is even making its way into the Linux kernel – so it feels like something I should know a little about.
There have been a lot of new languages in the recent years, like Kotlin or Go. None of them are particularly attractive to me personally, as their strenghts and “selling points” just don’t apply enough to what I do – so far, that has been covered rather well between C, Python, and JavaScript.
... Read More
Deploying Prometheus/Grafana, learning metrics
21 May 2021
In the Cockpit team we recently started to generate and export metrics about our CI, and collect/graph them by a Red Hat internal Prometheus and Grafana instance. But I am not happy with this yet, as it does not yet answer all the questions that we have for it. Also, it is not accessible outside of Red Hat.
On today’s Red Hat Day of Learning I wanted to get to know how to deploy these components and learn more about the PromQL language.
... Read More