PDF version
Bc. V´aclav Kubern´at
vaclav@kubern.at | github.com/syyyr
Education
Faculty of Information Technology, CTU in Prague Prague, Czech Republic
Bachelor, Software Engineering Aug 2015 – Jun 2019
Programming classes were focused on programming concepts/algorithms rather than individual programming
languages. They gave me a good foundation for improving my programming skills and learning new
programming languages.
•
This is where C
++
became my main programming language
•
I have written a multi-threaded FTP server in C
++
as a final programming project
I finished my studies with a bachelor’s thesis that focused on parsing input with context-free grammars in
C
++
. The thesis was based on my work for CESNET.
I have also collaborated on making L
A
T
E
X materials for the final state exam. My main contribution was the
build system.
Experience
Software engineer Prague, Czech Republic
CESNET February 2018 – Present
Initially, I started working at CESNET as a part-time programmer during my studies at CTU. After finishing
school, I transitioned into a full-time software engineer.
•
Programming mainly in C
++
•
Code always goes through code review using Gerrit
•
Testing is done for nearly all changes
My biggest project is netconf-cli – an interactive CLI, which uses the NETCONF protocol to connect to
devices over SSH and configures them according to a configuration model defined by the YANG language.
This program is used to configure optical devices at CESNET.
•
The code uses latest C
++
20 features and advanced C
++
techniques like templates and standard algorithms
•
Command parsing is implemented using the Boost.Spirit X3 library which embeds parser grammars directly into
the code
•
The NETCONF communication is implemented via the libnetconf2, sysrepo and libyang libraries implemented by
employees of CESNET in Brno, I have also contributed code to these libraries
•
The code is available at https://github.com/cesnet/netconf-cli
•
For the latest iteration of the software, I have also developed C
++
bindings for libyang and sysrepo
https://github.com/cesnet/libyang, https://github.com/sysrepo/sysrepo-cpp
Working with optical devices involved programming for embedded computers, which means that most of the
software has to be written from scratch. This includes low level C
++
and kernel drivers, daemons, interfaces
used for configuration and even websites. Things I have worked on:
•
Contributions to the Linux kernel: driver for a power supply and fixes for the hwmon subsystem
•
Userspace C
++
drivers for optical components
•
Linux system images via Buildroot
•
A website in Javascript that graphs various optical networking stats
Projects
For most of my free-time projects I like to use a combination of Node.js and Typescript (and Express.js if it’s a
web application).
Prˇs´ı | Typescript, React, Websockets
During the COVID-19 pandemic, I have developed an online multiplayer version of a card game popular in the
Czech Republic to play with my friends.
•
The entire program is written in Typescript and Node.js
•
UI is written in React
•
Communication between the server and the players is implemented using Websockets
•
The project uses Webpack for deployment
•
Code is available here: https://github.com/syyyr/prsi
node-shortener | Typescript, MongoDB, Express
A simple web application I wrote to shorten URLs. The reason I wrote this is that I wanted a simple website
and other shortening services seemed too complicated.
•
Very simple, uses Typescript, Node.js as the platform, Express.js for the server and MongoDB for storage
•
Code is available here: https://github.com/syyyr/node-shortener
tradfri-mqtt | Zigbee, MQTT, Typescript, Node.js
Interface for Raspberry PI I use to control my smart home devices like lights and remotes.
•
Uses zigbee2mqtt which translates the standard protocol for smart devices to MQTT
•
A Node.js program handles events from the devices and acts accordingly
•
Code is available here: https://github.com/syyyr/tradfri-mqtt
obedy | Python, beuatifulsoup4
A web scrapper which gathers restaurant menus near my workplace. Before COVID-19 I would host this on a
website for my colleagues to use.
•
Written in Python
•
Works by parsing website source code and transforming that into machine readable format
•
Code is available here: https://github.com/syyyr/obedy
I also contribute to open source repositories, mainly ones that have something to do with text editor (Vim)
plugins. I keep all of my configuration open source and stored in Git, so I can easily synchronize it between my
devices.
Technical Skills
Languages
•
C/C
++
(7 years) - The language I am most comfortable with and the one I use at work
•
Typescript/Javascript (3 years) - My favorite language for doing free-time projects
•
Bash (7 years) - I’ve been using Linux for a long time, this is my language of choice for scripting
•
Python - When Bash is not enough, I use Python
•
Rust - Mostly just interest, but I wrote one small project in Rust
Developer Tools
•
Experienced with Git
•
Debugging via GDB
•
CMake - all C
++
projects I worked on use CMake
•
Gerrit/Github - I am used to the workflow of Gerrit and Github and how they handle PRs
•
Vim - my editor of choice
Libraries: Boost, Catch2, trompeloeil, docopt.cpp, spdlog, libssh, Express.js, Chart.js
Other: Node.js, Linux, Buildroot
Spoken languages
Czech: Native speaker
English: C1 - I have no problems using English
Other information
Driver’s license: B (cars and small scooters)
Interests: improving my dev workflow (and text editor / shell configuration), playing the ukulele, juggling and driving