bodhi-tree

Going Back in Time to Reinvent the Tree with Zig

Over the Christmas holiday, I migrated the classic UNIX tree utility to Zig, creating a modernized fork called bo. The original tree project has been around since the 90s, displaying directory structures in a hierarchical format. While the C codebase is elegant, it carries decades of legacy baggage. Obsolete platform support, ancient Makefile, and preprocessing macros for long-dead operating systems. The migration resulted in a lot of deleting which is a lot of fun and I replaced the Makefile with Zig’s build system, removed support for OS/2 and proprietary HP systems, deleted the archaic .lsm metadata format, and embedded the man page directly into the binary. This post walks through the technical decisions and trade-offs of modernizing a 30-year-old C project. ...

January 4, 2026 · 6 min · 1226 words · Talha Altinel
temple-image

Making Laverna Anki Addon

Recently, I’ve been working on simplifying the Laverna CLI integration with Anki. What seemed challenging during the planning phase turned out to be elegant in execution. Here’s a summary of the challenges and takeaways. The Original Workflow Three months ago, I built an integration between Laverna CLI and Anki with this workflow: User downloads a custom Cloze note type (note-type.apkg) from the repository and then imports to Anki (one-time setup) User prepares CSV data in the expected format User runs Laverna CLI, which outputs enriched CSV User manually imports the CSV via Anki’s deck import tab Everything looked normal on the surface, but steps 1 and 4 were cumbersome and repetitive. Since Anki doesn’t provide an official SDK or REST API, I needed to find another approach. Step 1 and 4 were also more error prone since it contained my internal app logic. ...

December 27, 2025 · 5 min · 878 words · Talha Altinel
jellyfish-image

Anki Feature For Laverna CLI

In this post, I announce an overhaul for Laverna CLI and new version which supports the new subcommands such as run and anki. The Recap In this blog post I have introduced Laverna CLI which was a language learning tool designed to swallow Google’s speech API. It was immensely useful but it lacked some features such as Anki integration. The New Anki Integration Starting with v0.1.0, users can use the new anki command to create anki decks with laverna CLI. ...

October 8, 2025 · 4 min · 652 words · Talha Altinel
thai-language

New Release: Keyboard App v0.2.0

In this post, I will be announcing the new features and the existing struggles of my keyboard app. The Recap Let’s recap about “what does this app solve?” Onscreen keyboard app that uses English (UK/US) keyboard inputs to map to various languages. Video not supported The New Features New languages support such as German, Italian, Lao, Vietnamese. And a bug fix regarding language specific fonts, this adjusts the natural font based on language choice. I was quite fascinated how easy it was to add Vietnamese. Lao required me to evaluate font choices but I liked how similar feel was to Thai Abugida. The Abugida composition was beautifully handled by the font. ...

September 6, 2025 · 3 min · 523 words · Talha Altinel
thai-language

Building Cross-Platform Magic: From GTK to Tauri

In this post, I announce my newest project: a cross-platform on-screen keyboard that supersedes my previous virtual-keyboard work. Built with Tauri, it’s faster, smaller, and works beautifully across Windows, macOS, and Linux. What does it solve? This is a cross-platform on-screen keyboard for different languages. English (UK/US) keyboard inputs map to various languages. It’s a complete rewrite of my previous virtual-keyboard project, built from the ground up with modern alternative. ...

August 2, 2025 · 2 min · 306 words · Talha Altinel