about

I am an autodidact, interested in almost everything, from psychology to software development.

"what I cannot create, I do not understand" (Richard Feynman) is the guiding principle for my projects, as they seek to teach me by building as much as possible from scratch, without relying on big libraries.

skills

c++

python

functional programming (f#)

go

pytorch

tensorflow

large language models

geometric deep learning

computer vision

reinforcement learning

docker

linux/unix command line and shell scripting

web front-end (html/css/javascript)

web back-end (nodejs and go)

this is just a selection. some more projects can be found on my GitHub.

matrix_gpu - custom gpu+compiler for linear algebra on fpga

details

  • started as a group project at Imperial College where I did some of the gpu design and a compiler for creating machine code to plot functions
  • later I came up with my own linear algebra language to utilise gpu for parallel multi-dimensional array operations
  • added this into the compiler
  • added garbage collection to the compiler

tags: systemverilog, c++, neural networks, gpu, fpga, compiler

GitHub

auto_derivator - auto differentiation and neural network library

details

  • automatic gradient computation with reverse gradient accumulation
  • added PyTorch-like neural network frontend

tags: c++, backpropagation, graphs

GitHub

nonaginta_comp - c90 to risc-v compiler

details

  • created as a pair project at Imperial College
  • implement almost all c90 features
  • utilises llvm-ir-like intermediate representation for enabling optimisations in the future
  • ir represented as a control flow graph

tags: compiler, c++, risc-v

GitHub

riscv_cpu - pipelined risc-v cpu with multilevel-caching in systemverilog

details

  • created as a group project at Imperial College; I did the following:
  • 5 stage pipelining with forwarding, branch prediction, hazard detection
  • multilevel caching with split l1 cache and shared l2 cache + main memory with a snooping protocol for cache coherency

tags: systemverilog, cpu, risc-v

GitHub

serpens_os - x86 operating system for playing snake

details

  • built with cross-compiler and tested in QEMU and on laptop
  • write bootloader in nasm assembly
  • drivers for keyboard, display using interrupt handling

tags: c, os, bare metal, x86

GitHub

parvum_parse - small yacc-like parser generator

details

  • LR(1) shift reduce parser to parse input with yacc/bison-like file specifying grammar and reduction rules
  • obtained grammar file representation as the "canonical collection of sets" along with a set transition table to represent the whole graph structure
  • generated parse table from it
  • had to implement my own hash maps since this was written in c only
  • uses tokens from lex as input

tags: finite automata, parsing, c

GitHub

clang

  • fix a bug where an error was not given when using a non-defined (but declared) identifier
  • added error message for this
  • worked with the c standard to test all edge cases where this should and shouldn't result in an error

tags: compiler, c++

GitHub

issie

  • issie is a digital circuit simulation tool used for teaching
  • wrote functional F# code using an F#/Elmish/Fable/Electron tool chain
  • added concurrency to Issie using web workers and explore web worker bandwidth and latency

tags: functional programming (f#), concurrency

GitHub

contact

ckronbichler at proton dot me