Dockerized email

Managing my own email server with the following setup. Read here for more details.

Source of the docker image is on GitHub.

Web 1.0 version of Wordle/Lingo

Web 1.0 (no react and fancy stuff) clone of wordle/lingo supporting 4 languages:

  • English
  • Dutch
  • Russian
  • Tatar

Play here or here.

Sources are on GitHub.

Auto solver is part of the game:

  • When the field is empty, click 3 times on DEL, followed by 3 clicks on ENTER.
  • Or execute solve() in browser console.


A tiny shell script to fail a job and trigger a notification if a cronjob takes longer than desired.

If a job takes longer than expected, for example a backup job usually takes a few seconds, For example a backup job usually runs under 1 minute. If you want to get notified when this job runs longer, just add it to crontab:
11 11 * * * longwarn 60

How to install:

wget -O /usr/local/bin/longwarn

GitHub for more details.

Flickr roulette

See a random (not completely random) photo on the Flickr roulette.

For more details.

Site percolation

Simulation of percolation theory to find if there is a path connecting left side of the grid to the right side via open pixels and to estimate percolation threshold (site percolation).


For more details.

Animated svg viewer

Simple svg viewer which can load multiple svgs and animate them one after another

C-bindings generator from Fortran

It was written to automate generation of C bindings for Fortran, source code can be found here.

! Example of input Fortran90 code:
module SomeModule
  use iso_c_binding
  implicit none
  real*8, bind(c), parameter  :: dbl1 = 1.0d0
  type(c_ptr), bind(c, name="ptr1") :: ptr1
  integer function SimpleFunction1() bind(c, name="SimpleFunction1")
    integer :: a
    integer b
    integer :: c
  end function SimpleFunction1
end module SomeModule
// Generated C-bindings:
#ifdef __cplusplus
extern "C" {

typedef void* some_ptr_t;
typedef double val_t;
double dbl1;
void* ptr1;
int SimpleFunction1();
#ifdef __cplusplus