{"id":17499451,"url":"https://github.com/pothos/pothos","last_synced_at":"2026-01-20T23:34:32.977Z","repository":{"id":142163472,"uuid":"281517424","full_name":"pothos/pothos","owner":"pothos","description":"Profile README","archived":false,"fork":false,"pushed_at":"2022-10-02T21:17:53.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-19T21:02:33.375Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pothos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-21T22:27:36.000Z","updated_at":"2022-05-27T06:56:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee078128-f8da-4528-90db-f34dee8a21a1","html_url":"https://github.com/pothos/pothos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pothos%2Fpothos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pothos%2Fpothos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pothos%2Fpothos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pothos%2Fpothos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pothos","download_url":"https://codeload.github.com/pothos/pothos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248896569,"owners_count":21179456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-19T17:08:19.111Z","updated_at":"2026-01-20T23:34:27.948Z","avatar_url":"https://github.com/pothos.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"### About me\n\nI'm a software developer at Microsoft Azure through the [Kinvolk](https://kinvolk.io/) acquisition, working on [Flatcar Container Linux](https://www.flatcar-linux.org/) since it got readied as replacement for CoreOS Container Linux.\nThe 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).\nI also worked on [Lokomotive](https://github.com/kinvolk/lokomotive), [Inspektor Gadget](https://github.com/kinvolk/inspektor-gadget), and [traceloop](https://github.com/kinvolk/traceloop).\n\nAs a fun interview task at Kinvolk I implemented the [idea](https://github.com/systemd/systemd/issues/10227) 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](https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#IPIngressFilterPath=BPF_FS_PROGRAM_PATH) for your systemd service.\nTry out the examples in my [bpf-cgroup-filter](https://github.com/pothos/bpf-cgroup-filter) repo, and read the [first](https://kailueke.gitlab.io/systemd-custom-bpf-firewall/) and [second](https://kailueke.gitlab.io/systemd-bpf-firewall-loader/) blog post.\n\nI did my dual degree Master in computer science at TU Berlin and KAIST (South Korea), where I was part of Prof. [Sue Moon's](http://an.kaist.ac.kr/~sbmoon/) [Advanced Networking Lab](http://an.kaist.ac.kr/).\nI did my Bachelor in computer science at FU Berlin.\nI'm part of the German association [Forum Computer Scientists for Peace and Social Responsibility](https://de.wikipedia.org/wiki/Forum_InformatikerInnen_f%C3%BCr_Frieden_und_gesellschaftliche_Verantwortung), where [Joseph Weizenbaum](https://en.wikipedia.org/wiki/Joseph_Weizenbaum) was a founding member (I recommend you to watch some of his interviews or the documentary [»Plug \u0026 Pray«](http://www.plugandpray-film.de/en/)).\n\nMy [Master's thesis](https://pothos.github.io/papers/) 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](https://github.com/ANLAB-KAIST/usnetd) a memory-safe L4 switch to share a NIC between multiple userspace network stacks and the kernel's network stack, and [usnet_sockets](https://github.com/ANLAB-KAIST/usnet_sockets) a Rust userspace networking library based on [smoltcp](https://github.com/smoltcp-rs/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](https://github.com/ANLAB-KAIST/usnet_devices) library for netmap, macvtap, and UNIX domain sockets smoltcp interfaces.\n\nIn my spare time I maintain [GNOME Disks](https://gitlab.gnome.org/GNOME/gnome-disk-utility) and implemented filesystem resize, check, and repair support for it in a [GSoC project](https://wiki.gnome.org/Outreach/SummerOfCode/2017/Projects/KaiLueke_Disks). This made me also work on [udisks](https://github.com/storaged-project/udisks) and [libblockdev](https://github.com/storaged-project/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.\n\nI like compilers and compression, and even more if both are combined. My [Bachelor's thesis](https://pothos.github.io/papers/) was about a [compiler for a subset of Python to ZPAQL bytecode](https://github.com/pothos/zpaqlpy). [ZPAQ](http://mattmahoney.net/dc/zpaq.html) 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](https://en.wikipedia.org/wiki/PAQ) 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.\n\nIn university I also worked on a [Twee to Z-Code](https://github.com/Drakulix/zwreec) compiler with a tracing garbage collector.\nIf you are into Arduinos you may find my library for [Nintendo 64 controllers](https://github.com/pothos/arduino-n64-controller-library) useful which you can try out playing a [tetris port](https://kailueke.gitlab.io/N64Tetris.zip) 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 ;)\n\nI'm not actively writing on my [blog](https://kailueke.gitlab.io/) but you can find my email address there, or create an issue in this [readme repo](https://github.com/pothos/pothos) to contact me.\n\nMy GNOME Account: [gitlab.gnome.org/kailueke](https://gitlab.gnome.org/kailueke)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpothos%2Fpothos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpothos%2Fpothos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpothos%2Fpothos/lists"}