Logo Semerak

High school student

With passion in software engineering, learning new things and improving own skills.

Experience

NASM

I learned Assembly for targeting security vulnerabilites and reverse-engineering C programs by disassembling the executables. I experienced x86 syntax on my desktop and AMD on my laptop. Disassembling C programs accelerated my learning process by knowing how simple statements are represented in instructions that are executed on the CPU.

C

C is the language that helped me the most to improve the ability to solve complex problems at the lowest level. I use pure C at work and also for personal projects. It also helped me to learn to write safe programs and understand how higher level languages work under the hood.

The reason why I am trying to avoid C++ is that I cannot look at a line of code and tell how the assembly will look-like after the compilation due to its poor readability and unpredictableness.

Rust

When it comes to memory-safe programs on a system level I have explored Rust. I enjoy its sophistication and abilities that the language gives me. I take advantage of it for programs with async calls, complex structure behavior or string manipulation.

For server-side apps I experienced Axum framework and for async run-time I always go with Tokio.

Go

Golang is the language in which I write my graduation project that is focused on a network protocol. Firstly I was pretty sceptical about its design, but as I experience it more I find some really good things about the language that I think I missed. And I am looking forward with the language for my next project ideas.

Kotlin

At school we learn Java, but I prefer to develop its applications in Kotlin. I have this preference mainly for its null safety and functional patterns, because I am not a fan of OOP with forced inheritence. I experienced the language in a company while we had school practice and I gained a lot throughout the time.

TypeScript

I experienced TypeScript mainly from frameworks for web development including full-stack ones. For now I moved more to backend development, because as I found out more how JavaScript works under the hood I can't stand more developing with it. Althought I think TypeScript has a great idea I would develop with the language.

Bash

I found out knowing Bash very useful. It really helped with my development productivity for automation tools and to learn less known Linux commands that are very useful. I am looking forward to use Shell scripts in my next projects.

Python

I choose Python for scripts that require complex data representations, string manipulation or more programatic logic. The language is more useful than I firstly thought as I find out more how other languages relate to it. I am also looking forward to learn more about the LLMs and how the deep learning frameworks are implemented.

Lua

I got into Lua thanks to Neovim. Its speed and simplicity to learn makes it really stand out. I am looking to create custom plugins and LSPs for my Neovim editor to improve my development environment. It also gives me the ability to create scripts for embedding into own software.

Tools

Linux

I run Linux on my both machines with Fedora being the distribution of choice (I don't have time to say "I use Arch btw"). The ability of adaptation of the distribution helped to create an environment where I can be really productive. Knowing the terminal with tools like Vim, Tmux or fzf create a development workflow in which I can develop with joy. It also got me into open-source world.

Neovim

As an editor I use Neovim instead of Vim due to its customization and scripting mainly with Lua instead of VimScript. Learning to edit with Vim was the best choice I could make as a programmer, because it was the most rewarding. There is always a way to improve and I try to find those improvements when I work on projects. Neovim really gave me the ability to adapt the editor for my personal needs.

Tmux

When it comes to terminal multiplexing in a neat way I always use Tmux. It also gives me the ability to search and copy the terminal output in Vim-like environment thanks to its configuration. It got me into Shell scripting due to many automation ideas with it for better productivity.

Projects

My open-source projects are primarily hosted on GitHub, although I also maintain some on GitLab. Both provide robust platforms for hosting and collaborating, but they each have their unique strengths.

For now I have many projects in their development process, but I will be adding them with their documentations to this section thanks to my admin that is built-in this project, written in Rust.

Contact

© 2024 Radim Semerák. Open-source on Github.