About me

Hello! I’m Kamila Szewczyk, I’m 19 and I usually go under the online moniker Palaiologos. I’m an expert programmer and aspiring mathematician, primarily interested in compiler construction, data compression, esoteric languages, statistics and numerical algorithms. Additionally, during my teens I have possessed substantial knowledge of low level development and performance optimisation. PGP: C868 F0B6 DE38 409D. Currently I am a full-time student based in Germany. Trust only things I say on my website, via Matrix or messages I explicitly sign. All of my GitHub contributions are signed with this key. I have generated the following JPEG image using a real-life picture of me and Stable Diffusion.

Find me on:

Feel free to reach out to me via e-mail or Discord (preferably send an e-mail beforehand stating your intent, I get a lot of friend requests). I don’t bite, pinky promise. I am also up for answering questions about my projects and giving advice on my areas of expertise. For that, just send me an e-mail.

Technologies and fields

  • Expert: C, C++, APL, Lisp, x86/8051/6502/Z80 assembly, Perl, Java/JVM, LaTeX
  • Comfortable user: Lua, TypeScript, ActionScript, Rust, Haskell, OCaml
  • Learner: Python, Haxe, Prolog, Erlang, Elixir, MIPS assembly, Mathematica
  • Esoteric languages: asm2bf, Brainfuck, Malbolge, Seed, Befunge 93/98…
  • Fields:
    • Data compression - Designed and implemented bzip3; implemented and improved upon various algorithms (fast minimum-redundancy codes, McIlroy-Tamayo LZP; Hash-chain, suffix array LZ77, LZW, LZMW, LZAP, PPM, various CM experiments, etc.), currently working on an introductory book to data compression.
    • Artificial intelligence - Implemented jcram (a neural-network powered, PPM-like JavaScript compressor trained on the corpus of ECMAScript CGCC submissions); researched selected topics in Chess engines and engine-driven PGN compression.
    • Reverse engineering - Implemented intellectual property protection solutions, fixed abandonware bugs, implemented PE/ELF packers and dumpers; currently hosting a reverse engineering contest. Analysed malware samples present in the wild.
    • Compiler/interpreter construction - Designed and implemented various programming languages; more specifically, register allocators, advanced (generational, compacting) garbage collectors, runtime libraries, push lexers/push parsers, rudimentary optimising compilers and fast parsers for data formats (e.g. the APL array notation). Implemented efficient esolang-targetting toolchains (notably asm2bf/asm3bf/asm2ws).
    • Numerical analysis - Implemented numerical libraries for programming languages, investigated arbitrary precision computation for some of my projects, designed numerical approximation algorithms.
    • Theoretical computer science - Implemented functional programming languages, gave talks on functional programming; researched selected topics in automata theory, formal languages and computability theory.
    • Code golf - Participated in various code golf contests, implemented a few code golf languages, wrote a few code golf challenges. Primarily golfing using esoteric languages and C.
    • Mathematics - Primarily interested in number theory, probability theory, statistics, information theory, numerical analysis and linear algebra.
    • Other areas in which I hold some degree of expertise: database design, network programming, image processing, data mining, graphics programming, high-performance computing.
  • Latent interests:
    • Computer algebra - Despite being interested in various computer algebra concepts (e.g. Gruntz algorithm, Risch algorithm/RUBI, etc), I have not yet implemented a semblance of a computer algebra system from scratch.
    • Cryptography - I generally don’t deploy cryptographic code that I wrote, but I have implemented a few cryptographic primitives and happen to be interested in the theoretical aspects of cryptography, particularly focused on formalisation of the field, cryptographically secure pseudorandom number generators and hash functions.
    • Operating systems - I have implemented a few toy kernels and I find the theory behind operating systems fascinating, but I have not had a chance yet to design one from smaller primitives.
    • Formal methods - I was briefly interested in Lean and contributed some proofs to mathlib4, but I did not find it particularly enjoyable (at least within the scope of the current technology).
    • Retrocomputing - I ported some of my programs to MS-DOS and briefly used old BASICs and assembly languages. I do not own any retrocomputing hardware, with an exception of a few old calculators.
    • Competitive programming - I have participated in competitive programming contests to fill my time, but I do not find it particularly enjoyable or desirable to pursue.

Talks, lectures and papers

  • Dyalog'23 in Helsingør - Talk: An Implementation of the APL Array Notation
  • APL Germany Herbsttagung 2023 in Berlin Adlershof - Seemingly Impossible APL Programs
  • APL Germany Journal 2023 - Seemingly Impossible APL Programs
  • ArrayCast, Ep. 74, 2024 - KamilaLisp and Kamila Szewczyk
  • 18 Sesja Linuksowa in Wrocław - Statistical Data Compression
  • Maja - A numerics-oriented Mathematical library for Java; DOI: 10.5281/zenodo.7777404.

Projects

