About
My name is Roman Zhikharevich. I enjoy programming, mathematics, good books, films and music. I hope to populate this website with something interesting in the future.
Links and Contacts
Workflow
- macOS
- chunkwm
- skhd
- runit
- mpd, ncmpcpp, beets, mediakeysd
- fish
- TextMate, GNU nano
- ripgrep
- Safari + uBlock Origin
Projects
My main interests in programming are operating systems and programming languages (both design and implementation). My favourite languages are Rust, Swift, Go and C.
- serelix-boot – a bootloader for (U)EFI machines, written in C
- blackboot – a bootloader for BIOS machines, lacks boot logic but supports disk, keyboard and graphical display IO (all via BIOS), written in x86 assembly and C
- defunct – a toy programming language interpreter, only parser (recursive descent + shunting yard) mostly complete (can output an AST), written in Rust
- vkmusic2 – a Python 3 script to download audio files from vk.com
- The Game of Death 2 – a cellular automata (sort of?) game, written in C++ with SDL
Currently I'm writing a text editor.
Views on Software Design
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.
– C.A.R. Hoare, The 1980 ACM Turing Award Lecture
Simplicity is prerequisite for reliability.
– Edsger W. Dijkstra
One of my most productive days was throwing away 1000 lines of code.
– Ken Thompson
I think that the main characteristics of software are reliability and flexibility. Therefore software should be simple, overengineering brings only sorrow. That's why I like the UNIX philosophy, especially the "do one thing and do it right" part.
I also believe that software should be free (free as in freedom, not free beer). However, I tolerate proprietary software if it's good.