I have been writing software tools for many applications such as scientific data analysis, programming tools, web (backend and frontend), games.
A full toolbox of up-to-date theoretical knowledge including security, systems programming and machine learning (MSc Computer Science ETH Zürich 2019), and practical skills allows picking the best suitable tool for the task at hand.
I like learning new technologies.
My programs follow good software design and architecture practices.
I follow a robust coding and documentation style that is easy to follow.
Systems must work reliably and should be as easy to use for humans as possible.
They should not track users beyond what is absolutely necessary and clearly described in plain language in the program description.
Some experiences:
C: systems programming (OS, kernel, network, virtual filesystem)
C++: legacy and modern usage of the language including Boost and CGAL, high-performance computing
C#: current .NET Core.
Java: various larger client, server, and Android applications; compiler; static analyzer with abstract interpretation
Python: data analysis, small tools, machine learning (scikit-learn, TensorFlow)
Go: various tools and server programs
Javascript: web applications and games
Rust: some tools while learning the language
Haskell: taught me many more things than just functional programming
Datalog: a static program analyzer (tainted variables)
VHDL, Chisel, Verilog: FPGA applications and CPU/FPGA hybrid applications
SimFS is a file system interface developed at the Scalable Parallel Computing Laboratory (SPCL), ETH Zürich that allows balancing of storage and computing resources for large scientific simulations generating petabytes of data. I contributed to this project during my BSc thesis in Computer Science.
Queueing Theory was used in this student project to benchmark a self-built database middleware system in the Microsoft Azure cloud.
Proper system analysis and bottleneck detection is crucial to improve distributed systems where the most benefit can be achieved.
Queueing Theory has many practical applications in computer systems and real life.
As often, learning a theoretical topic in combination with a practical project gives a much deeper understanding than just learning the theory.
Summary description of various projects in these very interesting scientific fields. Are AI systems fit to replace physicians? Building of reliable AI systems.
Static analysis and sanitation of tainted variables; implementation in Datalog. A group project in Program Analysis for System Security and Reliability (PASS).
Short description of various projects that do not have a separate page yet: middleware, wired and wireless networking, SQL and non-SQL databases, compiler, static analyzer, etc.
I learned many things while applying theory in practice.
A Tron like light cycle race implemented on a Xilinx Spartan 3 FPGA board (MIPS assembly, I/O devices, VGA output).
Additional game versions in Excel and Javascript.
This software can be used to analyze data points and time ratios in/above/below a defined range using a standard linear interpolation model. Example: INR coagulation values.