Projects

30 Oct 2023

Rules of thumb for Go

In English, the phrase “rule of thumb” refers to an approximate method for doing something, based on practical experience rather than theory. Github link. This project’s aim is simple. To provide some rough baseline measurements for common decisions you have to do every day as a software engineer: Do I use map or a slice here? TL;DR: use map when len(haystack) > 100 && len(needles) > 100 I need to deduplicate this, do I use map[T]struct{} or just deduplicate the slice?

22 Apr 2020

As

As is a library to convert numeric types with overflow check in Go. Why? Other languages like Rust have overflow checks on type casts (if you use TryFrom and not just as), but for Go there is nothing like that. My need came from a simple bug, where external integer type was being type casted multiple times across multiple API boundaries. Because the original integer size was hidden across several API hops, the affected code expected too small integer size, and overflowed.

16 Jun 2019

EVE Online Discord Bots

Given my passion for Sci-Fi and all things related to space, it’s only natural that EVE Online has captured my heart. What is EVE Online? Eve Online is a massively multiplayer online game (MMO) set in a science fiction universe, known for its complex player-driven economy and expansive sandbox gameplay. In the game, players pilot customizable spacecraft across a vast universe, engaging in various activities such as exploration, mining, trading, combat, and diplomacy.

11 Nov 2018

Birkana in Rust with HTTP

Recently I read this awesome article about representing hexadecimal numbers using runic system. So I created this little program that takes hexadecimal string on stdin and spits out SVG data on stdout. Github link. To make it easier, and also to learn about state of Rust’s HTTP frameworks, I wrote a small HTTP server for this, and it is open to the public. Github link. Lessons learned: SVG in Rust.

29 Jun 2018

Nanny

Nanny is a monitoring tool that monitors the absence of activity. Nanny runs an API server, which expects to be called every N seconds, and if no such call is made, Nanny notifies you. Nanny can notify you via these channels (for now): print text to stderr email sentry sms (twilio) slack (webhook) generic webhook (HTTP POST callback) xmpp (jabber) Usecase? Ever wrote invalid crontab record? Ever had it call bash script that failed silently without doing what you wanted, and you noticed months later?

18 Jun 2018

Diskspace Notify

Checks periodically for free disk space and alerts user via email when there is not enough free space (threshold set in config). It does not aim to replace any large monitoring tools, origin of this tool is pretty simple. I ran out of disk space on my root partition, which caused it to break. I was suprised initially, why would you not be able to ssh onto a machine that ran out of space on / partition?

18 Apr 2015

Django Pages

A small and simple CMS (content management system) like Drupal, Joomla, WordPress. It may not have as much plugins and templates like WordPress but it is super simple application with django admin with WYSIWYG editors for page and post editing. It is designed for easy web content editing with no previous experience in HTML or CSS. Just install it once, use default template or create one for yourself (or hire someone to make it) and use it.

26 Apr 2014

Wallpaper Changer

Python application for dynamic changing of wallpapers depending on certain conditions (time of day, date, wheather, cpu temperature, etc…). This tool comes with some pre-tested images that work pretty well. It will run on background and update the wallpaper based on the time of day. It does this by merging few of the images together, so you can have nice sunny day as wallpaper during the day, and darker starry one during the night.

17 Jun 2013

Python Chat

A simple CLI chatserver that uses server-client RSA key based authentication. I added dynamic keypair generation for server and clients (on startup each generates 4096b long key) and exchanges public keys when connected. This way there is no need to create encrypted keys for clients and server. Github link.