GithubHelp home page GithubHelp logo

About me

I'm a software developer at Microsoft Azure through the Kinvolk acquisition, working on Flatcar Container Linux since it got readied as replacement for CoreOS Container Linux. The work covers a broad range from the high-level build system architecture down to developing the low-level software components and collaborating with various upstream projects (Linux kernel, systemd, etc). I also worked on Lokomotive, Inspektor Gadget, and traceloop.

As a fun interview task at Kinvolk I implemented the idea of a systemd option to define BPF programs as packet filters for all network sockets of a CGroup. This is now part of systemd since version 243 and lets you use a custom network filter for your systemd service. Try out the examples in my bpf-cgroup-filter repo, and read the first and second blog post.

I did my dual degree Master in computer science at TU Berlin and KAIST (South Korea), where I was part of Prof. Sue Moon's Advanced Networking Lab. I did my Bachelor in computer science at FU Berlin. I'm part of the German association Forum Computer Scientists for Peace and Social Responsibility, where Joseph Weizenbaum was a founding member (I recommend you to watch some of his interviews or the documentary »Plug & Pray«).

My Master's thesis was about memory-safe userspace networking to protect against security vulnerabilities in the OS kernel's TCP/IP network stack due to memory corruption bugs. The solution consists of usnetd a memory-safe L4 switch to share a NIC between multiple userspace network stacks and the kernel's network stack, and usnet_sockets a Rust userspace networking library based on smoltcp that is still able to integrate with the loopback device. It offers various options on direct or shared NIC access. It uses my usnet_devices library for netmap, macvtap, and UNIX domain sockets smoltcp interfaces.

In my spare time I maintain GNOME Disks and implemented filesystem resize, check, and repair support for it in a GSoC project. This made me also work on udisks and libblockdev. Please reach out if you want to improve GNOME Disks. I still have a long todo list even though I don't find the time to write new code.

I like compilers and compression, and even more if both are combined. My Bachelor's thesis was about a compiler for a subset of Python to ZPAQL bytecode. ZPAQ is a compression format which embeds the decompression bytecode in the archive, allowing to change the algorithm without requiring the decoder to be updated. This idea addressed the incompatibility problem that all the versions of PAQ compressors had, and also allowed to choose different algorithms depending on the type of input data. However, ZPAQL wasn't used by many people because it is an assembly-like language. With a Python-like language to compile from I wanted to lower this barrier to write custom compression algorithms and also prove that the format can embed non-context modeling algorithms like Brotli (which I ported to Python from a Rust implementation). Custom algorithms are useful because the key element in data compression is prediction of future data which works best when the current context is taken into account. E.g., with ZPAQ it was easy to write a compression model for PNM image data that uses the color of the neighbor pixels to predict the next. The generated code is not the fastest because my malloc implementation isn't but it is a good playground for data compression. A fun exercise was to detect the decimal digits of Pi and then switch from a generic text compression model to perfectly predicting the next digits of Pi, essentially wasting almost no bytes on storing this seemingly random string it in a text despite it appearing like incompressible random data to any other compression algorithm.

In university I also worked on a Twee to Z-Code compiler with a tracing garbage collector. If you are into Arduinos you may find my library for Nintendo 64 controllers useful which you can try out playing a tetris port on your TV (or anything that displays the composite video signal the Arduino generates in software). I'll spare you my QBasic and Visual Basic code but if GitHub existed then, you would find it here ;)

I'm not actively writing on my blog but you can find my email address there, or create an issue in this readme repo to contact me.

My GNOME Account: gitlab.gnome.org/kailueke

Kai Lüke's Projects

awaitchannel icon awaitchannel

Go-style concurrency and channels with Python 3.5 and asyncio

biodiff icon biodiff

Compare binary files using alignment algorithms

coreutils icon coreutils

Cross-platform Rust rewrite of the GNU coreutils

garm icon garm

GitHub Actions Runners Manager

ignition icon ignition

First boot installer and configuration tool

libbytesize icon libbytesize

A tiny library providing a C "class" for working with arbitrary big sizes in bytes

netmap icon netmap

Automatically exported from code.google.com/p/netmap

openssh-keys icon openssh-keys

A pure-Rust library to read and write OpenSSH public keys

papers icon papers

Some works done during computer science studies.

phosh-vnc icon phosh-vnc

GNOME Phosh user session in a container accessible via VNC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.