Welcome to Emre's Digital Garden

This site is a digital garden. I intend to tend it. It's mostly intended for my future self as a technical logbook. If you like them, please drop an email to contact@emresahin.net to tell what you like. You can use the same address to report errors and dislikes.

These are now classified into roles I play.

Continuous Developer

Everyone knows software development never finishes. You have to keep up, learn new technologies and fix (or replace) the bugs. I'm developing software since 1996 or its whereabouts. These are mostly tidbits and development journals.

Perpetual Learner

Masochistic Minimalist

  • Using cat for writing: I was using a simple script based on cat to write notes and posts. It was an experiment to keep myself to think more about content and less about minor errors. I think I lost that kind of minimalist enthusiasm and switching to Neovim from Emacs helped a bit too.
  • Using todo.txt for recurring tasks: I gave up using todo.txt after the list grown into something not managable. These days I use Trello to forget the tasks.


  • Burnouts: I read a lot about it but I think I never lived it. This is mostly because I don't have to do jobs that I don't like for the long run.
  • Energy for taking risks: How to make people to work on long term goals?


Lazy Scripter

Software Architect


These are mostly about my Ph.D. work in building OCR for Ottoman Turkish. They are dated. I may return to work on this some time in the future as the problem seems still open.

Shameful Procrastinator (To Be Classified)

Fixing Pip Timeout Problems

Death of Agile?



Visual Transliteration for Ottoman

CV as of February 2022

risk taking energy

Creating OS-dependent temporary directories in Rust

Coursera Deep Learning Specialization Notes

Turning Ottoman Letters into Graphs (1)

Translating Ottoman Turkish Spelling to Latin Alphabet using Surface Forms

Copying and pasting with XWindow clipboard from tmux

A Regular Conversion Algorithm Between Turkish and Ottoman

Developing a gitignore crate

A Need for Yet Another Transliteration Alphabet for Ottoman

SSH keys for Multiple Accounts in Github

Backup Script for Recent Files

Paper Review: FREAK: Fast Retina Keypoint

nginx and php-fpm notes

Object-Oriented Brain Damage

Dervaze: A Transliteration System for Ottoman


zsh'de dosya se├žim operat├Ârleri

TIL April 28

Notes on Computer Vision A Modern Approach 2E

Should we expect a software crisis?

TIL April 29

Sending i3 messages from shell scripts

XVC State Machine

Shell (Bash and Zsh) Notes

Development Journal, June 9

Creating a file system watcher with ignore rules

Progress on Ottoman Translation - 2018-6. Week.

TIL June 11

R Notes

Activate left window when the current one is closed in tmux

Static Variables in Python


Randomness Course Notes

Paper Review: Computerized Paleography: Tools for Historical Manuscripts

Adding version information to executables in CMake projects

This Site's RSS Generator

Query Logging in Databases when using Parameters

Anonymous functions in dart

Recurrent Neural Networks

My Emacs Packages

Types of regularization in ML

A Fast Local Descriptor for Dense Matching

ggplot2 Elegant Graphics for Data Analysis

Paper Review: A practical approximation algorithm for LMS line estimator

A Restart

Software architecture as a tree


Using SSH Private Keys in Dockerfile aimed for Google Cloud Run

TIL April 27

Regular and Recurring Tasks in todo.txt


Deleting duplicate files in Google Drive using rclone

Patch Histogram Feature

aerc and goneovim

How to convert Numpy image to QImage?

Paper Review: High Performance Layout Analysis for Arabic and Urdu

TIL May 1

Paper Review: Polygonal Approximation of Digital Curves to Preserve Original Shapes

Converting MNIST and Fashion-MNIST IDX format to NumPy

About estimation from the 'Mythical Man-Month'

The Sorry State of NDK testing in Android

When `y` and `p` commands in IdeaVim doesn't work

Unit tests vs Integration Tests in Rust


Converting Latin based Turkish spelling to Ottoman

Paper Review: Three Things Everyone Should Know to Improve Object Retrieval

Using a Single Threaded Functor in Multiple Threads with Futures in C++

Rust `ends_with` and `strip_prefix` behavior differences in `Path` and `str`

Python Data Science Handbook

Numpy ValueError while using dlib's face detector

TIL April 26

Paper Review: Text Line Segmentation of Historical Documents: A Survey

Paper Review: Shape Classification Using Zernike Moments

Premature Caching is the Root of All Evil

Probabilistic Graphical Models Course Notes

Quote from the Mythical Man-Month