Skip to content

Instantly share code, notes, and snippets.


Ivan Savov ivanistheone

View GitHub Profile
ivanistheone /
Last active Oct 2, 2022
Script that generates a very long PNG image from a PDF document (use to get an high-level overview of a paper or book section).
#!/usr/bin/env python
import argparse
import os
from pdf2image import convert_from_path
from PIL import Image
except ImportError:
print("You need to run `pip install Pillow pdf2image` before this script")
import sys
ivanistheone / fizzbuzz.tex
Created May 25, 2022
FizzBuzz of first 100 numbers written using TeX macros. TeX is a very strange programming language, but hey it works...
View fizzbuzz.tex
% Compile with pdftex, not pdflatex
\def\modulo#1#2{(#1-(#1/#2)*#2)} % a mod n = a-(a/n)*n where / is integer division
\ifnum \numexpr\modulo{\X}{15} = 0
ivanistheone /
Last active Nov 21, 2021
This script generates links to mybinder and colab online Python environments you can use for any jupyter notebook hosted on in a GitHub repo.
ivanistheone /
Last active Jan 5, 2023
This script converts a plain text file, e.g. article.txt into a mp3 audiobook using the MacOS text-to-speech accessibility command-line tool `say`. Adjust the `VOICE` and `RATE` parameters to customize to your liking. Note this requires running on MacOS.
#!/usr/bin/env bash
set -e
# This script converts any text file into a mp3 audiobook using the MacOS
# text-to-speech accessibility command-line tool `say`.
# Adjust the `VOICE` and `RATE` parameters to customize to your liking:
RATE="295" # pretty fast
if [ $# -eq 0 ]; then
#!/usr/bin/env python
Helpers for downloding Kolibri databases and printing topic trees:
./ --channel_id=95a52b386f2c485cb97dd60901674a98
or to get the same result as HTML (assuming you have `pandoc` installed):
./ --channel_id=95a52b386f2c485cb97dd60901674a98 --htmlexport
View excerpt from ck-12
def retrieve_flex_book_lesson(item):
html_url = "/flx/get/perma/modality/lesson/{lesson_id}/{domain_id}?format=html".format(
dst = tempfile.mkdtemp()
ivanistheone / samizdat-shell-help.bash
Last active Dec 17, 2020 — forked from kovetskiy/samizdat-shell-help.bash
help text for bas script based on ### comment + awk command
View samizdat-shell-help.bash
### my-script — does one thing well
### Usage:
### my-script <input> <output>
### Options:
### <input> Input file to read.
### <output> Output file to write. Use '-' for stdout.
ivanistheone /
Created Apr 2, 2020
Demo of common use of config.LOGGER in ricecooker for testing new colorlogs
#!/usr/bin/env python
from ricecooker.chefs import SushiChef
from ricecooker.classes.nodes import ChannelNode, TopicNode, DocumentNode
from ricecooker.classes.files import DocumentFile
from ricecooker.classes.licenses import get_license
from ricecooker.config import LOGGER
View build log on Mac OS X
(venv) probook:kiwix-build ivan$ ./ --target-platform native_dyn
WARNING: kiwix-build has not been tested on MacOS platfrom.
Tests, bug reports and patches are welcomed.
- autoconf : SKIP
- automake : SKIP
- libtool : SKIP
- cmake : SKIP
- pkg-config : SKIP
SKIP, No package to install.
ivanistheone /
Last active May 26, 2017
Proof of concept for combining command line arguments.

Combining argparse parsers

This is a proof of concept for a command line interface (CLI) that is subclassable. TO use, create an instance of the class (or subclass) and call it's main method.

The only tricky part is that subclasses need to pass add_parser_help=False when calling the BaseCLI's __init__ method.

Using by itself