Boosts really, really welcome
I desperately need money. I'm homeless in Germany with a very low income, so I have issues reliably getting food and a roof above my head.
I would feel bad just asking for donations because there's lots of entities in way worse situations with zero income, so instead I want to do work (one-off contract is fine, doesn't have to be an employment contract. Has to be remote tho. Note I do not speak German, only English and Czech.)
Any money helps, I would need about a 900โฌ a month extra to be able to comfortably eat and have a roof above my head. I am most struggling this February, March, and some of April, maybe May, after that I should be able to get some money. I'll gladly do several one-time contracts.
I live with my girlfriend, who has no income, so my income is housing and feeding both of us.
I do have EU citizenship, but not a German one. I do have residence in the EU, I just cannot reside there for health reasons, but any post for eg. sent to it can be forwarded to me.
I can do most computer things, mostly sysadmin & programming:
- Linux kernel drivers (primarily DRM subsystem and USB, some security work incl. finding a DoS 0day in the USB stack),
- Mesa (primarily the Intel Vulkan driver (anv))-, Gradle (mostly debugging of the core and working on some plugins),
- IntelliJ (figuring out exactly when the IDE complains about source code not matching bytecode, amongst other things)
- lots of work with Java (.class transformers, agents, JMX, profiling, the .class file format spec + the JVM spec, the HotSpot C++ source code, the debugger protocol, jcmd, and other related tooling, JNI, hooking up jdb to NeoVim to implement code hotswapping and some basic code to implement some IDE features...)
- Java Spring (web app backend, I worked at a company as a backend developer)
- React
- TypeScript
- JavaScript (spent decent amount of time reading the ECMA spec)
- Python Flask (mostly simple web apps)
- PostgreSQL (primary rel database sw I use)
- MySQL
- C (lots of experience with GNU Make, GCC & Clang, incl. compiler intrinsics, linker scripts, cross-compiling, and similar. Large parts of the spec memorized) + pkgconfig
- Assembly (x86 primarily, some Thumb2 (Cortex-M0+ specifically), 6502, RISC-V. I can manually assemble and disassemble machine code for these, memorized some opcodes, wrote assemblers.)
- CMake, Meson (primarily debugging and fixing build issues in other projects, along with tracking down a bug in the Meson Rust support a while back)
- SPIR-V (wrote a compiler that emits SPIR-V)
- Networking, specifically experience deploying OpenVPN, Wireguard, writing and debugging iptables rules, network namespaces, handrolling networking for containers with veths & bridges, manually connecting to a network with just iproute2, configuring the routing tables, parts of the actual uAPI provided by the kernel as well as the internal implementation of netfilter
- A lot of experience with debugging and fixing issues in unfamiliar codebases and quickly familiarizing myself with them, including very large codebases (WebKit, Firefox, Android, Linux, Mesa...)
- Familiarity with many Linux APIs, incl. those used for debugging the kernel, as well as important concepts in the Linux kernel (files, fops, initcalls...)
- The x86 programming interface used by kernels
- Lots of familiarity with QEMU and deploying and managing VMs and their networking, isolating them into VLANs, etc
- RouterOS and Cisco iOS
- Vulkan and OpenGL APIs (primarily 3D. I've worked on Vulkan drivers, and a bit of OpenGL drivers. I know most of the Vulkan 1.0 spec by hand, and ofc lots of the extensions added since.)
- Zig (some small CLI utils
- Bash (lots of helper scripts on the systems I admin)
- Zsh
- POSIX sh (tested primarily with busybox dash. Translating bash scripts to POSIX sh)
- Some Perl,
- Haskell (Web backend mostly)
- Lua (including the C interface, embedding Lua & writi g native Lua libs)
- Guile
- Clojure (mostly getting Clojure & the REPL to run in places meant to work with Java)
- Rust (primarily work with no_std and sometimes no_core, lots of CLI utils, some Web backend and game engine work), debugging some rustc compiler issues
- VimScript (a lot of work writing plugins for doing all kinds of things in NeoVim (including writing patches to add new features to VimScript){
- A bit of Elixir
- Some programs written in C# (though no experience with .NET yet. Can easily learn, but only dotnet core, since framework needs Windows)
- Coq/Rocq, Agda, Idris2, F*, LiquidHaskell) (for type theory stuff, haven't gotten that far in most of them besides writing some proofs in primarily Coq and Agda)
- LaTeX & TeX (both TeX Core and LaTeX, though primarily LaTeX. I write most documents that need fancier formatting than just markdown in LaTeX.)
- Koka (since it's a research language, I mostly learned it for its pretty unique effects system, and haven't done anything practical in it)
- Android development (in Java, which included hand-writing the entire project structure the android Gradle plugin expects, and manually setting up the Android tooling (platform and dev tools), and hooking it up to NeoVim & Emacs.)
- Knowledge about Android system, including binder, HALs, tracing the implementation of eg. Camera on Pixels, the signature verification impl, APEXes, dm-verity, parts of the bootloader
- OCaml (mostly the basics)
- Wayland protocol (working on both compositors, compositor frameworks, and clients, in both Rust and C)
- Worked with Smithay and wlroots, wrote patches for Sway
- X11 (wrote a window manager, compositor, status bar, image viewer, worked a bit on writing a client library from scratch)
- WebAssembly (handrolled a loader in JS for one project with frontend in Zig from scratch with no libraries)
- Experience managing an infrastructure consisting of several computers networked together over the internet with VPNs & some sharing a LAN with multiple switches & VLANs
- Experience managing Debian & Ubuntu servers, Arch NixOS, Void, and Gentoo systems, along with a bit of Fedora
- Lots of familiarity with the Nix package manager (including internals of CppNix, and many of the experimental features like recursive Nix, dynamic derivations...), the Nix language, nixpkgs, NixOS, home-manager, handrolling versions of these from scratch, internals of the caches and the derivation format, how it generates links between derivations, etc
- Knowledge of most of git, including the internal low-level commands, format of all files in the .git dir, and reimplementing higher level git commands using lower-level ones, and complex operations on git repos
- Matrix protocol & software (worked on the spec and with E2EE, host Synapse & Element)
- XMPP (running a prosody instance, read thru the specs)
- Docker & Docker compose (large parts of my infra runs in docker, I've also looked into how the docker CLI, docker daemon, containerd, and runc interact, worked with alternative runtimes like kata containers)
- Virtio (worked with guest drivers, parts of the QEMU impl)
- Experience with reading large documents formatted as specs and understanding them
- Experience reverse engineering undocumented open source software to figure out how to use it and debug it
- Cryptography and security knowledge (general good practices as well as experience hacking things)
- Experience with Linux APIs needed for making root and rootless containers, and handrolling self-contained packages of container + runtime
- Used to managing systems that use systemd and making use of systemd-provided features
- Familiarity with dbus, Perl dbus API, Portals API, Notifications API
- Knowledge of XDG Portals, incl. the way they use Pipewire
- Knowledge of using ffmpeg for encoding and editing videos
- Experience with working with embedded MCUs (RP2040, ESP8266)
- Experience with FPGAs (F4PGA toolchain for Xilinx Artix-7, so yosys, verilogtorouting, and F4PGA specific tooling for the actual bitstream generation, and some Verilog and VHDL knowledge).
- ActivityPub protocol & related protocols (implemented a fedi server from scratch in Rust)
- Familiarity with the TLS protocol, parts of X.509, and the OpenSSL CLI.
- Knowledge of the tty ioctls & escape sequences (needed for writing shells, terminal emulators, terminal multiplexers, TUI programs...)
- Experience making minimal embedded Linux images manually (compiling the kernel, making a rootfs by compiling the tooling, writing scripts to tie it together, etc)
- Some experience with FreeBSD (daily-driving it for a year on a laptop)
- Knowledge of Intel GEN12 GPUs (from working on Linux drivers on them, no NDAs or anything, just reading the millions of lines of source code for several years)
- I can learn pretty much any programming language within a few days and jump into working on a codebase.
- I am pretty good at explaining and teaching things to others
- I am very patient, both when it comes to interacting with others and when it comes to interacting with computers.
- Experience with porting features or Linux kernel modules between versions of Linux (or other software)
- I read most of the eSIM specs, meaning I have knowledge of how eSIMs work, incl. reading the source code of the Android impl and setting up a fully open source (OS wise) setup
- I have experience designing network protocols of any kind
- I have experience with GTK, libadwaita, and glib internals
- I have worked with QT
- I have lots of experience with LWJGL3
- Lots of experience with JavaFX
- Experience with Emacs & org-mode
- Some experience with btrfs & zfs
- Lots of experience with LUKS2 (including reverse engineering most of the on-disk format due to lack of detailed docs), and TPM 2.0
- I need to work in an asynchronous way - meetings are possible, but will be very difficult to arrange due to my life situation.
- Experience with the USB 2.0 protocol down to the wire level
There's a decent amount of stuff I have not listed, since I've been writing this for about an hour and I keep remembering more and more things. I've done a large amount of things, and I'm currently in the middle of migrating my temporary infrastructure to run on microvms connected over wireguard to a VPS managed by either Docker or Nix along with setting up SSO, monitoring, log gathering, and other improvements, so the current state of the infra is temporary, however source code some of my projects (not all, only some recent ones) are here: https://gitea.itycodes.org/itycodes/