Data Compression:

  • bzip3 (2022-2023), a better and stronger spiritual successor to bzip2. Features higher compression ratios and better performance thanks to a context modelling and adaptive arithmetic coding-based entropy coder, fast Burrows-Wheeler transform code making use of suffix arrays and a RLE with Lempel Ziv+Prediction pass. Packaged for every major linux distribution (Alpine, Arch, Debian, Devuan, Fedora, Gentoo, Kali, NixOS, Manjaro, Void and others). Usually outperforms RAR, LZMA and Zstandard on text data.
  • modern-rzip (2022-2023), a modernised fork of the rzip. Includes a Reed-Solomon implementation and a custom archiver with support of locality-sensitive hashing for i-node ordering. Can compete with dwarfs, squashfs, lrzip, etc…
  • mri (2022), minecraft region interchange format. A format for storing minecraft worlds in a more compact and efficient way.
  • qbdiff (2023), building and applying patches to binary files.

Programming Languages:

  • asm2bf (2016-2021), a very powerful custom assembler targetting over 200 languages.
  • mtcracker (2019), the most efficient (seed size to generation time ratio) mersenne twister cracker (recovering the initial seed) made for use with the Seed esolang. Includes source code in x86 assembly and a description of a better generation algorithm. My first Wikipedia mention which I had earned at the age of 14.
  • malbolge-lisp (2020-2021), a lisp interpreter in malbolge unshackled, considered the most advanced program written in malbolge to date. Alongside a malbolge “hello world” program I made, mentioned on the english wikipedia. Supports point-free programming, lexical scoping, mu-recursive functions, arbitrary precision arithmetic, functional programming and lazy evaluation. My second large project I had made at the age of 16.
  • KamilaLisp (2021-2023), a Lisp I had dreamed up. Concise, flexible and functional. Loosely inspired by malbolge-lisp, APL, Haskell, and Scheme.
  • blc-mb (2022), a Binary Lambda Calculus evaluation engine written in Malbolge. Supports garbage collection, monadic I/O, tail call optimisation and it’s compatible with existing BLC8 programs.
  • asm2ws (2021), a just-in-time compiler, assembler, optimiser, interpreter and disassembler for the Whitespace virtual machine.

Misc:

  • tiny-6502 & tiny-z80 (2021), small but fully compliant 6502 and z80 emulators.
  • Maja (2023), a slick numerics-oriented Mathematical library for Java. Maja implements around 300 different special functions for use in Java programs.

Single day SDL games. Github: sdlgames (2022-2023):

All online games are playable in your browser. Only mouse and keyboard input is supported.

Commercial experience

Available upon inquiry, send me an e-mail.

Contributions

I have helped in development of the following projects:

  • discord bots (2021-2023) - volunteer work as a verification helper and a site helper.
  • ghidra, a reverse-engineering environment.
  • notepad++, a Windows code editor.
  • gcc, the GNU Compiler Collection.
  • re/flex, a very fast lexer generator for C++.
  • dwarfs, a fast high compression read-only file system.
  • ppmd_sh, a statistical compressor based on Dmitry Shkarin’s ppmd vJr1
  • zpaq, a journaling archiver.
  • LLVM Project, a compiler infrastructure.

My Hardware

  • Main PC - “Legendre”: Ryzen 9 3900X, 32GB 3600MHz, TUF X570, RM White 850W 80 Plus Gold, NZXT H510 Black, PNY 1TB M.2 PCIe NVMe, Noctua NH-D15 2x140mm, Radeon Pro WX4100
  • Laptop - “Laplace”: ThinkPad E14 gen 3, Ryzen 7 5700U, 40 GB RAM, M.2 PCIe 512 GB.
  • Machines “Lovelace” (i5-7400, 16GB, 2x2TB WD Blue, Headless), “Libri” and “LeVerrier” have been decommissioned during moving countries.

Misc

From 2019-2021, received the KFnrD scholarship, a Polish organisation which supports highly gifted schoolchildren. Native Polish, C2 English, B1 German. Also dabbling in Russian and Latin.

Non-STEM interests:

  • Early modern history (Europe and Asia).
  • Surgical medicine.
  • Chess.
  • Music (module trackers).
  • Typesetting and writing.
  • Linguistics, particularly concerning the English language.

My travel list - notable places I have seen, stayed at, or plan to visit:

  • Warsaw (Poland)
  • Wrocław (Poland)
  • Lublin (Poland)
  • Gdańsk (Poland)
  • Berlin (Germany)
  • Hamburg (Germany)
  • Frankfurt (Germany)
  • Saarbrücken (Germany)
  • Rome (Italy)
  • Copenhagen - Metropolitan area, Helsingør (Denmark)
  • London (United Kingdom)
  • Basingstoke (United Kingdom)
  • (planned for a week in August 2024) Cambridge (United Kingdom)
  • (planned for indefinite future after the situation settles) Chernobyl (Ukraine)
  • (planned for indefinite future) Zürich (Switzerland)
  • (planned for indefinite future) Strasbourg (France)
  • Toronto (Canada)
  • Guelph (Canada)
  • Waterloo (Canada)

Attempting to seduce me romantically will end poorly for you. Attempting to convince me to work on your blockchain or webdev projects will end even worse.